Top 12 Open Source-Datenbanksoftware für Ihr nächstes Projekt

Daten sind alles. Und im weiteren Sinne auch Datenbanken. Hier sind einige fantastische Open Source-Optionen für Ihr nächstes Kick-Ass-Projekt.

Für eine Welt, die so lange von Datenbankanzügen wie Oracle und SQL Server dominiert wird, scheint es jetzt eine endlose Flut von Lösungen zu geben. Ein Teil des Grundes ist die Innovation, die von Open Source angetrieben wird - wirklich talentierte Entwickler, die einen Juckreiz kratzen und etwas schaffen wollen, in dem sie schwelgen können.

Der andere Teil ist das Aufkommen neuer Geschäftsmodelle, bei denen Unternehmen eine Community-Version ihres Produkts pflegen, um Gedankenaustausch und Traktion zu erlangen und gleichzeitig ein kommerzielles Zusatzangebot bereitzustellen.

Das Ergebnis?

Mehr Datenbanken als man mithalten kann. Es gibt keine offizielle Statistik dazu, aber ich bin mir ziemlich sicher, dass wir heute über hundert Optionen zur Verfügung haben, wenn Sie alles kombinieren, von stapelspezifischen Objektdatenbanken bis zu weniger beliebten Projekten von Universitäten.

Ich weiß; es macht mir auch angst Zu viele Optionen - zu viel Dokumentation, um sie durchzugehen - und ein so kurzes Leben. 🙂

Aus diesem Grund habe ich beschlossen, diesen Artikel zu schreiben, in dem zehn der besten Datenbanken vorgestellt werden, mit denen Sie Ihre Lösungen verbessern können, unabhängig davon, ob Sie für sich selbst oder für andere erstellen.

Kein MySQL

Bitte beachten Sie: Diese Liste enthält kein MySQL, obwohl es wohl die beliebteste Open Source-Datenbanklösung ist.

Warum?

Einfach, weil MySQL überall ist - es ist das, was jeder zuerst lernt, es wird von praktisch jedem CMS oder Framework unterstützt und es ist für die meisten Anwendungsfälle sehr, sehr gut. Mit anderen Worten, MySQL muss nicht „entdeckt“ werden. 🙂

Beachten Sie jedoch, dass die folgenden Optionen nicht unbedingt Alternativen zu MySQL sind. In einigen Fällen sind sie möglicherweise eine völlig andere Lösung für einen ganz anderen Bedarf. Mach dir keine Sorgen, ich werde auch ihre Verwendung besprechen.

Besonderer Hinweis: Kompatibilität

Bevor wir beginnen, muss ich auch erwähnen, dass Kompatibilität etwas ist, das Sie beachten müssen. Wenn Sie ein Projekt haben, das aus irgendeinem Grund nur eine bestimmte Datenbank-Engine unterstützt, sind Ihre Entscheidungen ziemlich genau getroffen.

Wenn Sie beispielsweise WordPress ausführen, ist dieser Artikel für Sie nicht von Nutzen. 🙂 Ebenso werden diejenigen, die statische Sites auf JAMStack ausführen, nichts gewinnen, wenn sie zu ernsthaft nach Alternativen suchen.

Es liegt an Ihnen, die Kompatibilitätsgleichung herauszufinden. Wenn Sie jedoch eine leere Tafel haben und die Architektur Ihnen überlassen bleibt, finden Sie hier einige nette Empfehlungen.

PostgreSQL

Wenn Sie aus dem PHP-Land kommen (WordPress, Magento, Drupal usw.), dann PostgreSQL wird dir fremd klingen. Diese relationale Datenbanksoftware gibt es jedoch seit 1997 und ist die erste Wahl in Communities wie Ruby, Python, Go usw.

Tatsächlich „graduieren“ viele Entwickler schließlich zu PostgreSQL, weil es Funktionen bietet oder einfach nur um Stabilität zu gewährleisten. Es ist schwer, jemanden in einem kurzen Artikel wie diesem zu überzeugen, aber stellen Sie sich PostgreSQL als ein durchdachtes Produkt vor, das Sie nie im Stich lässt.

Es gibt viele gute SQL-Clients verfügbar, um eine Verbindung zur PostgreSQL-Datenbank für die Verwaltung und Entwicklung herzustellen.

Einzigartige Features

