【走進Affinity之一】VMware開源數據庫Affinity介紹


Affinity是VMware公司在今年2月28日發佈的一種新型的開源數據庫系統,其設計思想借鑑了關係型數據庫、面向對象數據庫、文檔型數據庫、RDF/XML數據庫等多種數據庫系統的優點,具有靈活多樣、方便易用、接口豐富等優點。從今天起,我會陸續在博客上發表一些文章,分享關於Affinity數據庫的一些知識,比如特性、查詢以及使用方法等。今天的這篇文章,主要介紹Affinity數據庫的團隊、歷史以及特性。

VMware作爲全球領先的虛擬化技術公司,一直非常重視和支持開源社區的發展,比如最近很火的開源PaaS平臺Cloud Foundry,使得用戶不需要考慮基礎架構,就能快速有效地在雲平臺部署和擴展應用程序。在Cloud Foundry平臺上集成Affinity數據庫之後,用戶除了能在Cloud Foundry平臺上使用常見的諸如 Spring、 Java、 Ruby 和 Node.js等開源框架和編程語言,以及數據庫服務(MySQL、MongoDB和 Redis) 和消息服務器 RabbitMQ之外,也可以選擇Affinity作爲雲應用的數據庫系統,而Affinity數據庫的特點爲雲平臺應用提供了更快捷、更靈活、更有效的支持。

Affinity數據庫系統內核的作者是Mark Venguerov博士。Mark Venguerov博士1986年畢業於莫斯科大學並獲得理論物理碩士學位,2002年在都柏林三一學院獲得計算機科學博士學位(人工智能和模式識別方向)。他在大規模計算機軟件系統設計和實現上有着二十多年的理論和實踐經驗,目前居住在加拿大蒙特利爾。除了Mark Venguerov博士之外,Affinity數據庫項目組還包括來自加拿大、美國、馬耳他、中國的幾名同事。

儘管Affinity數據庫系統剛剛發佈,事實上,這個項目的前身——PiStore系統,早在2004年就已經在PI Corporation公司(一個存儲公司後來被EMC公司收購)開始開發,並且有着廣泛的應用,比如曾經作爲Mozy公司在線備份服務系統的後端存儲軟件系統。話說2004年還是關係型數據庫獨領風騷的時代,那時的PiStore數據庫就已經有了現在很多NoSQL數據庫的特點,比如靈活的數據模型,不需要嚴格的數據模式(Schema),支持集合(Collection)和引用(Reference)等複雜數據類型。PiStore項目於2010年正式由EMC公司交接到VMware公司,經過兩年多的持續開發和測試,終於在近期正式向開源社區發佈(Apache License 2),並且有了一個響亮的新名字——Affinity。

Affinity數據庫系統的主要特點是(參考Affinity官網文檔):

1.    跨平臺C++內核,不依賴於任何虛擬機,內核footprint只有大約1M字節

2.    pathSQL查詢語言,支持protocol-buffer協議

3.    路徑表達式(path expressions)以及圖查詢

4.    能夠混合使用SQL和圖查詢

5.    ACID事務(支持跨多個對象的JOIN操作)

6.    對只讀事務的snapshot隔離級別

7.    嵌套事務

8.    日誌和恢復

9.    存儲結構化數據以及半結構化、動態對象(在Affinity中,把一條記錄或者一個數據對象稱作PIN)

10.  用URI爲properties(PIN的屬性)和class(分類)進行全局命名轉換

11.  全局唯一的對象ID,和隨機訪問物理地址(一個PIN的ID,稱作PID)

12.  自描述(self-describing)的對象(對象可以把自己表示爲數據字典)

13.  優化的B-link 樹索引

14.  事務地、自動地、動態地對數據對象進行多種分類,並存儲於索引中

15.  複合索引

16.  異步查詢處理選項,用於高性能併發服務器

17.  事務的全文索引

18.  在結構化查詢同時使用全文搜索

19.  頁面級別的AES加密算法和日誌加密

20.  可擴展的多用戶支持(比如可以由一個進程管理上千個不同的數據庫實例instance)

21.  對象粒度的訪問控制列表(Access Control List)

22.  豐富的數據類型,包括集合、引用和BLOB

23.  計算時支持不同測量單位的轉換(比如攝氏度與華氏度,或者米與公里)

24.  數據對象的軟刪除(soft deletion)

25.  對大結果集進行外部排序

26.  基本的replication框架

通過以上列出的特性可以得出,Affinity數據庫在秉承傳統數據庫的事務、日誌、B-link樹索引、外部排序、數據頁加密等優點的同時,又擁有支持靈活的數據模型、模式自由(schema-free)、自動分類、Path Expression和圖查詢等其他豐富的特點,爲當前各種複雜的應用程序提供了極大的支持。對於那些不熟悉非關係型數據庫、傳統的SQL開發者,也可以通過PathSQL寫出類似SQL的查詢。適合(並不僅限於)需求多變導致的數據模式(Schema)經常隨之變化、以及有靈活的數據模型並且需要進行復雜查詢的應用。

在介紹完Affinity數據庫系統的團隊、歷史和特性之後,相信讀者對Affinity數據庫有了一定的瞭解,並想趕緊嘗試一下,請參見Affinty的官方網站獲得更詳細的文檔。您可以先閱讀這篇文檔,通過運行一個腳本,在本機上自動下載、編譯、安裝Affinity數據庫。

在下一篇文章,我想講一下Affinity的數據模型,其中包括PIN、Property、Value、Collection、Class等主要概念,敬請關注 。

如果您有建議和想法,歡迎聯繫本文作者linw at vmware.com 或者 在新浪微博與我交流 @傍槐閒士,當然最好的方式是在Affinity官方論壇上發佈,會得到更專業的反饋。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章