Jenseits von In-Memory-Datenbanken
Die meisten IT-Buzzwords altern schlecht, und das aus gutem Grund: Die meisten Technologien, die früher einen Wettbewerbsvorteil hatten, werden innerhalb eines Jahrzehnts oder weniger von überlegenen Alternativen abgelöst. Wenn ein Softwareanbieter ein Buzzword über das Verfallsdatum hinaus verwendet, ist die einfachste Erklärung, dass sein F&E-Team noch nicht erkannt hat, dass sich die Welt weiterentwickelt hat.
Anekdotisch haben mir auch mehrere Risikokapitalgeber erzählt, dass sie zögern, in Softwareunternehmen zu investieren, die älter als ein paar Jahre sind, weil die meisten Unternehmen es nie schaffen, ihre eigene Technologie von der Technologielandschaft zu entkoppeln, die sie bei ihrer Gründung definiert hat.
(1) Der Technologiemarkt selbst definiert, wann eine Technologie “abläuft”. Wenn man sich eine bestimmte Technologie ansieht, kann man bestenfalls schätzen, wie lange sie noch nahe am Stand der Technik bleiben wird.
In-Memory-Datenbanken waren ein IT-Buzzword, und das hat sich nicht gut entwickelt: Jedes Softwareunternehmen, das sich heute als Anbieter von In-Memory-Computing oder In-Memory vermarktet, bringt veraltete Technologien auf den Markt (2). Aber verstehen Sie mich nicht falsch: Das Beste aus dem “Speicher” zu machen - dazu später mehr - war noch nie so wichtig; jedoch ist die IT-Landschaft heute komplexer als früher.
(2) Theoretisch könnte es nur das Marketingteam sein, das hinterherhinkt, während das Entwicklungsteam bereits vorausgeeilt ist. Ich habe jedoch noch nie ein Softwareunternehmen getroffen, das unter diesem Problem leidet. Sie können sicher davon ausgehen, dass das Marketing immer einen Schritt voraus ist.
Ende der 90er und Anfang der 00er Jahre wurde ein bestimmter Typ von flüchtigem Speicher, umgangssprachlich als RAM bezeichnet, so erschwinglich, dass immer interessantere und wertvollere Datensätze “im Speicher” Platz finden konnten. Zu dieser Zeit wurde die meiste Software unter der Annahme entwickelt, dass RAM so teuer und begrenzt war, dass es sich lohnte, sich umfangreich mit Komplikationen zu befassen, nur um den RAM-Druck so weit wie möglich einzuschränken. Durch eine einfache Neubetrachtung der meisten Probleme aus einer frischen, unbeschränkten Perspektive, d.h. “In-Memory”-Computing, erzielten viele Softwareanbieter enorme Geschwindigkeitssteigerungen gegenüber älteren Produkten, die ausschließlich auf rotierenden Festplatten basierten.
Blicken wir in das Jahr 2018, sind In-Memory-Datenbanken eine veraltete Perspektive, und das ist schon seit Jahren so. Es gibt viele Arten von Datenspeicherung:
- L1 CPU-Cache
- L2/L3 CPU-Cache
- Lokaler RAM
- Lokaler GPU-RAM
- Lokale SSD
- Lokale HDD
- Remote-RAM
- Remote-SSD
- Remote-HDD
- Band- oder optischer Speicher
Ich liste nicht einmal neuere Speichertechnologien wie Intel Optane auf, die fast eine eigene Geräteklasse darstellen.
Anbieter, die “In-Memory”-Computing bewerben, deuten darauf hin, dass ihre Softwaretechnologie hauptsächlich auf die Nutzung von zwei Arten von Speicher abzielt: dem lokalen RAM und dem Remote-RAM. Die bestmögliche Nutzung des RAM, sowohl lokal als auch remote, ist sicherlich eine gute Sache, aber es zeigt auch Engineering-Ansätze auf, die die Alternativen unternutzen.
Zum Beispiel ist der CPU-Cache in den letzten zwei Jahrzehnten von 512 KB auf über 60 MB für High-End-CPUs angewachsen. Mit so viel CPU-Cache ist es jetzt möglich, “im Cache” zu rechnen und massive Geschwindigkeitssteigerungen gegenüber einfachem “In-Memory”-Computing zu erzielen. Die Nutzung des Caches erfordert jedoch die Minimierung vieler Datenstrukturen oder sogar intelligentere Strategien, die weit über das hinausgehen, was aus der RAM-Perspektive als notwendig oder sogar wünschenswert angesehen wird.
Es würde jedoch den Punkt verfehlen, nur darauf hinzuweisen, dass der CPU-Cache schneller ist als der lokale RAM. Heutzutage umfasst eine gute Softwareentwicklung das maximale Ausschöpfen der jeweiligen Fähigkeiten all dieser Klassen von Datenspeicherung. Dank Cloud Computing war es noch nie einfacher, eine ad-hoc Mischung aus Rechenressourcen zusammenzustellen.
Daher liefert Lokad keine “In-Memory”-Softwaretechnologie, da dies verhindern würde, dass wir von den anderen Optionen profitieren, die uns derzeit zur Verfügung stehen. Zum Beispiel könnten wir Maschinen mit bis zu 2 TB RAM mieten, aber das wäre unnötig teuer für unsere Kunden. Es gibt viele Algorithmen, die vollständig gestreamt werden können. Das Verarbeiten von TBs an Daten erfordert also keine TBs an RAM. Und wenn man bedenkt, dass 1 GB RAM etwa 1000-mal teurer ist als 1 GB HDD, handelt es sich nicht um eine Implementierungsdetails.
Unser Ziel ist es nicht, an einer starren Perspektive der Softwareentwicklung festzuhalten, sondern an der breiteren Ingenieurperspektive, die darin besteht, das Beste aus dem Budget herauszuholen, das zur Verfügung steht. Mit anderen Worten, wir neigen dazu, den In-Memory-Verarbeitung zu verwenden, wann immer sie die Alternativen übertrifft, aber nicht mehr.
Da die Rechenressourcen nicht vollständig nach Bedarf angepasst werden können - z.B. kann man realistischerweise keine Maschine ohne CPU-Cache mieten - bemühen wir uns bei Lokad, das Beste aus allen Ressourcen zu machen, die bezahlt werden, auch wenn diese Ressourcen nicht strikt angefordert wurden.