www.wikidata.de-de.nina.az
Eine spaltenorientierte Datenbank ist ein Datenbankmanagementsystem das seine Inhalte spaltenweise und nicht zeilenweise physisch abspeichert Das hat Vorteile bei Anwendungen wie einem Data Warehouse wo Aggregate uber grosse Zahlen ahnlicher Elemente gebildet werden 1 2 Der spaltenorientierte Ansatz steht im Kontrast zum zeilenorientierten dem die meisten bekannten Datenbanksysteme folgen Inhaltsverzeichnis 1 Beschreibung 2 Vor und Nachteile 2 1 Kompression 3 Implementierungen 4 EinzelnachweiseBeschreibung BearbeitenEine Datenbank stellt meistens ihre Daten als zweidimensionale Tabellen aus Zeilen und Spalten dar diese mussen aber in eindimensionaler Form gespeichert werden Zum Beispiel konnte eine Datenbank die folgende Tabelle enthalten Personalnr Nachname Vorname Gehalt1 Schmidt Josef 400002 Muller Maria 500003 Meier Julia 44000Diese einfache Tabelle enthalt eine Spalte fur die Personalnummer Namensspalten und ein Gehalt Diese Tabelle existiert im Arbeitsspeicher und auf der Festplatte des Computers Beide Speicherarten haben gemeinsam dass die Daten aus der Sicht des Betriebssystems in einer eindimensionalen Folge von Bytes angeordnet sind Die zu losende Aufgabe ist also die zweidimensionale Struktur einer Datenbanktabelle in eine eindimensionale Folge von Bytes abzubilden Eine zeilenorientierte Datenbank hangt alle Datenwerte einer Zeile aneinander es folgt die nachste Zeile usw 1 Schmidt Josef 40000 2 Muller Maria 50000 3 Meier Julia 44000 Eine spaltenorientierte Datenbank geht stattdessen Spalte fur Spalte vor 1 2 3 Schmidt Muller Meier Josef Maria Julia 40000 50000 44000 Die physische Organisation einer Datenbank wird von Partitionierung Indizes Caching Views OLAP Wurfel und transaktionalen Aspekten wie Write Ahead Logging stark beeinflusst Unter der Berucksichtigung all dieser Einflusse stellt sich heraus dass OLTP Systeme eher zeilenorientiert OLAP Systeme eine Balance aus Zeilen und Spaltenorientierung anstreben Vor und Nachteile BearbeitenVergleiche zwischen zeilenorientierten und spaltenorientierten Systemen konzentrieren sich typischerweise vor allem auf die Effizienz des Festplattenzugriffs der im Vergleich zu anderen Operationen des Computers erhebliche Zeit verbraucht Das Lesen eines Megabytes sequentiell gespeicherter Daten kann genauso lang dauern wie ein einziger Direktzugriff 3 Und da die Zugriffszeit der Festplatten sich im Vergleich zur CPU Geschwindigkeit nur langsam verbessert siehe Mooresches Gesetz wird diese Sichtweise auch bleiben solange die Systeme ihre Daten auf Festplatten speichern In stark vereinfachter Form kann man sich durch die folgenden Beobachtungen ein Bild der Vor und Nachteile der spalten und zeilenorientierten Organisation machen Spaltenorientierte Systeme sind effizienter wenn ein Aggregat uber viele Zeilen aber nur wenige Spalten gebildet werden muss da man dann im Gegensatz zum zeilenorientierten System nur diese und nicht alle Spalten lesen muss Beispiel SELECT SUM Gehalt FROM tabelle Spaltenorientierte Systeme sind effizienter wenn eine Spalte gleichzeitig fur alle Zeilen der Tabelle einen neuen Wert erhalt da man die Spaltendaten effizient schreiben kann und die Daten der anderen Spalten nicht berucksichtigen muss Beispiel Gehaltserhohung UPDATE tabelle SET Gehalt Gehalt 1 03 Zeilenorientierte Systeme sind effizienter wenn gleichzeitig viele Spalten einer einzigen Zeile benotigt werden und wenn die Zeilenbreite sehr gross ist da dann die ganze Zeile mit einem einzigen Plattenzugriff gelesen werden kann Beispiel SELECT FROM tabelle WHERE Personalnr 1 Zeilenorientierte Systeme sind beim Einfugen einer neuen Zeile effizienter wenn alle Daten dieser Zeile auf einmal vorliegen da dann die Zeile mit einem einzigen Zugriff geschrieben werden kann Beispiel INSERT INTO tabelle Personalnr Nachname Vorname Gehalt VALUES 4 Maier Karl Heinz 45000 In der Praxis sind zeilenorientierte Architekturen fur typische OLTP Aufgaben z B Buchhaltungssysteme mit vielen interaktiven Transaktionen gunstig Spaltenorientiere Systeme sind gut fur OLAP Aufgaben geeignet z B analytische Informationssysteme die typischerweise durch eine kleine Anzahl sehr komplexer Abfragen uber alle Datensatze charakterisiert sind Es gibt aber auch eine Anzahl bewahrter zeilenorientierter relationaler OLAP Datenbanken die Terabytes oder gar Petabytes von Daten bearbeiten konnen so etwa Teradata oder auch IBM PureData System for Analytics IBM Netezza Kompression Bearbeiten Spaltendaten haben einen einheitlichen Datentyp daher stehen in spaltenorientierten Systemen einige Moglichkeiten der Plattenplatzoptimierung zur Verfugung die bei zeilenorientierten Daten nicht moglich sind Zum Beispiel machen sich viele Kompressionsschemata wie der Lempel Ziv Welch Algorithmus LZW oder die Lauflangenkodierung die Ahnlichkeit benachbarter Daten fur die Kompression zunutze Zwar konnen diese Techniken auch fur zeilenorientierte Daten eingesetzt werden aber eine typische Implementation wird weniger effektive Ergebnisse erreichen 4 5 Um die Kompression zu verbessern sortieren einige Implementationen zum Beispiel Vertica die Spalten In Verbindung mit Bitmap Indizes kann Sortieren die Kompression um eine Grossenordnung verbessern 6 Um die Kompression der lexikographischen Ordnung bei der Lauflangenkodierung zu verbessern empfiehlt es sich die Spalten kleiner Kardinalitat als die ersten Sortierungsschlussel zu verwenden 7 So ware es bei einer Tabelle mit den Spalten Name Geschlecht Alter am gunstigsten zunachst anhand des Geschlechtes Kardinalitat 2 dann des Alters Kardinalitat lt 150 und dann des Namens zu sortieren Bei einer spaltenorientierten Datenbank wo jede einzelne Spalte fur sich komprimiert werden kann hat die Spaltenreihenfolge in der Tabelle auf die Komprimierung zwar keinen Einfluss Die Reihenfolge kann aber in jedem Fall bei zusammengesetzten Indizes zu besseren Kompressionsraten fuhren Jedoch kann beim Umsortieren der Nutzen eines Index fur eine Abfrage verloren gehen die nur einen Teil der Indexfelder vorgibt Umfasst der Index uber alle Mitarbeiter beispielsweise Name und Werk wird die Kompression zu steigern sein wenn er nach Werk und Name umsortiert wird Fur eine Suche nach Name ist der Index danach allerdings ublicherweise nicht mehr zu gebrauchen Spaltenkompression fuhrt zu einer Reduzierung des Plattenplatzverbrauchs auf Kosten der Lesegeschwindigkeit Samtliche Daten einer einzelnen Spalte lassen sich viel effizienter lesen wenn diese Daten an derselben Stelle abgespeichert sind wie das bei einer zeilenorientierten Architektur der Fall ist Der Zugriff auf einzelne Daten wird mit zunehmender Kompression schwieriger da man erst grosse Datenmengen dekomprimieren muss um einen einzigen Satz zu lesen Daher werden spaltenorientierte Architekturen oft mit zusatzlichen Mechanismen bereichert um die Notwendigkeit auf komprimierte Daten zuzugreifen zu minimieren 8 Seit Mitte der 2000er Jahre gilt die Annahme die Komprimierung sei unter dem Strich langsamer nicht mehr unbedingt Mit zunehmender Rechenleistung ist es zumeist schneller geworden kleine Datenmengen von Platte zu holen und danach zu dekomprimieren anstatt grosse unkomprimierte Datenmengen zu lesen Dasselbe gilt fur Schreibzugriffe So setzen auch die Hersteller zeilenorientierter Datenbanken wie Oracle auf Komprimierung und empfehlen diese auf geeigneten Servern zur Geschwindigkeitssteigerung 9 Implementierungen BearbeitenSpaltenspeicherung kam in der Form Invertierter Dateien schon in der Fruhzeit der Datenbanksysteme beginnend in den 1970ern Zum Beispiel implementierte Statistics Canada das RAPID System 10 schon 1976 und benutzte es fur die kanadische Volkszahlung und einige andere statistische Anwendungen RAPID wurde auch weltweit von anderen statistischen Organisationen bis in die 1980er genutzt von Statistics Canada sogar bis in die 1990er Fur viele Jahre war Sybase IQ das einzige auf dem Markt erhaltliche Produkt im Bereich der spaltenorientierten Datenbanksysteme Das hat sich allerdings inzwischen durch viele Open Source und proprietare Anwendungen stark geandert Proprietar ParStream Oracle 12c Enterprise Edition mit der neuen kostenpflichtigen In Memory Option Oracle Retail Predicative Application Serve RPAS SAND CDBMS SenSage SAP HANA Sybase IQ SADAS Vertica und sein akademischer Bruder C Store Valentina KDB Kickfire Db2 IBM DB2 with BLU Acceleration 11 Addamark heute Sensage Scalable Log Server 1010datas Tenbase database DataProbe Exasol InfiniDB Enterprise Edition Integration mit MySQL Infobright Enterprise Edition Integration mit MySQL fruher Brighthouse Skytide XOLAP Server Space Time Research SuperSTAR ParAccel Analytic Database Aster Data Systems FluidDB Ingres smartFOCUS smartSERVER ADS Microsoft SQL Server 2012 mit dem neuen Feature Column Store Index Freie Software Open source RC21 GPL 12 Calpont InfiniDB Community Edition MySQL Frontend GPLv2 Apache Cassandra Apache Software Foundation C Store mit kommerziellem Support durch die Firma Vertica keine Weiterentwicklung seit Oktober 2006 GenoByte Spaltenbasiertes Speichersystem fur Genotypdaten Lemur Bitmap Index C Library GPL FastBit Infobright Community Edition LucidDB und Eigenbase MariaDB 13 Metakit MonetDB besondere Eignung fur statistische Analysen mit R Mozilla Public License Apache Druid ClickHouseEinzelnachweise Bearbeiten George P Copeland Setrag N Khoshafian A decomposition storage model SIGMOD 85 1985 doi 10 1145 318898 318923 C Store A column oriented DBMS Memento des Originals vom 19 Juni 2010 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot db lcs mit edu PDF 174 kB In Stonebraker et al Proceedings of the 31st VLDB Conference Trondheim 2005 Pat amp Betty O Neil Xuedong Chen Stephen Revilak The Star Schema Benchmark and Augmented Fact Table Indexing PDF 501 kB TPC Technology Conference 8 24 09 D J Abadi S R Madden N Hachem Column stores vs row stores how different are they really SIGMOD 08 2008 S 967 980 N Bruno Teaching an old elephant new tricks PDF 185 kB CIDR 09 2009 Daniel Lemire Owen Kaser Kamel Aouiche Sorting improves word aligned bitmap indexes In Data amp Knowledge Engineering 69 1 2010 S 3 28 arxiv 0901 3751 Daniel Lemire Owen Kaser Reordering Columns for Smaller Indexes arxiv 0909 1346 Slezak et al Brighthouse an analytic data warehouse for ad hoc queries PDF 456 kB Proceedings of the 34th VLDB Conference Auckland 2008 Oracle Advanced Compression Oracle Technet Turner Hammond Cotton A DBMS for Large Statistical Databases In Proceedings of VLDB 1979 Rio de Janeiro ibm com http www vermontdatabase com rc21home htm Informatik Aktuell MariaDB ColumnStore Abgerufen von https de wikipedia org w index php title Spaltenorientierte Datenbank amp oldid 236929345