Question

Y a-t-il des blocs de données pour Java qui peuvent être exécutées dans un mode intégré avec des tables stockées en mémoire lors du chargement d'autres à partir du disque? H2 et JavaDB semblent être les deux dirigeants pour Java DB et je sais qu'ils ont tous deux une en mémoire en mode, mais ils vous font charger toute la base de données en mémoire ou pouvez-vous décider sur une table par table?

Était-ce utile?

La solution

Ceci est la FAQ de table en cache mentionné sur le site HSQL.

• Est-ce que HSQLDB stocker toutes les données en mémoire. Ne pas manquer la mémoire en conséquence?

• Il stocke toutes les données en mémoire que si vous voulez. Par défaut, CREATE TABLE résultats dans une table mémoire, comme cela est le meilleur type pour les tables plus petites. Pour les grandes tables, utilisez CREATE TABLE et de CACHED ajuster la taille du cache à la suite vos exigences d'utilisation de la mémoire (aussi peu que 8 Mo environ). Voir le chapitre sur la gestion du système et des problèmes de déploiement du Guide. Il n'y a pas de règle simple et aucune imposition de la part de HSQLDB comme une flexibilité maximale est autorisée en utilisant seulement deux paramètres. Une utilisation populaire de HSQLDB est pour les applications minières OLAP, ETL, données et où d'énormes allocations de mémoire Java sont utilisés pour contenir des millions de lignes de données en mémoire.

Je pense que le tableau est déjà mises en cache assez puissant pour répondre à vos besoins.

De http://hsqldb.org/web/hsqlFAQ.html

entre la table de comparation cache et table mémoire

Les tables MEMORY et tables mises en cache sont généralement utilisés pour le stockage des données. La différence entre les deux est la suivante:

Les données pour toutes les tables de mémoire est lue à partir du fichier * .script lorsque la base de données est démarré et stocké dans la mémoire. En revanche, les données mises en cache pour les tables ne sont pas lus en mémoire jusqu'à ce que la table est accessible. En outre, seule une partie des données pour chaque table CACHED est conservée en mémoire, ce qui permet des tables avec plus de données que peut être conservée en mémoire.

Lorsque la base de données est l'arrêt de la manière normale, toutes les données pour les tables de mémoire est écrit sur le disque. En comparaison, les données dans les tableaux CACHED qui a changé est écrit en cours de fonctionnement et à l'arrêt.

La taille et la capacité du cache de données pour toutes les tables CACHED est configurable. Cela permet de laisser toutes les données dans les tableaux CACHED à mises en mémoire cache. Dans ce cas, la vitesse d'accès est bon, mais un peu plus lent que les tables de mémoire.

Pour les applications normales, il est recommandé que les tables de mémoire sont utilisés pour de petites quantités de données, laissant les tables mises en cache pour de grands ensembles de données. Pour des applications spéciales où la vitesse est primordiale et une grande quantité de mémoire disponible, tables de mémoire peuvent être utilisées pour les grandes tables ainsi.

Il semble que cette fonctionnalité est pas pris en charge par H2 et Derby (JavaDB) encore. Corrigez-moi si ce n'est pas le fait.

Autres conseils

La plupart des bases de données en mémoire (comme HSQLDB ont la capacité de mettre en cache certaines (ou toutes ) les données sur le disque. Habituellement, il est assez bas niveau il est transparent pour le programmeur, mais est certainement configurable

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top