PostgreSQL bietet im Vergleich zu anderen relationalen Datenbanken (insbesondere MySQL) einige faszinierende Funktionen wie:

Meine persönlichen Favoriten sind die Geolocation-Engine (die die Arbeit bei der Arbeit mit standortbasierten Apps lindert - versuchen Sie, alle Punkte in der Nähe manuell zu finden, und Sie wissen, was ich meine) und die Unterstützung für Arrays (viele MySQL-Projekte werden aus Mangel rückgängig gemacht Arrays, die sich stattdessen für die berüchtigten durch Kommas getrennten Zeichenfolgen entscheiden).

Wann wird PostgreSQL verwendet?

PostgreSQL ist immer eine bessere Wahl als jedes andere relationale Datenbankmodul. Das heißt, wenn Sie ein neues Projekt starten und schon einmal von MySQL gebissen wurden, ist es ein guter Zeitpunkt, über PostgreSQL nachzudenken. Ich habe Freunde, die es aufgegeben haben, gegen MySQLs mysteriöse Transaktionssperrfehler zu kämpfen, und die dauerhaft weitergingen. Wenn Sie sich für dasselbe entscheiden, werden Sie nicht überreagieren.

PostgreSQL hat auch einen klaren Vorteil, wenn Sie teilweise NoSQL-Funktionen für ein hybrides Datenmodell benötigen. Da die Speicherung von Dokumenten und Schlüsselwerten nativ unterstützt wird, müssen Sie nicht nach einer anderen Datenbanklösung suchen, diese installieren, lernen und warten.

Wenn Sie PostgreSQL nicht verwenden

PostgreSQL ist nicht sinnvoll, wenn Ihr Datenmodell nicht relational ist und / oder wenn Sie ganz bestimmte architektonische Anforderungen haben. Betrachten Sie beispielsweise Analytics, bei dem ständig neue Berichte aus vorhandenen Daten erstellt werden. Solche Systeme sind leselastig und leiden, wenn ihnen ein striktes Schema auferlegt wird. Sicher, PostgreSQL verfügt über eine Dokumentenspeicher-Engine, aber beim Umgang mit großen Datenmengen fallen die Dinge auseinander.

Mit anderen Worten, verwenden Sie immer PostgreSQL, es sei denn, Sie wissen zu 100%, was Sie tun! 🙂

Check out this SQL & PostgreSQL für Anfängerkurs wenn Sie mehr erfahren möchten.

MariaDB

MariaDB wurde als Ersatz für MySQL von derselben Person erstellt, die MySQL entwickelt hat.

Verwirrt?

Nachdem MySQL 2010 von Oracle übernommen wurde (durch den Erwerb von Sun Microsystems, mit dem Oracle übrigens auch Java kontrollierte), startete der Entwickler von MySQL ein neues Open-Source-Projekt namens MariaDB.

Warum ist all dieses langweilige Detail wichtig, fragen Sie? Dies liegt daran, dass MariaDB aus derselben Codebasis wie MySQL erstellt wurde (in der Open-Source-Welt wird dies als „Forking“ eines vorhandenen Projekts bezeichnet). Infolgedessen wird MariaDB als "Drop-In" -Ersatz für MySQL präsentiert.

Das heißt, wenn Sie MySQL verwenden und auf MariaDB migrieren möchten, ist der Prozess so einfach dass du es einfach nicht glauben wirst.

Leider ist eine solche Migration eine Einbahnstraße. Ein Zurückkehren von MariaDB zu MySQL ist nicht möglich. Sollten Sie versuchen, Gewalt anzuwenden, ist eine dauerhafte Beschädigung der Datenbank gewährleistet!

Einzigartige Features

Während MariaDB im Wesentlichen ein Klon von MySQL ist, ist dies nicht unbedingt der Fall. Seit der Einführung der Datenbank haben die Unterschiede zwischen den beiden zugenommen. Zum Zeitpunkt des Schreibens muss die Übernahme von MariaDB eine durchdachte Entscheidung von Ihrer Seite sein. Trotzdem gibt es in MariaDB viele neue Dinge, die Ihnen bei diesem Übergang helfen können:

. . . Und viele, viele mehr. Es ist anstrengend, mit allen MariaDB-Funktionen Schritt zu halten. 🙂

Wann man MariaDB benutzt

