有好長一段時間沒有寫博客了,最近這段時間覺得自己的Java基礎不是很紮實,所以又重新撿起《Think in Java》這本來看了。Java高級特性更是接觸得少,如網絡編程,多線程編程等,所以最近就想開始學習這些內容,已經看了一段時間,以前就有看一些好的開源軟件源代碼的想法,也陸陸續續看了一些,但都沒堅持下來,這次要下定決心好好看一個軟件的源代碼,數據庫的一些高級特性和優化方面也涉及的很少,最近也想好好學習學習,所以由於以上一些想法就產生了研究一個java編寫的數據庫的想法。
Java編寫的數據庫有不少,有Deby,H2sdb和H2等等數據庫,選擇一個合適的數據庫深入研究一下非常有必要,它必須具備以下特性。
1.不能太龐大,必須小巧精悍,易於閱讀代碼。
2.使用Java代碼編寫,而且代碼質量高,具有較高的可借鑑性。
3.具有比較完備的數據庫特性,如支client/server連接,能夠支持標準的SQL語句,支持存儲過程等。
4.具有良好的性能。
根據這些特點最終選擇了H2,其實任何一個能夠被大量應用和廣泛使用的軟件都應該非常不錯,Deby,H2sdb也是非常不錯的數據庫,但是任何東西都是隻有最適合的,沒有最好的,H2可以用於學習、小型應用中,但是企業級的實際生成中我暫時是不敢使用H2的,可是隨着以後的發展誰也不好說,而且最近springside 3.2.1也將它演示和測試用的數據庫改成了H2,看來H2已經得到了很多開源人示的支持。
如下是它官網上的性能比較,通過這些比較你就能看出它與其它的數據庫相比,可以得出結論:它是在開源數據庫中一個支持的特性最多,體積最小而且是純Java編寫數據庫,這正是我所需要的。It's a best choice for me!
|
H2 |
||||
Pure Java(純JAVA編寫) |
Yes |
Yes |
Yes |
No |
No |
Memory Mode(內存模式) |
Yes |
Yes |
Yes |
No |
No |
Transaction Isolation(事隔離) |
Yes |
Yes |
No |
Yes |
Yes |
Cost Based Optimizer(基於成本優化器) |
Yes |
Yes |
No |
Yes |
Yes |
Encrypted Database(加密數據庫) |
Yes |
Yes |
No |
No |
No |
ODBC Driver |
Yes |
No |
No |
Yes |
Yes |
Fulltext Search(全文檢索) |
Yes |
No |
No |
Yes |
Yes |
Multi Version Concurrency(多版本併發控制) |
Yes |
No |
No |
No |
Yes |
Footprint (jar/dll size)(體積) |
~1 MB |
~2 MB |
~600 KB |
~4 MB |
~6 MB |