web-dev-qa-db-de.com

Anwendungsfälle für NoSQL

NoSQL hat in letzter Zeit viel Aufmerksamkeit in unserer Branche erhalten. Ich bin wirklich daran interessiert, welche Gedanken die Leute zu den besten Anwendungsfällen für die Verwendung über relationalen Datenbankspeicher haben. Was sollte einen Entwickler dazu veranlassen zu denken, dass bestimmte Datensätze besser für eine NoSQL-Lösung geeignet sind? Ich interessiere mich besonders für MongoDB und CouchDB , da sie in Bezug auf die PHP= Entwicklung am meisten Aufmerksamkeit erregen, und das ist meine Fokus.

143
robjmills

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

49
robjmills

Versichern Sie sich einfach, 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, mit einem Auto Ihren Karren wie ein Pferd die Straße entlang zu ziehen.

Es ist eine natürliche Reaktion, die natürlich auf die Erfahrung aller zurückzuführen ist, aber der wahre Vorteil bei der Verwendung einer Dokumentendatenbank besteht darin, dass Sie Ihr Datenmodell vereinfachen und Ihr Leid als Entwickler minimieren können. Ihre Codebasis wird kleiner, Ihre Bugs werden weniger und einfacher 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-Raum kommend, ist so etwas wie MongoDB ein Wundermittel, da Content ganz natürlich auf Dokumentensysteme abgebildet wird.

Ein weiteres gutes Beispiel für MongoDB ist die Echtzeitanalyse, da MongoDB eine sehr starke Leistung und Skalierbarkeit aufweist, insbesondere in Bezug auf die Parallelität. Es gibt Fallstudien auf der Website MongoDB.org, die diese Attribute demonstrieren.

Ich stimme dem Gedanken zu, dass jede Datenbank ihre eigenen Ziele und Anwendungsfälle hat. Nehmen Sie den Zweck jeder Datenbank für die Auswertung entsprechend.

86
spacemonkey

Ich würde diesen Artikel von Rick Cattell über verschiedene Datenspeicher (a.k.a. NoSQL), ihre Unterschiede und einige ihrer Anwendungsfälle vorschlagen: http://www.cattell.net/datastores/index.html

15
kishkash

Was mir an NoSQL gefällt, hat nichts mit Leistung und alles mit Benutzerfreundlichkeit zu tun. Das Arbeiten mit Dokumentenspeichern ist einfacher, wenn Ihre atomaren Dateneinheiten dokumentenähnlich sind, da das Serialisieren von und zu Objekten trivial ist. Es macht einfach mehr Spaß und das ist ein wichtiger Faktor für persönliche oder Nebenprojekte.

8
ysimonson

Ich benutze bereits seit einiger Zeit NoSQL-DBs, und dies ist mein Beitrag zum Thema:

Ein großartiger Anwendungsfall für eine NoSQL-Datenbank ist eine Anwendung für Statistik und/oder Berichterstellung, insbesondere wenn Daten von Drittanbietern stammen.

In einer solchen Situation kann eine NoSQL-Datenbank eine gute Wahl sein.

Betrachten wir zum BeispielMongoDB:

Sobald Sie Ihre Daten in JSON haben (sie könnten von einer Drittanbieter-API stammen oder aus einer SQL-Anwendung exportiert werden), istMongoDBziemlich direkt zu importieren und aktualisieren das JSON Daten in der Datenbank; Verwenden Sie beispielsweise die Befehlszeile mongoimport

Zu diesem Zeitpunkt ist einfach zu erstellende dynamische Abfragen mit Filtern und Gruppieren sehr gut für diese Art von Anwendung geeignet.

Verwenden Sie beispielsweise das Aggregation Framework :

$pipeline = [];

//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ]  ]  ];

//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
    $pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];    

//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];

return $collection->aggretate( $pipeline );

Ich möchte auf die Einfachheit hinweisen, mit der wir dinamisch Filter hinzufügen/entfernen mithilfe von PHP-Datenstrukturen und ohne mühsame String-Verkettung unsere Abfragen aufbauen können. Mit diesem Ansatz ist das Hinzufügen/Entfernen von Filtern dinamycally so einfach wie das Hinzufügen/Entfernen von Elementen aus einem Array

