原生圖數據庫的15條規則
譯文【51CTO.com快譯】就像復雜的系統網格或空中交通管制圖,圖形數據庫用節點和連接組成的網絡(名為標記屬性圖)來表示。節點顯示為圓形或正方形,代表人員、產品、公司或訂單等實體。
在Neo4j中,數據庫節點之間的連接名為關系,那些關系與它們連接的節點一樣重要。
每個關系都是定向的,知道開始節點和結束節點,而每個節點知道與之存在入站或出站關系的所有其他節點——這種優勢名為免索引鄰接。
原生圖形存儲和處理
但是屬性圖模型不僅僅是圖形,它實際上描述了你如何訪問和查詢數據庫中的信息。
為了最大限度地提高效率和性能,圖形數據庫平臺必須存儲和訪問出現在數據庫屬性圖中的數據。采用這種方法的數據庫平臺名為原生圖形數據庫。
非原生圖形數據庫付出的代價
對于連接、復雜或不斷變化的數據集而言,非原生圖形數據庫方法因性能、完整性、易用性和可擴展性方面的風險而存在固有的缺陷。
關系數據庫附加在額外的處理層上,這些處理層將圖形查詢轉換為底層數據庫技術使用的基于關系表的存儲和處理模型。結果是性能和應用程序響應速度大大降低,常常導致圖形應用完全無法使用。
大多數NoSQL數據庫技術添加了類似的轉換層,創建圖形應用軟件時效率低下,再次導致性能下降,甚至可能導致圖形查詢結果損壞或失敗。
原生圖形數據庫的15條規則
圖形數據庫管理系統必須完全通過原生數據存儲和圖形處理方法來建模、管理和訪問數據及其關系。想成為原生圖形DBMS,一項技術必須符合這些基本規則。
關系數據庫和NoSQL數據庫因在非圖形數據上添加圖形功能而違反規則,飽受性能、延遲、一致性和數據損壞等問題的困擾。
1. 原生存儲和建模。以關系圖的形式存儲和建模數據,而不是采用行和列、索引記錄或任何其他結構的形式。
2. 原生圖形管理。完全通過原生圖形功能,而不是通過位于非圖形存儲或處理基礎上的圖形邏輯層來管理數據和關系。
3. 一等公民的關系。將圖形數據元素之間的關系視為一等公民的數據庫元素,附帶圖形數據庫引擎使用的方向和量化屬性。
4. 實時可用性。實時查詢數據,不管其底層關系的數量或復雜性如何。
5. 免索引鄰接。將每個數據元素直接鏈接到入站和出站關系,因而每秒可以遍歷數百萬條記錄。
6. 全面的數據管理。全面處理數據和底層關系的檢索、插入、修改和刪除。
7. 離散管理。添加和修改數據和關系,不必更改現有的數據庫模式、數據或關系。
8. Cypher支持。全面支持Cypher,這是行業領導者積極接受的一種開放標準查詢語言。
9. 非顛覆。禁止繞過openCypher或破壞圖形數據庫實施的完整性規則和約束來企圖訪問或修改數據。
10. ACID事務。確保所有事務均為ACID,即遵循原子性、一致性、隔離性和耐久性的規則,以保證圖形和數據的一致性。
11. 一致的讀取。確保讀取和重新讀取數據的用戶始終看到相同的數據,除非其他用戶執行干預更新。
12. 一致的寫入。確保寫入和更新數據的用戶始終看到最新數據,除非其他用戶執行干預更新。
13. 完整性獨立性。將數據完整性的約束存儲在圖形數據目錄中,而不是存儲在應用程序中。
14. 數據獨立性。底層圖形數據存儲表示或訪問方法變化時,應用程序在邏輯上不受影響。
15. 無縫表示。以統一的方式存儲和顯示數據關系圖,為用戶提供數據庫整個圖形模型的無縫視圖,不管數據存儲在何處。
關系數據庫技術死了嗎?
這一切是否意味著關系數據庫技術的時代即將結束?當然不是。
關系方法適用于擁有靜態模式的表格數據,但不適用于高度關聯或變化的數據集的需求。如果是通過圖形數據遍歷多個級別的查詢(比如“朋友的朋友的朋友”查詢),由此生成的大量表索引查找會使關系數據庫性能降低到不可接受的程度。
形成鮮明對比的是,圖形數據庫使用免索引鄰接,以亞秒級的響應時間遍歷數百萬條數據記錄,即使那些查詢挖掘的數據其深度有好幾層。
原文標題:15 Rules of a Native Graph Database,作者:Jocelyn Hoppa
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】