Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我疯了吗?将已建立的产品从HSQLDB切换到Apache Derby_Java_Derby_Hsqldb_Embedded Database - Fatal编程技术网

Java 我疯了吗?将已建立的产品从HSQLDB切换到Apache Derby

Java 我疯了吗?将已建立的产品从HSQLDB切换到Apache Derby,java,derby,hsqldb,embedded-database,Java,Derby,Hsqldb,Embedded Database,我有一个成熟的软件产品,它使用HSQLDB作为其内部设置数据库。客户项目存储在此数据库中。多年来,HSQLDB为我们提供了相当好的服务,但它存在一些稳定性/腐败问题,我们不得不对这些问题进行编码,即使这样,我们似乎也无法完全保护自己不受这些问题的影响 我正在考虑更改内部数据库。从开发的角度来看,这样做会相当痛苦,但向客户解释损坏的数据库(和丢失的数据)并不有趣 所以我的问题是:有没有人有足够的经验来衡量ApacheDerby的长期稳定性?我在谷歌上找到一篇帖子,抱怨德比不稳定,但那是从2006年

我有一个成熟的软件产品,它使用HSQLDB作为其内部设置数据库。客户项目存储在此数据库中。多年来,HSQLDB为我们提供了相当好的服务,但它存在一些稳定性/腐败问题,我们不得不对这些问题进行编码,即使这样,我们似乎也无法完全保护自己不受这些问题的影响

我正在考虑更改内部数据库。从开发的角度来看,这样做会相当痛苦,但向客户解释损坏的数据库(和丢失的数据)并不有趣

所以我的问题是:有没有人有足够的经验来衡量ApacheDerby的长期稳定性?我在谷歌上找到一篇帖子,抱怨德比不稳定,但那是从2006年开始的,所以我认为德比在过去4年里有所改进。或者,我是否可以使用另一个纯Java嵌入式(进程内)数据库(商业或开源)。表演对我来说不是很重要。稳定是王道。必须具备跨断电的数据完整性、良好的BLOB支持和热备份

请不要建议使用非基于SQL的关系数据库。我正在尝试改进现有的产品,而不是从头开始,谢谢。

试着研究一下。它是由最初创建HSQLDB的人创建的,但他从头开始构建,因此不使用任何HSQLDB代码。不确定它的稳定性与HSQL相比如何,因为我很久没有使用过HSQL了,而且我目前只对短期数据库使用H2。我个人觉得H2比德比更容易上手,但可能是因为H2有一个备忘页

可能需要重新编写代码,使用抽象层,然后运行测试,将H2和Derby与您发现的问题进行比较


在项目管理方面,您的路线图是否有一个主要版本?这可能是一个相当合适的时间,以这种方式挖出内脏,我不会说你疯了,因为它可能会删除许多难以管理的工作。如果您想在没有大量警告和备份的情况下进行可能影响实时系统的更改,那么您可能会疯掉。

我将Derby 24/7作为支持构建自动化和测试管理系统的内部数据库运行了4年。它被一个全球团队使用,从未崩溃、丢失数据或损坏我的记录。我们停止使用它的唯一原因是因为我们的公司被另一家公司收购了,并且下达了更高级别的决定。德比是可靠的,值得你考虑

有没有人有足够的经验来衡量ApacheDerby的长期稳定性?(……)

Derby,前身为IBM Cloudscape(现在也由Sun以JavaDB的形式发布)是一个符合ACID的数据库,它可以容纳大量并发用户,以嵌入式或服务器模式运行,并且众所周知,它是健壮的、可用于生产的。它的速度不如HSQLDB(Derby使用持久操作),但它很健壮。不过,您应该针对它运行自己的测试

另见

此搜索在HSQLDB用户邮件列表中显示215篇帖子,其中包含字符串“corrupt”。

此搜索显示Derby用户邮件列表中包含相同字符串的264篇文章。

这篇文章显示了Derby开发人员邮件列表中1003篇文章,其中包含相同的字符串

查看一些帖子可以看出,尽管数据库开发人员尽了最大的努力,数据库损坏的可能或真实案例还是发生了

HSQLDB也有自己的数据库损坏问题,但多年来有所改善。在最新版本中,引入了预防措施和修复程序,以防止过去几年中报告的所有问题

然而,新的lob存储功能出现了一个逻辑错误,导致lob在更新后被“遗忘”。目前正在修复此问题,并通过更广泛的测试来支持此修复

像CarlG这样的用户多年来在Derby和HSQLDB的bug修复工作中帮助了很多


Fred Toussi,HSQLDB项目

对于每个数据库引擎,都存在一定的损坏风险。我是H2数据库的主要作者,我还收到了关于数据库损坏的报告。测试可以减少出现错误的可能性,但不幸的是,几乎不可能保证某些软件是“无错误的”

至于三个Java数据库HSQLDB、ApacheDerby和H2,我真的说不出哪一个最稳定。我只能说H2。我认为对于大多数操作,H2现在是稳定的。有许多测试用例专门测试数据库是否损坏。这包括自动测试电源损耗(使用圣诞灯定时器)。通过断电测试,我发现稳定性也取决于文件系统:有时我收到“CRC错误”消息,这意味着操作系统无法读取文件(它是Windows)。在这种情况下,你无能为力


对于任务关键型数据,在任何情况下,我都不会依赖软件的稳定性。定期创建备份并对其进行测试非常重要。有些数据库有多种创建备份的方法。例如,H2有一个在线备份功能和一个编写SQL脚本文件的功能。另一种方法是使用复制或集群。H2支持一种简单的集群模式,我相信Derby支持复制。

如果您正在寻找自包含的东西(不涉及服务器),请尝试使用SQLite。这就是支持android db api的东西,而且非常稳定。

关于HSQLDB,有一件事是SQLite没有的,作为一个项目,它没有一个健壮的测试套件的文档和一个勤奋的ACID合规性在线文档

我并不想从HSQLDB中拿走任何东西。它的目的是作为MySQL的替代品,而不是像SQLite那样作为fopen()的替代品。可以说HSQLDB(所有真正的Java RDBMS)的范围更加模糊。弗雷