Die meisten IT-Buzzwords altern schlecht, und das aus gutem Grund: Die Technologien, die einst einen Wettbewerbsvorteil boten, werden innerhalb eines Jahrzehnts oder weniger von überlegenen Alternativen abgelöst. Wenn ein Softwareanbieter also weiterhin ein Buzzword über sein Verfallsdatum hinaus verwendet (1), ist die einfachste Erklärung, dass sein F&E-Team nicht einmal bemerkt hat, dass die Welt sich weiterentwickelt hat.

Anekdotisch haben mir mehrere Risikokapitalgeber auch gesagt, dass sie es leid waren, in Softwareunternehmen zu investieren, die älter als ein paar Jahre waren, weil die meisten Unternehmen es nie schaffen, ihre eigene Technologie von der Technologielandschaft zu entkoppeln, die sie zu Beginn definiert hat.

(1) Der Technologiemarkt bestimmt selbst, wann eine Technologie “verfällt”. Betrachtet man ein bestimmtes Stück Technologie, kann man bestenfalls nur schätzen, wie lange es noch annähernd dem Stand der Technik entspricht.

In-Memory-Datenbanken waren einst ein IT-Buzzword, und das hat die Zeit nicht gut überdauert: Jedes Softwareunternehmen, das sich heute als Anbieter von In-Memory-Computing oder In-Memory präsentiert, bringt veraltete Technologien auf den Markt (2). Versteht mich nicht falsch: Die optimale Nutzung des “Speichers” – dazu später mehr – war nie wichtiger, allerdings ist die Computerlandschaft heute komplexer als früher.

(2) Theoretisch könnte es lediglich das Marketingteam sein, das hinterherhinkt, während das Technikteam bereits einen großen Schritt voraus ist. Ich habe jedoch noch nie ein Softwareunternehmen getroffen, das unter diesem Problem litt. Man kann davon ausgehen, dass das Marketing stets der Technik voraus ist.

In den späten 90ern und frühen 00ern war eine bestimmte Art von flüchtigem Speicher, umgangssprachlich als der RAM bezeichnet, so erschwinglich geworden, dass immer interessantere und wertvollere Datensätze “in-memory” untergebracht werden konnten. Damals wurde die meiste Software nach dem Prinzip entwickelt, dass RAM so teuer und begrenzt war, dass es lohnenswert erschien, mit allen Mitteln den RAM-Verbrauch so weit wie möglich zu reduzieren. Indem man die meisten Probleme aus einem frischen, ungebundenen Ansatz – also dem In-Memory-Computing – einfach neu betrachtete, erzielten viele software vendors enorme Geschwindigkeitssteigerungen gegenüber älteren Produkten, die ausschließlich auf rotierenden Festplatten basierten.

Schnellvorlauf ins Jahr 2018: In-Memory-Datenbanken sind eine überholte Perspektive, und das ist schon seit Jahren so. Es gibt viele Arten der 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 optische Speicherung

Ich führe nicht einmal neuere Speichertechnologien wie das Intel Optane auf, das nahezu eine eigene Geräteklasse darstellt.

Anbieter, die “in-memory” Computing bewerben, deuten damit an, dass ihre Softwaretechnologie vorwiegend auf die Ausnutzung zweier Speicherarten ausgerichtet ist: des lokalen RAM und des remote RAM. Zwar ist es sicherlich gut, den RAM – sowohl lokalen als auch remote – optimal zu nutzen, doch zeigt dies auch, dass andere Alternativen bei den ingenieurtechnischen Ansätzen zu wenig berücksichtigt werden.

Zum Beispiel ist in den letzten zwei Jahrzehnten der CPU-Cache für High-End-CPUs von 512KB auf über 60MB angewachsen. Mit so viel CPU-Cache ist es nun möglich, “in-cache computing” durchzuführen, was massive Geschwindigkeitsvorteile gegenüber einfachem “in-memory computing” mit sich bringt. Allerdings erfordert die Nutzung des Caches die Verkleinerung vieler Datenstrukturen oder gar intelligentere Strategien, weit über das hinaus, was aus der RAM-Perspektive als notwendig oder wünschenswert erachtet wird.

Allein darauf hinzuweisen, dass der CPU-Cache schneller ist als lokaler RAM, würde das Wesentliche verfehlen. Heutzutage gehört es zur guten Softwareentwicklung, die jeweiligen Möglichkeiten all dieser Speicherklassen voll auszuschöpfen. Dank cloud computing war es noch nie einfacher, eine ad-hoc zusammengestellte Mischung aus Rechenressourcen zu nutzen.

Daher liefert Lokad keine “in-memory” Softwaretechnologie, denn dies würde uns daran hindern, die anderen Optionen zu nutzen, die uns derzeit zur Verfügung stehen. Zum Beispiel wäre es für unsere Kunden unnötig teuer, Maschinen mit bis zu 2TB RAM zu mieten, auch wenn das möglich wäre. Es gibt viele Algorithmen, die vollständig gestreamt werden können; die Verarbeitung von Terabytes an Daten erfordert also nicht Terabytes an RAM, und da 1GB RAM etwa 1000x teurer ist als 1GB HDD, ist dies keine Implementierungsdetailfrage.

Unser Ziel ist es nicht, an einer starren Sichtweise der Softwareentwicklung festzuhalten, sondern die breitere ingenieurtechnische Perspektive zu verfolgen, nämlich das Beste aus dem vorhandenen Budget herauszuholen. Mit anderen Worten, wir neigen dazu, In-Memory-Verarbeitung einzusetzen, wann immer sie die Alternativen übertrumpft – und nicht darüber hinaus.

Da Rechenressourcen nicht vollständig bedarfsgerecht einstellbar sind – beispielsweise kann man sich realistisch gesehen keine Maschine ohne CPU-Cache mieten – bemühen wir uns bei Lokad, das Maximum aus allen Ressourcen herauszuholen, für die bezahlt wird, selbst wenn diese ursprünglich nicht explizit angefordert wurden.