ADR 001: Verwendung einer In-Memory Datenbank

Datum

2023-10-12

Status

Akzeptiert

Kontext

Wir benötigen eine Performante Möglichkeit, um alle Zugriffe auf Kacheldaten, Kartendaten und ggf. Styledaten zu speichern(zählen) und auf den User-Server zu übertragen.

Entscheidung

Wir werden die Redis Datenbank verwenden.

Begründung

  • Open-Source: BSD-3 Lizenz

  • Community ist groß und aktiv: GitHub

  • Bibliotheken: Es gibt mehrere Bibliotheken für sehr viele Programmiersprachen

Alternativen

  • SQLite: SQLite ist aufgrund des Datei-Lockings zu langsam um die vielen und schnellen Abfragen der Kacheldaten adäquat zu bewältigen.

  • Memcached: Die increment/decrement-Methoden funktionieren nur, wenn die option Memcached::OPT_BINARY_PROTOCOL = true ist. Dann funktioniert jedoch die getAllKeys-Methode nicht, die benötigt wird. Die maximale Standardgröße der Daten beträgt 64MB.

Konsequenzen

Es muss ein weiterer Datenbank Server installiert werden, der eine andere/ungewohnte Verwaltungsoberfläche hat als MySQL (phpmyadmin)
Als Verwaltungsoberfläche kann u.a. entweder Another Redis Desktop Manager oder RedisInsight verwendet werden.