Wenn Sie MySQL wirklich ersetzen möchten, sollten Sie MariaDB verwenden, da diese auf der Innovationskurve bleiben und nicht vorhaben, wieder zu MySQL zurückzukehren. Ein hervorragender Anwendungsfall ist die Verwendung neuer Speicher-Engines in MariaDB, um das vorhandene relationale Datenmodell Ihres Projekts zu ergänzen.

Wann sollte MariaDB nicht verwendet werden?

Die Kompatibilität mit MySQL ist hier das einzige Problem. Das heißt, es wird immer weniger ein Problem, da Projekte wie WordPress, Joomla, Magento usw. begonnen haben, MariaDB zu unterstützen. Mein Rat wäre, MariaDB nicht zu verwenden, um ein CMS auszutricksen, das es nicht unterstützt, da viele datenbankspezifische Tricks das System leicht zum Absturz bringen.

Überprüfen Sie den Unterschied zwischen MariaDB gegen MySQL und MariaDB Installationsanleitung.

CockroachDB

Das Team hinter CockroachDB scheint aus Masochisten zu bestehen. Mit einem solchen Produktnamen wollen sie doch alle Chancen gegen sie wenden und trotzdem gewinnen?

Nun, nicht ganz.

Die Idee hinter "Kakerlake" ist, dass es ein Insekt ist, das zum Überleben gebaut wurde. Egal was passiert - Raubtiere, Überschwemmungen, ewige Dunkelheit, verrottendes Essen, Bombenangriffe - die Kakerlake findet einen Weg, um zu überleben und sich zu vermehren.

Die Idee ist, dass das Team hinter CockroachDB (bestehend aus ehemaligen Google-Ingenieuren) von den Einschränkungen traditioneller SQL-Lösungen in großem Maßstab enttäuscht war. Das liegt daran, dass SQL-Lösungen in der Vergangenheit auf einem einzelnen Computer gehostet werden sollten (die Daten waren nicht so groß). Lange Zeit gab es keine Möglichkeit, einen Cluster von Datenbanken mit SQL zu erstellen, weshalb MongoDB so viel Aufmerksamkeit auf sich zog.

Selbst als Replikation und Clustering in MySQL, PostgreSQL und MariaDB herauskamen, war es bestenfalls schmerzhaft. CoackroachDB möchte dies ändern und der SQL-Welt müheloses Sharding, Clustering und hohe Verfügbarkeit bieten.

Wann man CockroachDB benutzt

CockroachDB Ist der Traum des Systemarchitekten wahr geworden? Wenn Sie auf SQL schwören und die Skalierungsfunktionen von MongoDB beherrschen, werden Sie CockroachDB lieben. Jetzt können Sie schnell einen Cluster einrichten, Abfragen stellen und nachts ruhig schlafen. 🙂

Wann nicht CockroachDB verwenden

Besser der Teufel, den du kennst als der, den du nicht kennst. Damit meine ich, wenn Ihr vorhandenes RDBMS für Sie gut funktioniert und Sie denken, Sie können die damit verbundenen Skalierungsprobleme bewältigen, bleiben Sie dabei. CockroachDB ist ein neues Produkt für alle Beteiligten, und Sie möchten später nicht mehr dagegen ankämpfen. Ein weiterer wichtiger Grund ist die SQL-Kompatibilität. Wenn Sie exotische SQL-Aufgaben ausführen und sich bei kritischen Dingen darauf verlassen, zeigt CockroachDB zu viele Randfälle für Ihren Geschmack.

Von nun an werden wir Nicht-SQL-Datenbanklösungen (oder NoSQL-Datenbanklösungen) für hochspezialisierte Anforderungen in Betracht ziehen.

ClickHouse

Suchen Sie nach einem schnellen Open-Source-OLAP-Datenbanksystem?

Gehen Sie für ClickHouse.

Es nutzt jede Hardware maximal aus, um sich jeder Abfrage schneller zu nähern. Die Spitzenleistung bei der Verarbeitung einer Abfrage beträgt normalerweise mehr als zwei Terabyte pro Sekunde. Um eine erhöhte Latenz zu vermeiden, werden die Lesevorgänge automatisch zwischen den fehlerfreien Replikaten ausgeglichen. 

