方正智睿NoSQL數據庫總體介紹

方正智睿NoSQL數據庫總體介紹

方正智睿NoSQL數據庫管理系統是一個面向海量NoSQL數據存儲和管理的數據庫服務器軟件,它可以高效地存儲和管理XML數據,key-value數據,並且讓用戶通過標準的查詢語言和高效易用的編程接口來訪問這些NoSQL數據。

主要功能

海量XML數據的高效存儲和訪問

與開源的XML數據庫不同,智睿數據庫可以單機管理TB級別的XML數據以及支持對此規模的XML數據的查詢和更新。XML文檔在數據庫系統中不是簡單地作爲一個整體存放,而是被拆分爲節點來存儲,以便達到高效的存儲,查詢和更新效率;在查詢執行時,排序,去重,連接,集合操作等查詢處理步驟都會自適應地根據它所操作的數據量的規模在內存或者外存中執行,兼顧運行效率和系統資源限制。


實現了標準的XQUERY1.0和XPATH2.0, XQuery Update和XQuery Fulltext 語言作爲查詢語言,根據文檔的存儲方案實現高效的查詢和更新。利用各種索引實現查詢的高效執行。在完全支持標準查詢一樣的基礎之上,根據性能和功能需求擴展查詢語言。

完整的數據庫系統通用功能

除了最基本的XML和key-value數據的增刪改查,以及容納這些數據的容器和數據表及其索引的創建,刪除,截斷,dump/load等功能外,智睿NoSQL數據庫也支持完整的數據庫管理功能,例如backup(full, incremental)/restore,批量數據操作,表空間管理,數據庫管理,大對象存儲和訪問,參數配置,完整的數據安全與訪問控制功能,以及文檔數據庫特有的邏輯數據模型的維護和管理。還支持豐富的編程接口(C++, Java, C#, shell腳本),圖形化的查詢客戶端和管理客戶端,DBA可以通過web界面方便地管理智睿數據庫服務器的運行實例。支持32位和64位的Windows和linux系列操作系統平臺,以及支持任意文字編碼的XML文檔文本和查詢文本,支持基於gnu gettext的國際化。未來還會支持跨體系結構(big/little endian)的混合部署和體系結構無關的數據格式。

遵循國際標準

遵循W3C制定的XML標準家族的所有相關標準。具體包括XML1.0/XML1.1,XML Namespace,DTD/XML Schema,XQuery1.0/XPath2.0,XQuery Update和XQuery Fulltext,以及其他XML附屬協議例如XLink/XPointer/XInclude等。查詢語言使用 XPath/XQuery, XQueryUpdate; 連接協議使用XQC/XQJ,並且支持當今國際上主流XML數據庫的功能集合。

支持Key-Value數據管理

智睿NoSQL數據庫使用一個key-value存儲引擎來管理所有的NoSQL數據。這個存儲引擎實現了非常簡單靈活通用的key-value的數據模型,支持細粒度(行級)的併發控制,完整的事務ACID屬性實現。我們把存儲引擎的key-value數據管理功能開放給用戶,這樣用戶可以將任意格式和內容的數據存儲在本系統中。 Key-value數據沒有任何標準規定的格式和數據模型,其格式內容和意義完全由用戶處理,非常靈活。但用戶只能通過API來訪問這些key-value數據,不能通過任何查詢語言來訪問。目前的大數據時代有很多這樣的數據庫,比如hbase,bigtable,redis,Berkeley db等。智睿數據庫的key-value存儲引擎與這幾個數據庫相比,有很多特色,後面的文章中會介紹到。

數據庫集羣

支持基於事務日誌複製的主-從數據庫集羣,主節點完成數據更新和查詢,主機節點數據更新的事務日誌被實時複製到備機並且由備機重做日誌以便更新備機數據,而備機節點只可以處理只讀的用戶數據查詢請求。將查詢負載分散到多個備機節點,就可以讓主機處理數據更新負載,這樣不僅可以提升系統全局的吞吐率,提高可擴展性,還可以提高可靠性。

當主機節點停止運行時(斷電,軟硬件故障,網絡故障,維護等),所有備機可以自動完成主節點選舉,系統整體不會終止服務。

系統功能擴展與增強

爲了方便用戶使用或者提升系統性能的目標實現了很多有特色的功能。具體包括方便用戶對文檔進行分類管理的邏輯數據模型;供xquery fulltext全文檢索使用的可自定義語料庫,包括中文分詞詞庫,停用詞表,thesaurus詞表等;以及XML文檔版本管理,外部執行SQL查詢,查詢profiling/explaining,支持事務aci屬性的xquery查詢結果集緩存等

系統總體架構

智睿NoSQL數據庫系統主要由存儲引擎,查詢引擎,服務器框架三大子系統構成。下圖是智睿NoSQL系統的架構圖:

存儲引擎以統一的key-value數據模型提供對數據的插入,掃描(scan),更新和刪除操作,並且實現數據庫事務管理和事務ACID屬性和基於日誌複製的replication及其主節點選舉,還提供了供上層模塊使用的通用功能,比如多層次的內存管理,sequence,排序,臨時表,mutex/spinlock等基礎設施;由於存儲引擎的通用性,事實上可以根據需要實現更多的數據模型及其查詢引擎,例如可以實現json,rdf graph等數據模型及其查詢引擎。


XML查詢引擎實現 XQuery/XPath/XQueryUpdate/XQuery Fulltext 這幾種查詢語言,包括對這些查詢語言的解析,優化和執行,以及xml數據與存儲引擎的key-value數據的雙向轉換。同時實現了基於XQuery數據模型的節點存儲和訪問機制,將xml數據按照節點來存儲爲二進制格式,Xdm定義的7種節點中,存儲元素節點和文檔節點,每個節點對應於一個數據行。其他5種節點存儲在它們的父節點(必然是元素節點或者文檔節點)中。 這樣智睿XML數據庫就是一個native XML數據庫。將XML數據拆分爲節點存儲可以大大提高查詢和更新的執行效率,因爲這樣避免了反覆的XML文檔解析,可以迅速得到目標節點,特別是在XML文檔很大的時候性能優勢很明顯。


訪問控制和元數據管理模塊使用存儲引擎管理它們的元數據,將內部定義格式的數據存儲在元數據表中。訪問控制模塊處理用戶的訪問控制配置命令,以及所有來自所有數據訪問模塊的訪問控制檢查。元數據管理模塊實現一個邏輯數據模型,方便用戶使用類似文件系統目錄樹的方式組織文檔和文檔集合(目錄)。


服務器框架負責把存儲引擎和查詢引擎包裝成爲一個應用程序(服務器進程)來運行,實現客戶端連接API和網絡通信協議,接收用戶來自網絡的請求,調度工作線程處理用戶請求(通常是調用查詢引擎或存儲引擎),返回結果給用戶,並完成統一的異常和錯誤處理。

在後面的文章中,我會依次講述存儲引擎,查詢引擎和服務器框架的詳細功能和設計。


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