unterschied - sql vs nosql use cases




Anwendungsfälle für NoSQL (6)

NoSQL hat in unserer Branche in letzter Zeit viel Aufmerksamkeit bekommen. Ich bin sehr daran interessiert, was die Leute über die besten Anwendungsfälle für den relationalen Datenbankspeicher denken. Was einen Entwickler dazu verleiten sollte zu denken, dass bestimmte Datensätze besser für eine NoSQL-Lösung geeignet sind. Ich bin besonders an MongoDB und CouchDB interessiert, da sie anscheinend die meiste Berichterstattung in Bezug auf die PHP-Entwicklung bekommen und das ist mein Fokus.


Zuerst müssen Sie CAP (Konsistenz, Verfügbarkeit und Partitionierung, wo Sie zwei von drei auswählen müssen) Theorie und unseren Business-Anwendungsfall verstehen. MongoDB erfüllt Konsistenz und Partitionierung & Couch DB erfüllt Verfügbarkeit und Partitionierung.

Edureka Videos in youtube in Bezug auf 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 sind in slideshare.net verfügbar

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-Tutorial in youtube)


Da es jetzt auf dem Markt mehr NoSQL-Datenbanken gibt als je zuvor, schlage ich vor, einen Blick auf den Gartner Magic Quadrant zu werfen, wenn Sie nach einer Datenbank suchen, die auch für Unternehmensanwendungen auf der Basis von Support, Erweiterbarkeit, Verwaltung und Kosten.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Ich würde Couchbase allen empfehlen, die es noch nicht ausprobiert haben, aber nicht basierend auf der im Bericht (2.5.1) gezeigten Version, da es fast 2 Revisionen hinter CB Server gibt, die Version 4.0 in 2H15 .

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

Der andere Teil über Couchbase als Anbieter / Produkt ist, dass es ein Multi-Use-Typ von DB ist. Es kann als reiner K / V-Speicher, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, Memcached, Cache-Speicherung mit Persistenz und unterstützt ANSI 92-konformes SQL mit automatischen Joins, Replikation zu DR-Clustern auf Knopfdruck und sogar hat eine mobile Komponente in das Ökosystem eingebaut.

Wenn nicht anders, lohnt es sich, sich die neuesten Benchmarks anzusehen:

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


Für einige Anwendungsfälle benötigen Sie, insbesondere für analytische Abfragen, mit diesem Wrapper aus Postgres SQL-Abfragen auf MongoDB.


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 zur Erstellung von Statistiken und / oder Berichten , insbesondere wenn Daten von einer Drittanbieter-Quelle zur Verfügung gestellt werden.

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

Betrachten wir zum Beispiel MongoDB :

Sobald Sie Ihre Daten in JSON haben, (es könnte von einer Drittanbieter-API kommen, oder von einer SQL-Anwendung exportiert werden) in MongoDB ist ziemlich klar, die JSON- Daten in der Datenbank zu importieren und zu aktualisieren ; zum Beispiel mit dem Kommandozeilenprogramm mongoimport

An diesem Punkt ist es sehr einfach, dynamische Abfragen mit Filterung und Gruppierung zu erstellen , die gut zu dieser Art von Anwendung passen.

Verwenden Sie beispielsweise das Aggregationsframework :

$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 Leichtigkeit hinweisen, mit der wir Filter dynamisch hinzufügen / entfernen können, indem wir PHP-Datenstrukturen verwenden und langwierige String-Verkettungen vermeiden, um unsere Abfragen aufzubauen. Mit diesem Ansatz ist das Hinzufügen / Entfernen von Filtern 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 eine relationale Datenbank , bei der wir Joins mit verschiedenen Tabellen erstellen 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, sodass wir keine Transaktionen benötigen

  • Fehlende Joins zwischen Tabellen: Wir benötigen keine Joins, 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 machen, dass die denormalisierten Daten zwischen Updates synchronisiert werden.

Auf diese Weise können wir uns darauf konzentrieren, die Daten redundant zu speichern, und zwar in einer Weise, die gut zu unseren Abfragen passt , die sich auf einzelne Sammlungen konzentrieren.

Ich schreibe das nur, weil ich, wenn ich so etwas vor einiger Zeit gelesen hätte, mich einige Zeit gerettet hätte, um Nachforschungen anzustellen

Hoffe, dass es für jemanden nützlich sein wird


Was ich an NoSQL mag, hat nichts mit Performance und allem was mit Usability zu tun hat. Dokumentspeicher sind einfacher zu handhaben, wenn Ihre atomaren Dateneinheiten dokumentartig sind, weil es einfach ist, Objekte zu Objekten zu serialisieren. Es macht einfach mehr Spaß, und das ist ein wichtiger Faktor für persönliche oder Nebenprojekte.








nosql