Es unterstützt die asynchrone Multi-Master-Replikation und kann in verschiedenen Rechenzentren bereitgestellt werden. Da die Knoten gleich bleiben, können Sie auch einzelne Fehlerpunkte vermeiden. Die Ausfallzeit eines einzelnen Knotens oder des gesamten Rechenzentrums wirkt sich niemals auf die Systemverfügbarkeit in Bezug auf Schreib- und Lesevorgänge aus.

ClickHouse ist sehr einfach zu bedienen und einfach. Es rationalisiert die Datenverarbeitung, speichert alle Ihre Daten auf organisierte Weise in einem System und ist sofort verfügbar, um Berichte zu erstellen. Darüber hinaus hilft der SQL-Dialekt dabei, das Ergebnis auszudrücken, ohne eine nicht standardmäßige API zu verwenden, die Sie in alternativen Systemen erhalten können. 

Sie können sich auf dieses Datenbankverwaltungssystem verlassen, um es als verteiltes System zu konfigurieren, das sich auf separaten Knoten ohne Fehlerpunkte befindet. Darüber hinaus sind die Sicherheitsfunktionen robust, einschließlich Sicherheits- und Ausfallsicherheitsmechanismen für Unternehmen bei menschlichen Fehlern.

ClickHouse kann Abfragen schneller verarbeiten als zeilenorientierte Systeme mit derselben CPU-Kapazität und demselben E / A-Durchsatz. Das säulenförmige Datenspeicherformat hilft dabei, mehr Daten im RAM zu halten, was zu kürzeren Antwortzeiten führt.

Die Gesamtbetriebskosten können durch Standardhardware mit rotierenden Festplatten reduziert werden, anstatt NVMe / SSD zu verwenden, ohne die Latenz für die Abfragen zu beeinträchtigen. Es strebt nach CPU-Effizienz, optimiert den Zugriff auf das Festplattenlaufwerk und minimiert die Datenübertragung. 

Darüber hinaus können Sie dank der SQL-Datenbank mit zahlreichen Funktionen Ihre Anfrage in kürzester Zeit effizient verarbeiten, zusammen lokalisierte und verteilte Daten zusammenführen, denormalisierte Informationen effizient verwalten und vieles mehr. ClickHouse lässt sich horizontal und vertikal skalieren und lässt sich problemlos an einen einzelnen Server oder Cluster mit Tausenden von Knoten anpassen.

Verwenden Sie ClickHouse für Web- und Anwendungsanalysen, Telekommunikation, Werbenetzwerk, Online-Spiele, IoT, Business Intelligence, Finanzen, E-Commerce, Überwachung und mehr. 

Es integriert sich mit Hadoop, Postgres und MySQL.

Wenn Sie noch nicht bereit sind, einen Server zu installieren und einzurichten, können Sie es versuchen Kamatera die ClickHouse mit einem Klick anbietet.

Neo4j

Eine der bedeutendsten Entwicklungen des letzten Jahrzehnts sind verbundene Daten. Die Welt um uns herum ist nicht in Tabellen, Zeilen und Kästchen unterteilt - es ist ein riesiges Durcheinander, bei dem alles mit fast allem anderen verbunden ist.

Soziale Netzwerke sind ein Paradebeispiel, und das Erstellen eines ähnlichen Datenmodells mithilfe von SQL oder sogar dokumentbasierten Datenbanken ist ein Albtraum.

Das liegt daran, dass die ideale Datenstruktur für diese Lösungen der Graph ist, der ein ganz anderes Tier ist. Und dafür benötigen Sie eine Grafikdatenbank wie Neo4j.

Das obige Beispiel stammt direkt von der Neo4j-Website und zeigt, wie Studenten mit ihren Abteilungen und Kursen verbunden sind. Ein solches Datenmodell ist mit SQL einfach unmöglich, da es schwierig sein wird, Endlosschleifen und Speicherüberschreitungen zu vermeiden.

Einzigartige Features

Grafikdatenbanken sind an sich einzigartig, und Neo4j ist so ziemlich die einzige Option für die Arbeit mit Grafiken. Infolgedessen sind alle Funktionen einzigartig. 🙂

Es ist ein strittiger Punkt, um zu diskutieren, wann Neo4j verwendet werden soll und wann nicht. Wenn Sie graphbasierte Beziehungen zwischen Ihren Daten benötigen, benötigen Sie Neo4j. 🙂

MongoDB

