为啥不应该在 Liferay 的生产环境中使用 HSQLDB?

Posted

技术标签:

【中文标题】为啥不应该在 Liferay 的生产环境中使用 HSQLDB?【英文标题】:Why shouldn't HSQLDB be used in production for Liferay?为什么不应该在 Liferay 的生产环境中使用 HSQLDB? 【发布时间】:2011-05-05 09:54:54 【问题描述】:

我已将 liferay 安装为一个可供 200 人使用的小型 Intranet 门户。 这个想法是让每个人都可以存储数据并参与论坛。

在 Liferay 安装指南中,我读到 HSQLDB 不应该在生产中使用。

我想知道它是否适用于我的案例(流量小),如果我仍然使用它会遇到什么问题。

【问题讨论】:

只是想告诉你:到目前为止仍在 HSQLDB 上运行,没有出现任何问题。 【参考方案1】:

因为 HSQLDB 非常灵活,它可以用于速度非常快但对数据持久性不太有利的配置。一些供应商以这种方式配置 HSQLDB,用于演示目的。

一般来说,如果您使用 HSQLDB 1.8.1.3 或 2.1.x 版本(取决于 Liferay 使用哪个主要版本),并将其作为服务器(而不是进程内)运行,它应该可以正常工作你的目的。

通过修改应用程序中的 HSQLDB 连接 URL 可以非常简单地更改配置。

您可以添加数据库备份过程以获得最大的可靠性。

根据存储的数据量,您可能希望切换到比基于内存的表消耗更少内存的基于磁盘的表。这可以在现有的数据库服务器上完成。

【讨论】:

【参考方案2】:

这不是一个权威的答案,因为我不知道 Liferay 做出决定的原因。但我可以告诉你,HSQLDB 过去(在 2.0 版之前)存在相当严重的数据损坏问题,这对生产系统来说是致命的。根据 HSQLDB 的创建者的说法,这些问题现在应该得到解决。也许 Liferay 的文档还没有更新?

【讨论】:

公平地说:这些损坏主要是由于用户没有正确阅读手册造成的。如果发动机正常关闭,几乎没有任何问题。 这可能是真的,但我不记得上次我不得不担心正确关闭 Oracle 数据库以防止数据损坏是什么时候。我只是在猜测,但这可能是 Liferay 建议不要使用 HSQLDB 的一个很好的理由,因为他们对此类支持案例不感兴趣...... 在最新版本中,进程异常终止或崩溃只会导致最后半秒(如果关闭写入延迟则为零)的数据丢失量。几年前情况并非总是如此。

以上是关于为啥不应该在 Liferay 的生产环境中使用 HSQLDB?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不应该在生产服务器上的 mysql 查询中使用 Select *?

Rails 生产环境中的 config.assets.compile=true,为啥不呢?

使用 FreeMarker 在 Liferay 主题中显示图像

为啥java项目的正式环境叫"生产环境"?

将 Liferay 数据库迁移到 HSQL

生产环境为啥尽量不用join