In-Memory Datenbanken

      Arno Schmidhauser
    Letzte Revision: Januar 2011
Neues technologisches Umfeld

• Bisher
   – Eine Datenbank konnte nur zu Bruchteilen im Memory
     gehalten werden ( << 50%).
   – Sparsamkeit beim Datentransfer zwischen Disk und Memory
     ist daher oberstes Prinzip.
   – I/O-Page als Grundeinheit der physischen Memory-
     Verwaltung (durch die DB, nicht durch das OS).

• Neu
   – Systemstabilität durch Hardware und Betriebssystem-
     Features massiv höher als früher. Recovery aufgrund von
     Systemausfällen nur noch selten notwendig.
   – Standard-Memory Ausstattung > 4GB kein Problem mehr.
Neues Prinzip

• Datenbank bei Start des DB-Servers vollständig in das
  Memory laden (z.B. Unix Memory Mapped Files).

 Das gesamte Buffer-Management entfällt, der Speicher
  wird als linearer Adressraum für Datensätze angesehen,
  alle Positionen gleich schnell adressierbar.

 Zugriff auf beliebiges Datenelement immer gleich schnell.
  Transfer von/zu Disk muss nicht mehr berüchsichtigt
  werden.
Mutationen

• ACID Regel ist immer noch ein zwingendes Prinzip!


 2. SQL-Befehl

                                          Workspace =
                 2b. Neue
                                       Gesamte Datenbank
                 Datenwerte



                              1. Startup =       3. Shutdown oder
          2a. Alte und neue                      Checkpoint =
                              Gesamte DB laden
          Datenwerte                             Ganze DB speichern


     Logfile                              DB-Storage
Neue Optimierungsmöglichkeiten

• Indexe werden bei Systemstart im Memory aufgebaut.
  Keine materialisierten Indexe mehr.

• Keine komplizierte Datensatz-Adressierung auf die Disk
  notwendig, da die Daten selber ja bereits im Memory sind.

• Indexe brauchen die Schlüsselwerte nicht noch einmal zu
  enthalten, da die Daten selber ja bereits im Memory sind.
    Zusätzliche Ersparnis von Memory gegenüber
     klassischen Datenbank.
    Neue Index-Strukturen: zum Beispiel T-Tree (Oracle)
     und Trie (IBM).
T-Tree Index (Oracle TimesTen)
T-Tree Index
• Über alles gesehen wesentlich weniger Code abzuarbeiten,
  da keine Diskzugriffe zu berücksichtigen sind.

• Wenig Platzbedarf für Index, da nur Pointer auf Daten
  nötig sind, und nicht die Datenwerte selbst.

• Binäre Verzweigung und kleine Anzahl Werte (Pointer) pro
  Knoten garantiert hohe CPU-Effizienz. Keine lineare Suche
  durch grosse IO/Pages hindurch.

• Anwendbar wie B-Tree: für Suche mit exakten Vergleiche
  und Range-Suche geeignet.

• Achtung: Peformance-Desaster bei zuwenig Memory !!
Trie-Index (IBM solidDB)


        t                         r



    e       o
                         e            a
            8
            9
d       a   10   a
                              d           t
1       4
2                             12
3                    s                    13




                         t

                         11
Trie-Index

• Das Auffinden von Schlüsselwerten ist sehr schnell,
  Zeitbedarf nur proportional zur Länge des Schlüsselwertes!

• Alle Werte mit demselben Präfix teilen sich die Knoten für
  dieses Präfix, z.B. "to" und "toast". Suche nach Werten mit
  demselben Präfix via Trie möglich, z.B. like – Prädikat.

• Auch Zahlen können mit einem Trie indexiert werden.

• Tries können sortiert aufgebaut werden, so dass dann eine
  preorder-Ausgabe ebenfalls sortiert ist.

• Demo unter http://blog.ivank.net/trie-in-as3.html
IMDB als "relationaler Cache"

• Oracle TimesTen und IBM solidDB können als schneller
  relationaler Cache verwendet werden:
Latenzzeit für Queries

• Aufgrund der einfacheren Optimizer (meist nur ein bis
  zwei Indextypen und sequentieller Table Scan zur
  Auswahl), sowie massiv kleinerem Code, liegt die
  Latenzzeit für Queries und Änderungsoperationen
  typischerweise bei Mikrosekunden. Bei klassischen
  Datenbanken sind es meist Millisekunden.
Gemischter Betrieb mit IMDB

• DB-Hersteller bieten zunehmend einen gemischten Betrieb
  von disk-basierten und memory-basierten Teilen an.

• Beispiel solidDB
  create table T (…) store memory | store disk

• Aus dem Speichertyp der Tabelle werden alle übrigen
  Verhaltensweisen abgeleitet: Indextyp,
  Zugriffsoptimierung, Verhalten bei Startup, Checkpoint
  und Shutdown des DB-Servers.
Solid State Disk

• Datenbanken können aus den schnelleren Solid State
  Disks Gewinn ziehen, insbesondere auch für das Führen
  von Log-Files. Die Grundsatztechnologie geht aber von
  klassischen Datenbanksystemen aus:
   – mehrstufiger Zugriff Disk-Memory
   – IO/Pageing
   – Komplexe, zeitintensive Optimierungsstrategien

• Eine noch höhere Performance wird erreicht, wenn wenig-
  selektive Indexe gelöscht oder vermieden werden, damit
  vermehrt Full Table Scans vom DBMS ausgeführt werden.
Kennzahlen SSD
                                   MLC-NAND-Flash-
                                                             CompactFlash-Karte               Festplatte
                                      Laufwerk
                                         1,0″ bis 3,5″         per ATA-Adapter               1,0″ bis 3,5″
Größe                         bis 600 GB                 bis 128 GB               bis 3 TB
Preis pro GB (Stand Dez.
2011)                         ab ca. 0,96 €              ab ca. 1,02 €            ab ca. 0,05 €

Anschluss                     S-ATA, P-
                              ATA, mSATA, PCIe           S-ATA, P-ATA             S-ATA, P-ATA, SCSI, SAS
Lesen (kein RAID)             bis 509 MB/s               bis 100 MB/s             bis 150 MB/s
Schreiben (kein RAID)         bis 446 MB/s               bis 100 MB/s             bis 150 MB/s
Mittlere Zugriffszeit lesen   0,2 ms                     0,8 ms                   ab 3,5 ms
Mittlere Zugriffszeit schreiben 0,4 ms                   10…35 ms                 ab 3,5 ms
Verhalten beim PC-
Ausschalten                   problemlos                 problemlos               problemlos

Verhalten bei Stromausfall
                              ohne Stützkondensator
                              Datenverlust möglich       Datenverlust möglich     Datenverlust möglich
In Memory DMBS, Produkte

•   Oracle Times Ten
•   solidDB von IBM
•   HSQLDB
•   Apache Derby
•   XML-Datenbank BaseX

• Weitere siehe bei Column Stores
Zusammenfassung Ziele eines
          In-Memory-DBMS
• Eliminierung von Disk-IO für den laufenden Betrieb des DBMS
• Ausnutzung der virtuellen Memory-Verwaltung des Betriebs-
  systems

• Minimierung aller roten
  Bereiche in nebenstehendem
  Profilingdiagramm eines
  klassischen DBMS

• Voraussetzung: Ausreichend
  Platz für das gesamte DBMS
   im physikalischen Memory,
  inklusive temporären Platz für
  SQL-Abfragen.

Weitere ähnliche Inhalte

ODP
Präsentation MySQL auf dem T3CM12
PDF
Ausgewählte Performance Technologien
PPT
PDF
Festplatte
PPT
Top 10 Internet Trends 2005
PPT
Referat bun
PPT
Festplattenpräsentation
PPTX
Innobit.storage spaces.
Präsentation MySQL auf dem T3CM12
Ausgewählte Performance Technologien
Festplatte
Top 10 Internet Trends 2005
Referat bun
Festplattenpräsentation
Innobit.storage spaces.

Was ist angesagt? (6)

PPTX
HDD & SSD Grundlagen
PPTX
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
PPTX
Thomas' Tech Talk 4 - Lohnt sich ein Wechsel zu Exchange Server 2019?
PDF
20101011 roadshow-2010-ssds-grundlagen-know-how-und-konkrete-konfiguration-fuer
PPT
Compact, Compress, De-DUplicate
PDF
Platz schaffen auf dem Domino - Compact, Compress, De-Duplicate - Ulrich Krau...
HDD & SSD Grundlagen
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
Thomas' Tech Talk 4 - Lohnt sich ein Wechsel zu Exchange Server 2019?
20101011 roadshow-2010-ssds-grundlagen-know-how-und-konkrete-konfiguration-fuer
Compact, Compress, De-DUplicate
Platz schaffen auf dem Domino - Compact, Compress, De-Duplicate - Ulrich Krau...
Anzeige

Andere mochten auch (9)

PPTX
Oracle Database Mobile Server Performance Tuning
PDF
2017 DB Trends for Powering Real-Time Systems of Engagement
PPT
In Memory Computing for Agile Business Intelligence
PDF
TDWI - Agile Business Intelligence - Tom Gansor - Arno Tigges - OPITZ CONSULTING
PPTX
From distributed caches to in-memory data grids
PPTX
Introduction to Aerospike
PPTX
In Memory-Technologien im Vergleich - SQL Server Konferenz 2015
PPTX
2011 01 06 09-30 alexej freund
PDF
Mist gemessen? Java Performance und Memory Analyse
Oracle Database Mobile Server Performance Tuning
2017 DB Trends for Powering Real-Time Systems of Engagement
In Memory Computing for Agile Business Intelligence
TDWI - Agile Business Intelligence - Tom Gansor - Arno Tigges - OPITZ CONSULTING
From distributed caches to in-memory data grids
Introduction to Aerospike
In Memory-Technologien im Vergleich - SQL Server Konferenz 2015
2011 01 06 09-30 alexej freund
Mist gemessen? Java Performance und Memory Analyse
Anzeige

Ähnlich wie in memory datenbanken (20)

PDF
Internet Briefing 2011: NoSQL with MySQL
PDF
FROSCON 2011: MySQL Performance Tuning
PDF
DOAG 2011: MySQL Performance Tuning
PDF
DOAG: NoSQL with MySQL
PDF
Caching: In-Memory Column Store oder im BI Server
PDF
Einstieg in relationale Datenbanken mit MySQL (Handout)
PDF
20111006 roadshow-io-performance
PDF
NoSQL with MySQL
PPTX
Column Stores
PDF
Data Is The New Oil
PDF
Digicomp sqlday admin
PDF
Oracle Datenbank-Architektur
PDF
SimpleDB - Chancen einer Cloud Datenbank
PDF
Oracle Database 12c In-Memory Option
PDF
Froscon 2012 DWH
PDF
Query Result Caching
PDF
Oracle Core für Einsteiger: Datenbank I/O
PPTX
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
PDF
DataCore Speichervirtualisierung
PDF
20121008 ssd-caches
Internet Briefing 2011: NoSQL with MySQL
FROSCON 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance Tuning
DOAG: NoSQL with MySQL
Caching: In-Memory Column Store oder im BI Server
Einstieg in relationale Datenbanken mit MySQL (Handout)
20111006 roadshow-io-performance
NoSQL with MySQL
Column Stores
Data Is The New Oil
Digicomp sqlday admin
Oracle Datenbank-Architektur
SimpleDB - Chancen einer Cloud Datenbank
Oracle Database 12c In-Memory Option
Froscon 2012 DWH
Query Result Caching
Oracle Core für Einsteiger: Datenbank I/O
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
DataCore Speichervirtualisierung
20121008 ssd-caches

