HyperSQL 2.0于本月7日發(fā)布了。此次發(fā)布距HSQLDB 1.8的發(fā)布已有5年光陰了。HSQLDB 1.8已與很多工具、框架和應(yīng)用實(shí)現(xiàn)了集成,包括使用廣泛的OpenOffice 3.2產(chǎn)品套件,它為用戶提供了一個(gè)嵌入式數(shù)據(jù)庫,這樣除了Microsoft Access之外,用戶又多了一個(gè)選擇。HyperSQL是用純Java編寫的,基于BSD許可。
相對(duì)于其他開源數(shù)據(jù)庫引擎來說,新版本的HyperSQL引入了更多的特性。它首度加入了新的SQL功能、增強(qiáng)的可伸縮性、查詢優(yōu)化以及其他一些新特性。
HyperSQL的核心完全是多線程的,支持雙向鎖和MVCC(多版本并發(fā)控制),這兩個(gè)手段都是為了解決對(duì)數(shù)據(jù)庫資源的并發(fā)訪問問題。其他數(shù)據(jù)庫如PostgreSQL也使用了MVCC。除了已經(jīng)支持的事務(wù)控制模式SERIALIZABLE和READ COMMITTED以外,HyperSQL 2.0還增加了對(duì)REPEATABLE READ和READ COMMITTED隔離級(jí)別的支持。
主要的組件(包括SQL探測(cè)器和解析器)都已經(jīng)重寫了,幾乎完整支持ANSI-92 SQL和SQL:2003以及眾多的SQL:2008特性(包括很多可選的擴(kuò)展),現(xiàn)在已經(jīng)支持很多新的表達(dá)式和結(jié)構(gòu),如BETWEEN字句、OVERLAPS謂詞、多列IN表達(dá)式、MERGE語句和MATCHES謂詞。此外,HyperSQL 2.0在SQL和Java語句中都支持完整的觸發(fā)器定義語法以及只讀和可更新視圖。HyperSQL 2.0還增加了對(duì)SEQUENCE類型的支持以緩解唯一數(shù)生成器的負(fù)擔(dān)。新的版本支持各種數(shù)據(jù)類型,包括BIT類型、CLOB、BLOB和SQL標(biāo)準(zhǔn)的INTERVAL類型,此外還增強(qiáng)了TIME支持,包含了帶小數(shù)點(diǎn)的秒,同時(shí)也支持時(shí)區(qū)。HyperSQL 2.0增加了Array類型,并且可以通過該類型組合大多數(shù)其他的類型。此外,引擎還在JOIN字句、WHERE字句、IN查詢和聚合函數(shù)如MIN、MAX和ORDER BY表達(dá)式中利用了索引。新版本支持存儲(chǔ)過程和函數(shù)。存儲(chǔ)過程語言還支持過程式接口,如WHILE循環(huán)、IF、CASE WHEN和異常處理語句以及聚合函數(shù)。這些函數(shù)可以在SQL和Java中定義。如果使用Java、那么還可以利用多態(tài)。
HyperSQL 2.0的一些小變化簡(jiǎn)化了管理和使用。新版本為常用類型增加了存儲(chǔ)大。ㄗ畲鬄256GB),還增加了對(duì)BLOB和CLOB數(shù)據(jù)的支持,最高支持達(dá)64T的數(shù)據(jù)量。它更新了一個(gè)兼容于JDBC 4.0的驅(qū)動(dòng)并增加了對(duì)Java 1.6的支持。值得關(guān)注的是,HyperSQL 2.0現(xiàn)在支持Statement和PreparedStatement接口的getGeneratedKeys()方法,這樣就能更加輕松地使用ORM工具了。
總之,HyperSQL 2.0包含了大量的特性。實(shí)踐證明,該項(xiàng)目非常適合于測(cè)試環(huán)境,同時(shí)也是一個(gè)不錯(cuò)的嵌入式數(shù)據(jù)庫。HyperSQL似乎占據(jù)了大多數(shù)份額,但也面臨著很多挑戰(zhàn),如由HyperSQL之前的創(chuàng)建者Thomas Mueller所開發(fā)的H2、Apache Derby(以前是IBM CloudScape),后者被引入到JDK 6當(dāng)中,作為JavaDB。