HyperSQL 2.0 于本月 7 日发布了。此次发布距 HSQLDB 1.8 的发布已有 5 年光阴了。HSQLDB 1.8 已与很多工具、框架和应用实现了集成,包括使用广泛的 OpenOffice 3.2 产品套件,它为用户提供了一个嵌入式数据库,这样除了Microsoft Access 之外,用户又多了一个选择。HyperSQL 是用纯Java 编写的,基于BSD 许可。
相对于其他开源数据库引擎来说,新版本的HyperSQL 引入了更多的特性。它首度加入了新的SQL 功能、增强的可伸缩性、查询优化以及其他一些新特性。
HyperSQL 的核心完全是多线程的,支持双向锁和 MVCC(多版本并发控制),这两个手段都是为了解决对数据库资源的并发访问问题。其他数据库如 PostgreSQL 也使用了 MVCC。除了已经支持的事务控制模式 SERIALIZABLE 和 READ COMMITTED 以外,HyperSQL 2.0 还增加了对 REPEATABLE READ 和 READ COMMITTED 隔离级别的支持。
主要的组件(包括 SQL 探测器和解析器)都已经重写了,几乎完整支持 ANSI-92 SQL 和 SQL:2003 以及众多的 SQL:2008 特性(包括很多可选的扩展),现在已经支持很多新的表达式和结构,如 BETWEEN 字句、OVERLAPS 谓词、多列 IN 表达式、MERGE 语句和 MATCHES 谓词。此外,HyperSQL 2.0 在 SQL 和 Java 语句中都支持完整的触发器定义语法以及只读和可更新视图。HyperSQL 2.0 还增加了对 SEQUENCE 类型的支持以缓解唯一数生成器的负担。新的版本支持各种数据类型,包括 BIT 类型、CLOB、BLOB 和 SQL 标准的 INTERVAL 类型,此外还增强了 TIME 支持,包含了带小数点的秒,同时也支持时区。HyperSQL 2.0 增加了 Array 类型,并且可以通过该类型组合大多数其他的类型。此外,引擎还在 JOIN 字句、WHERE 字句、IN 查询和聚合函数如 MIN、MAX 和 ORDER BY 表达式中利用了索引。新版本支持存储过程和函数。存储过程语言还支持过程式接口,如 WHILE 循环、IF、CASE WHEN 和异常处理语句以及聚合函数。这些函数可以在 SQL 和 Java 中定义。如果使用 Java、那么还可以利用多态。
HyperSQL 2.0 的一些小变化简化了管理和使用。新版本为常用类型增加了存储大小(最大为 256GB),还增加了对 BLOB 和 CLOB 数据的支持,最高支持达 64T 的数据量。它更新了一个兼容于 JDBC 4.0 的驱动并增加了对 Java 1.6 的支持。值得关注的是,HyperSQL 2.0 现在支持 Statement 和 PreparedStatement 接口的 getGeneratedKeys() 方法,这样就能更加轻松地使用 ORM 工具了。
总之,HyperSQL 2.0 包含了大量的特性。实践证明,该项目非常适合于测试环境,同时也是一个不错的嵌入式数据库。HyperSQL 似乎占据了大多数份额,但也面临着很多挑战,如由 HyperSQL 之前的创建者 Thomas Mueller 所开发的 H2 、 Apache Derby (以前是 IBM CloudScape),后者被引入到 JDK 6 当中,作为 JavaDB 。
感兴趣的读者可以浏览 HyperSQL 站点以了解更多信息。
评论