Haben Sie jemals versucht, Nudeln mit einem Löffel zu essen? Funktioniert nicht so gut. Wenn Sie ihre Fettuccine oder Nudeln nicht fixieren können, wird es schwer. Eine Gabel ist natürlich um Längen besser: Sie können Ihre Nudeln in Windeseile aufspießen.

Wenn Sie sich dann aber dem Boden desTellers nähern und den letzten Rest Sauce essen möchten, ist eine dann plötzlich Gabel sinnlos. Hier brauchen Sie einen Löffel. Sie benötigen also zwei Werkzeuge für eine scheinbar simple Aufgabe.

Nun hat ein sehr schlauer Mensch mal den “Göffel” erfunden. Plötzlich gab es ein Besteck, das die Funktion eines Löffels und einer Gabel übernehmen gleichzeitig warhnehmen konnte. Warum benutzen wir also nicht alle Göffel für jede Mahlzeit? Warum gibt es überhaupt noch Gabeln und Löffel?

Das sind genau die Fragen, um die es geht wenn data Scientist die hitzige Debatte führen, ob PostgreSQL oder MongoDB die richtige Art von Speicher für JSON-Daten ist.

In der Vergangenheit lief die Debatte um Postgres und MonogDB so: Postgres auf der einen Seite konnte SQL-Daten (und später NoSQL), aber keine JSON-Daten verarbeiten. Auf der anderen Seite hatten Sie zweckbestimmte Datenbank-Managementsysteme (DBMS) wie MongoDB, die als native JSON-Datenbank entwickelt wurde.

Heutzutage jedoch ist diese strikte Trennung durch das Aufkommen zahlreicher Zwischenlösungen, sozusagen “Datengöffel”, aufgeweicht.

Die auf SQL basierende Datenbankarchitektur PostgreSQL bietet mittlerweile erweiterte JSON-Speicherfunktionen. Warum brauchen Sie also immer noch beide Tools?

Bereiten Sie Ihre Daten mit unserem exklusiven Leitfaden richtig auf: 6 wichtige Schritte, um Daten für die Analyse aufzubereiten

Der Aufstieg und weitere Aufstieg von JSON und JSONB

Lassen Sie uns zunächst einen Schritt zurückgehen: Was ist dieses JSON-Datenformat, das wir so dringend integrieren möchten?

JavaScript Object Notation (JSON) ist unstrukturiert, flexibel und von Menschen lesbar. Grundsätzlich können Sie Daten in der Datenbank speichern, ohne dass Sie sie an eine spezielle Datenbanksprache (wie SQL) anpassen müssen. Sie können Felder in einem Datensatz einbetten oder unterschiedliche Felder zu einzelnen Datensätzen bei Bedarf hinzufügen.

All dies macht JSON zu seinem wichtigen Schritt in Richtung anwenderfreundlicher Computertechnologie. Heute bevorzugen viele das JSON-Datenformat gegenüber XML. Es wird von zahlreichen NoSQL-Datenspeicher verwendet.

JSON hat jedoch keine Indexierung – das JSONB-Datenformat wurde erstellt, um dieses Problem zu lösen. JSONB speichert Daten in einem binären Format und nicht in einem einfachen JSON-Blob. Die Dateneingabe ist etwas langsamer, doch die Verarbeitung ist sehr viel schneller, da die Daten nicht neu geparst werden müssen.

Was ist MongoDB? Was ist PostgreSQL?

Jetzt, da wir wissen, womit wir es zu tun haben, schauen wir uns einmal die Unterschiede zwischen diesen beiden häufig benutzten Datenbanken an.

MongoDB ist eine Open Source-Datenbank. Sie ist agil und flexibel und nutzt dynamische Schemata, sodass Nutzer Datensätze erstellen können, ohne zuerst die Struktur zu definieren. MongoDB unterstützt außerdem die hierarchische Dokumentation von Daten.

PostgreSQL ist ebenfalls ein offenes Format. Es handelt sich dabei jedoch um eine relationale Datenbank, bei der es mehr um die Einhaltung von Standards und Erweiterbarkeit geht als um die Freiheit, wie Sie Daten speichern können. Sie nutzt sowohl dynamische als auch statische Schemata und ermöglicht die Anwendung für relationale Daten und standardisierte Speicher. MongoDB kann das mit seinem unstrukturierten Ansatz nicht.

