7

我期待實現能夠在地理上廣泛分佈數據庫,並使得每個節點都可以讀取到所有其他節點最終一致性/寫。我應該在哪裏看?尋找所有節點都可讀/寫的分佈式/可伸縮數據庫解決方案嗎?不是MongoDB?

我以爲MongoDB似乎是一個很好的選擇,其他原因,直到我來到這個問題。顯然,所有的MongoDB節點都是可讀的,但只有一個主節點是可寫的?無論如何要解決這個問題嗎?我不能允許單點故障寫入數據庫。

回答

9

我剛剛完成了幾個類似數據庫的審查。我以不同的理由結束了Mongo。 Riak和Cassandra都是亞馬遜Dynamo的實現,它們都可以做得很好。在Riak site,他們有很好的比較Riak和其他一些數據庫。對於您的具體問題,我認爲Riak和Cassandra都可以在任何節點上處理寫入Riak提交的矢量時鐘以及Cassandra處理衝突的時間戳。

除此之外,你有一些其他的選擇,可能使意義:

  • HBase可以做的非常大,可以做各種節點併發寫入。它的設計對每個文件/記錄上的許多屬性都很有用。
  • CouchDB具有良好的多寫衝突的支持,但有一個簡單的文檔空間。
  • 我讀的方案較少的MySQL here一個很好的理由,點頭至仍需綠色Drizzle

我不知道這是一個完整的答案。我的搜索花費了幾周的時間和大約50頁的筆記,但是如果大型,分佈式和安全的寫作是最重要的標準,那麼這會讓你感動。

+0

我會和Riak一起去的。儘管Mongo確實能夠像@Sridhar所說的那樣分發讀寫操作,但Riak在操作上更容易設置 – 2011-03-25 18:48:48

+0

我剛剛看到[this](http://blog.rapleaf.com/dev/2011/03/15/announcing-hank-a-fast-open-source-batch-updatable-distributed-key-value-store)在我的收件箱中。 Rapleaf人開放了他們的鑰匙價值商店Hank。 – 2011-03-25 20:36:46

1

如果您關心的是單點故障: MongoDB使用複製數據庫來分配讀取和分片來分配寫入。爲了實現你正在尋找的東西,你可以將每個分片作爲一個副本集來分割你的系統。如果你的主分片死亡,那麼新的主分區會自動選出來,因此不是單點故障。 注:MongoDB的不支持多主複製

1

我的couchdb

對不起球迷,我得到了切斷之前,我可以在此展開。

1)首先,沙發很容易在地理上分佈 - 你可以通過http與它交流,這對分佈式項目來說非常有用。

2)沙發已複製內置的。

更重要的是,你可能會發現,bigcouch是更適合,因爲它是專門用在頭腦集羣設計。

我花了幾個星期評估Mongo/Cassandra/Couch等人,並決定平衡起來,對於廣泛的應用,Couch非常適合。我想你也應該看看Amazon Simple DB。說到分佈式最終一致的數據庫,它當然符合法案。我已經在一些項目上使用了它幾年,它在錫上表達了它的意思。我唯一擔心的是你基本上把所有的數據都放到了第三方的黑匣子中......但它確實有效,可以縮放和打勾你的所有盒子。

希望有助於豐富一些東西。

+0

爲什麼?它解決了我的擔憂嗎?如果是這樣,怎麼樣? – JnBrymn 2011-03-25 19:46:34

+0

看來這不是對這個問題的回答。 – 2011-03-26 01:55:04

+0

延長我的迴應,爲其原始簡潔道歉。 – Roger 2011-03-26 19:28:37

1

取決於您想如何分配您的寫入。

分片:如果你正在尋找分配寫入密鑰,MongoDB具有很好的自動分片功能。爲了實現冗餘,您可以創建多個副本(主從)對,然後通過中央服務(mongos)爲每個副本分配一個關鍵範圍。讀數將通過關鍵範圍靜態分佈。

多主:

  1. 如果你的系統是足夠小(GB,TB沒有),CouchDB中有更復雜的合併複製方案之一,是專爲快速,可靠的恢復節點故障事件。通過CouchDB,每個節點都有一份完整的數據副本,集羣中的所有節點都可以寫入和讀取。

  2. 如果您每小時拉動數百萬行,則Cassandra使用基於對等方的複製方案,如果您願意稍微瞭解讀取性能,則可以將寫入擴展到CouchDB之外。

  3. HBase還可擴展寫入和讀取,但更適合面向批處理的寫入功能(加載日誌文件),因爲它位於HDFS上,並且寫入需要接近最小塊大小(64MB,128MB ...)寫入之前可以提交到磁盤。

希望這會有所幫助。

1

您可以使用一個產品像CloudTran處理遇到像MySQL和甲骨文,SQL Server等

0

這是NuoDB的設計目標之一,產品今天確實這個共同的數據庫非常快的分佈式事務。

您可以讀取(QUERY),寫入(INSERT,UPDATE,DELETE)或跨多個數據中心事務性地執行其他任何事情,就好像數據庫位於單個位置一樣。 NuoDB是真正一致的,而不是最終一致的。它使用樂觀的異步消息傳遞和分佈式版本控制來保證ACID事務。而且NuoDB對標準SQL有着豐富的支持。

相關問題