zurück zum Artikel

Freie Datenbank PostgreSQL bekommt spaltenorientierte Engine

Für die Analyse großer Datenmengen bringt das spalten- gegenüber dem zeilenorientierten Speichern Geschwindigkeits- und Platzgewinne. Die von Citusdata entwickelte Erweiterung steht unter der Apache-Lizenz.

Mit einer externen Erweiterung können Anwender der freien relationalen Datenbank PostgreSQL Daten spaltenorientiert ablegen und darauf mit den üblichen SQL-Kommandos zugreifen. Die Software wurde von Citusdata entwickelt [1] und steht auf github [2] für Linux und OS X zum Herunterladen zur Verfügung.

Die Erweiterung nutzt das Foreign-Table-Konzept [3] von PostgreSQL, das den in MySQL verwendeten Engines ähnelt. Dadurch können Entwickler die konkrete Datenspeicherung von der Abfrageschicht entkoppeln. Auf Foreign Table greifen Anwendungsprogrammierer genauso zu wie auf die klassischen, PostgreSQL-eigenen. Deshalb ist es auch möglich, Daten aus beiden Tabellentypen per JOIN zu kombinieren.

Mit spaltenweise gespeicherten Daten soll PostgreSQL den TPC-H-Benchmark doppelt so schnell absolvieren.

(Bild: citusdata.com)

Üblicherweise legen relationale Datenbanken ihre Tabellen zeilenweise auf der Platte ab. Für viele OLAP-Anwendungen (Online Analytical Processing) hat sich jedoch das spaltenorientierte Speichern als günstiger erwiesen: Es verkürzt etwa bei Aggregatfunktionen wie SUM, die alle oder die meisten Werte einer Spalte verarbeiten, die Laufzeit wesentlich. Außerdem lassen sich die Daten spaltenweise besser komprimieren, was Plattenplatz spart. So soll PostgreSQL den TPC-Benchmark mit der Erweiterung von Citusdata etwa doppelt so schnell ausführen wie ohne und die Plattenzugriffe sinken auf bis zu einem Zehntel.

Siehe dazu auch:


URL dieses Artikels:
http://www.heise.de/-2162900

Links in diesem Artikel:
[1] http://citusdata.com/blog/76-postgresql-columnar-store-for-analytics
[2] https://github.com/citusdata/cstore_fdw
[3] http://www.postgresql.org/docs/9.3/static/sql-createforeigntable.html
[4] http://www.heise.de/download/postgresql-113829.html