我最近正在考虑开发一个使用H2数据库作为其主数据库的应用程序(因为它附带了JBoss),但我有点担心这一点.我在一些地方(主要是讨论板)看到,在生产中不应该使用H2.有没有具体的原因呢?

推荐答案

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

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

  • 缺少功能和优化:"大"数据库有更多针对特殊用例的功能和优化.您是否需要这些功能由您决定.

  • 商业支持:更容易获得对更 Big Data 库的支持.也请注明commercial support is available for H2美元.HSQLDB还Provider 业支持.IBM曾经提供对Apache Derby(嗯,IBM Cloudscape)的支持,但我相信它们已经停止了.

Database相关问答推荐

如何使一个IP允许在运行GitHub操作到RDS数据库时,您不允许从外部访问数据库?

如何在 N1QL 查询(Couchbase 查询)中使用 LENGTH() 字符串函数

动态数据模型

您是否遇到过 SQL Server 因为引用了太多表而无法执行的查询?

创建一个spell check,判断具有合理运行时间的数据库

什么是非规范化 mysql 数据库的好方法?

主必须包括表的分区位置错误中的所有列?

一个 5MB 的 SQL 数据库可以存储多少数据?

如何在 MongoDB 和 PostgreSQL for GIS 之间进行 Select ?

Select 最佳主键 + 编号系统

您如何在数据库中构造配置数据?

为什么会一直出现Table is marked for deletion的消息?

在 iphone 上本地存储数据

从旧数据 struct 到新数据 struct 的数据迁移

执行语句还是运行脚本?

添加具有初始(但不是默认)值的新列的最佳方法?

不带 WHERE 子句的 UPDATE 查询

如何修复 Postgres 上过时的 postmaster.pid 文件?

如何在我的数据库中避免 NULL,同时还表示丢失的数据?

为什么 Rails 迁移在应用程序中定义外键而不在数据库中定义外键?