Was ist eine Säulendatenbank?

97

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?
Raj Mehr
quelle
1
Zusätzlich zu der reduzierten Anzahl von Suchvorgängen, die in den Antworten erwähnt werden, komprimieren einige Implementierungen (z. B. der Spaltenspeicher von SQL Server) die Daten. Dies verhindert die Zeilenfilterung, kann jedoch die Abfrageleistung zusätzlich verbessern.
Pace

Antworten:

49

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 ...

  • Performance...
  • Lagerungssansprüche ...
  • einfache Änderung des Schemas ...

... 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.

mjv
quelle
253

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:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

würde auf der Festplatte oder im Speicher gespeichert werden wie:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Dies steht im Gegensatz zu einem herkömmlichen Rowstore, in dem die Daten eher wie folgt gespeichert werden:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

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.

Paul Mansour
quelle
22
Dies scheint besser zu sein als die akzeptierte Antwort, aber ich bin kein Experte. Upvote.
Rob Grant
2
Spaltenorientierte Datenbanken werden verwendet, in denen Aggregationen für bestimmte Spalten wie Verkaufsberichte abgefragt werden. Der Punkt hier ist, wenn Sie eine zeilenorientierte Datenbank verwenden, müssen alle Zeilen (Blöcke) in den Hauptspeicher gebracht werden, was viel Suchzeit von der Festplatte beinhaltet, um alle Blöcke von der Festplatte zum RAM zu bringen, selbst wenn Sie nur an Spalten interessiert sind Dies hilft Ihnen bei der Erstellung eines Verkaufsberichts. Während in spaltenorientierten Schemata Spalten zusammenhängend in den Blöcken gespeichert werden, führt dies aufgrund der geringeren Anzahl von Blöcken zu weniger Suchvorgängen. Daher werden für OLAP Spaltendatenbanken verwendet, während für OLTP-Inhalte zeilenorientierte Datenbanken verwendet werden.
Bharatj
4

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.

hari_sree
quelle
2

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.)

Kim Stanick
quelle
Sie können den IDC-Bericht erhalten unter: paraccel.com/press/3rd_generation_database_technology
kim stanick
Aster Data ist eine relationale MPP-Datenbank und bietet native Unterstützung für Spaltentabellen.
Topchef
@ Kimstanick, Paraccel-URL ist tot.
user674669
2

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

Razan Paul
quelle
1

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

S.Lott
quelle
Eine Sache, die bei Vertica zu beachten ist, ist, dass ich im Internet einen Hinweis auf die Lizenzkosten gesehen habe, die darin bestehen, dass Daten im Wert von 150.000 USD / TB gespeichert werden. Es ist also nicht billig.
Mark
@ Mark: Kosten sind nicht das Problem. Information ist das Problem. Wenn das OP Informationen wünscht, sind Anbieter häufig die bestmögliche Quelle.
S.Lott
1
Amazon bietet seinen superschnellen RedShift-Datenspeicher unter 1.000 US-Dollar pro Terabyte und Jahr an, wenn Sie nicht besonders nach Columnar One suchen.
Mevdiven
1

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, ...).

user2987828
quelle