Ich entwickle eine Anwendung für das studentische Forschungssymposium meiner Universität zum Thema polyglotte Persistenz. Ich habe das Buch von Martin Fowlers gelesen und online nach den verschiedenen Arten von NoSQL-Datenbanken gesucht. Ich bin gespannt, welche Anwendungsfälle für die verschiedenen NoSQL-Datenbanken gelten.
Derzeit habe ich das, worauf Fowler hingewiesen hat (andere Untersuchungen wurden hauptsächlich in Bezug auf APIs durchgeführt).
Schlüsselwert:
- Sitzungsdaten
- Benutzerprofil
- Einkaufswagen
- Grundsätzlich alles, was einen einzigen eindeutigen Schlüssel hat, der einfach generiert und repliziert werden kann
Dokumentieren:
- Ereignisprotokollierung
- CMS / Bloggen
- E-Commerce (nach Abschluss der Transaktion)
- Netz Analyse
Spaltenfamilie:
- Ereignisprotokollierung
- CMS / Bloggen
- Zähler
- auslaufende Nutzung
Graph:
- verbundene Daten
- standortbezogene Dienste
- Empfehlungsmaschine
Welche anderen Anwendungsfälle gibt es? Genauer gesagt, welche Anwendungsfälle sind für jeden Typ von NoSQL-Datenbank besser als ein relationales Modell?
Antworten:
Eine sehr große Liste von NoSQL-Anwendungsfällen
Diese Liste ist ab und zu nützlich und zeigt auch auf, wann eine bestimmte NoSQL-Lösung auf diesen speziellen Anwendungsfall spezialisiert ist. Der ursprüngliche HackerNews-Thread (unten auf dieser Seite verlinkt) ist auch für erweiterte Kommentare nützlich.
quelle
Ich denke, Sie haben fast alles abgedeckt. Ich kann Ihnen noch etwas über die Graphendatenbank anbieten. Ich habe gesehen, dass Menschen oder Forscher die Graphendatenbank für die semantische Analyse oder die Speicherung der Ontologie für die Verarbeitung natürlicher Sprache verwenden.
Und da ich viel Graph db verwendet habe, denke ich, dass das, was Graph db bietet, viel mehr ist, als das relationale Modell bieten kann. Zum Beispiel, wenn ich eine Webanwendung habe und alle meine Freunde von Facebook und Twitter aus nach Standort oder Interessen verbinden möchte. Ich kann es in einer Abfrage tun. Sie können dies jedoch auch in SQL tun, wenn Sie es wirklich wollen, aber das SQL kann ein A4 lang oder länger sein, wenn Sie es richtig machen wollen.
quelle
Warum nicht axiomatischer vorgehen? Zum Beispiel, warum ist „CMS / Blogging“ besser zu dokumentieren Datenbanken geeignet (oder was auch immer)? Welche gemeinsamen Eigenschaften dieser Anwendungen lassen Sie glauben, dass sie für die eine oder andere Technologie besser geeignet sind?
Berücksichtigen Sie die Stärken jeder DBMS-Technologie und in der Tat die Theorie , auf der jede basiert. Welches Datenmodell implementieren sie? (Hat jeder in der Tat haben ein Datenmodell?) Was sind die Eigenschaften jedes Datenmodell und wie die Eigenschaften der Applikationskarte auf diejenigen des Datenmodells? Wenn Sie eine solche Karte entwickeln, können Sie jede Anwendung charakterisieren , auch eine, von der Sie noch nie gehört haben oder die noch nicht erfunden wurde.
Codd definierte ein Datenmodell mit drei ineinandergreifenden Merkmalen: Struktur, Operationen und Einschränkungen. Das relationale Modell hat alle drei in Pik. Wenn Sie sich die Alternativen genau ansehen, werden Sie feststellen, dass mindestens eine und normalerweise zwei davon fehlen. Jede Technologie, die nicht auf dem relationalen Modell basiert, ist ipso facto weniger funktionsfähig. Aus diesem Grund kann man mit Sicherheit sagen, dass jede Anwendung das relationale Modell unterstützen kann (wenn nicht durch vorhandene relationale Produkte). Das relationale Modell ist noch weiter entwickelt, leistungsfähiger und dennoch einfacher als jedes andere bisher entwickelte. Es wird schwer zu verbessern sein, da es auf Prädikatenlogik und Mengenlehre beruht.
Vielleicht können Sie Anwendungen identifizieren, für die beispielsweise genau definierte Vorgänge keine Rolle spielen. Sie möchten jedoch sicher sein, dass Sie zuerst verstehen, warum sie im Allgemeinen wichtig sind, bevor Sie mit Sicherheit sagen können, warum sie für eine bestimmte Anwendung nicht erforderlich (oder sogar nur nützlich) sind.
Früher oder später wird Ihnen jemand sagen, dass "relational nicht skaliert" und dass Technologie X schnell ist. Denken Sie dabei daran, dass sie implizit Funktionen aufgegeben haben, die der Technologie X im Vergleich zum relationalen Modell fehlen. Diese Funktionen könnten durchaus von Bedeutung sein. Außerdem ist ein Datenmodell nicht schnell oder langsam, sondern nur eine Implementierung. Immer wenn es mehr Programmierer als Maschinen gibt, ist es billiger, schnellere Hardware zu kaufen, als mehr Programmierer einzustellen.
quelle