Empfehlung für eine in-memory-Datenbank
Möchte ich entfernen, sql-Abhängigkeit der kleine Stücke von Daten, die lade ich mir auf (fast) jede Anfrage auf eine web-Anwendung. Die meisten der Daten, ist der Schlüssel-Wert/Dokument strukturiert ist, sondern eine relationale Lösung ist nicht ausgeschlossen. Die Daten werden nicht zu groß, so will ich halten es im Speicher für eine höhere Verfügbarkeit.
Was würden Sie empfehlen?
Können Sie teilen, was web-stack verwendest du? LAMPE oder .NET, oder ?
InformationsquelleAutor vonPetrushev | 2011-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfachste und am weitesten verbreitete in-memory Key-value-storage ist MemcacheD. Die Seite Einführung re-iteriert, was Sie fordern:
Die client-Liste ist beeindruckend. Es ist für eine lange Zeit gewesen. Gute Dokumentation. Es hat eine API für fast jede Programmiersprache. Die horizontale Skalierung ist ziemlich einfach. Meine Erfahrung geht Memcached ist gut.
Möglicherweise möchten Sie auch zu schauen MemBase.
InformationsquelleAutor Nishant
Redis ist perfekt für diese Art von Daten. Es unterstützt auch einige grundlegende Datenstrukturen und Operationen auf Ihnen.
Ich vor kurzem konvertiert meine Django-forum app, es zu benutzen für alle Echtzeit-tracking-Daten - es ist so gut, haben nicht mehr das dreckige Gefühl erhalten Sie, wenn Sie diese Art von Zeug (
SET views = views + 1
und der andere schreibt auf jeder Seite-Ansicht) mit einer relationalen Datenbank.Hier ist ein Beispiel für die Verwendung von Redis zu speichern notwendigen Daten für die user Aktivität-tracking, einschließlich des Haltens eine geordnete Menge von letzten mal gesehen, bis zum Zeitpunkt, in Python:
InformationsquelleAutor Jonny Buchanan
Wenn Sie nichts dagegen haben, den sql-möchten aber weiterhin die db im Speicher, die Sie vielleicht prüfen wollen, sqlite (siehe http://www.sqlite.org/inmemorydb.html).
Wenn Sie nicht möchten, dass der sql und man wirklich nur über Schlüssel-Wert-Paare, warum nicht einfach speichern Sie Sie in einem map /hash /assoziatives array und mit ihm getan werden?
InformationsquelleAutor JeSuisse
Wenn Sie am Ende brauchen eine in-memory-Datenbank, H2 ist eine sehr gute option.
InformationsquelleAutor Raam
Eine weitere Datenbank in Betracht zu ziehen: Berkeley DB. Berkeley-DB-ermöglicht Ihnen die Konfiguration der Datenbank im Arbeitsspeicher, auf der Festplatte oder beides. Es unterstützt sowohl die Schlüssel-Wert - (NoSQL) und SQL-API. Berkeley DB wird oft verwendet in Kombination mit web-Anwendungen, weil es eingebettet ist, leicht bereitgestellt (es setzt mit Ihrer Anwendung), in hohem Maße konfigurierbar und sehr zuverlässig. Es gibt mehrere e-Retail-Websites verlassen sich auf Berkeley DB für Ihre e-Commerce-Anwendungen, einschließlich Amazon.com.
Ein weiteres problem mit BerkeleyDB ist es die AGPL-Lizenz, das heißt, wenn Sie wollen, um in Ihrer Anwendung verwenden, müssen Sie entweder den Kauf einer proprietären Lizenz oder open-source-app.
InformationsquelleAutor dsegleau
Ich bin nicht sicher, ob dies ist, was Sie suchen, aber Sie sollten sich in ein caching-framework (etwas, das kann in den tools enthalten, die Sie jetzt verwenden). Mit einem repository-Muster, die Sie Fragen, für die Daten vorhanden ist, überprüfen Sie, wenn Sie es im cache-key. Ich Sie nicht, Holen Sie es aus der Datenbank, wenn Sie tun, Sie Holen es aus dem cache.
Wird es abhängen, welche Art von Daten Sie verarbeiten, so ist es an Ihnen zu entscheiden, wie lange Daten im cache. Vielleicht ein Schiebe-timeout ist am besten, da Sie die Daten zu halten, solange die Taste hält wird verlangen. Das bedeutet, wenn der cache hat Daten für einen Benutzer, wenn der Benutzer geht Weg, die Daten verfallen, aus dem cache.
InformationsquelleAutor Fabian Nicollier
Können Sie Splitter diese Daten? Ist data access pattern einfach und stabil (keine änderung mit sich ändernden business-Anforderungen)? Wie wichtig ist diese Daten (session-Kontext, zum Beispiel, ist nicht zu schwer zu wiederherstellen, in der Erwägung, dass einige Einstellungen die ein Benutzer eingegeben hat, auf einer Seite mit den Einstellungen sollten nicht verloren gehen)?
In der Regel, vorausgesetzt, Sie kann die Splitter und Ihre Daten zugreifen Muster sind einfach und nicht mutieren Sie zu viel, Sie wählen Redis. Wenn Sie sich für etwas zuverlässiger und unterstützt mehr advanced data access patterns, Tarantool ist eine gute option.
InformationsquelleAutor Kostja
Bitte überprüfen Sie dies :
http://www.mongodb.org/
Gut, No-SQL-Datenbank mit den Treibern und der Unterstützung für alle wichtigen Sprachen.
InformationsquelleAutor Cygnus