Also… welche Datenbank sollten Sie benutzen, um Ihre JSON-/JSONB-Daten zu speichern?

Einschränkungen und sonstige Grenzen erwägen

Postgres und MongoDB haben beide Funktionen für JSON- und JSONB-Datenspeicherung (auch wenn dieser bei MongoDB „BSON“ genannt wird).

Es gibt jedoch Unterschiede:

  • MongoDB beschränkt sein BSON-Format auf maximal 64 Bits, um ganze Zahlen oder Gleitkommazahlen darzustellen. Das JSONB-Format von Postgres ist nicht beschränkt.
  • Postgres bietet Funktionen für die Dateneingrenzung und -validierung, die sicherstellen, dass JSON-Dokumente effektiver sind. Beispiel: Es hindert Sie daran, alphabetische Zeichen zu speichern, wenn nur numerische Werte Sinn ergeben.
  • MongoDB bietet ein automatisches Datenbank-Sharding für die einfache horizontale Skalierung des JSON-Datenspeichers; die Skalierung der Postgres-Installation ist für gewöhnlich vertikal. Sie können Postgres horizontal skalieren. Doch das ist meistens komplizierter oder erfordert die Hilfe von Dritten.
  • MongoDB ermöglicht es Ihnen auch, Ihren Durchsatz für das Schreiben zu erhöhen, indem es das Schreiben auf die Festplatte verschiebt. Auf diese Weise verlieren Sie möglicherweise einige Daten. Die Funktion könnte jedoch gut für Anwender sein, für die persistente Daten nicht wichtig sind.

Ein wichtiger Aspekt ist, dass Postgres Ihnen Optionen offen lässt. Sie können innerhalb der gleichen Postgres-Datenbank Daten in eine JSON-Spalte für spätere Modellierung senden oder in eine SQL-Schema-Tabelle integrieren.

Also doch der Göffel?

Native JSON-Datenbanken sind nicht immer performant

Einer der größten Vorteile von NoSQL-Datenbanken ist ihre Geschindigkeit.

Da sie mit einer einfacheren Datenstruktur als SQL-Datenbanken arbeiten, sind Speicher und Abruf in NoSQL-Datenbanken meist schneller .

Zwar fehlen ihnen die sogenannten ACID-Eigenschaften (Atomisierung, Konsistenz, Isolierung und Robustheit), die beispielsweise für Finanztransaktionen benötigt werden, Doch sie eignen sich großartig für die schnelle Verarbeitung großer unstrukturierter Datenmengen.

Deshalb war es eine Riesenüberraschung, dass Postgres 2014 bei EnterpriseDB.com MongoDB bei einem Performance-Vergleich überflügelte.

Sie haben richtig gelesen. Unglaublicherweise war Postgres in Tests zum Auswählen, Laden und Einfügen komplexer Dokumentendaten im Bereich von 50 Millionen Datensätzen rund zweimal so schnell bei der Dateneinspeisung, zweieinhalb Mal so schnell bei der Datenselektionl und dreimal so schnell bei der Dateneinfügung… und dabei belegte es auch noch 25 % weniger Festplattenspeicher.

Um fair zu sein, hat MongoDB mit dem Release 3.0 seitdem die Herausforderung angenommen und eine WiredTiger-Datenbank-Engine eingeführt, die die Schreibgeschwindigkeiten um das 7-10-fache erhöht und gleichzeitig rund 50 % weniger Festplattenspeicher belegt.

… In Punkto Performance und Geschwindigkeit sind beide Lösungen also nicht so weit von einander entfernt, wie eventuell angenommen.

Sisense in Aktion erleben:

Quality Assurance Project Status - Software Dashboard

Anwendungsfälle und Faktoren, die für die Entscheidung zwischen Postgres und MongoDB wichtig sind

Ist also Postgres oder MongoDB die beste JSON-Datenbank?

