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站点以了解更多信息。 |