ADR 001: Verwendung einer In-Memory Datenbank
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.