Verwendung der NoSQL-Datenbank in der Datenwissenschaft

16

Wie können NoSQL- Datenbanken wie MongoDB für die Datenanalyse verwendet werden? Welche Funktionen ermöglichen eine schnellere und leistungsfähigere Datenanalyse?

jithinjustin
quelle
2
Die Hauptverwendung ist das Speichern und Abrufen von Daten. Tatsächlich ist dies die einzige Verwendung für eine NOSQL-Datenbank oder eine beliebige Datenbank. Möchten Sie Ihre Frage verbessern?
Spacedman
Ja, die Datenbank wird hauptsächlich zum Speichern und Abrufen von Daten verwendet. Wie können sie für die Datenanalyse verwendet werden? Welche Tools sind in NOSQL-Datenbanken wie Mongodb integriert, mit denen die Datenanalyse einfach und leistungsstark ist?
Jithinjustin
1
Verbessern Sie Ihre Frage, indem Sie sie bearbeiten und nicht zu den Kommentaren hinzufügen.
Spacedman

Antworten:

23

Um ganz ehrlich zu sein, sind die meisten NoSQL-Datenbanken nicht sehr gut für Anwendungen in Big Data geeignet. Für die überwiegende Mehrheit aller großen Datenanwendungen, die Leistung von MongoDB im Vergleich zu einer relationalen Datenbank wie MySQL ist deutlich schlecht genug , um zu rechtfertigen ist bleiben weg von so etwas wie MongoDB ganz.

Trotzdem gibt es einige wirklich nützliche Eigenschaften von NoSQL-Datenbanken, die bei der Arbeit mit großen Datenmengen sicherlich zu Ihren Gunsten sind, obwohl die Wahrscheinlichkeit, dass diese Vorteile die im Allgemeinen schlechte Leistung von NoSQL im Vergleich zu SQL für Lesezugriffe überwiegen. Intensive Operationen (die den typischen Big-Data-Anwendungsfällen am ähnlichsten sind) sind gering.

  • Kein Schema - Wenn Sie mit vielen unstrukturierten Daten arbeiten, kann es schwierig sein, ein Schema zu bestimmen und streng anzuwenden. NoSQL-Datenbanken unterstützen dies im Allgemeinen sehr und ermöglichen es Ihnen, Dokumente ohne Schema im laufenden Betrieb einzufügen, was sicherlich nicht von einer SQL-Datenbank unterstützt wird.
  • JSON - Wenn Sie mit Dokumenten im JSON-Stil anstatt mit CSV- Dateien arbeiten, werden Sie einen großen Vorteil darin sehen, MongoDB für eine Datenbankebene zu verwenden. Im Allgemeinen überwiegen die Workflow-Einsparungen jedoch nicht die erhöhten Abfragezeiten.
  • Benutzerfreundlichkeit - Ich sage nicht, dass die Verwendung von SQL-Datenbanken immer schwierig ist oder dass die Einrichtung von Cassandra auf der Welt am einfachsten ist, aber im Allgemeinen sind NoSQL-Datenbanken einfacher einzurichten und zu verwenden als SQL-Datenbanken. MongoDB ist ein besonders gutes Beispiel dafür. Es ist bekannt dafür, dass es eine der am einfachsten zu verwendenden Datenbankebenen ist (außerhalb von SQLite ). SQL befasst sich auch mit viel Normalisierung und es gibt eine große Anzahl bewährter SQL-Methoden, die den Entwicklungsprozess im Allgemeinen nur verzögern.

Persönlich könnte ich vorschlagen, dass Sie sich auch Diagrammdatenbanken wie Neo4j ansehen , die für bestimmte Arten von Abfragen eine wirklich gute Leistung zeigen, wenn Sie ein Backend für Ihre Data-Science-Anwendungen heraussuchen möchten.

indico
quelle
Du hast recht. NOSQL-Datenbanken werden hauptsächlich zum Speichern von unstrukturierten oder halbstrukturierten Daten wie json verwendet. Können Sie uns einige der Arten der Datenanalyse erläutern, die wir damit durchführen können? Welche Tools sind in mongodb integriert, die für die Datenanalyse verwendet werden können?
Jithinjustin
1
@jithinjustin es gibt keine Datenanalysewerkzeuge, die in Mongo oder in irgendeiner Datenbank eingebaut sind. Auch jsonist völlig strukturierte Daten. Sie können technisch jede Art von Datenanalyse durchführen, wobei die Verwendung einer NOSQL-Datenbank eigentlich nichts miteinander zu tun hat. Es gibt Tools, die auf dem Mongo aufbauen , wie zum Beispiel analytica.
Indico
1
Das alles weiß ich nicht. MongoDB kann eine bessere Leistung als MySQL erbringen. Sie hätten ein besseres Argument, wenn Sie PostgreSQL sagten (das übrigens JSON akzeptieren kann). In jedem Fall würde ich eine willkürliche "Leistung" (wir wissen nicht, was der Anwendungsfall ist) nicht als Grund ansehen, NoSQL nicht zu verwenden. Diskontieren Sie auch nicht mit mehreren Datenbanken. Denken Sie daran, MongoDB verfügt über erstaunliche Aggregationsfunktionen, die SQL nicht bietet.
Tom
1
Bei der Leistung werden Sie feststellen, dass die einzige Aufgabe, die Mongo MySQL übertrifft, Einfügungen ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ) ist, die einen vergleichsweise kleinen Teil der Datenanalyse ausmachen . Die Aggregationsfunktionen von SQL sind weitaus ausgereifter als die von Mongo. Was MYSQL im Vergleich zu Postgres anbelangt, sind die Zahlen sehr zeitlich verzerrt und beide bieten tendenziell eine ähnliche Leistung. MYSQL ist häufiger, weshalb ich das stattdessen erwähnte, aber die beiden sind sich ziemlich ähnlich.
Indico
Ich habe auf MongoDB immer eine bessere Leistung gesehen, wenn die Dinge in den Speicher passen. Ich nehme Benchmarks mit einem Salzgewinn, denn wenn Sie ein bisschen googeln, werden Sie eine Reihe von Benchmarks finden, die MongoDB als schneller anzeigen. Es hängt wirklich von Ihren Bedürfnissen ab. Zur Beantwortung der ursprünglichen Frage: Ich denke, dass NoSQL in der Big-Data-Wissenschaft und -Analyse eine Vielzahl von Anwendungen bietet.
Tom
4