MongoDB war die erste nicht relationale Datenbank, die große Wellen in der Technologiebranche schlug und weiterhin einen angemessenen Anteil an Aufmerksamkeit dominiert.

Im Gegensatz zu relationalen Datenbanken ist MongoDB eine „Dokumentendatenbank“, in der Daten in Blöcken gespeichert werden, wobei verwandte Daten in demselben Block zusammengefasst werden. Dies lässt sich am besten verstehen, wenn man sich eine Aggregation von JSON-Strukturen wie folgt vorstellt:

Im Gegensatz zu einer tabellenbasierten Struktur befinden sich hier die Kontaktdaten und Zugriffsebenen des Benutzers im selben Objekt. Durch das Abrufen des Benutzerobjekts werden die zugehörigen Daten automatisch abgerufen, und es gibt kein Konzept für einen Join. Hier ist, eine detailliertere Einführung in MongoDB.

Einzigartige Features

MongoDB hat einige ernsthafte (ich möchte fast „Kick-Ass“ schreiben, um die Auswirkungen zu vermitteln, aber es wäre vielleicht auf einer öffentlichen Website nicht richtig) Merkmale, die mehrere erfahrene Architekten dazu gebracht haben, das Beziehungsland für immer aufzugeben:

Wenn ich wie ein Sprecher von MongoDB klinge, entschuldige ich mich, aber es ist schwer, die Vorteile von MongoDB zu übertreiben. Sicher, NoSQL-Datenmodellierung ist anfangs seltsam und manche verstehen es nie, aber für viele Architekten gewinnt sie fast immer über ein tabellenbasiertes Schema.

Wann wird MongoDB verwendet?

MongoDB ist eine großartige Crossover-Brücke von der strukturierten, strengen SQL-Welt zur amorphen, fast verwirrenden NoSQL-Welt. Es zeichnet sich durch die Entwicklung von Prototypen aus, da es einfach kein Schema gibt, über das Sie sich Sorgen machen müssen und wann Sie wirklich müssen skalieren. Ja, Sie können einen Cloud-SQL-Dienst verwenden, um Probleme mit der DB-Skalierung zu beseitigen, aber Junge, ist das teuer?

Schließlich gibt es Anwendungsfälle, in denen SQL-basierte Lösungen einfach nicht ausreichen. Wenn Sie beispielsweise ein Produkt wie . erstellen canva, wo der Benutzer beliebig komplexe Designs erstellen und später bearbeiten kann, viel Glück mit einer relationalen Datenbank!

Wann sollte MongoDB nicht verwendet werden?

Das völlige Fehlen eines Schemas, das MongoDB bereitstellt, kann als Teergrube für diejenigen dienen, die nicht wissen, was sie tun. Dateninkongruenz, tote Daten, leere Felder, die nicht leer sein sollten - all dies und noch viel mehr ist möglich. MongoDB ist im Wesentlichen ein „dummer“ Datenspeicher, und wenn Sie ihn auswählen, muss der Anwendungscode eine große Verantwortung für die Aufrechterhaltung der Datenintegrität übernehmen.

Wenn Sie ein Entwickler sind, werden Sie finden das ist nützlich.

RethinkDB

Wie der Name schon sagt, DB überdenken Überdenkt die Idee und die Fähigkeiten einer Datenbank, wenn es um Echtzeit-Apps geht.

Wenn eine Datenbank aktualisiert wird, kann die Anwendung dies nicht wissen. Der akzeptierte Ansatz besteht darin, dass die App eine Benachrichtigung auslöst, sobald ein Update vorliegt, das über eine komplexe Brücke an das Front-End gesendet wird (PHP -> Redis -> Node -> Socket.io ist ein Beispiel).

Aber was wäre, wenn die Updates direkt von der Datenbank an das Front-End übertragen werden könnten?!

Ja, das ist das Versprechen von RethinkDB. Wenn Sie also eine echte Echtzeitanwendung (Spiel, Marktplatz, Analyse usw.) erstellen möchten, ist Rethink DB einen Blick wert.

Redis

Wenn es um Datenbanken geht, ist es fast zu leicht, die Existenz von zu übersehen Redis. Dies liegt daran, dass Redis eine In-Memory-Datenbank ist und hauptsächlich in Unterstützungsfunktionen wie dem Caching verwendet wird.

