12
votes

Y a-t-il une bonne base de données en mémoire qui agirait comme DB2

J'utilise actuellement DB2 pour faire des tests unitaires, mais il est parfois assez lent. J'aurais besoin d'une bonne base de données en mémoire qui inclurait toutes les caractéristiques de DB2. Ce type de base de données en mémoire existe-t-il ou n'autorise-ils que la fonctionnalité SQL standard?

merci.

Modifier La base de données DB2 est sur un serveur distant. J'ai donc besoin d'une solution pour reproduire le schéma de cette base de données sur une base de données dans la mémoire locale pour accélérer les tests.


3 commentaires

Chaque base de données est différente. Aucune base de données - autre que DB2 - toutes les fonctionnalités DB2 seront toutes. Vous ne pouvez pas avoir "toute la fonctionnalité de DB2" sans utiliser dB2. Quelles sont vos fonctionnalités exactes avez-vous besoin?


Il existe de nombreuses applications qui l'utilisent et documentent toute la requête SQL au sein de cette application serait presque impossible.


Si vous ne savez pas quelles fonctionnalités dont vous avez besoin, vous ne pouvez pas le remplacer, pouvez-vous? Si vous ne connaissez pas toutes les fonctionnalités, aucune base de données ne peut jamais être utilisée sauf db2.


7 Réponses :


1
votes

Pourquoi ne pas utiliser TMPFS (UNIX) ou toute solution RAMDRIVE conventionnelle pour Windows? Ou, vous pouvez obtenir un SSD rapide.


1 commentaires

La base de données est sur un serveur distant. Donc, à moins d'installer un serveur DB2 sur mon poste de travail, cela ne peut pas être une option.



0
votes

N'ayant aucune idée de la fonctionnalité DB2, mais SQLite peut créer Database en mémoire . Vous voudrez peut-être y jeter un coup d'œil.


0 commentaires

12
votes

J'aurais besoin d'une bonne base de données en mémoire qui inclurait toutes les caractéristiques de DB2.

Derby (ex Cloudscape) est la compatibilité de la langue de DB2. Et il a un mode mémoire.

Peut-être aussi consultez H2 (avec le DB2 Mode de compatibilité ) . Mais même si H2 serait plus rapide, je considérerais Derby dans votre cas.


1 commentaires

Derby ne prend jamais en charge l'instruction de procédure stockée, donc elle n'est pas compatible avec DB2.



0
votes

Si vous faites suffisamment de bufferpool, votre base de données DB2 sera également en mémoire.


0 commentaires

1
votes

Comme mentionné par Pascal, Derby est presque idomptiquement syntaxiquement à DB2. Après avoir essayé pour la même chose, nous avons eu un problème avec Derby ne supporte pas de séquences, mais les protocoles de connexion sont identiques. Par exemple, vous pouvez utiliser le pilote JDBC DB2 pour vous connecter à une base de données Derby.

Si votre application résume votre connexion de base de données avec Say Hibernate, ou NHibernate (si .NET) à l'aide de H2 ou HSQLDB pourrait également fonctionner pour des tests d'unités en supposant que vous ne reposez pas sur des procédures stockées et similaires.

Un autre outil qui aide à sortir avec la migration de schéma qui cible plusieurs DBS est http://liquibase.org . Pour une version de test, vous permettez de construire votre DB en mémoire et pour un déploiement, vous établissez la base de votre base de données DB2 ou générez le script de migration. Il construira la base de données avec le schéma correct et propose des migrations conditionnelles (par exemple, une subvention n'est pas disponible dans HSQL, vous devez donc exécuter le jeu de modifications pour Just DB2).


0 commentaires

4
votes

Je pense que l'option la plus facile serait --- DB2.

Téléchargez l'édition Freebie Express et installez-la sur votre PC. La vitesse de la ralentissement de la vitesse est presque certainement réduite pour réseauter des goulots d'étranglement et des limitations à l'aide du client DB2, l'installation de l'installation locale les éliminerait.

La prochaine meilleure chose serait Javadb (utilisé comme Derby!). Qui est similaire mais pas tout à fait identique à DB2.

L'utilisation de toute autre base de données vous videra dans un bourrage de fonctionnalités non supportées, incompatible SQL, des noms différents pour la même fonction, différentes fonctions avec le même nom de la fonction etc.


0 commentaires

0
votes

Deux bases de données possibles en mémoire sont: - Timedesten de Oracle. - SolidDB d'IBM. Celui-ci pourrait renvoyer la transaction à DB2, mais les requêtes auront une performance très élevée

Pour plus d'informations sur SolidDB http://www-01.ibm.com / Logiciel / Données / SolidDB /


0 commentaires