Ein Vorteil des schemafreien NoSQL-Ansatzes besteht darin, dass Sie kein vorzeitiges Commit durchführen und das richtige Schema zur Abfragezeit mit einem geeigneten Tool wie Apache Drill anwenden können . Einzelheiten finden Sie in dieser Präsentation . MySQL wäre in einer Big-Data-Umgebung nicht meine erste Wahl.

Emre
quelle
Hier ist eine verwandte Frage zu NoSQL, JSON und Drill: datascience.stackexchange.com/questions/9568/…
sheldonkreger 31.12.15
4

Betrachten, versuchen und vielleicht sogar mehrere Datenbanken verwenden. Hier geht es nicht nur um "Leistung". Es wird wirklich auf Ihre Anforderungen ankommen. Von wie vielen Daten sprechen Sie? welche Art von Daten? wie schnell brauchst du es Lesen Sie mehr oder schreiben Sie mehr?

Folgendes können Sie in einer SQL-Datenbank nicht tun: Berechnen Sie die Stimmung. http://www.slideshare.net/shift8/mongodb-machine-learning

Natürlich ist die Geschwindigkeit in diesem Fall möglicherweise nicht schnell genug für Ihre Anforderungen, aber es ist etwas, das möglich ist. Mit einigem Zwischenspeichern bestimmter Aggregatwerte war es sogar durchaus akzeptabel. Wieso würdest du das machen? Bequemlichkeit.

Convenience ist wirklich etwas, von dem Sie überzeugt sein werden. Genau aus diesem Grund wurden (meiner Meinung nach) NoSQL-Datenbanken erstellt. Leistung natürlich auch, aber ich versuche, Benchmarks abzuwerten und mich mehr auf andere Belange zu konzentrieren.

MongoDB (und einige andere NoSQL) -Datenbanken verfügen über einige sehr leistungsstarke Funktionen, z. B. integrierte Map / Reduce-Funktionen. Dies könnte zu Zeit- und Kosteneinsparungen bei der Verwendung von Hadoop führen. Oder es könnte ein Prototyp oder ein MVP bereitgestellt werden, um ein größeres Unternehmen zu gründen.

Was ist mit Graphdatenbanken? Sie sind auch "NoSQL". Schauen Sie sich Datenbanken wie OrientDB an. Wenn Sie über Leistung streiten wollen ... Ich glaube nicht, dass Sie mir eine SQL-Datenbank zeigen werden, die dort schneller ist =) ... und Graphendatenbanken haben eine wirklich erstaunliche Anwendung, die darauf basiert, was Sie tun müssen.

Die Regeln der Technik (und des Internets) fühlen sich mit einer Sache nicht wohl. Du wirst begrenzt sein und dich auf ein Scheitern einstellen.

Tom
quelle
1
Ich sehe nichts in diesem Link oder hier, was beweist, dass Sie keine Stimmungsanalyse in einer SQL-Datenbank durchführen können. Die MongoDB-Beispiele profitieren von Javascript in der Datenbank, sodass Sie jede eingebettete Sprache in einer SQL-Datenbank verwenden können. Zum Beispiel Postgres + R.
Spacedman
Würde gerne sehen, wo Sie Code ausführen und in diesen Datenbanken abbilden / reduzieren könnten. Allen Ernstes (vor allem Postgres). ... und selbst wenn Sie könnten, macht das die Antwort übrigens immer noch nicht weniger gültig. Man könnte einfach nur NoSQL verwenden wollen. Es funktioniert.
Tom
1
Postgres + C, Python, Perl, R, geben Ihrer Postgres-Datenbank die neuesten Algorithmen für maschinelles Lernen. Einfach: postgresql.org/docs/9.0/static/xplang.html
Spacedman
Nett. Das muss ich mal ausprobieren. Wie wäre es mit MySQL?
Tom