NoSQL分佈式數據庫的獨家看法- Adam Fowler

原創翻譯,原文做者:Adam Fowler,
轉載自:https://adamfowler.org/2017/0...git

我查看了ArangoDB混合文檔和圖形存儲的最新測試版。
ArangoDB是一個混合或多模型的NoSQL文檔和圖形存儲。這爲項目開發提供了很大的靈活性和力量。自從他們開始以來,我一直在關注ArangoDB (find ArangoDB on Github),現在已有3年多,因此如今咱們來一塊兒看看有什麼有趣的更新:github

有什麼更新?

最大的變化是使用Facebook的RocksDB鍵值存儲做爲存儲引擎(我將在之後的文章中分別回顧RocksDB)。這是一個巨大的變化,須要在應用程序中進行負載測試,由於一致性和鎖定功能與之前的mmfiles方法不一樣。
此外,MongoDB客戶在將WiredTiger引入存儲引擎時發現,人們將始終想要測試和從新測試新的存儲層,以尋找意外的迴歸和性能問題。
可是這確實是一個積極的更新,容許文檔級鎖定,並能夠防止寫入阻塞讀取,反之亦然。這將大大提升在高寫入和讀取負載下的性能。算法

Pregel圖形處理模型的支持將是開發人員的福音。想像這樣一個有效的Map / Reduce版本,用於跨整個羣集數據傳播的圖形算法。有趣的是,您能夠選擇單節點或集羣執行。某些圖形算法須要在單個機器上運行全部數據,因此使圖形愛好者擁有自由選擇的快樂!sql

企業版也受益於LDAP安全支持,閒時加密。這是許多敏感型企業客戶,如銀行和政府的福音。數據庫

Satellite Collections(僅限企業版)是一個很好的新功能,您能夠指導引擎使用副本進行處理,從而無需網絡跳轉來在另外一個節點上查找密鑰收集數據。這可能聽起來不怎麼樣,可是我能夠經過在NoSQL數據庫上運行分佈式處理算法來告訴你,這將有助於在很大程度上調整大型文檔處理算法。安全

我喜歡ArangoDB 什麼?

分佈式圖形存儲中的一個大問題是在羣集中的多個服務器上圖形算法的高效處理。爲了使用商業服務器而不是昂貴的大功率服務器,您須要將數據傳播出去。固然,對於遵循節點之間的路徑的圖算法,當您遍歷該圖時,會引入滯後。服務器

我很高興看到ArangoDB在這個關鍵問題上花了大量的時間。若是他們能夠在這個版本中用Pregel解決這個問題,那麼他們將會超越其餘幾個競爭對手。網絡

例如,最近添加的SmartGraphs功能(僅限企業版)。這基於已知屬性管理圖上的節點的分片。考慮一個社交圖 - 大多數人在同一個國家有鏈接(除非你是我,而且寫IT!) - 因此根據用戶的國家劃分一個圖表是很好的,經過應用此屬性,能夠最大限度地減小大多數查詢的網絡跳數。nosql

結合上面提到的SatelliteCollections(僅限企業版),您能夠調整數據存儲,以確保快速圖形查詢,即便圖形被分片 - 使用個人國際,噴氣式設置,twitter鏈接來處理像我這樣的棘手狀況。在與ArangoDB交談後,他們認爲這些功能的組合對於特定的IoT用例將很是有用。若是您發現該組合有用,請爲此文章添加評論 - 我很樂意聽到不一樣的聲音!分佈式

當我第一次寫關於ArangoDB在NoSQL 2016的狀態,我評估它還不徹底符合ACID。這是因爲滯後的最終一致的副本。因爲其餘主服務器上的碎片被標記爲「追隨者」,所以已經解決了這一點。對主要和主要追隨者的更新是同步的,容許數據的高可用性,同時確保符合ACID

這是數據場景關鍵任務的重中之重,當數據庫告訴您保存數據時,您須要確保數據安全地位於光盤上。我只能再次強調,我認爲符合ACID對於具備關鍵任務應用程序需求的企業客戶相當重要。

我也喜歡ArangoDB的免費版本使用真正的開源許可證 - Apache 2.0**許可證。與其餘供應商使用的AGPL v3不一樣,該許可證並不限制想要使用該軟件的組織,也能夠將其定製爲生產商業應用程序。

我認爲這可能源於我我的對多模型文檔和圖形庫的熱愛,ArangoDB的工程團隊真的作的很好。並且跟我交談的每一個人彷佛都很友善。即便是他們的President也親自花了時間幫我收集關於這篇文章的信息!

ArangoDB的工程團隊也及時考慮到客戶的問題和用途,並根據此添加產品新功能,新功能都是參考現實用例而來。

作的很差的方面?

ArangoDB做爲鍵值存儲用例與 Redis 相比彷佛還受侷限。

話雖如此,但這是一個很小的困擾,大多數人會使用ArangoDB的文檔和圖形庫功能以及AQL查詢語言,由於它們爲大多數用例提供了豐富的功能。

使用場景有哪些?

牛津大學彷佛使用ArangoDB來減小醫院出勤和醫療費用,並提升測試結果。其開發了一項手機應用程序,經過在ArangoDB 中存儲數據的Node.js應用程序,使用手指式血壓計將患者的信息發回NHS信託。這固然意味着你能夠有效地跟蹤病人,並智慧地決定什麼時候要求他們進入醫院,減小NHS的負擔。這是一個很好的小例子,但很容易複製到其餘問題領域。

更多場景用例

Adam Fowler NoSQL Review 我的博客

相關文章
相關標籤/搜索