Mittwoch, Februar 18, 2015

"In-Memory" Postgres?

Vor einigen Tagen hat sich Josh Berkus mit der kontroversen Aussage "In-memory" is not a feature, it's a bug zu Wort gemeldet. Darin definiert er In-Memory Datenbanken als solche, denen die Möglichkeit fehlt, Daten auf die Festplatte zu schreiben, was folglich ihre Wiederherstellbarkeit einschränkt: "So an 'in-memory' database is a database with a major limitation." Das klingt erst mal polemisch und ist sicher auch so gemeint; möglicherweise trifft es auch nicht ganz die Grundidee von In-Memory Datenbanken, aber das sei erst einmal dahin gestellt. Interessant ist jedenfalls der im Artikel enthaltene Hinweis, dass man auch Postgres als "In-Memory" Datenbank betreiben kann, indem man alle Storage Features deaktiviert. Wie das funktioniert, erläutert er in einem Folgeartikel Running with scissors mode: grundsätzlich geht es dabei darum, Disk-Zugriffe so weit wie möglich zu vermeiden, wobei ein vollständiger Verzicht darauf auf diesem Weg nicht möglich ist. Zu den anzupassenden Parametern gehören work_mem, temp_buffers und diverse Einstellungen, die die WAL-Archivierung betreffen. Über temp_file_limit=0 lässt sich erreichen, dass Queries abbrechen, statt Sortierungen auf der Platte auszuführen. Darüber hinaus ist es wichtig in der postgresql.conf einen irregulären Dummy-Parameter (z.B. DO_NOT_RESTART=true) zu ergänzen, um den Neustart nach einem Crash zu verhindern, weil ein Crash in diesem Betriebsmodus die Datenbank notwendigerweise in einen inkonsistenten Zustand bringt. Das alles klingt in der Tat etwas wackelig, aber in einem weiteren Artikel will der Autor etwas zur Performance einer solchen Datenbank sagen.

Man mag dieses Verfahren als In-Memory-Variante zu Postgres bezeichnen - aber es hat aus meiner Sicht nicht allzu viel Ähnlichkeit mit den komplexeren In-Memory-Features der Konkurrenz, die etwa bei Oracle oder im SQL Server in den jüngsten Releases eingeführt wurden.

Keine Kommentare:

Kommentar veröffentlichen