【问题标题】:Are there any reasons why h2 database shouldn't be used in production?有什么理由不应该在生产中使用 h2 数据库?
【发布时间】:2012-08-17 08:09:21
【问题描述】:

我最近正在考虑制作一个使用 h2 数据库作为其主数据库的应用程序(因为它带有 JBoss),但我有点担心。我在一些地方(主要是讨论板)读到不应在生产中使用 h2。有没有具体的原因?

【问题讨论】:

  • 感谢您指导我。如果还有什么要补充的,我也很乐意阅读,因为这些答案已有 18 个月的历史。
  • 链接问题的第二个答案提供了文档的直接链接;该链接应提供有关多线程问题是否已更改的答案。如果不是,那是不在生产中使用它的主要原因,IMO。

标签: database jboss h2


【解决方案1】:

不使用 H2(或 HSQLDB,或 Derby)进行生产的主要原因是:

  • 严重错误的概率:与“大型”数据库 Oracle、IBM DB 2、MS SQL Server、MySQL、PostgreSQL 相比,Java 数据库相对较新,因此可能不太稳定(有错误)。请注意,这适用于所有较新的产品,包括 NoSQL 数据库和“大型”数据库的新版本。一般来说,产品测试的次数越多,出现错误的可能性就越小。当然,这取决于您的用例是否有必要为这个优势付出(可能是很多钱)。在任何情况下,您都需要备份数据,以防硬件故障。

  • 缺少功能和优化:“大”数据库针对特殊用例有更多功能和优化。是否需要这些功能取决于您。

  • 商业支持:更容易获得对更大数据库的支持。请注意commercial support is available for H2。 HSQLDB 也提供商业支持。 IBM 曾经为 Apache Derby(嗯,IBM Cloudscape)提供支持,但我相信他们停止了。

【讨论】:

  • 2年后你的职位有变化吗?
  • 不,我认为情况还是一样。
  • 这取决于用例。如果您想使用 H2 作为 Oracle 数据库的替代品(例如),情况并没有太大变化。但是如果你想在嵌入式模式下使用它,或者你只是想使用 MVStore,那么使用 H2 可能是有意义的。
  • 让我继承传统。 5 年后,您是否仍然认为服务器模式的 H2 不能推荐用于中型项目(总共多达 10 亿条记录)?
  • 当然,H2(以及 HSQLDB 和 Derby)在过去 5 年中确实有所改进并变得更加稳定,并且对于更多用例来说“足够好”。但是,其他数据库仍然更稳定/具有更多功能。
【解决方案2】:

根据我的个人经验,H2 版本 1.2.147 似乎非常可靠,在大约 60 次安装中 100% 成功,但我的客户只有相对较小的数据库(400 MB 是更大的大小),我的程序只使用一个连接(哈哈),直到最近我才开始使用多个连接但multi_threaded false。我以前的一些版本有损坏,我不敢尝试新版本。

【讨论】:

  • 当你说你只使用一个连接时——你的意思是只有一个用户访问数据库还是相当于将它部署在 JBoss 上并由 JBoss 管理它?
【解决方案3】:

对我来说,没有理由不在中型项目的生产中使用 H2DB。我们为大约 15 个使用 H2DB 的客户部署了一个生产系统,我们经历了非常简单的安装和备份,而且数据库方面的问题为零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2012-11-30
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    相关资源
    最近更新 更多