什麼時候需要在集群模式下執行像 OrientDB 這樣的圖形數據庫?
OrientDB 可以在分佈式環境中執行,支持 ACID 事務和點對點複製。
根據 M. Fowler 和 P. Sadalage 所著的“NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence”一書,圖數據庫在單伺服器配置中工作得最好(第 4.1 章)。
此語句的原因是什麼?何時應該為圖形數據庫使用集群版本?
你在這裡問兩個不同的問題:
$$ W $$我應該為圖形數據庫使用集群版本嗎?
這很簡單:只要 One Giant Server 無法滿足您的可擴展性或可用性要求。
$$ G $$raph 數據庫在單個伺服器配置中工作得最好$$ … $$這種說法的原因是什麼?
查看整本書的引文,您可以看到原因的提示(強調我的):
儘管很多 NoSQL 數據庫都是圍繞在集群上執行的理念設計的,但如果 NoSQL 儲存的數據模型更適合應用程序,那麼將 NoSQL 與單伺服器分佈模型一起使用是有意義的。圖形數據庫是這裡明顯的類別——它們在單伺服器配置中工作得最好。
正如您所指的書所解釋的,分佈式數據庫有兩種非互斥的方法:分片(分區)和複製。
當一個分片中的所有實體緊密耦合在一起,同時鬆散耦合或根本不耦合其他分片中的實體時,分片就可以很好地工作。圖模型很少出現這種情況,其中每個節點都可能連結到所有其他節點1。
當您的數據更新範圍很小(例如,每個工作單元的實體實例數量很少)時,複製效果很好。同樣,在圖模型中,一個節點的更改可能會影響整個圖或其中的大部分,這在符合 ACID 的數據庫中導致事務量幾乎呈指數增長,因為您必須至少更新大部分事務之前的副本可以被認為是持久的。
點對點(即雙向複製)使事情變得更加複雜,您必須在此基礎上處理衝突解決。
因此,從可伸縮性的角度來看,分發一個圖數據庫(其中一個真正的圖模型是合理的)並沒有提供太多好處。對圖形數據庫進行分區也不會提高可用性。
1 - 如果不是,那麼您需要多個圖形數據庫,甚至是一個關係數據庫。