In-Memory-Java-DB [geschlossen]

8

Gibt es DBs für Java, die in einem Embedded-Modus ausgeführt werden können, wobei einige Tabellen im Arbeitsspeicher gespeichert werden, während andere von der Festplatte geladen werden? H2 und JavaDB scheinen die beiden Führer für Java-DBs zu sein und ich weiß, dass sie beide einen In-Memory-Modus haben, aber laden sie die gesamte DB in den Speicher oder können Sie sich für jede Tabelle entscheiden?

    
Ben McCann 19.12.2009, 07:28
quelle

2 Antworten

6

Dies ist die im Cache gespeicherte Tabelle, die in der HSQL-Website erwähnt wird.

• Speichert HSQLDB alle Daten im Speicher. Wird dadurch kein Speicher verbraucht?

• Es speichert alle Daten im Speicher nur, wenn Sie möchten. Standardmäßig führt CREATE TABLE zu einer Speichertabelle, da dies der beste Typ für kleinere Tabellen ist. Verwenden Sie für größere Tabellen CREATE CACHED TABLE, und passen Sie die Cachegröße an Ihre Speicheranforderungen an (so wenig wie 8 MB oder so). Siehe Kapitel Systemmanagement und Bereitstellungsprobleme im Handbuch. Es gibt keine einfache Regel und kein Ausschießen seitens der HSQLDB, da maximale Flexibilität mit nur ein paar Einstellungen erlaubt ist. Eine beliebte Anwendung von HSQLDB ist für OLAP-, ETL- und Data Mining-Anwendungen, bei denen riesige Java-Speicherzuweisungen verwendet werden, um Millionen von Datenzeilen im Speicher zu halten.

Ich denke, Cache-Tabelle ist bereits stark genug, um Ihre Bedürfnisse zu erfüllen.

Von Ссылка

Vergleich zwischen Cache-Tabelle und Speichertabelle

MEMORY-Tabellen und CACHED-Tabellen werden im Allgemeinen für die Datenspeicherung verwendet. Der Unterschied zwischen den beiden ist wie folgt:

Die Daten für alle MEMORY-Tabellen werden aus der * .script-Datei gelesen, wenn die Datenbank gestartet und im Speicher abgelegt wird. Im Gegensatz dazu werden die Daten für zwischengespeicherte Tabellen erst dann in den Speicher gelesen, wenn auf die Tabelle zugegriffen wird. Darüber hinaus wird nur ein Teil der Daten für jede CACHED-Tabelle im Speicher gehalten, wodurch Tabellen mit mehr Daten als im Speicher gehalten werden können.

Wenn die Datenbank normal heruntergefahren wird, werden alle Daten für MEMORY-Tabellen auf den Datenträger geschrieben. Im Vergleich dazu werden die Daten in CACHED-Tabellen, die sich geändert haben, während des Betriebs und beim Herunterfahren ausgeschrieben.

Die Größe und Kapazität des Datencaches für alle Cached-Tabellen ist konfigurierbar. Auf diese Weise können alle Daten in CACHED-Tabellen im Speicher zwischengespeichert werden. In diesem Fall ist die Zugriffsgeschwindigkeit gut, aber etwas langsamer als bei MEMORY-Tabellen.

Für normale Anwendungen wird empfohlen, dass MEMORY-Tabellen für kleine Datenmengen verwendet werden und CACHED-Tabellen für große Datenmengen übrig bleiben. Für spezielle Anwendungen, bei denen Geschwindigkeit im Vordergrund steht und eine große Menge an freiem Speicher verfügbar ist, können MEMORY-Tabellen auch für große Tabellen verwendet werden.

Diese Funktion wird von H2 und Derby (JavaDB) noch nicht unterstützt. Korrigiere mich, wenn es nicht so ist.

    
Clark Bao 18.08.2011, 23:03
quelle
1

Die meisten speicherinternen Datenbanken (z. B. HSQLDB ) können einige (oder alle) Daten zwischenspeichern es ist niedrig genug, so dass es für den Programmierer transparent ist, aber sicherlich konfigurierbar ist

    
Bostone 19.12.2009 07:34
quelle