【问题标题】:How reliable is h2 database? [closed]h2数据库有多可靠? [关闭]
【发布时间】:2011-06-08 21:35:03
【问题描述】:

当我问这个问题时,我看到 H2 数据库的当前版本是在 2011 年 7 月 1 日(最近)发布的。这是非常好的和健康的。会保持这个速度吗?如果新版本发布速度较慢,是否会得到开源社区的长期支持?

出于成本原因,我目前正在考虑将 Postgresql 用于高性能应用程序,而 H2 数据库似乎具有正确的功能集(基本上是我需要的任何东西)。我不只是确定使用 H2 是否是一个正确的决定。基本上我的决定应该基于长期支持,无论是基于订阅还是社区。​​p>

【问题讨论】:

    标签: h2


    【解决方案1】:

    会保持这样的节奏吗?

    这就是计划。

    会得到开源社区的长期支持吗?

    很难预测未来,我想这就是为什么还没有人回答你的问题的原因 :-) 我相信它会得到支持,因为有足够多的人使用它。 H2 用于许多(开源和商业)产品。相当多的人定期回复邮件列表中的问题。 H2 目前的 committer 并不多,一个原因是用户普遍对它的特性感到满意,而且目前的开发速度足够快,代码质量也足够好。

    目前不提供基于订阅的支持,但计划在未来提供(一直计划在某个时候提供商业支持)。它尚未上市的原因是 H2 还没有足够的市场份额来创办公司。

    【讨论】:

      【解决方案2】:

      h2 数据库的可靠性如何? [关闭]

      在 2010 年,我们为大型 [r] 企业数据库分片从 H2 切换到 MySQL。最大的原因是内部 H2 引擎是单线程的。当大型的、未优化的查询在我们的具有数千或数百万行的数据库中运行时,所有其他数据库操作都会停止。有关更多信息,请参阅H2 documentation。与 MySQL 或 Postgres 相比,H2 的行锁定似乎相对不成熟。

      此外,MySQL 和 Postgres 还提供复制机制,而不是自己滚动。这也允许我们从从站“实时”备份我们的数据库系统,而不是在转储 H2 数据库时阻塞它。

      最后,虽然我没有运行这个性能测试,但我怀疑虽然 H2 对于中小型数据库来说速度很快,但随着数据库大小,尤其是并发查询数量的增加,MySQL 和 Postgres 将开始相等,然后达到最佳整体性能——尤其是在查询时间分布方面。

      我们继续将 H2 用于精品、内存和测试数据库,非常成功。非常感谢 Thomas!

      【讨论】:

      • 我同意。我不推荐将 H2 用于大型客户端-服务器应用程序。
      • @marcolopes 通过“大”假设至少 100 万行有 50 多个并发查询是否安全?
      • 嗯,是的。这么大。 H2 可能工作正常,但我怀疑并发查询需要更广泛的数据库引擎才能有效运行。
      【解决方案3】:

      H2 是一个了不起的数据库引擎。在我们解决了一个与 H2 无关的问题后,我们从 PostgreSQL 和 MySQL(仍然支持)切换到 H2。 H2 成为我们的主要数据库选择。

      速度是主要原因,但还有其他原因:嵌入式模式非常棒,让我们可以灵活地将软件安装到便携式设备中,甚至可以通过 Dropbox 共享云上的数据库!

      我们没有使用很多功能,因为我们通过“Datanucleus”“持久依赖”(没有触发器、程序等),但我们的应用程序足够复杂,可以推动 H2!而且它完美无缺。

      【讨论】:

      【解决方案4】:

      原因是 H2 仍然继续表现出色。截至 2019 年,H2 是一个极好的数据库。 4 年来,我们在所有独立应用程序中都使用它,我们看到它最大限度地减少了 SQLite 和 MySQL 之间的差距。它的执行速度与 MySQL 一样快或更快。

      H2 适合哪里?

      • 独立应用程序
      • Intranet/LAN 应用程序
      • 仅限 Java 部署
      • 嵌入式和服务器模式

      为什么它比 SQLite 更好?

      • 比 SQLite 更多的数据类型。
      • 布尔数据类型支持。这在 SQLite 中不可用。
      • 在特定情况下,当大约 15 列表(或多或少)的行数增加到 50,000 以上时,SQLite 性能下降。我们没有发现 H2 存在这个问题。它继续照常运行。
      • 即使它看起来像类似于 SQLite 的单个文件,H2 也是加密的。它是多用户、受密码保护的数据库。此功能在 SQLite 中不可用。
      • 将其与您的应用程序一起打包仅需约 2MB 空间。
      • 具有内置的数据库管理控制台,同样在 ~2MB 内。
      • H2 可用于 Android 应用程序开发。

      与 MySQL 比较:

      • 布尔数据类型支持。这在 MySQL 中不可用。
      • 目前我们看到,H2 的性能几乎与 MySQL 相当。有时甚至在执行更新查询时表现得更好。
      • 我们的客户很高兴看到性能如此之快的软件。
      • 在 MySQL 上使用它的原因是,目前它也可以在商业独立应用程序中免费使用。
      • Check 约束支持,直到最近才在 MySQL 中提供。

      与 PostgreSQL 比较:

      • 当工作/部署环境如本答案开头所指定时,它绝对比 PostgreSQL 快。
      • 使用 H2 的更新操作比 PostgreSQL 快得多
      • 如果有人试图将 H2 与 PostgreSQL 进行彻底比较,请不要这样做,而是将 PostgreSQL 与 Giant OracleDB 进行比较。 H2 无法与 / 无法与 PostgreSQL 特性进行比较。

      在提供技术支持的同时更容易处理。 它可以像拖放一样简单地共享。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        • 2010-10-24
        相关资源
        最近更新 更多