Ein weiterer großer Vorteil ergibt sich aus der Tatsache, dass eine Lösung wie diese wahrscheinlich schneller ist als die Verwendung einer relationalen Datenbank, bei der wir Verknüpfungen mit verschiedenen Tabellen erstellen müssen, um alle Daten abzurufen, die wir haben brauchen

Außerdem ist dieser Anwendungsfall optimal, weil vermeidet alle Hauptbeschränkungen einer NoSQL-Datenbank:

  • Fehlende Transaktionen:Die Anwendung führt keine Schreibvorgänge, sondern nur Lesevorgänge aus, sodass überhaupt keine Transaktionen erforderlich sind

  • Fehlende Verknüpfungen zwischen Tabellen:Wir brauchen keine Verknüpfungen, da wir Redundanz verwenden können, um unsere denormalisierten Daten in zu speichern die Sammlungen. Da wir nur Daten lesen, müssen wir uns keine Sorgen machen, denormalisierte Daten zwischen Aktualisierungen zu synchronisieren.

Auf diese Weise können wir uns auf Speichern der Daten mit Redundanz in einer Weise, die gut zu unseren Abfragen passt konzentrieren, die sich auf einzelne Sammlungen konzentrieren wird.

Ich schreibe das hier nur, denn wenn ich vor einiger Zeit so etwas gelesen hätte, hätte es mir Zeit gespart, Nachforschungen anzustellen

Hoffe, es wird jemandem nützlich sein

8
Moppo

Ich kann diesen Vortrag von Martin Fowler nur empfehlen:

https://www.youtube.com/watch?v=qI_g07C_Q5I

ABSTRACT: Martin gibt eine schnelle Einführung in NoSQL-Datenbanken: Woher sie kamen, welche Art von Datenmodellen sie verwenden und welche Unterschiede So muss man über Konsistenz nachdenken. Daraus errechnet er, welche Umstände Sie in Betracht ziehen sollten, warum relationale Datenbanken dadurch nicht überholt werden und welche wichtigen Konsequenzen die Polyglott-Persistenz hat.

Es zeichnet ein gutes Bild von NoSQL, den verschiedenen Kategorien und den Dingen, die jeder verstehen muss, wenn er aus der Welt der relationalen Datenbanken kommt. Grüße.

3
user3631881

Zuerst müssen Sie die CAP-Theorie (Consistency, Availability and Partitioning, Konsistenz, Verfügbarkeit und Partitionierung) und unseren Business Use Case verstehen. MongoDB erfüllt Konsistenz und Partitionierung & Couch DB stellt Verfügbarkeit & Partitionierung zufrieden.

Edureka-Videos in 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 slideshare.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= (Diese Präsentation unterstützt Video-Tutorials in youtube)

3
Ravindra babu

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 eine Datenbank suchen, die sich auch für Unternehmensanwendungen eignet, die auf Unterstützung, Erweiterbarkeit, Verwaltung und Funktionalität 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 Version basiert, die in dem Bericht (2.5.1) gezeigt wird, da es fast 2 Revisionen hinter CB Server ist, der sich der Veröffentlichung von 4.0 in 2H15 nähert .

http://www.couchbase.com/coming-in-couchbase-server-4-

Der andere Teil über Couchbase als Anbieter/Produkt ist, dass es sich um einen Mehrzwecktyp von DB handelt. Es kann als reiner K/V-Speicher fungieren, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, zwischengespeichert, mit Persistenz zwischenspeichern und unterstützt ANSI 92-konformes SQL mit automatischen Verknüpfungen, Replikation zu DR-Clustern per Knopfdruck und Sogar eine mobile Komponente ist in das Ökosystem integriert.

Wenn nicht anders, lohnt es sich, die neuesten Benchmarks zu lesen:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.htmlhttp://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

1
Austin Gonyou

Für einige Anwendungsfälle, die Sie benötigen, insbesondere für analytische Abfragen, können Sie SQL-Abfragen in MongoDB mit diesem Wrapper von Postgres ausführen.

1
metdos