NoSQL hat in letzter Zeit in unserer Branche viel Aufmerksamkeit erhalten. Ich bin wirklich interessiert daran, was die Leute über die besten Anwendungsfälle für die Verwendung über relationalen Datenbankspeicher denken. Was sollte einen Entwickler zu der Annahme veranlassen, dass bestimmte Datensätze besser für eine NoSQL-Lösung geeignet sind? Ich interessiere mich besonders für MongoDB und CouchDB, da sie anscheinend die größte Abdeckung in Bezug auf die PHP-Entwicklung erhalten, und das ist mein Fokus.
144
Antworten:
Versprechen Sie sich nur, dass Sie niemals versuchen werden, ein relationales Datenmodell einer NoSQL-Datenbank wie MongoDB oder CouchDB zuzuordnen ... Dies ist der häufigste Fehler, den Entwickler bei der Bewertung neuer Technologien machen.
Dieser Ansatz ist analog zu dem Versuch, ein Auto zu nehmen und damit Ihren Wagen wie ein Pferd die Straße hinunterzuziehen.
Es ist natürlich eine natürliche Reaktion aufgrund der Erfahrung aller, aber der wahre Wert bei der Verwendung einer Dokumentendatenbank besteht darin, Ihr Datenmodell zu vereinfachen und Ihr Leid als Entwickler zu minimieren. Ihre Codebasis wird kleiner, Ihre Fehler werden weniger und leichter zu finden sein, die Leistung wird fantastisch sein und die Skalierung wird viel einfacher.
Als Joomla-Gründer bin ich voreingenommen :-), aber aus dem CMS-Bereich kommend, ist so etwas wie MongoDB eine Silberkugel, da Inhalte ganz natürlich Dokumentensystemen zugeordnet werden.
Ein weiterer guter Fall für MongoDB ist die Echtzeitanalyse, da MongoDB eine sehr starke Leistung und Skalierbarkeit aufweist, insbesondere in Bezug auf die Parallelität. Auf der MongoDB.org-Website gibt es Fallstudien, die diese Attribute belegen.
Ich stimme der Vorstellung zu, dass jede Datenbank ihre eigenen Ziele und Anwendungsfälle hat. Nehmen Sie den Zweck jeder Datenbank zur entsprechenden Auswertung.
quelle
Einige großartige Anwendungsfälle - für MongoDB jedenfalls - werden auf der MongoDB-Site erwähnt. Die angegebenen Beispiele sind Echtzeitanalyse, Protokollierung und Volltextsuche. Diese Artikel sind alle eine Lektüre wert http://www.mongodb.com/use-cases
Es gibt auch eine großartige Beschreibung, welche NoSQL-Datenbank für welche Art von Projekt am besten geeignet ist: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
quelle
Ich würde diesen Artikel von Rick Cattell über verschiedene Datenspeicher (auch bekannt als NoSQL), ihre Unterschiede und einige ihrer Anwendungsfälle vorschlagen: http://www.cattell.net/datastores/index.html
quelle
Was ich an NoSQL mag, hat nichts mit Leistung und alles mit Benutzerfreundlichkeit zu tun. Dokumentenspeicher sind einfacher zu bearbeiten, wenn Ihre atomaren Dateneinheiten dokumentähnlich sind, da die Serialisierung zu und von Objekten trivial ist. Es macht einfach mehr Spaß und das ist ein wichtiger Faktor für persönliche oder Nebenprojekte.
quelle
Ich benutze seit einiger Zeit NoSQL-DBs und dies ist mein Beitrag zum Thema:
Ein großer Anwendungsfall für eine NoSQL - Datenbank ist eine Anwendung für Statistik und / oder Berichte Generation , expecially , wenn Daten von einer Dritten Quelle vorgesehen ist.
In einer solchen Situation kann eine NoSQL-Datenbank eine gute Wahl sein
Betrachten wir zum Beispiel MongoDB :
Sobald Sie Ihre Daten in JSON haben (sie könnten von einer Drittanbieter-API stammen oder aus einer SQL-Anwendung exportiert werden), ist es in MongoDB ziemlich einfach, die JSON- Daten in die Datenbank zu importieren und zu aktualisieren . beispielsweise mit dem Befehlszeilen
mongoimport
DienstprogrammZu diesem Zeitpunkt ist es sehr einfach, dynamische Abfragen mit Filterung und Gruppierung zu erstellen , die gut zu dieser Art von Anwendung passen.
Beispiel: Verwenden des Aggregation Framework :
Ich möchte auf die Leichtigkeit hinweisen, mit der wir Filter mithilfe von PHP-Datenstrukturen dynamisch hinzufügen / entfernen können und die mühsame Verkettung von Zeichenfolgen beim Aufbau unserer Abfragen vermeiden. Mit diesem Ansatz ist das Hinzufügen / Entfernen von Filtern dinamycally so einfach wie das Hinzufügen / Entfernen von Elementen zu einem Array
Ein weiterer großer Vorteil ergibt sich aus der Tatsache, dass eine solche Lösung wahrscheinlich schneller ist als die Verwendung einer relationalen Datenbank , in der Verknüpfungen mit verschiedenen Tabellen hergestellt werden müssen, um alle benötigten Daten zu erhalten
Außerdem ist dieser Anwendungsfall optimal, da alle Hauptgrenzen einer NoSQL-Datenbank vermieden werden:
Fehlende Transaktionen: Die Anwendung führt keine Schreibvorgänge durch, sondern nur Lesevorgänge. Daher benötigen wir überhaupt keine Transaktionen
Fehlende Verknüpfungen zwischen Tabellen: Wir benötigen keine Verknüpfungen, da wir Redundanz verwenden können , um unsere denormalisierten Daten in den Sammlungen zu speichern . Da wir nur Daten lesen, müssen wir uns keine Sorgen um die Synchronisierung denormalisierter Daten zwischen Aktualisierungen machen.
Auf diese Weise können wir uns darauf konzentrieren, die Daten redundant in einer Weise zu speichern, die gut zu unseren Abfragen passt und sich auf einzelne Sammlungen konzentriert.
Ich schreibe das nur, denn hätte ich so etwas vor einiger Zeit gelesen, hätte ich mir Zeit gespart, um Nachforschungen anzustellen
Hoffe, es wird jemandem nützlich sein
quelle
Ich kann diesen Vortrag von Martin Fowler nur empfehlen:
https://www.youtube.com/watch?v=qI_g07C_Q5I
ZUSAMMENFASSUNG: Martin gibt eine schnelle Einführung in NoSQL-Datenbanken: woher sie stammen, welche Art von Datenmodellen sie verwenden und wie Sie die Konsistenz unterschiedlich betrachten müssen. Daraus skizziert er, welche Umstände Sie in Betracht ziehen sollten, warum sie relationale Datenbanken nicht überflüssig machen und die wichtige Konsequenz der polyglotten Persistenz.
Es zeichnet ein schönes Bild von NoSQL, den verschiedenen Kategorien und den Dingen, die jeder verstehen muss, wenn er aus der Welt der relationalen Datenbanken kommt. Grüße.
quelle
Edureka-Videos auf YouTube zu NoSQL sind einige der besten Video-Tutorials.
https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo
Gute Präsentationen finden Sie auf slidehare.net
http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1
http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (Diese Präsentation unterstützt Video-Tutorials in Youtube)
quelle
Für einige Anwendungsfälle, die Sie benötigen, insbesondere für analytische Abfragen, können Sie mit diesem Wrapper von Postgres SQL-Abfragen in MongoDB ausführen .
quelle
Da es jetzt viel mehr NoSQL-Datenbanken auf dem Markt gibt als jemals zuvor, empfehle ich einen Blick auf den Gartner Magic Quadrant, wenn Sie nach einer Datenbank suchen, die sich auch hervorragend für Unternehmensanwendungen eignet, die auf Support, Erweiterbarkeit, Verwaltung und Unterstützung basieren kosten.
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
Ich möchte Couchbase jedem empfehlen, der es noch nicht ausprobiert hat, aber nicht auf der im Bericht (2.5.1) gezeigten Version basiert, da es fast zwei Revisionen hinter dem heutigen CB Server liegt und sich der Veröffentlichung von 4.0 in 2H15 nähert .
http://www.couchbase.com/coming-in-couchbase-server-4-0
Der andere Teil von Couchbase als Anbieter / Produkt ist, dass es sich um einen Mehrzweck-DB-Typ handelt. Es kann als reiner K / V-Speicher, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, Memcached, Cache-beiseite mit Persistenz fungieren und unterstützt ANSI 92-kompatibles SQL mit automatischen Verknüpfungen, Replikation auf DR-Cluster per Knopfdruck und Es ist sogar eine mobile Komponente in das Ökosystem integriert.
Wenn nichts anderes, lohnt es sich, die neuesten Benchmarks zu überprüfen:
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html
quelle