Diese Datenbank lernen ist ein zehnminütiger Job (im wahrsten Sinne des Wortes!) und ein einfacher Schlüsselwertspeicher, in dem Zeichenfolgen mit einer Ablaufzeit gespeichert werden (die natürlich auf unendlich gesetzt werden kann). Was Redis an Funktionen verliert, macht es an Nützlichkeit und Leistung wieder wett. Da es vollständig im RAM lebt, sind Lese- und Schreibvorgänge wahnsinnig schnell (einige hunderttausend Operationen pro Sekunde sind keine Seltenheit).

Redis hat auch eine raffinierte Pub-Sub-System, was diese „Datenbank“ doppelt so attraktiv macht.

Mit anderen Worten, wenn Sie ein Projekt haben, das vom Caching profitieren könnte oder über verteilte Komponenten verfügt, ist Redis die erste Wahl.

SQLite

Ja, ich habe versprochen, dass wir mit relationalen Datenbanken fertig sind, aber SQLite ist zu süß, um es zu ignorieren.

SQLite ist eine kompakte C-Bibliothek, die eine relationale Datenbankspeicher-Engine bereitstellte. Alles in dieser Datenbank befindet sich in einer einzigen Datei (mit der Erweiterung .sqlite), die Sie an einer beliebigen Stelle in Ihrem Dateisystem ablegen können. Und das ist alles was Sie brauchen, um es zu benutzen! Ja, es muss keine Server-Software installiert und kein Dienst hergestellt werden.

Nützliche Funktionen

Obwohl SQLite eine leichte Alternative zu einer Datenbank wie MySQL ist, bietet es eine Menge Power. Einige seiner schockierenden Eigenschaften sind:

Wann wird SQLite verwendet?

SQLite ist eine extrem spezialisierte Datenbank, die sich auf einen No-Nonsense-Ansatz konzentriert. Wenn Ihre App relativ einfach ist und Sie nicht den Aufwand einer vollständigen Datenbank benötigen, ist SQLite ein ernstzunehmender Kandidat. Dies ist besonders sinnvoll für kleine bis mittelgroße CMS und Demo-Anwendungen.

Wenn Sie SQLite nicht verwenden

SQLite ist zwar beeindruckend, deckt jedoch nicht alle Funktionen von Standard-SQL oder Ihrer bevorzugten Datenbank-Engine ab. Clustering, gespeicherte Prozeduren und Skripterweiterungen fehlen. Außerdem gibt es keinen Client zum Verbinden, Abfragen und Durchsuchen der Datenbank. Schließlich nimmt die Leistung mit zunehmender Anwendungsgröße ab.

Cassandra

Während viele behaupten, dass das Ende von Java nahe ist, lässt die Community von Zeit zu Zeit eine Bombe fallen und bringt die Kritiker zum Schweigen. Kassandra ist ein solches Beispiel.

Cassandra gehört zur sogenannten "säulenförmigen" Datenbankfamilie. Die Speicherabstraktion in Cassandra ist eher eine Spalte als eine Zeile. Die Idee hier ist, alle Daten in einer Spalte physisch zusammen auf der Festplatte zu speichern, um die Suchzeit zu minimieren.

Einzigartige Features

Cassandra wurde mit Blick auf einen bestimmten Anwendungsfall entwickelt - den Umgang mit schreibintensiven Lasten und die Nulltoleranz für Ausfallzeiten. Diese werden zu Alleinstellungsmerkmalen.

Wann man Cassandra benutzt

Protokollierung und Analyse sind zwei der besten Anwendungsfälle für Cassandra. Aber das ist noch nicht alles - der Sweet Spot ist, wenn Sie wirklich große Datenmengen verarbeiten müssen (Apple verfügt über eine Cassandra-Bereitstellung, die mehr als 400 Petabyte Daten verarbeitet, während bei Netflix 1 Billion Anfragen pro Tag verarbeitet werden), ohne dass Ausfallzeiten erforderlich sind. Hohe Verfügbarkeit ist eines der Markenzeichen von Cassandra.

Wann sollte Cassandra nicht verwendet werden?

Das Säulenspeicherschema von Cassandra hat auch seine Nachteile. Das Datenmodell ist ziemlich flach, und wenn Sie Aggregationen benötigen, ist Cassandra nicht ausreichend. Darüber hinaus wird eine hohe Verfügbarkeit durch Einbußen bei der Konsistenz erreicht (denken Sie an den CAP-Satz für verteilte Systeme), wodurch es für Systeme, für die eine hohe Lesegenauigkeit erforderlich ist, weniger geeignet ist.

