Viele kennen es – wenn man gerade Montag früh im Telefonat mit dem Kunden ist, schnell etwas im System nachschauen will und dann dieser Ladebalken aufploppt. Jede Sekunde kommt einem ab jetzt wie eine Ewigkeit vor.
Datenbanken sind eigentlich eine geniale Erfindung. Sie trennen die Datenhaltung von der Anwendungslogik, sodass ein Datenbank-Hersteller die perfekte ausfallsichere Datenhaltung mit der besten Anfrage-Performance entwickeln kann und ein Software-Hersteller eine Anwendungslogik wie z.B. ein ERP-System oder eine Kundendatenbank bauen kann.
Wie Festplatten Datenbanken ausbremsen
Um sicherzugehen, dass keine Daten durch einen Computerabsturz verloren gehen, legen Datenbankmanagementsysteme (DBMS) ihre Daten nicht im Arbeitsspeicher (RAM) ab, sondern auf der Festplatte (HDD oder SSD).
Das Problem dabei: RAM ist ca. 100x schneller als HDD und SSD-Speicher. Aus diesem Grund behalten die meisten DBMS ihre Daten auch im RAM zwischengespeichert. Und jetzt kommt das Problem:
Am Montag Morgen sind die Daten eben noch nicht im RAM zwischengespeichert, sondern liegen noch auf der HDD. Erst nach dem ersten Datenzugriff werden die Daten wirklisch schnell vorgehalten werden können.
Die Lösung hierzu sind In-Memory-Datenbanken. Bei diesen ist garantiert, dass die Daten, obwohl auf Festplatte gesichert, auch jederzeit im RAM vorgehalten werden. Da RAM-Speicher um ein vielfaches teurer ist als Festplatten-Platz, muss hier besonders gut komprimiert werden.
Wie Industrieanwendungen durch Datenbank-Logik ausgebremst werden
Datenbanksysteme sind darauf ausgelegt, eine absolute Sichereit der Daten zu garantieren – zum Preis von Performance.
Bei jeder Schreib-Operation (z.B. Einfügen neuer Daten) wartet die Datenbank darauf, dass die Daten sicher auf der Festplatte geschrieben sind. Diese Verzögerung ist spürbar und erlaubt es Anwendungen nicht, mit dem Programm fortzufahren, bis die Daten auch auf der Festplatte liegen.
Bei Echtzeit-Anwendungen wie z.B. industriellen Steuersystemen ist das ein Problem. Um nicht in Zeitverzug zu kommen, sammeln hier die Anwendungen genügend Daten, um diese in größeren Einheiten in die Datenbank zu senden. Dabei gibt es auch Datenbanken, bei denen man die Datensicherheits-Einstellungen pro Tabelle einstellen kann.
Wie man Statistiken schneller ausrechnet
Große Datensammlungen sind für Datenbanken üblicherweise kein Problem. Geeignete Datenstrukturen wie z.B. Indizes sorgen dafür, dass die Datenbank nicht alle Daten anfassen muss, wenn auch nicht alle Daten auf den Bildschirm passen.
Ein anderes Ding ist es, wenn tatsächlich alle Daten angefasst werden müssen, z.B. beim Ausrechnen einer Statistik.
Wir haben bereits In-Memory-Datenbanken angesprochen, die her schon mal den Faktor x10-x100 an Geschwindigkeit herausholen. Das nächste Level sind Spaltenbasierte Datenbanken.
Die meisten Statistiken beziehen sich nur auf 2-3 von potenziell hunderten Spalten, die die Datensätze haben können. Will man nur die Summe aller Verkäufe wissen, interessiert einen der Name des Käufers wenig. Das kann man sich zunutze machen, indem man die Daten so anordnet, dass man die relevanten Daten nah beieinander im Speicher liegen hat und somit die Geschwindigkeit des RAM, der immer ganze Blöcke zusammenhängender Daten liest, besser ausnutzen kann.
Das höchste Level im Bereich Analytics ist dann Parallelisierung: Anstatt wie traditionelle DBMS je Anfrage einen CPU-Kern zu „spendieren“, setzen analytische Datenbanken darauf, die Rechenaufgabe in viele kleine Portionen aufzuteilen und alle CPU-Kerne (oder sogar mehrere Server) an der Aufgabe mitrechnen zu lassen.
Launix beteiligt sich an der Entwicklung der MemCP
MemCP ist eine OpenSource-Datenbank, die genau diese Punkte besser macht als bisherige Datenbanksysteme:
- In-Memory
- Spaltenbasiert
- Parallelisiert
- Einstellbar, ob man mehr Performance oder absolute Datensicherheit will
Launix beteiligt sich maßgeblich an der Entwicklung dieses Stücks freier Software, um seinen Kunden bestmögliche Performance beim Benutzen der ERP-Software bieten zu können.
Mehr Infos zu MemCP unter: https://memcp.org
Comments are closed