Suche key/value-Datenbank



  • Ich bräuchte eine Bibliothek, die es erlaubt, key/value-Paare zu speichern, wobei key und value beliebige binäre Daten sind. Dabei sollte sie

    1. Transaktionen unterstützen
    2. gegen Systemabstürze resistent sein
    3. in kommerziellen Anwendungen ohne Offenlegung des Quelltexts verwendbar sein

    Gleichzeitiger Zugriff von mehreren Threads/Anwendungen muss nicht unterstützt werden.

    Habe früher schon einmal danach gesucht, aber auf die Schnelle nichts gefunden, das allen Anforderungen gerecht wird.

    Zusatzfrage: wenn man die Lizenzanforderung soweit lockert, dass alles außer Lizenzen wie Affero GPL in Ordnung sind (kommerzielle Anwendung, läuft aber nur auf dem Webserver und wird nicht an Kunden ausgeliefert), welche haltet ihr dann für die beste (Performance etc.)?



  • Redis ist hierauf wohl die Standard Antwort.



  • Interessant, den Namen habe ich irgendwie noch nicht gehört, vielleicht weil ich nur nach minimalistischen Bibliotheken gesucht habe.
    Aber Redis scheint perfekt zu passen, danke dir.



  • Ich hätte SQLite gesagt. Erfüllt auf jeden Fall alle genannten Anforderungen.

    Um was geht es dann inetwa? Also wie viel Prozent Lesen vs. Schreiben, wie gross sind die Keys etwa, wie gross die Werte, wie viele Key/Value Paare wird es etwa geben. Und was für Performance brauchst du (Transaktionen pro Sekunde)?

    Und erwartest du "cache-freundliche" Zugriffsmuster oder welche wo Caching nix bringen wird?



  • hustbaer schrieb:

    Ich hätte SQLite gesagt. Erfüllt auf jeden Fall alle genannten Anforderungen.

    Hmm, relationale Datenbanken mit Tabellen & Co. sind wohl eher für andere Strukturen gedacht. Würde das gut gehen, wenn ich alles in eine gigantische Tabelle werfe?

    hustbaer schrieb:

    Um was geht es dann inetwa? Also wie viel Prozent Lesen vs. Schreiben, wie gross sind die Keys etwa, wie gross die Werte, wie viele Key/Value Paare wird es etwa geben. Und was für Performance brauchst du (Transaktionen pro Sekunde)?

    Es geht um mehrere Anwendungen, die bisher selbstgestrickte Lösungen verwenden und mit robusteren Datenbanken versehen werden sollen.
    Wahrscheinlich allen gemeinsam ist, dass 32 Bytes Länge für den key ausreichen. Die values sind meist einige KB groß, geht auch gelegentlich in den MB-Bereich.
    Zugriffsmuster sind auch verschieden, z.B. 5 Lesevorgängen pro Sekunde und 1-2 größere Transaktionen im Abstand von mehreren Minuten, eine andere Anwendung wiederum 50 Schreibvorgänge (je ~50 KB) pro Sekunde und stoßweises Auslesen von mehreren tausend Werten (man sollte hier vielleicht eher von Dokumenten reden).
    Eine der Webanwendungen liest auch gerne bis zu tausend(e) (aber kleine) Werte aufs Mal.

    Naja, dann wäre da noch eine Desktopanwendung, die sowieso nicht auf dem Server läuft und bei der die Performance überhaupt keine Rolle spielt.

    hustbaer schrieb:

    Und erwartest du "cache-freundliche" Zugriffsmuster oder welche wo Caching nix bringen wird?

    Bei mindestens einem Anwendungsfall (der zuvor erwähnten Webanwendung) passen die oft genutzten Daten in den Cache, die anderen verwalten zu viele Daten als dass Caches hier große Chancen hätten.


Anmelden zum Antworten