Speicherbanken

Werbung
ct.2213.184 187 27.09.13 10:55 Seite 184
Know-how | Datenbanken
Thomas Kalb, Jürgen Thomas, Peter Schüler
Speicherbanken
Server-Datenbanken setzen auf Hauptspeicher
Neue Datenbank-Server können auch Datenbestände von mehreren TByte
im RAM bearbeiten. IBM DB2 10.5 BLU und Microsoft SQL Server 2014
schaffen Analysen im Hauptspeicher blitzschnell wie in einem Data
Warehouse, wickeln aber Transaktionen gleichzeitig so sicher ab wie
eine festplattengestützte Datenbank.
B
is jetzt ist im Umgang mit großen Datenmengen in Unternehmen eine zweigleisige Arbeitsweise üblich: Für Transaktionen in
den Geschäftsdaten ist eine klassische OLTPDatenbank (Online Transaction Processing)
zuständig, die allerdings durch Festplattenzugriffe permanent ausgebremst wird. Um mit
Datenauswertungen schneller zum Zug zu
kommen, spiegelt man die sorgsam gepflegten Informationen regelmäßig in ein Data
Warehouse. Das ist eine gesonderte OLAPDatenbank (Online Analytical Processing), die
als Read-Only-System alle Tricks der schnellen
Datenanalytik im RAM beherrscht. Diese Strategie erfordert aber den gleichzeitigen Betrieb zweier Datenbanksysteme, und trotzdem liefern dabei auch die schnellsten Abfragen immer Ergebnisse, die schon seit Stunden überholt sein könnten.
Die 2011 erschienene Datenbank SAP
HANA bricht mit dieser Tradition [1]. Sie lagert auf Biegen und Brechen die kompletten
Geschäftsdaten eines Unternehmens komprimiert und großteils nach Spalten angeordnet im Hauptspeicher eines geräumigen
Servers. Dort analysiert und bearbeitet sie
die Daten ohne den Umweg über ein externes Speichermedium. So gehen Leseprozesse weit schneller über die Bühne als sonst.
Veränderungen am spaltenorientierten Datenbestand im RAM statt auf der Festplatte
verursachen dagegen so einen hohen Rechenaufwand, dass die Performance trotz
geballter CPU-Leistung auf das Niveau einer
konventionellen Datenbank absinkt.
Befürchtungen, die Transaktionsverarbeitung auf Basis RAM-residenter Daten könnte
etwa bei einem Stromausfall irreparable
Datenschäden verursachen, sind unangebracht. Alle In-Memory-Systeme dokumentieren Datenveränderungen in Log-Dateien
oder -Streams, die sehr wohl auf dauerhaften Massenspeicher geschrieben werden.
Nur haben diese Schreibvorgänge keinen
wesentlichen Einfluss auf die DatenbankPerformance.
Unterm Strich bleibt der Vorteil, dass die
operativen Daten immer in Echtzeit für Analysen zur Verfügung stehen, ohne dass man
regelmäßige ETL-Maßnahmen (Extraction,
Transformation, Loading) von einer Datenbank in eine andere einplanen müsste. Das
Konzept geht aber nur dann auf, wenn die
Schreiboperationen nur einen hinreichend
kleinen Anteil der Systembelastung ausmachen. Genau diese Voraussetzung stellen
SAPs Mitbewerber IBM und Microsoft infrage
und kontern mit eigenen Ansätzen, die
ebenfalls, aber weniger dogmatisch Gebrauch von In-Memory-Techniken machen.
Jürgen Thomas, Mitglied der MicrosoftSQL-Server-Entwicklungsabteilung und insbesondere zuständig fürs Zusammenspiel
zwischen der Datenbank und großen Unternehmensanwendungen, beschreibt die
Beschleunigungsmaßnahmen im SQL Server 2014. Im Anschluss erläutert Thomas
Kalb, IBM Information Champion, langjähriger Datenbank-Experte bei der Firma ITGAIN
und DB2-Alphatester, Konzepte und Fortschritte der BLU-Technik in IBMs jüngster Datenbank DB2 10.5.
Fast fertig: MS SQL Server 2014
Microsoft hat im Juni den ersten öffentlichen
Preview (CTP1) des fürs kommende Frühjahr
angekündigten SQL Server 2014 herausgebracht. Die Engine hebt sich vom SQL Server 2012 unter anderem durch ganz neue
Strukturen zur Datenbearbeitung im RAM
und durch erweiterte Fähigkeiten im Umgang mit spaltenorientierten Daten ab.
Um analytische und schreibende Aktionen
in Rechnern mit viel Hauptspeicher zu beschleunigen, haben die Entwickler mit der InMemory-optimierten Tabelle ein neues Speicherformat kreiert. Tabellen dieses Typs sind
wie in operativen Datenbanken üblich zeilenweise organisiert, orientieren sich aber
nicht an herkömmlichen Speicherseiten des
Servers. Diese neuen Tabellen bewahrt der
Rechner standardmäßig im RAM auf, ohne
die Daten nach jeder Veränderung sofort auf
die Festplatte zurückzuschreiben. Daher dürfen die Datenbestände in diesen Tabellen
nicht größer sein als der verfügbare Hauptspeicher. Andererseits kann eine Anwendung gleichzeitig Tabellen unterschiedlichen
Typs nutzen – Informationen, die seltener
abgefragt werden oder bei denen es nicht so
entscheidend auf die Antwortzeit der Datenbank ankommt, lassen sich also in herkömmlichen Tabellen speichern und belegen dann
keinen Platz in speicherresidenten Tabellen.
Speicherresidente Tabellen sind die notwendige Basis für das von Microsoft sogenannte In-Memory-OLTP (Codename: Hekaton). Diese Technik bringt zweierlei Geschwindigkeitsvorteile:
Erstens kann die Engine Stored Procedures, die man einmal auf die effizienteste
Durchführung hin analysiert und dann in der
optimierten Form speichert, in die Maschinensprache des Servers kompilieren. Die resultierenden native Stored Procedures lassen
sich viel effizienter und mit erheblich geringerer CPU Belastung ausführen, als das üblicherweise mit SQL-Befehlen möglich wäre.
Der Ansatz geht freilich nur dann auf, wenn
die Anwendungslogik in Stored Procedures
implementiert ist und nicht auf Applikationsoder Webservern abläuft.
c’t 2013, Heft 22
184
©
Copyright by Heise Zeitschriften Verlag
ct.2213.184 187 27.09.13 10:55 Seite 185
Know-how | Datenbanken
Durchgehend geöffnet
Zweitens funktioniert die Datenbearbeitung
Latch-free. Was bedeutet das? Ein herkömmliches Datenbanksystem muss sicherstellen,
dass ein Anwender beim Schreiben etwaiger
Veränderungen auf die Festplatte exklusiven
Zugriff auf die Speicherseite mit dem betroffenen Datensatz hat. Dafür sorgen während
der Synchronisation sogenannte Latches, die
typischerweise für einige Mikrosekunden auf
eine Datenbankseite gehalten werden. Microsofts In-Memory-OLTP kann auf die Synchronisation und die damit verbundenen
Latches verzichten. Im Zusammenspiel mit
nativen Stored Procedures ermöglicht diese
Neuerung nach Microsofts Erkenntnissen
Durchsatzsteigerungen um den Faktor 10 bis
30. Dabei setzt der Hersteller ausdrücklich
nicht voraus, dass die Rechnerlast vorwiegend durch Lesezugriffe zustandekommt.
Vielmehr sollen diese Steigerungen auch für
hohe Einfüge- und Änderungslasten gelten.
In-Memory-OLTP unterstützt nicht in allen
Fällen alle Transaktions-Isolationsstufen (um
das „I“ im Anforderungs-Prinzip „ACID“ – Atomicity, Consistency, Isolation, Durability – zu
erreichen). Daher muss man Anwendungslogik für den Einsatz mit In-Memory-optimierten
Tabellen in manchen Situationen anpassen.
Anlegen, sichern, zurückspielen
Zur Absicherung, dass die Inhalte einer speicherresidenten Tabelle bei einer Störung
nicht verloren gehen, bedient sich die Engine sogenannter Continuous Checkpoints.
Das heißt, sie wertet kontinuierlich das
Transaktions-Log aus, konsolidiert die darin
dokumentierten Daten-Änderungen und
schreibt die daraus resultierenden Daten se-
quentiell in nicht-fragmentierte Festplattendateien. Bei einem Restart liest die Engine
diese Backup-Dateien sequentiell aus und rekonstruiert daraus die speicherresidenten
Tabellen.
Für die Definition von In-Memory-Tabellen sieht SQL Server 2014 zwei Möglichkeiten
vor: Normalerweise gibt man vor, dass sowohl die Tabellenstruktur als auch die Tabelleninhalte beim Restart wiederhergestellt
werden. Für Interims-Tabellen, etwa zur kurzzeitigen Aufnahme gefilterter Datenauszüge,
braucht man aber keine fortlaufenden Daten-Logs aufzuzeichnen. In diesem Fall legt
man fest, dass ausschließlich das Tabellenschema gesichert wird.
Zeilen, Spalten oder beides
Für die meisten analytischen Aufgaben eignen sich spaltenorientierte Tabellen besser
als solche mit Zeilenstruktur [1]. Andererseits
kostet es sehr viel Rechenleistung, einen
kompletten einzelnen Datensatz einer spaltenorientierten Tabelle auszulesen oder gar
zu verändern. Für diese Aufgabe muss das
System eine größere Menge von Werten
jeder Spalte durchkämmen, um das Feld des
betroffenen Datensatzes auszumachen. Die
Vorteile der spalten- und zeilenorientierten
Datenorganisation lassen sich auf zweierlei
Weise miteinander verbinden: den Column
Store Index für zeilenorientierte Tabellen
und die Delta-Tabelle für Veränderungen in
spaltenorientierten Datenbeständen.
Mit dem Column Store Index hat Microsoft
im SQL Server 2012 eine Suchhilfe implementiert, um von den Datensätzen, die einer
Suchanfrage entsprechen, jeweils nur die gerade benötigten Felder in den Speicher zu
laden. Während ein herkömmlicher Index die
kompletten Datensätze einer Tabelle nach
der festgelegten Reihenfolge sortiert, beschreibt ein Column Store Index quasi eine
abgespeckte Zeilen-Tabelle mit bestimmten
oder allen Datenspalten in der festgelegten
Reihenfolge. Bei Abfragen werden dann nur
die Index-Segmente mit den relevanten
Spalten durchsucht. Außerdem ermöglicht
die spaltenorientierte Sortierung der Werte
im Vergleich zu einer zeilenorientierten Ablage eine erheblich bessere Kompression. Bei
SQL Server 2012 sind Column Store Indizes
nicht modifizierbar. Bei Änderungen am Datenbestand muss der Column Store Index
komplett gelöscht und wieder neu aufgebaut werden. Eine Ausnahme bildet nur der
Fall, dass am Ende der Tabelle eine neue Partition mit Daten angefügt wurde.
SQL Server 2014 realisiert den sogenannten In-Memory Column Store for DataWarehousing als Clustered Index – also nicht als
Index mit einer korrespondierenden, aber
getrennt gespeicherten Tabelle, sondern von
vornherein als sortierte Tabelle. Diese Veränderung reduziert schon an sich die Zahl der
benötigten Speicherseiten, dazu kommt
aber noch der Effekt, dass sich diese sortierten Datenspalten viel effizienter im Speicher
komprimieren lassen.
Über die sogenannten Delta-Tabellen verbinden sich die Geschwindigkeitsvorteile der
spaltenorientierten Datenspeicherung mit
einem aufs Erträgliche reduzierten Aufwand,
den Datenbestand zu verändern. Dabei handelt es sich um zeilenorientierte Ergänzungstabellen, in denen zunächst einmal alle
neuen Inhalte landen – neu angelegte Datensätze ebenso wie die neuen Fassungen
bestehender Datensätze, die das System an
ihrer ursprünglichen Position inzwischen als
gelöscht markiert hat. Ist eine Delta-Tabelle
Zeilentabellen umfassen unnötig viele Speicherseiten
In einer zeilenorientierten Tabelle verteilen sich ganze Datensätze auf die einzelnen Speicherseiten.
Um etwa aus der Tabelle „Autos“ die Merkmale „Marke“ und „Jahr“ zu selektieren, muss man mehr
Speicherseiten als nötig laden, weil die relevanten Seiten auch aktuell nicht benötigte Daten enthalten.
Clustered Index über die erste (AutoID-)Spalte
der Tabelle Autos
SELECT Marke, Jahr FROM Autos
Speicherseite 1
101 VW
102 Opel
103 BMW
Golf
Astra
Z1
grau
weiß
braun
in den Speicher geladene Daten
(alle Speicherseiten)
2006
2011
2010
Speicherseite 2
104 Renault
105 Toyota
106 Ford
Clio
Prius
Focus
grün
weiß
blau
2009
2011
2012
Speicherseite 3
107 BMW
108 Audi
109 Ford
325T
A3
S-Max
blau
weiß
rot
2012
2011
2012
angeforderte Daten
101 VW
102 Opel
103 BMW
Golf
Astra
Z1
grau
weiß
braun
2006
2011
2010
VW
Opel
BMW
2006
2011
2010
104 Renault
105 Toyota
106 Ford
Clio
Prius
Focus
grün
weiß
blau
2009
2011
2012
Renault
Toyota
Ford
2009
2011
2012
107 BMW
108 Audi
109 Ford
325T
A3
S-Max
blau
weiß
rot
2012
2011
2012
BMW
Audi
Ford
2012
2011
2012
c’t 2013, Heft 22
185
©
Copyright by Heise Zeitschriften Verlag
ct.2213.184 187 27.09.13 10:55 Seite 186
Know-how | Datenbanken
auf einen vorgegebenen Umfang angewachsen, überträgt das System diese Daten online
in die Spaltentabelle.
Der oben erwähnte Column Store for DataWarehousing kombiniert unter der Haube indexierte Datenspalten mit Delta-Tabellen. Für
den Anwender stellt sich das Ganze einfach
wie ein modifizierbarer Column Store Index
dar, den das Datenbanksystem so weit wie
möglich in einem speziellen Bereich des Arbeitsspeichers unterbringt. Passen nicht alle
Daten in den Arbeitsspeicher, lassen sich Teile
davon auf Festplatte auslagern.
IBMs Blink-Ultra-Konzept
IBM bringt mit der Release 10.5 seiner ServerDatenbank DB2 die sogenannte BLU-Technik
an den Start. Der Name basiert auf dem Projekt Blink des IBM-Forschungszentrums in Almaden. Blink war ursprünglich nur für Datenbanken gedacht, die vollständig in den
Hauptspeicher eines Multiprozessor-Servers
passen. Bei BLU fällt diese Beschränkung
weg: Tabellen dürfen sehr wohl größer sein
als der Arbeitsspeicher.
Trotzdem bleibt es das Ziel, alle Datenbank-Aufgaben mit möglichst wenigen Massen- und Hauptspeicherzugriffen zu erledigen und dabei eine möglichst hohe Trefferquote auf Daten im RAM zu erzielen. Das bedeutet einerseits, die Engine sollte nur die
tatsächlich benötigten Daten verarbeiten,
aber am besten gar keine Rechenzeit damit
vergeuden, auch andere Felder der betroffenen Datensätze zu lesen. Eine wichtige Rolle
spielt auch die Datenkompression: Je mehr
Daten in den Arbeitsspeicher passen, desto
seltener wird man im Betrieb darauf warten
müssen, dass benötigte Datensätze von der
Festplatte gelesen werden.
Die Neuerungen von BLU betreffen zum
einen die Optimierung der Datenorganisation für schnelle Adressierung und effiziente
Nutzung des Speicherplatzes und zum anderen die Nutzung von Rechenverfahren, um
Datenbankoperationen möglichst effizient
und nach Möglichkeit mit mehreren Prozes-
soren und Prozessor-Komponenten parallel
auszuführen.
Spaltenweise verdichtet
Dank BLU kann DB2 in Version 10.5 Daten in
spaltenorientierten Tabellen ablegen. Dabei
entsteht ein Column Store, der im Regelfall
jede Datenspalte einzeln enthält, auch wenn
man in Sonderfällen mehrere Spalten zusammenfassen kann. Die Suche nach allen Datensätzen mit einem bestimmten Attribut
kommt in einer spaltenorientierten Tabelle
wesentlich schneller zu einem Ergebnis als in
einer zeilenorientierten, weil in der ersteren
alle Zeiger auf die gesuchten Datensätze unmittelbar hintereinander liegen.
Einen weiteren Vorteil spielen spaltenorientierte Tabellen aus, wenn für ein Datenfeld
nur wenige Werte in Betracht kommen. In diesem häufigen Fall lässt sich der Inhalt nämlich
besonders wirksam mit der sogenannten Frequenz-Kompression verdichten. Dabei wird in
einem Lexikon festgehalten, wie oft die einzelnen Werte auftreten, und die häufigsten
Werte werden mit weniger Bits kodiert als seltenere Werte. In großen Tabellen kann der
DB2-interne Compression Optimizer eigene
Lexika für verschiedene Abschnitte jeder Spalte führen und in diesen Abschnitten die jeweils effizienteste Kodierung anwenden.
Beispielsweise könnten in einer Tabellenspalte Bundesländer notiert sein, sodass für
jedes Datenfeld nur 16 Werte in Betracht kommen. Nach der Analyse, welche dieser Werte
in einer Stichprobe am häufigsten vorkommen, könnte das System die Spalte in drei Partitionen aufteilen, sodass in der ersten Partition nur die beiden häufigsten Werte auftauchen, jeweils kodiert mit einem Bit „0“ oder
„1“. In der zweiten Partition werden jeweils
zwei Bits verwendet, um den dritt- bis sechsthäufigsten Wert zu kodieren, und alle anderen
Werte erhalten in der dritten Partition eigene
Kombinationen von jeweils vier Bits. Anders
als in einer zeilenorientierten Tabelle müssen
die Elemente einer Datenspalte keine festgelegte Länge haben, deshalb resultiert die Fre-
Spaltenweise Indexierung spart Speicherzugriffe
Sind dieselben Daten wie in der Tabelle auf Seite 185 per Column Store Index
spaltenweise adressierbar, gelingt die Selektion der Merkmale „Marke“ und „Jahr“
ohne überflüssige Speicherzugriffe und damit schneller als in einer Zeilentabelle.
angeforderte Daten
Columnstore Index zur Tabelle Autos
101
102
103
104
105
106
107
108
109
VW
Opel
BMW
Renault
Toyota
Ford
BMW
Audi
Ford
Golf
Astra
Z1
Clio
Prius
Focus
325T
A3
S-Max
grau
weiß
braun
grün
weiß
blau
blau
weiß
rot
2006
2011
2010
2009
2011
2012
2012
2011
2012
SELECT
Marke,
Jahr
FROM
Autos
VW
Opel
BMW
Renault
Toyota
Ford
BMW
Audi
Ford
2006
2011
2010
2009
2011
2012
2012
2011
2012
186
quenzkompression in kürzeren und somit
schneller durchsuchbaren Datenspalten.
Um Abfragen noch weiter zu beschleunigen, pflegt DB2 für jede spaltenorientierte
Tabelle zusätzlich eine Katalogtabelle mit
dem kleinsten und größten Wert für jeweils
rund 1000 aufeinanderfolgende Einträge.
Auf Rechnern mit aktuellen Intel- und IBMPower-Prozessoren nutzt BLU deren Fähigkeiten, dass jeder Prozessor gleichzeitig mehrere
unterschiedliche Daten verarbeiten kann, zum
Beispiel um eine Vergleichsoperation auf
unterschiedliche Abschnitte einer Tabelle anzuwenden. Den bestmöglichen Zeitgewinn
bringt die Parallelverarbeitung aber nur dann,
wenn jeder Prozessor in seinem SpeicherCache ein analoges Daten-Layout vorfindet.
Die Strategie, mit der BLU Daten im Speicher-Cache ablegt oder bei Bedarf verwirft,
richtet sich deshalb auch nach den Anforderungen der Parallelverarbeitung. Frühere Versionen von DB2 entscheiden mit der Least-recently-used-Strategie darüber, welche Daten
bei Platzmangel aus dem Hauptspeicher entfernt werden. Die BLU-Erweiterung priorisiert
die Inhalte der Hauptspeicher-Seiten dagegen
anhand ihrer Nützlichkeit. Dabei erhalten spaltenorientierte Datenseiten Vorrang gegenüber
zeilenorientierten, weil sie ergebisrelevanter
sind: Um in einer Datenspalte einen bestimmten Datensatz ausfindig zu machen, muss man
nur solche Felder lesen, die einen potenziellen
Treffer darstellen. Dieselbe Suche in einer Sequenz ganzer Datenzeilen überstreicht dagegen auch alle anderen, im aktuellen Kontext
irrelevanten Datenfelder der Tabelle.
Außerdem schätzt der Query Optimizer
bei jeder Abfrage zuerst ab, wie viel Speicherplatz dafür zu reservieren ist, und entscheidet daraufhin, wie viele Abfragen er zur
gleichzeitigen Ausführung startet.
DB2 10.5 parallelisiert Rechenschritte
nicht nur zwischen Rechenkernen, sondern
auch durch die Vektor-Rechenfunktionen der
unterstützten Prozessoren. Statt für den Vergleich eines Integer-Datenfelds mit einer 16Bit-Konstanten zwei komplette 64-Bit-Register des Prozessors zu blockieren, kann man
diese Register über Vektorfunktionen gleichzeitig für vier solche Operationen nutzen.
Unabhängig von der Parallelverarbeitung
macht sich bemerkbar, dass DB2 alle BasisVergleichsoperationen wie „=“, „<>“ oder
„BETWEEN“ an den komprimierten Daten im
Speicher vollziehen kann, ohne zusätzlich
Zeit und Platz für deren Dekompression und
anschließende erneute Kompression zu verwenden.
Leichter Umstieg
Die Möglichkeit der spaltenbasierenden Speicherung und die Arbeitsweise gleicht einem
Paradigmen-Wechsel und ist insofern revolutionär. Andererseits ist die Einführung der
BLU-Technik in das bestehende Datenbanksystem eine evolutionäre Veränderung und
damit äußerst kundenfreundlich: BLU ändert
nichts an den fundamentalen Aufgaben der
Datenbankadministration. Sicherung, Wie-
c’t 2013, Heft 22
©
Copyright by Heise Zeitschriften Verlag
ct.2213.184 187 27.09.13 10:55 Seite 187
Know-how | Datenbanken
Techniken zur Verminderung von Speicherzugriffen
Durch Datenkompression, spaltenorientierte Speicherung und Synopsis-Tabellen
vermindert DB2 BLU die Zahl der erforderlichen Speicherzugriffe etwa zur Bearbeitung
einer Abfrage. Die notwendigen Zugriffe werden so weit wie möglich parallelisiert.
Daten
Daten
Daten
Daten
Daten
Spaltenzugriff
Komprimierung
(In-Memory)
10 TByte
Daten
Daten
Daten
1 TByte
derherstellung und Laden der Daten bleiben
gleich. Darüber hinausgehende, spezielle Aktivitäten wie etwa die Neuprogrammierung
bestehender Prozeduren sind zum Einsatz
dieser Technik nicht erforderlich.
Für SQL-Abfragen ist die BLU-Technik
weitgehend transparent. Zum Beispiel lassen
sich innerhalb einer SQL-Abfrage gleichzeitig
zeilenbasierende (non-BLU-) und spaltenbasierende (BLU-) Tabellen verwenden.
Nach der Definition und dem Laden der
Tabellen steht die Datenbank sofort für analytische Abfragen zu Verfügung. Für traditionelle Optimierungen gibt es keine Gelegenheit mehr, aber auch keinen Bedarf:
–ˇMangels Indizes auf spaltenbasierenden
Tabellen entfällt das Indextuning.
–ˇEine Reorganisation der Daten ist nur noch
zum Entfernen gelöschter Seiten notwendig und erfolgt automatisch.
–ˇMaterialized Query Tables (MQTs), also Datenstrukturen zum Zwischenspeichern von
Abfrageergebnissen, und Multiple Dimension Cluster (MDC), also mehrdimensional
indexierte Unter-Tabellen mit Auszügen
größerer Tabellen, lassen sich für BLU-Tabellen nicht anlegen, brächten aber auch
keinen Geschwindigkeitsvorteil.
–ˇBemühungen, eine SQL-Anweisung durch
Umformen schneller ausführbar zu machen, erweisen sich als wirkungslos und
damit als überflüssig.
Die Erfahrungen von ITGAIN als Alphatester
zeigten bereits frühzeitig das Leistungspotenzial der neuen DB2-Version (siehe c’t-Link).
Zwar gab es am Anfang eine Menge sogenannter Never-Come-Back-SQLs, also Prozeduren, deren Ausführung nach mehreren
Stunden immer noch nicht abgeschlossen
war. Doch während der gesamten Testphase
von der ersten Alphaversion bis hin zur Serienversion nahm die Stabilität kontinuierlich
zu und der Anteil schlecht laufender Prozeduren sank auf unter ein Prozent. Gleichzeitig
steigerte sich die Performance, auch für nicht
analytische SQL-Prozeduren, fortlaufend.
Die BLU-Technik beschert der DB2-Engine
vor allem Geschwindigkeitsvorteile bei der
Analyse großer Datenbestände – auch sol-
Daten
Überlesen
von Spalten
10 GByte
Daten
Daten
parallele
Verarbeitung
1 GByte
cher, die nicht vollständig in den Hauptspeicher passen. Für eine rein transaktionale Verarbeitung der Daten ist die spaltenbasierende BLU-Technik heute aber noch nicht optimal geeignet.
Mehrere Wege nach Rom
Während SAP HANA konsequent die Technik
einer spaltenorientierten OLAP-Datenbank
auf die Befähigung zur Transaktionsverarbeitung erweitert, setzen Microsoft und IBM auf
das Miteinander von zeilen- und spaltenorientierten Datenstrukturen, um ihre Engines
auch bei Lastprofilen mit hohem Transaktionsanteil zu beschleunigen. Beide Hersteller
klassifizieren ihre Errungenschaften nicht als
„In-Memory-Datenbank“, sondern als „In-Memory-optimiert“. Deren Vorteile sollen auch
dann zum Tragen kommen, wenn der Datenbestand nicht komplett in den Hauptspeicher passt.
So repräsentiert Microsoft SQL Server 2014
gleichermaßen den Aufbruch in eine neue InMemory-Arbeitsweise wie die Weiterentwicklung von Techniken, die der Hersteller mit
SQL Server 2012 eingeführt hat. Stored Procedures können in Maschinensprache besonders schnell auf dem Datenbankserver laufen.
Neuerungen im Bereich Column Store sind
transparent für Anwendungslogik und Administration implementiert.
Microsofts erste Version der In-MemoryOLTP-Technik entstand nicht als selbstständige Engine, sondern integriert in das existierende Datenbanksystem. Dadurch kann die
Technik auch von Hochverfügbarkeits-Features des SQL-Server-Features wie AlwaysOn,
Log-Shipping und Windows-Clustering profitieren, ohne dass Kunden ihre Konfigurationen und Prozesse für Hochverfügbarkeit und
Disaster-Recovery oder ihre Datensicherungs-Software umstellen müssten.
Weitere Beschleunigungen plant Microsoft noch vor der Marktfreigabe von SQL Server 2014. Im CTP 2 gibt es einen zusätzlichen
Indextyp für In-Memory-optimierte-Tabellen,
der speziell Abfragen nach Bereichen von
Spaltenwerten beschleunigen soll.
c’t 2013, Heft 22
Daten
Vektorverarbeitung
32 MByte
8 MByte
Auch IBMs DB2 10.5 sieht für viele Aufgaben herkömmliche Tabellen vor, führt aber
mit den BLU-Tabellen einen zusätzlichen, InMemory-optimierten Tabellentyp insbesondere für analytische Aufgaben ein. Zwar kann
man unterschiedliche Daten auf herkömmliche und BLU-Tabellen verteilen, doch muss
sich der Datenbank-Designer nach momentanem Stand frühzeitig für das eine oder andere Format entscheiden. Das Ziel zukünftiger Versionen muss es sein, dieses „entweder
oder“ in ein „sowohl als auch“ umzuwandeln.
Dies würde bedeuten, dass eine logische Tabelle gleichzeitig in zwei Formaten gepflegt
wird. Für eine zeilenbasierte Tabelle sollten
bestimmte Inhalte zusätzlich spaltenbasiert
abgelegt und wie ein Performance Index verwendet werden. Die konsistente Speicherung der Daten ist dabei weiterhin durch das
Datenbanksystem sicherzustellen. Bei der
Nutzung der Daten sollte der eingebaute
Query-Optimizer auf Basis der formulierten
Abfrage entscheiden, welche Speicherform
den Datenzugriff optimal unterstützt.
Schon heute nutzt DB2 BLU den verfügbaren Hauptspeicher möglichst effizient,
zum Beispiel, um bevorzugt die besonders
Abfrage-relevanten spaltenorientierten Daten vorzuhalten. Zusätzliche PerformanceGewinne resultieren aus der Parallelisierung
zwischen Prozessorkernen sowie durch Vektor-Operationen einzelner Prozessorkerne,
außerdem durch Synopsis-Tabellen zum
schnelleren Navigieren in Datenspalten.
Sowohl SQL Server 2014 als auch DB2 10.5
BLU eignen sich als neue Software auf bestehenden Datenbank-Servern. Beide Engines
versprechen, als analytische Datenbanken
fungieren zu können, ohne dabei auf die Fähigkeit zur Transaktionsverarbeitung zu verzichten.
(hps)
Literatur
[1]ˇDr. Alexander Zeier, Christian Tinnefeld, Festplatte ade!, Hauptspeicherdatenbanken für Unternehmensanwendungen, c’tˇ26/11, S.ˇ188
www.ct.de/1322184
c
187
©
Copyright by Heise Zeitschriften Verlag
Herunterladen