Ich arbeite jetzt schon eine Weile mit Lagerhaltung.
Ich bin fasziniert von Säulendatenbanken und der Geschwindigkeit, die sie für das Abrufen von Daten bieten.
Ich habe eine mehrteilige Frage:
- Wie funktionieren Säulendatenbanken?
- Wie unterscheiden sie sich von relationalen Datenbanken?
Antworten:
Wie funktionieren Säulendatenbanken?
Die Säulendatenbank isteherein Konzept als eine bestimmte Architektur / Implementierung . Mit anderen Worten, es gibt keine bestimmte Beschreibung der Funktionsweise dieser Datenbanken. In der Tat bauen mehrere auf herkömmlichem, zeilenorientiertem DBMS auf, indem sie die Informationen einfach in Tabellen mit einer (oder eher häufig zwei) Spalten speichern (und die erforderliche Ebene hinzufügen, um auf einfache Weise auf die Säulendaten zugreifen zu können).
Wie unterscheiden sie sich von relationalen Datenbanken? Sie unterscheiden sich im Allgemeinen von herkömmlichen (zeilenorientierten) Datenbanken in Bezug auf ...
... in bestimmten Anwendungsfällen von DBMS .
Insbesondere bieten sie Vorteile in den genannten Bereichen, wenn die typische Verwendung darin besteht, Aggregatwerte für eine begrenzte Anzahl von Spalten zu berechnen, anstatt zu versuchen, alle / die meisten Spalten für eine bestimmte Entität abzurufen.
Gibt es eine Testversion einer Säulendatenbank, die ich installieren kann, um herumzuspielen? (Ich bin unter Windows 7) Ja, es gibt kommerzielle, kostenlose und auch Open-Source-Implementierung von Säulendatenbanken. Siehe die Liste am Ende des Wikipedia-Artikels fürden Anfang.
Beachten Sie, dass mehrere dieser Implementierungen eingeführt wurden, um einen bestimmten Bedarf zu decken (z. B. sehr geringer Platzbedarf, stark komprimierbare Datenverteilung oder Emulation von Ersatzmatrix usw.), anstatt ein spaltenorientiertes Allzweck-DBMS per se bereitzustellen.
Hinweis: Die Bemerkung zur "Single-Purpose-Orientierung" mehrerer säulenförmiger DBMS ist keine Kritik an diesen Implementierungen, sondern ein zusätzlicher Hinweis darauf, dass ein solcher Ansatz für DBMS vom "natürlicheren" (und sicherlich allgemeineren) Ansatz abweicht Speichern von Datensatzentitäten. Infolgedessen wird dieser Ansatz verwendet, wenn der zeilenorientierte Ansatz nicht zufriedenstellend ist, und daher dazu neigt,
a) auf einen bestimmten Zweck ausgerichtet zu sein, b) weniger Ressourcen / Interesse zu erhalten als an "General Purpose", "Tried and" zu arbeiten Getestet ", tabellarischer Ansatz.
Vorläufig kann das EAV-Datenmodell ( Entity-Attribute-Value ) eine alternative Speicherstrategie sein, die Sie möglicherweise in Betracht ziehen möchten. Obwohl sich EAV vom "reinen" Columnar DB-Modell unterscheidet, weist es mehrere Merkmale von Columnar DBs auf.
quelle
Wie funktionieren Spaltendatenbanken? Das definierende Konzept eines Spaltenspeichers besteht darin, dass die Werte einer Tabelle zusammenhängend nach Spalten gespeichert werden. So die klassische Lieferantentabelle aus der Lieferanten- und Teiledatenbank von CJ Date:
würde auf der Festplatte oder im Speicher gespeichert werden wie:
Dies steht im Gegensatz zu einem herkömmlichen Rowstore, in dem die Daten eher wie folgt gespeichert werden:
Aus diesem einfachen Konzept ergeben sich alle grundlegenden Leistungsunterschiede zwischen einem Spaltenspeicher und einem Zeilenspeicher, egal ob gut oder schlecht. Zum Beispiel kann ein Spaltenspeicher Aggregationen wie Summen und Durchschnittswerte ausführen, aber das Einfügen einer einzelnen Zeile kann teuer sein, während die Umkehrung für Zeilenspeicher gilt. Dies sollte aus dem obigen Diagramm ersichtlich sein.
Wie unterscheiden sie sich von relationalen Datenbanken? Eine Beziehungsdatenbank ist ein logisches Konzept. Eine Spaltendatenbank oder ein Spaltenspeicher ist ein physikalisches Konzept. Somit sind die beiden Begriffe in keiner sinnvollen Weise vergleichbar. Spaltenorientierte DMBS können relational sein oder nicht, genauso wie zeilenorientierte DBMS mehr oder weniger relationalen Prinzipien entsprechen können.
quelle
Ich würde sagen, der beste Kandidat, um spaltenorientierte Datenbanken zu verstehen, ist die Überprüfung von HBase ( Apache Hbase ). Sie checken den Code aus und erkunden ihn weiter, um mehr über die Implementierung zu erfahren.
quelle
Darüber hinaus verfügen Columnar-DBs über eine integrierte Affinität zur Datenkomprimierung, und der Ladevorgang ist einzigartig. Hier ist ein Artikel, den ich 2008 geschrieben habe und der ein bisschen mehr erklärt.
Vielleicht interessiert Sie auch ein neuer Bericht von Carl Olofson von IDC über die DBMS-Technologie der 3. Generation. Es werden Columnar et al. Wenn Sie kein IDC-Kunde sind, können Sie es kostenlos auf unserer Website erhalten. Er macht auch am 16. Juni ein Webinar (auch auf unserer Seite).
(Übrigens, ein Kommentar oben listet Asterdaten auf, aber ich denke nicht, dass sie säulenförmig sind.)
quelle
Um zu verstehen, was eine spaltenorientierte Datenbank ist, ist es besser, sie einer zeilenorientierten Datenbank gegenüberzustellen.
Zeilenorientierte Datenbanken (z. B. MS SQL Server und SQLite) dienen zur effizienten Rückgabe von Daten für eine gesamte Zeile. Dazu werden alle Spaltenwerte einer Zeile zusammen gespeichert. Zeilenorientierte Datenbanken eignen sich gut für OLTP-Systeme (z. B. Einzelhandelsverkäufe und Finanztransaktionssysteme).
Spaltenorientierte Datenbanken sind so konzipiert, dass Daten für eine begrenzte Anzahl von Spalten effizient zurückgegeben werden. Dazu werden alle Werte einer Spalte zusammen gespeichert. Zwei weit verbreitete spaltenorientierte Datenbanken sind Apache Hbase und Google BigTable (von Google für Search, Analytics, Maps und Gmail verwendet). Sie eignen sich für Big-Data-Projekte. Eine spaltenorientierte Datenbank zeichnet sich durch Lesevorgänge für eine begrenzte Anzahl von Spalten aus. Schreibvorgänge sind jedoch im Vergleich zu zeilenorientierten Datenbanken teuer.
Für mehr: https://en.wikipedia.org/wiki/Column-oriented_DBMS
quelle
Produktinformation. Dies kann helfen. Dies waren Produkte, die in einer Google-Suche vorgestellt wurden.
http://www.vertica.com/
http://www.paraccel.com/
http://www.asterdata.com/index.php
quelle
kx ist eine weitere Säulendatenbank, die beispielsweise im Finanzsektor verwendet wird. Die Lizenz beträgt etwas 50.000 US-Dollar, als ich das letzte Mal nachgesehen habe. Keine Optimierung erforderlich, kein Index erforderlich, weil kx hat leistungsfähige Operatoren (Matlab - Äquivalente:
.*
,kron
,bsxfun
, ...).quelle