suchen Empfehlungen für einfache In-Memory-DB-Server * * (keine Persistenz erforderlich) [geschlossen]

StackOverflow https://stackoverflow.com/questions/4246675

Frage

Sollten mehrere Verbindungen, vorzugsweise über ODBC unterstützen. Die Clients werden als separate Prozesse auf der gleichen Maschine laufen. Keine Notwendigkeit für die Persistenz, da die Kunden die die Persistenz an anderer Stelle behandelt. Die Clients sind in C ++ geschrieben, wenn es darauf ankommt.

Die Daten sind recht einfach, es ist ein Satz von unabhängigen bidirektionalen Karten ist. Der Zugang ist entweder direkt durch einen Wert oder ein Bereich (between X and Y), kein Updates. Wir haben nicht wirklich brauchen SQL hier, also Nicht-SQL-Lösungen auch in Betracht gezogen werden können.

Die Client-Anwendung ist Multi-Prozess und auf mehreren Rechnern laufen kann. Jede Maschine sollte eine lokale Kopie der DB haben, die sich gegen den zentralen Speicher durch seine lokalen Kunden aktualisiert wird.

Mehr Edits :

  1. die Plattform Linux
  2. RAM-Disk ist keine Option aus Sicherheitsgründen - wir wollen nicht, dass jemand mit Zugriff auf die Maschine, um die Daten zu sehen wäre in der Lage
  3. sollten die Daten nur in verschlüsselter Form beibehalten werden können, so sollte die Lösung entweder nicht die Daten überhaupt fortbestehen oder einem benutzerdefinierten Filter / Plugin für die Persistenz ermöglichen.
War es hilfreich?

Lösung

Nur wegen meiner Vertrautheit mit ihm, würde ich mit mysql gehen. Um es als In-Memory-Datenbank Verwendung Speicher als Tabellentyp zu verwenden. Redis ist ein im Speicher NoSQL-Datenbank, die wahrscheinlich eine perfekte Passform für sein würde (es läuft im Speicher nur mit Plattenschreib für Persistenz, die deaktiviert werden kann).

Andere Tipps

Jeder besonderer Grund nicht SQLite mit einem RAM db geöffnet?

RAM-Disk ist keine Option aus Sicherheitsgründen - wir nicht, dass jemand mit Zugriff auf die Maschine wollen wäre in der Lage, die Daten

anzuzeigen

Sie sind kein Glück. Jeder, der Zugriff auf das Gerät kann die Daten sehen aus / proc / $ PID / mem trotzdem.

Wenn Sie sprechen nonroot Zugang als die Verwendung des / tmp / $ Verzeichnis / Methode mit chmod 700.

Hier ist ein Trick, den Sie unter Linux verwenden können, es heißt „Faulen Aushänge“.

  1. Mount ein tmpfs irgendwo
  2. Starten Sie einen Prozess (es), es zu benutzen, die chdir () in diesem Verzeichnis. Sie können eine MySQL-Instanz verwenden; mysql immer tut ein chdir seinem Datenverzeichnis.
  3. Nachdem der Prozess erfolgreich in Betrieb genommen hat, umount die tmpfs mit der -l (faul) Option.

Nun ist die tmpfs noch existiert und wird auch weiterhin so lange (s) Verfahren existieren sie zugreifen, aber es kann nicht durch unabhängige Prozesse nicht mehr zugegriffen werden, da es nicht mehr in seinem ist Mount-Punkt.

Beachten Sie, dass dies in keiner Weise root-Stationen von der die Daten in den tmpfs zu erhalten, macht es nur ein wenig härter.

Beachten Sie, dass es ausgetauscht werden können, so sollten Sie deaktivieren Swap (oder verwenden Sie verschlüsselte swap), wenn Sie unbedingt brauchen nicht-persistent zu sein.

Versuchen Sie Boost.Multiindex . Nicht eine offensichtliche Wahl, aber es basiert auf relationalen DB-Konzepten.

  

Das Konzept der Multi-Indizierung über die   gleiche Sammlung von Elementen ist   entlehnt aus relationaler Datenbank   Terminologie und ermöglicht die   Spezifikation komplexer Daten   Strukturen im Sinne der Multiplikation   indexierten relationalen Tabellen, in denen einfach   Sets und Karten sind nicht genug. Ein weiter   Auswahl von Indizes bereitgestellt wird,   nach analogem STL Behälter modellierte   wie std :: set, std :: list und gehashte   Sets.

Verwenden Sie mysql mit datadir = a tmpfs Sie zum Zweck montiert haben. Sie müssen einige Startup-Skript, um kochen, die die Datenbank (mit mysql_install_db oder etwas) zur Bootzeit, natürlich installiert, wie Sie alle Daten verlieren.

Memcached kann eine praktikable Lösung sein. Es ist ein Schlüssel-Wert-Speicher, der eingestellt werden kann Werte für eine gewisse Zeit zu halten, ist skalierbar und ist einfach einzurichten und zu beginnen. Es ist auch in allen möglichen Umgebungen laufen. Hier ist die Wiki-Website für weitere Informationen , zumal die Hauptseite ist, hat nicht annähernd hilfreich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top