現在、DB2 を使用して単体テストを行っていますが、非常に遅い場合があります。DB2 のすべての機能を備えた優れたメモリー内データベースが必要です。このタイプのインメモリ データベースは存在しますか、それとも標準 SQL 機能のみを許可しますか?
ありがとうございました。
EDIT DB2データベースはリモートサーバー上にあるため、テストを高速化するには、そのデータベースのスキーマをローカルのメモリ内データベースに複製するソリューションが必要です。
現在、DB2 を使用して単体テストを行っていますが、非常に遅い場合があります。DB2 のすべての機能を備えた優れたメモリー内データベースが必要です。このタイプのインメモリ データベースは存在しますか、それとも標準 SQL 機能のみを許可しますか?
ありがとうございました。
EDIT DB2データベースはリモートサーバー上にあるため、テストを高速化するには、そのデータベースのスキーマをローカルのメモリ内データベースに複製するソリューションが必要です。
DB2のすべての機能を含む優れたインメモリデータベースが必要です。
Derby(Cloudscapeなど)はDB2の言語と互換性があります。そして、それはメモリモードにあります。
たぶん、H2(DB2互換モードを使用)も見てください。しかし、H2の方が速いとしても、あなたの場合はダービーを検討します。
最も簡単なオプションは---DB2だと思います。
景品エクスプレス版をダウンロードして、PCにインストールします。速度が遅いのは、ほぼ確実にネットワークのボトルネックとDB2クライアントを使用した制限によるものです。ローカルにインストールすると、これらが解消されます。
次善の策はJavaDB(以前はDerbyとして知られていました!)です。これはDB2と似ていますが、完全に同一ではありません。
他のデータベースを使用すると、サポートされていない機能、互換性のないSQL、同じ関数の異なる名前、同じ関数名の異なる関数などの泥沼に陥ります。
tmpfs (Unix) や、Windows 用の従来の ramdrive ソリューションを使用しないのはなぜですか? または、高速な SSD を入手できます。
Pascal が述べたように、Derby は構文的に DB2 とほぼ同じです。しばらく前に同じことを試してみたところ、Derby がシーケンスをサポートしていないという問題がありましたが、接続プロトコルは同じです。たとえば、DB2 JDBC ドライバーを使用して Derby データベースに接続できます。
アプリケーションが Hibernate や NHibernate (.Net の場合) などでデータベース接続を抽象化する場合、H2 または HSQLDB を使用すると、ストアド プロシージャなどに依存していないと仮定して単体テストにも使用できます。
複数の DB を対象とするスキーマの移行を支援する別のツールはhttp://liquibase.orgです。テスト ビルドではインメモリ DB をビルドし、デプロイでは DB2 データベースをビルドするか、移行スクリプトを生成します。正しいスキーマを使用してデータベースを構築し、条件付きの移行を提供します (たとえば、HSQL ではグラントを使用できないため、DB2 のみに対して変更セットを実行します)。
2つの可能なインメモリデータベースは次のとおりです。--OracleのtimesTen。-IBMのSolidDB。これはトランザクションをDB2に送り返すことができますが、クエリのパフォーマンスは非常に高くなります。
soliddbの詳細については、http: //www-01.ibm.com/software/data/soliddb/を参照してください。
DB2の機能はわかりませんが、sqliteはインメモリデータベースを作成できます。あなたはそれを見てみたいと思うかもしれません。
バッファプールを十分に大きくすると、DB2 データベースもインメモリになります。