2006 年 10 月 23 日
本文為 db4o 之旅系列文章的第一篇,介紹了面向?qū)ο?a href="http://m.survivalescaperooms.com/sql.asp">數(shù)據(jù)庫 db4o 的基本特性,并且與傳統(tǒng)關(guān)系型數(shù)據(jù)庫以及 OR 映射技術(shù)做了比較分析,讀者可以體驗(yàn)到 db4o 的全新的面向?qū)ο蟠鎯Φ睦砟睿⑶医o出了性能測試數(shù)據(jù)。
前言
業(yè)界對持久存儲領(lǐng)域的追求從未停止過,為了更方便、更輕易地用對象表達(dá)我們的思維,開源領(lǐng)域和商業(yè)領(lǐng)域都涌現(xiàn)了許多新技術(shù), ORM 的出現(xiàn)恰恰說明了這點(diǎn)。最近一年,業(yè)界也在反思,到底 ORM 給我們帶來的是便利還是麻煩。矛頭指向大名鼎鼎的 Hibernate ,紛紛議論其性能問題,大家似乎要達(dá)成這樣的共識:“在業(yè)務(wù)邏輯復(fù)雜的地方用 SP ,而一般的 CRUD 還是 Hibernate ”,就連全球知名的 BearingPoint 也有類似看法。下面一個(gè)簡單的例子,說明了傳統(tǒng) ORM 工具的弊端。讓我們考慮一個(gè)簡單的 Student 對象如清單1:
public class Student { PRivate String name; private int age; public String getName(){ return name; } public int getAge(){ return age; } } 考慮下面這個(gè)場景:找到“年齡小于 20 歲的所有學(xué)生”?
使用 ORL 實(shí)現(xiàn)如清單2:
String oql = "select * from student in AllStudents where student.age <20"; OQLQuery query = new OQLQuery(oql); Object students = query.execute();
使用 JDOQL 實(shí)現(xiàn)如清單3:
Query query = persistenceManager.newQuery(Student.class, "age <20"); Collection students = (Collection)query.execute();
上面的方法都存在一些普遍問題:
既然存在如此多的問題, 為什么不直接使用純面向?qū)ο髷?shù)據(jù)庫呢?有些開發(fā)者可能會說:“它缺乏數(shù)學(xué)模型的支持, 還不夠成熟”。的確, RDBMS 發(fā)展了幾十年才有今天的成就,已經(jīng)非常完善了。而技術(shù)的革新是無止境的, 故步自封的永遠(yuǎn)都跟不上變化的腳步。
讓我們來簡單回顧一下對象數(shù)據(jù)庫的發(fā)展史(資料來源于 Wiki 百科全書):“面向?qū)ο髷?shù)據(jù)庫系統(tǒng)”這一術(shù)語第一次出現(xiàn)于 1985 年。聞名的研究項(xiàng)目包括:Encore-Ob/Server ( 布朗大學(xué)), EXODUS(Wisconsin 大學(xué)), IRIS (惠普), ODE ( Bell 實(shí)驗(yàn)室), ORION (MCC ) ,Vodak (GMD-ipSI)和 Zeitgeist (Texas Instruments)。其中以 ORION 項(xiàng)目發(fā)表的論文數(shù)為最多。 MCC 的 Won Kim 將這些論文中最有價(jià)值的一部分匯編成書并由 MIT 出版社出版。對象數(shù)據(jù)庫治理系統(tǒng)為面向?qū)ο缶幊陶Z言增加了持久的概念。最早的商品化 ODBMS 出現(xiàn)在 1986 年,是 Servio 公司(現(xiàn)在的 GemStone 公司)和 Ontos 公司推出的。后來(九十年代) Object Design ( ODI )、 Versant 、 Objectivity 、 O2 Technology 、 Poet 、 Ibex 、 UniSQL 和 ADB MATISSE 等公司也加入了這個(gè)開拓行列。
而今天,一家來自加州硅谷的開源面向?qū)ο髷?shù)據(jù)庫公司 db4objects 為我們帶來了db4o, 一款性能卓越的純面向?qū)ο髷?shù)據(jù)庫,也是我們這篇和后續(xù)文章將會介紹的主角。
db4o 為我們帶來的是這樣一種面向?qū)ο蟮牟樵兎绞?
|
新聞熱點(diǎn)
疑難解答
圖片精選