我最近正在考虑制作一个使用 h2 数据库作为其主数据库的应用程序(因为它带有 JBoss),但我有点担心。我在几个地方(主要是讨论板)读到不应在生产中使用 h2。有没有具体的原因?
3 回答
不使用 H2(或 HSQLDB,或 Derby)进行生产的主要原因是:
严重错误的概率:与“大型”数据库 Oracle、IBM DB 2、MS SQL Server、MySQL、PostgreSQL 相比,Java 数据库相对较新,因此可能不太稳定(有错误)。请注意,这适用于所有较新的产品,包括 NoSQL 数据库和“大型”数据库的新版本。通常,产品测试的次数越多,出现错误的可能性就越小。当然,这取决于您的用例是否有必要为这个优势支付(可能是很多钱)。在任何情况下,您都需要备份数据,例如在硬件故障的情况下。
缺少功能和优化:“大”数据库具有更多针对特殊用例的功能和优化。是否需要这些功能取决于您。
商业支持:更容易获得对更大数据库的支持。请注意,商业支持也可用于 H2。HSQLDB 也提供商业支持。IBM 曾经为 Apache Derby(嗯,IBM Cloudscape)提供支持,但我相信他们停止了。
以我个人的经验,H2 版本 1.2.147 似乎非常可靠,在大约 60 次安装中 100% 成功,但我的客户只有相对较小的数据库(400 MB 是更大的大小)而且我的程序只使用一个连接(大声笑),只有最近我开始使用多个连接但使用multi_threaded
错误。我对一些以前的版本有损坏,我害怕尝试更新的版本。
对我来说,没有理由不在生产中使用 H2DB 进行中型项目。我们为大约 15 个使用 H2DB 的客户部署了一个生产系统,我们经历了非常简单的安装和备份,而且数据库方面的问题为零。