39

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

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

4

4 回答 4

37

会保持这个速度吗?

这就是计划。

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

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

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

于 2011-01-18T07:30:35.267 回答
36

h2数据库有多可靠?[关闭]

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

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

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

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

于 2011-03-17T18:36:24.937 回答
25

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

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

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

于 2011-02-28T23:11:42.663 回答
8

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

H2在哪里合适?

  • 独立应用程序
  • 内联网/局域网应用
  • 仅限 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 特性进行比较。

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

于 2019-02-14T19:36:15.613 回答