圖形數據庫(GraphDB)


Date: 2016-01-27
Title: 圖形數據庫-1
Published: true
Type: post
Excerpt:
Category: GraphDB

圖形數據庫(GraphDB)


如果您對此文章感興趣,歡迎發郵件至
## 何謂圖形數據庫
在我們生存的實際世界當中,到處都存在着"關系"。世界當中沒有獨立存在的事物,在我們身邊充斥着大量的,相互交織的各種關系。
如果需要處理這些相互交織的關系數據,憑借關系型數據庫是無法完成的。此時,就需要一種以關系為核心,並且可以高效存儲,高效處理的數據庫。
相對於圖形數據庫而言,關系型數據庫雖然也可以計算這些"關系"數據,但計算的代價卻是異常昂貴。得益於圖形數據庫天生以"關系"為核心,因此其在檢索關系數據時非常高效,目前可以支持每顆CPU每秒處理百萬次關系檢索,效率比RDBMS高出好幾個數量級。
那圖形數據庫會替代RDBMS嗎?首先來說,兩者適用場景不同。圖形數據庫更加側重於處理海量數據下的,高度鏈接的關系拓撲關系和復雜的查詢需求,而這些恰恰不是RDBMS的強項。
![image](https://lh3.googleusercontent.com/s8jMKkYD6xAtGxvN57IAm2yQl-DXX7U_-7iZ3WC20UQXRQFAblm_hDZsRuuxkRmqYdis4ywTXSM--zBITBTbxatf3xpXaPAC_vs_pvkQIxybJpccpXuoTihLd8qNDNNNcV8hXYvUjWYPsJB5F1c12O2h-AEKpybswKAfAj7BDZwmquwq-Sqkrjb_YbvCLyv4LHa2l1olv4gnpDShws3TjNSQFbZPG_trsRxz25d0z47Mk6PRuI-C8O0M6T9sr7G6wgJ0qyFiU9D6RSIlEjPMUi_gtX4UWA7_EjEP0C5dHtjDGP_FsgVuylG83a5ISDWCuGOktxRaaC1XaJQus6ySdCxjXZAcQt1IbaCLTYju5EN5r6tUZR4pNL7KikOWlk8p1kYF9AbnZdQKdfIHMsPam3_eLPo9V5UA15I-rvEDFqEl66vAyusoRknl7qGjOA3wrw1Oro9Lv1aq9acsWaIVAo0p_JHSKAO8-8ui6FDplAu_MjssTlxqRn10HWwFOEpr9S5OdvFfH3i_7JhMH6PO-zNjuaipr0lYBOcCobHCkUeLhs6i8x2Sci8a7gh4sHVApRk=w283-h323-no)

圖形數據庫使用的數據模型


如果讀者接觸過對象模型或者實體圖,那么想必對下面的模型必然不陌生。在圖形數據庫模型中,一個實體稱之為一個節點(node),每個node都有非常多的屬性,這些屬性通過key-value來表示。相同的node在不同的場景當中可以擁有不同的標簽信息(lable)。而這些Lable信息,除了可以用來標記node之外,也可以用來附加一些metadata(例如索引信息或者約束信息等).
![image](https://lh3.googleusercontent.com/YOI-JTUEhROm2H5tnjbuvd_eGuYcnNn1byjlsfu4UpkQZP1TJAkEZbUA_vgDEW_XiapmWFJe1IgLMiCLGit1W2EEJo_CoANCybOK78qGoI7zsT9QNKDtiOMLD1-VEp2irRJxsVGnvt6cGKG0uCc2rpK6njgJxeYUSoG5rLt2NWo1giNp4yXFPMR6FN8L9f2-63cx4WfbyQ7JkxX5Gb8YNMD0jXGKTe0FJtQsvwqlqcQKJ2xOYmZ7HfY-6DAZ8Q3O3aEneIbStOEK_-tB0Bjr86n3gfhGbiign49icpIuBRKC3GH6hrl4BJwjKfrSvfsS5dIA1RjbxJF19sf6c3j6h3zV62ragk_-Q21BSMjfeCA-NcHqaT-IBWNx_OfUAbd_Md2LcxI3wRTuEv9zFck_Ie4xZUqyx0-VUaUC8HGjzG8v1oG7ZR2ufz982s9S4GcDffVmMyvRaRSB2H0MemWrd55DzjZ-wQNJUaiT2hdHOtPzXCMh_LgWGBruVgAJXbFic0fIRA-QC-kqg1IhtNwKJeoduEEE-thnlFKi_oi0AymGiqVp-op6EDl9HKhIFiizjQk=w730-h475-no)
而在兩個節點之間,有向並且語義清楚的連接就稱之為關系。
通常來說,一個關系包括方向,類型,起點node和結束node四個要素。而對於node來說,一個關系則可以同時擁有多個屬性。例如權重,代價,距離,級別,新鮮度或者優勢度等等。因為在圖形數據庫當中,維護一條關系是一個代價非常小的事情,所以兩個節點之間可以在不帶來額外性能損失的情況下,擁有無限條的關系或者屬性。
但有一點需要注意,盡管關系是有向的,但關系本身卻不關心方向。只有node才會關心方向。
雖然關系很便宜,但在圖形數據庫當中卻有一條鐵的紀律:"不允許存在死鏈"。因為每條關系都必須存在起始node和結束node,所以用戶無法在刪除所有關系之前刪除掉與之相關聯的node。用戶可以認為,一條存在的關系必然會連接兩個存在的node。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM