in memory datenbanken

704 Aufrufe

Veröffentlicht am

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
704
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
10
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

in memory datenbanken

  1. 1. In-Memory Datenbanken Arno Schmidhauser Letzte Revision: Januar 2011
  2. 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. 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. 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. 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).
  6. 6. T-Tree Index (Oracle TimesTen)
  7. 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. 8. Trie-Index (IBM solidDB) t r e o e a 8 9d a 10 a d t1 42 123 s 13 t 11
  9. 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. 10. IMDB als "relationaler Cache"• Oracle TimesTen und IBM solidDB können als schneller relationaler Cache verwendet werden:
  11. 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. 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. 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. 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 TBPreis 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, SASLesen (kein RAID) bis 509 MB/s bis 100 MB/s bis 150 MB/sSchreiben (kein RAID) bis 446 MB/s bis 100 MB/s bis 150 MB/sMittlere Zugriffszeit lesen 0,2 ms 0,8 ms ab 3,5 msMittlere Zugriffszeit schreiben 0,4 ms 10…35 ms ab 3,5 msVerhalten beim PC-Ausschalten problemlos problemlos problemlosVerhalten bei Stromausfall ohne Stützkondensator Datenverlust möglich Datenverlust möglich Datenverlust möglich
  15. 15. In Memory DMBS, Produkte• Oracle Times Ten• solidDB von IBM• HSQLDB• Apache Derby• XML-Datenbank BaseX• Weitere siehe bei Column Stores
  16. 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.

×