Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Datenbank am Limit – Spaltenorientierung als A...

Datenbank am Limit – Spaltenorientierung als Ausweg

Wir alle kennen und schätzen SQL- und NoSQL-Datenbanken. Doch es gibt Anwendungsfälle, in denen diese Datenbanken an ihre Grenzen stoßen. Zum Beispiel bei der Analyse von Finanzmarktdaten. Dort müssen Zeitreihen von enormer Größe verarbeitet werden. Der Vortrag zeigt auf, wie spaltenorientierte Datenbanken dieses Problem lösen. Die Architektur solcher Tickdata-Systeme wird beleuchtet. Der Vortrag endet mit dem Beispiel einer technischen Implementierung für Finanzmarktdaten.

Michael Wittig

December 16, 2015
Tweet

More Decks by Michael Wittig

Other Decks in Programming

Transcript

  1. SELECT Datum, … FROM … WHERE Symbol='Daimler' AND Datum>=2015.01.01 AND

    Zeit BETWEEN 11:00:00 AND 13:00:00 GROUP BY Datum
  2. Zeit Käufer Verkäufer 11:00:00.000 11:00:00.009 11:00:00.025 11:00:00.207 11:00:00.555 11:00:00.873 5000

    @ 84,81 4700 @ 84,81 1000 @ 84,82 7000 @ 84,81 2000 @ 84,81 1500 @ 84,81 500 @ 84,82 200 @ 84,82 900 @ 84,83 800 @ 84,82 200 @ 84,82 100 @ 84,82 Daimler Aktie sortiert, unregelmäßig
  3. /Datenbank /Daimler_Quotes /123.dat SELECT Käufer_Preis FROM Daimler_Quotes WHERE Zeit>10:00:00 Zeit

    10:00:03 Käufer_Menge 7000 Käufer_Preis 84,81 Verkäufer_Menge 84,82 Verkäufer_Preis 1000 > 10:00:00 Binäre Suche über alle Dateien *.dat
  4. /Datenbank /Daimler_Quotes /1.dat /2.dat /3.dat /4.dat /5.dat SELECT Käufer_Preis FROM

    Daimler_Quotes WHERE Zeit>10:00:00 /Datenbank /Daimler_Quotes /124.dat /125.dat /126.dat /127.dat /… Lese alle Dateien ab 124.dat
  5. /Datenbank /Daimler_Quotes /Zeit.dat SELECT Käufer_Preis FROM Daimler_Quotes WHERE Zeit>10:00:00 Zeile

    Daten … 120 09:59:51 121 09:59:57 123 10:00:03 124 10:00:12 … > 10:00:00 Binäre Suche über eine Datei Zeit.dat sortiert
  6. /Datenbank /Daimler_Quotes /Käufer_Preis.dat SELECT Käufer_Preis FROM Daimler_Quotes WHERE Zeit>10:00:00 Zeile

    Daten 123 84,81 124 84,82 125 84,82 126 84,81 127 84,80 … Lese eine Datei Käufer_Preis.dat erst ab Zeile 123
  7. /DaimlerQuotes /2015-01-01 /Zeit.dat, Käufer_Preis.dat, … /2015-01-02 /Zeit.dat, Käufer_Preis.dat, … /2015-01-03

    SELECT Käufer_Preis FROM DaimlerQuotes WHERE Datum=2015-01-02 AND Zeit>10:00:00
  8. /DaimlerQuotes /2015-01-01 /Zeit.dat, Käufer_Preis.dat, … /2015-01-02 /Zeit.dat, Käufer_Preis.dat, … /2015-01-03

    SELECT Käufer_Preis FROM DaimlerQuotes WHERE Datum=2015-01-02 AND Zeit>10:00:00
  9. „The layout of data structures in memory can have a

    significant impact on performance because of the architecture of caches in modern processors.“ Evolution and Practice: Low-latency Distributed Applications in Finance, ACM Queue, Volume 13, issue 4 http://queue.acm.org/detail.cfm?ref=rss&id=2770868
  10. Was ist kdb+? • In-Memory Datenbank mit Persistenzschicht • Spaltenorientiert

    • Abfragesprache Q oder Q-SQL • Daten liegen im Speicher, in Transit und auf Festplatte im selben Format vor
  11. select max kauf_preis by datum from quotes where symbol=`Daimler datum

    | kauf_preis ———————————————————————— 2015-01-02 | 75,57 2015-01-03 | 74,81 2015-01-04 | 76,13
  12. Tickerplant • Setzen eines Zeitstempels: garantiert Sortierung • Speichern der

    Daten in einem Logfile • Publish/Subscribe Mechanismus • Initiierung des Endofday Events beim wechseln des Tages (00:00:00 Uhr) • Input: 100.000 Werte / Sekunde (1 Thread)
  13. Echtzeit Datenbank • subskribiert beim Start alle Daten bei der

    tp • liest das aktuelle Logfile ein • hält alle Daten des aktuellen Tages im Speicher • persistiert alle Daten des Tages auf Platte bei Endofday Event