关于 HSQLDB,它作为 SQLite 项目所没有的一件事是强大的测试套件的文档和严格的 ACID 合规性的在线文档。
我并不是要从 HSQLDB 中拿走任何东西。它的目的是作为 MySQL 的替代品,而不是 SQLite 的 fopen() 的替代品。可以说 HSQLDB(实际上是所有 Java RDBMS)的范围更加雄心勃勃。Fredt 和他的团队在 HSQLDB 方面取得了非凡的成就。即便如此,在 Google 搜索“Is HSQLDB ACID compliant”并不会让早期采用者在阅读 SQLite 网站上的测试工具后感到自信。
在http://sqlite.org/transactional.html
“SQLite 是事务性的
事务数据库是一种所有更改和查询似乎都是原子的、一致的、隔离的和持久的 (ACID) 的数据库。SQLite 实现了原子的、一致的、隔离的和持久的可序列化事务,即使事务因程序崩溃、操作系统崩溃或计算机电源故障而中断。
我们在这里重述和放大上一句以强调:SQLite 中单个事务中的所有更改要么完全发生,要么根本不发生,即使将更改写入磁盘的行为被中断
上一段的声明在 SQLite 回归测试套件中得到了广泛的检查,使用一个特殊的测试工具来模拟操作系统崩溃和电源故障对数据库文件的影响。”
在http://sqlite.org/testing.html
《1.0简介》
SQLite 的可靠性和健壮性部分是通过彻底和仔细的测试来实现的。
从 3.7.14 版开始,SQLite 库由大约 81.3 KSLOC 的 C 代码组成。(KSLOC 的意思是数千个“源代码行”,或者换句话说,不包括空白行和注释的代码行。)相比之下,该项目的测试代码和测试脚本是 91421.1 KSLOC 的 1124 倍。
1.1 执行摘要
三个独立开发的测试工具 部署配置中的 100% 分支测试覆盖率 数以百万计的测试用例 内存不足测试 I/O 错误测试 崩溃和断电测试 模糊测试 边界值测试 禁用优化测试 回归测试 畸形数据库测试广泛使用 assert() 和运行时检查 Valgrind 分析有符号整数溢出检查"