in memory datenbanken

  • 1. In-Memory Datenbanken Arno Schmidhauser Letzte Revision: Januar 2011
  • 2. Neues technologisches Umfeld • Bisher – Eine Datenbank konnte nur zu Bruchteilen im Memory gehalten werden ( << 50%). – Sparsamkeit beim Datentransfer zwischen Disk und Memory ist daher oberstes Prinzip. – I/O-Page als Grundeinheit der physischen Memory- Verwaltung (durch die DB, nicht durch das OS). • Neu – Systemstabilität durch Hardware und Betriebssystem- Features massiv höher als früher. Recovery aufgrund von Systemausfällen nur noch selten notwendig. – Standard-Memory Ausstattung > 4GB kein Problem mehr.
  • 3. Neues Prinzip • Datenbank bei Start des DB-Servers vollständig in das Memory laden (z.B. Unix Memory Mapped Files).  Das gesamte Buffer-Management entfällt, der Speicher wird als linearer Adressraum für Datensätze angesehen, alle Positionen gleich schnell adressierbar.  Zugriff auf beliebiges Datenelement immer gleich schnell. Transfer von/zu Disk muss nicht mehr berüchsichtigt werden.
  • 4. Mutationen • ACID Regel ist immer noch ein zwingendes Prinzip! 2. SQL-Befehl Workspace = 2b. Neue Gesamte Datenbank Datenwerte 1. Startup = 3. Shutdown oder 2a. Alte und neue Checkpoint = Gesamte DB laden Datenwerte Ganze DB speichern Logfile DB-Storage
  • 5. Neue Optimierungsmöglichkeiten • Indexe werden bei Systemstart im Memory aufgebaut. Keine materialisierten Indexe mehr. • Keine komplizierte Datensatz-Adressierung auf die Disk notwendig, da die Daten selber ja bereits im Memory sind. • Indexe brauchen die Schlüsselwerte nicht noch einmal zu enthalten, da die Daten selber ja bereits im Memory sind.  Zusätzliche Ersparnis von Memory gegenüber klassischen Datenbank.  Neue Index-Strukturen: zum Beispiel T-Tree (Oracle) und Trie (IBM).
  • 7. T-Tree Index • Über alles gesehen wesentlich weniger Code abzuarbeiten, da keine Diskzugriffe zu berücksichtigen sind. • Wenig Platzbedarf für Index, da nur Pointer auf Daten nötig sind, und nicht die Datenwerte selbst. • Binäre Verzweigung und kleine Anzahl Werte (Pointer) pro Knoten garantiert hohe CPU-Effizienz. Keine lineare Suche durch grosse IO/Pages hindurch. • Anwendbar wie B-Tree: für Suche mit exakten Vergleiche und Range-Suche geeignet. • Achtung: Peformance-Desaster bei zuwenig Memory !!
  • 8. Trie-Index (IBM solidDB) t r e o e a 8 9 d a 10 a d t 1 4 2 12 3 s 13 t 11
  • 9. Trie-Index • Das Auffinden von Schlüsselwerten ist sehr schnell, Zeitbedarf nur proportional zur Länge des Schlüsselwertes! • Alle Werte mit demselben Präfix teilen sich die Knoten für dieses Präfix, z.B. "to" und "toast". Suche nach Werten mit demselben Präfix via Trie möglich, z.B. like – Prädikat. • Auch Zahlen können mit einem Trie indexiert werden. • Tries können sortiert aufgebaut werden, so dass dann eine preorder-Ausgabe ebenfalls sortiert ist. • Demo unter http://blog.ivank.net/trie-in-as3.html
  • 10. IMDB als "relationaler Cache" • Oracle TimesTen und IBM solidDB können als schneller relationaler Cache verwendet werden:
  • 11. Latenzzeit für Queries • Aufgrund der einfacheren Optimizer (meist nur ein bis zwei Indextypen und sequentieller Table Scan zur Auswahl), sowie massiv kleinerem Code, liegt die Latenzzeit für Queries und Änderungsoperationen typischerweise bei Mikrosekunden. Bei klassischen Datenbanken sind es meist Millisekunden.
  • 12. Gemischter Betrieb mit IMDB • DB-Hersteller bieten zunehmend einen gemischten Betrieb von disk-basierten und memory-basierten Teilen an. • Beispiel solidDB create table T (…) store memory | store disk • Aus dem Speichertyp der Tabelle werden alle übrigen Verhaltensweisen abgeleitet: Indextyp, Zugriffsoptimierung, Verhalten bei Startup, Checkpoint und Shutdown des DB-Servers.
  • 13. Solid State Disk • Datenbanken können aus den schnelleren Solid State Disks Gewinn ziehen, insbesondere auch für das Führen von Log-Files. Die Grundsatztechnologie geht aber von klassischen Datenbanksystemen aus: – mehrstufiger Zugriff Disk-Memory – IO/Pageing – Komplexe, zeitintensive Optimierungsstrategien • Eine noch höhere Performance wird erreicht, wenn wenig- selektive Indexe gelöscht oder vermieden werden, damit vermehrt Full Table Scans vom DBMS ausgeführt werden.
  • 14. Kennzahlen SSD MLC-NAND-Flash- CompactFlash-Karte Festplatte Laufwerk 1,0″ bis 3,5″ per ATA-Adapter 1,0″ bis 3,5″ Größe bis 600 GB bis 128 GB bis 3 TB Preis pro GB (Stand Dez. 2011) ab ca. 0,96 € ab ca. 1,02 € ab ca. 0,05 € Anschluss S-ATA, P- ATA, mSATA, PCIe S-ATA, P-ATA S-ATA, P-ATA, SCSI, SAS Lesen (kein RAID) bis 509 MB/s bis 100 MB/s bis 150 MB/s Schreiben (kein RAID) bis 446 MB/s bis 100 MB/s bis 150 MB/s Mittlere Zugriffszeit lesen 0,2 ms 0,8 ms ab 3,5 ms Mittlere Zugriffszeit schreiben 0,4 ms 10…35 ms ab 3,5 ms Verhalten beim PC- Ausschalten problemlos problemlos problemlos Verhalten bei Stromausfall ohne Stützkondensator Datenverlust möglich Datenverlust möglich Datenverlust möglich
  • 15. In Memory DMBS, Produkte • Oracle Times Ten • solidDB von IBM • HSQLDB • Apache Derby • XML-Datenbank BaseX • Weitere siehe bei Column Stores
  • 16. Zusammenfassung Ziele eines In-Memory-DBMS • Eliminierung von Disk-IO für den laufenden Betrieb des DBMS • Ausnutzung der virtuellen Memory-Verwaltung des Betriebs- systems • Minimierung aller roten Bereiche in nebenstehendem Profilingdiagramm eines klassischen DBMS • Voraussetzung: Ausreichend Platz für das gesamte DBMS im physikalischen Memory, inklusive temporären Platz für SQL-Abfragen.