Timescale

Neue Entwicklungen erfordern neue Arten von Datenbanken, und das Internet der Dinge (Internet of Things, IoT) ist ein solches Phänomen. Eine der besten Open-Source-Datenbanken dafür ist Zeitskala.

Die Zeitskala ist eine Art sogenannte Zeitreihendatenbank. Es unterscheidet sich von einer herkömmlichen Datenbank, da diese Zeit das Hauptanliegen ist und die Analyse und Visualisierung großer Datenmengen oberste Priorität hat. Zeitreihendatenbanken sehen selten eine Änderung der vorhandenen Daten. Ein Beispiel sind Temperaturwerte, die von einem Sensor in einem Gewächshaus gesendet werden. Jede Sekunde werden neue Daten gesammelt, was für Analysen und Berichte von Interesse ist.

Warum also nicht nur eine herkömmliche Datenbank mit einem Zeitstempelfeld verwenden? Dafür gibt es zwei Hauptgründe:

Einzigartige Features

Timescale DB verfügt über einige aufregende Funktionen, die es von anderen Datenbanken derselben Kategorie unterscheiden:

Es macht wenig Sinn darüber zu sprechen, wann Timescale DB verwendet werden soll oder nicht. Wenn IoT Ihre Domain ist oder Sie nach ähnlichen Datenbankeigenschaften suchen, ist Timescale einen Blick wert.

CouchDB

CouchDB ist eine nette kleine Datenbanklösung, die ruhig in einer Ecke sitzt und eine kleine, aber engagierte Anhängerschaft hat. Es wurde entwickelt, um die Probleme eines Netzwerkverlusts und einer eventuellen Auflösung von Daten zu lösen. Dies ist ein Problem, das so chaotisch ist, dass Entwickler stattdessen den Job wechseln, als sich damit zu befassen.

Im Wesentlichen können Sie sich einen CouchDB-Cluster als eine verteilte Sammlung von großen und kleinen Knoten vorstellen, von denen einige voraussichtlich offline sind. Sobald ein Knoten online geht, sendet er Daten an den Cluster zurück, der langsam und sorgfältig verdaut wird und schließlich für den gesamten Cluster verfügbar wird.

Einzigartige Features

CouchDB ist eine einzigartige Rasse, wenn es um Datenbanken geht.

Wann man CouchDB benutzt

CouchDB wurde für Offline-Toleranz entwickelt und ist in dieser Hinsicht unerreicht. Ein typischer Anwendungsfall sind mobile Apps, bei denen sich ein Teil Ihrer Daten auf einer CouchDB-Instanz auf dem Telefon des Benutzers befindet (da diese dort generiert wurden). Das Spannende ist, dass Sie sich nicht darauf verlassen können, dass das Gerät des Benutzers ständig verbunden ist. Dies bedeutet, dass die Datenbank opportunistisch sein und bereit sein muss, widersprüchliche Updates später zu lösen. Dies wird mit dem beeindruckenden erreicht Couch-Replikationsprotokoll.

Wann sollte CouchDB nicht verwendet werden?

Der Versuch, CouchDB außerhalb des vorgesehenen Anwendungsfalls zu verwenden, führt zu einer Katastrophe. Es verbraucht viel mehr Speicher als alles andere da draußen, einfach weil es redundante Kopien von Daten und Konfliktlösungsergebnissen verwalten muss. Infolgedessen sind die Schreibgeschwindigkeiten auch schmerzhaft langsam. Schließlich eignet sich CouchDB nicht als Allzweck-Schema-Engine, da es bei Schemaänderungen nicht gut funktioniert.

Fazit

Ich musste viele interessante Kandidaten wie Riak weglassen, daher ist diese Liste eher als Leitfaden als als Gebot zu verstehen. Ich hoffe, dass ich mit diesem Artikel mein Ziel erreichen konnte - präsentieren Sie nicht nur eine Sammlung von Empfehlungen für Datenbanksoftware, sondern diskutieren Sie auch kurz, wo und wie sie verwendet werden müssen (und vermieden werden müssen!).

Wenn Sie neugierig sind, Datenbanken zu lernen, schauen Sie sich das an Udemy für einige brillante Online-Kurse.