Die Daten in unserem relationalen DBMS werden immer größer. Ist es an der Zeit, auf NoSQL umzusteigen?


17

Wir haben eine soziale Netzwerkanwendung für eLearning-Zwecke erstellt. Es ist ein experimentelles Projekt, an dem wir in unserem Labor forschen. Es wird seit einiger Zeit in einigen Fallstudien verwendet und die Daten in unserem relationalen DBMS (SQL Server 2008) werden immer umfangreicher. Es sind jetzt ein paar Gigabyte und die Tabellen sind eng miteinander verbunden. Die Leistung ist noch in Ordnung, aber wann sollten wir andere Optionen in Betracht ziehen? Geht es um Leistung?


3
Für alles , was soziale Netzwerke, würde ich sehr eine Graph - Datenbank wie empfehlen Neo4j oder Orientdb
Apollo

Antworten:


14

Ein paar Gigabyte sind nicht sehr " groß ". Es entspricht eher der normalen Größe einer Unternehmensdatenbank. Solange Sie PK überschreiten, wenn Sie Tabellen verbinden, sollte es auch in Zukunft sehr gut funktionieren (solange Sie keine TBs an Daten pro Tag erhalten).

Die meisten Fachleute, die in einer Big-Data-Umgebung arbeiten, betrachten > ~ 5 TB als den Beginn des Begriffs Big Data. Aber selbst dann ist es nicht immer der beste Weg, nur die nächstbeste nosql-Datenbank zu installieren. Sie sollten immer über die Aufgabe nachdenken, die Sie mit den Daten archivieren möchten (aggregieren, lesen, suchen, abrufen, ..), um die besten Tools für Ihr Problem zu finden.

Wenn Sie also häufig in Ihrer Datenbank suchen, ist es wahrscheinlich besser, eine solr-Instanz / einen solr-Cluster auszuführen und Ihre Daten von Zeit zu Zeit von einem DBMS wie Postgres oder Ihrem SQL Server zu denormalisieren und in solr zu verschieben, anstatt nur die Daten zu verschieben von SQL bis NOSQL in Bezug auf Ausdauer und Leistung.


10

Um diese Frage zu beantworten, müssen Sie entscheiden, welchen Kompromiss Sie sich leisten können. RDBMs implementieren ACID . Dies ist ressourcenintensiv. Es gibt keine NoSQL-Lösungen, die ACID sind. Lesen Sie den CAP-Satz , um sich eingehend mit diesen Ideen zu befassen.

Sie müssen also jeden Kompromiss verstehen, der in jeder Lösung enthalten ist, und den für Ihr Problem am besten geeigneten auswählen.


8

Bei Big Data geht es eigentlich nicht darum, wie groß die Daten sind.

Erstens sind wenige Gigabyte überhaupt nicht groß, es ist fast nichts. Machen Sie sich also keine Sorgen, Ihr System wird nach meinem Dafürhalten noch einige Zeit effizient arbeiten.

Dann müssen Sie sich überlegen, wie Sie Ihre Daten verwenden.

  • SQL-Ansatz: Alle Daten sind wertvoll, gut gesammelt und ausgewählt, und der Schwerpunkt liegt auf der Speicherung wertvoller und gut strukturierter Daten. Dies kann teuer sein, alles ist miteinander verbunden und gut für gut strukturierte System- und Funktionsdaten geeignet.
  • Big-Data-Ansatz: In Big Data wird im Grunde genommen fast alles gespeichert, unabhängig von dessen Wert. Anschließend wird ein aktiver Analyseprozess durchgeführt. Dinge sind nicht verknüpft, sie werden kopiert. Angenommen, ich habe einen Blogeintrag. In Big Data gibt es keinen Link zu seinem Autor, aber der Autor wird in den Blogeintrag eingebettet. Viel skalierbarer, erfordern aber einen anderen und komplexeren Ansatz.

Wenn Ihre gespeicherten "funktionalen" Daten von Ihrer Anwendung verwendet werden, empfehle ich Ihnen, auf SQL zu bleiben. Wenn Sie Daten speichern, um sie später zu durchsuchen oder Berichte zu erstellen, und wenn sich diese Datenmenge schnell erhöht, empfehle ich Big Data. Meiner Meinung nach sind Big Data nützlich, wenn es sich um echte Daten handelt, die kontinuierlich gesammelt und analysiert werden müssen.


8

Ich habe eine ziemlich ausführliche Antwort zum Stackoverflow veröffentlicht, in der erläutert wird, wann die Verwendung einer relationalen vs document-Datenbank (oder einer NoSQL-Datenbank) angemessen ist.

Motivationen für die Verwendung von relationaler Datenbank / ORM oder Dokumentendatenbank / ODM

Zusammenfassung:

  • Verwenden Sie für kleine Dinge alle Werkzeuge, die Sie kennen

  • ein paar Gigabyte sind definitiv kleine Dinge: Es wird nicht groß, bis es zu groß ist, um in einen einzelnen MySQL-Cluster mit einer angemessenen Anzahl von Knoten (16-32) zu passen , was vielleicht 8-16 TB Daten und ein paar Millionen Transaktionen bedeutet pro Sekunde (oder eine konventionellere festplattenbasierte Datenbank mit bis zu 100 TB Daten und einigen tausend Transaktionen pro Sekunde).

  • Wenn Sie mit einer anderen Datenbank (nicht MySQL Cluster) nicht weiterkommen, können Sie durch den Einsatz von FusionIO-Hardware mehr Meilen sammeln.

  • Sobald Sie Daten haben, die größer als ein paar TB und schneller als Tausende von Transaktionen pro Sekunde sind, ist es ein guter Zeitpunkt, sich zuerst mit dem logischen Sharding im Anwendungscode und dann mit NoSQL zu befassen.

  • Cassandra :)


6

Ist es die Zeit, auf NoSQL umzusteigen, hängt von zwei Dingen ab:

  1. Die Art / Struktur Ihrer Daten
  2. Ihre aktuelle Leistung

SQL-Datenbanken zeichnen sich aus, wenn die Daten gut strukturiert sind (z. B. wenn sie als Tabelle, Excel-Tabelle oder eine Reihe von Zeilen mit einer festen Anzahl von Spalten modelliert werden können). Auch gut, wenn Sie eine Menge von Tabellenverknüpfungen ausführen müssen (wie es sich anhört).

NoSQL-Datenbanken zeichnen sich aus, wenn die Daten über Schlüssel-Wert-Paare hinaus unstrukturiert sind.

In Bezug auf die Leistung müssen Sie sich eine Frage stellen: Ist Ihre aktuelle SQL-Lösung langsam ?

Wenn nicht, gehen Sie nach dem " IIABDFI " -Prinzip vor.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.