Die Antwort hängt davon ab, was Sie erreichen möchten und welche Lösungen Sie zurzeit im Einsatz haben. Um die richtige Entscheidung zu treffen, stellen Sie diese sieben Fragen:

  1. Welche Anwendung verwenden Sie?

    MongoDB beschränkt die Anzahl der Befehle für die Datenbankverwaltung, die Sie für die Entwicklung einer Anwendung benötigen. Das kann für das schnelle Erstellen von Prototypen sowie für On-Demand-Abfragen und -Befehle, die von der Anwendung erstellt werden, nützlich sein.

    Damit muss die Anwendung selbst sinnvolle Daten einfügen und Sie müssen möglicherweise viel Aufwand betreiben, um die Software zu warten.

  2. Wie viel Struktur werden Sie später benötigen?

    MongoDB eignet sich sehr gut für unstrukturierte Daten. Wenn Sie aber vorhaben, später auf eine Mischung an strukturierten und unstrukturierten Daten umzusteigen oder wenn Sie davon ausgehen, dass ACID-Konformität einmal wichtig werden könnte, istPostgres die bessere Lösung.

  3. Verwenden Sie statische JSON-Daten?

    Wenn Sie statische JSON-Daten und aktive Daten, die für die SQL-Speicherung strukturiert werden, verwenden, ist Postgres eine gute Wahl – seine JSONB-Darstellung ist effizient und ermöglicht die Indexierung. So können Sie ODBC und die BI-Integration nutzen, um auch SQL-Abfragen von MongoDB-Berichten durchzuführen.

  4. Was benötigen Sie, um Ihre JSON-Daten zu modifizieren?

    Wenn Sie Ihre JSON-Daten innerhalb des Datenspeichers modifizieren möchten, ist MongoDB besser geeignet – es besitzt Tools für die Aktualisierung einzelner Felder.

    Um dagegen JSON-Felder in Postgres zu modifizieren, müssen Sie das gesamte Dokument extrahieren und dann dorthin zurückschreiben, wo Sie Ihre Änderungen vorgenommen haben.

  5. Sie müssen dynamische Abfragen durchführen?

    MongoDB eignet sich perfekt für dynamische Abfragen von häufig geschriebenen oder gelesenen Daten. Das liegt daran, dass es Daten aller unterschiedlichen Arten, die sich ständig ändern, verarbeiten kann, ohne dass komplexe Transaktionen zwischen Objekten erforderlich sind. Sie erhalten eine gute Leistung, auch wenn Sie Ad-hoc-Abfragen von kleinen Teilsätzen an Feldern durchführen, die in Dokumenten mit zahlreichen Feldern enthalten sind.

  6. Sie benötigen automatisches Sharding?

    Das automatische Sharding bei MongoDB eignet sich gut für IT-Umgebungen, die mehrere Instanzen an standardisierter, handelsüblicher Hardware benutzen (konvergierte Architekturen).

  7. Können Sie kompetente Mitarbeiter finden?

    Die Kosten für die Entscheidung zwischen Postgres oder MongoDB haben viel damit zu tun, ob Sie Entwickler mit den richtigen Fähigkeiten finden können (sowie mit der Verfügbarkeit und den Preisen für das Hosting von Plattformen usw.)!

    Postgres gibt es schon etwas länger und ist in vielen Linux-Betriebssystemen kostenlos enthalten. Es ist also gut etabliert. Das bedeutet nicht, dass Sie Probleme haben werden, MongoDB-Experten zu finden. Sie ist schließlich mittlerweile die fünfthäufigste benutzte Datenbanktechnologie.

    Bedenken Sie, welche Talente Sie intern haben und wen Sie sonst benötigen, nachdem Sie Ihre Entscheidung getroffen haben.

Fazit:

Ich weiß, ich weiß: Sie haben gehofft, dass wir Ihnen viel Zeit und Mühe sparen, indem wir Ihnen erzählen, dass Sie eine der Lösungen wählen sollen, nicht wahr? Das Problem ist, dass die Wahl nicht immer einfach ist, wie dieser Artikel hoffentlich gezeigt hat.

Um Ihre Entscheidung zu treffen, denken Sie sorgfältig darüber nach, was Sie von Ihrem Datenbanksystem erwarten – und vor allem, was Sie in einigen Jahren brauchen werden. Nicht nur in Bezug auf den Speicher, sondern auch darauf, was Sie mit Ihren Daten tun möchten.

Und ja, wenn Sie bereits entweder MongoDB oder Postgres benutzen, könnte Ihnen der Wechsel Kopfschmerzen bereiten, doch glauben Sie uns: Sie möchten die richtige Entscheidung treffen und das so schnell wie möglich. Da Ihre Daten wachsen und immer komplexer werden, wird ein Kurswechsel später immer schwieriger!

6 crucial steps of preparing data for analysis
Tags: | | |