12

我目前正在使用 DB2 进行单元测试,但有时速度很慢。我需要一个好的内存数据库,它包含 DB2 的所有特性。这种类型的内存数据库是否存在,或者它们只允许标准 SQL 功能?

谢谢你。

编辑 DB2 数据库位于远程服务器上,因此我需要一种解决方案来将该数据库的模式复制到本地内存数据库中以加快测试速度。

4

7 回答 7

12

我需要一个好的内存数据库,它包含 DB2 的所有特性。

Derby(前 Cloudscape)与 DB2 的语言兼容。它有一个内存模式。

也许还可以看看 H2(使用 DB2兼容模式)。但即使 H2 会更快,我也会在你的情况下考虑 Derby。

于 2010-09-21T13:10:31.240 回答
3

我认为最简单的选择是 --- DB2。

下载免费赠品快递版并将其安装在您的 PC 上。速度慢几乎可以肯定是由于使用 DB2 客户端的网络瓶颈和限制,在本地安装可以消除这些。

下一个最好的东西是 JavaDB(以前称为 Derby!)。这与 DB2 相似但不完全相同。

使用任何其他数据库将使您陷入不支持的功能、不兼容的 SQL、同一函数的不同名称、具有相同函数名称的不同函数等的泥潭。

于 2010-09-23T06:25:26.807 回答
1

为什么不使用 tmpfs (Unix) 或任何传统的 Windows ramdrive 解决方案?或者,您可以获得快速 SSD。

于 2010-09-21T13:01:24.507 回答
1

正如 Pascal 所提到的,Derby 在语法上几乎与 DB2 相同。不久前尝试过同样的事情后,我们遇到了 Derby 不支持序列的问题,但连接协议是相同的。例如,您可以使用 DB2 JDBC 驱动程序连接到 Derby 数据库。

如果您的应用程序使用 Hibernate 抽象您的数据库连接,或者使用 H2 或 HSQLDB 的 NHibernate(如果 .Net)也可以用于单元测试,假设您不依赖存储过程等。

另一个有助于针对多个 DB 进行模式迁移的工具是http://liquibase.org。对于测试构建,您让它构建您的内存数据库,而对于部署,您让它构建您的 DB2 数据库或生成迁移脚本。它将使用正确的模式构建数据库并提供条件迁移(例如,授权在 HSQL 中不可用,因此您只为 DB2 运行更改集)。

于 2010-09-22T23:37:07.223 回答
0

不知道 DB2 有什么特性,但是 sqlite 可以创建内存数据库。你可能想看看它。

于 2010-09-21T13:03:30.740 回答
0

如果您的缓冲池足够大,那么您的 DB2 数据库也将在内存中。

于 2010-09-21T16:06:39.573 回答
0

两种可能的内存数据库是: - 来自 Oracle 的 timesTen。- IBM 的 SolidDB。这可以将事务发送回 DB2,但查询将具有非常高的性能

有关soliddb 的更多信息http://www-01.ibm.com/software/data/soliddb/

于 2010-09-23T15:23:18.963 回答