天天看點

NoSQL資料庫:從故障中恢複資料的原理

當應用程式處理由NoSQL建立的大量非結構化資料時,保持運作的穩定性與有效性是十分重要的。使用者在決定持久棧(persistence stack)的主要架構時,了解每個資料庫之間的特點與細微差别也非常重要。

  接下來,筆者将展示NoSQL資料庫之間的一些比較,主要集中在Cassandra、HBase與MongoDB在處理故障時的差别。

  Cassandra

  Cassandra保證了“寫”操作的高效性,但是它從錯誤中恢複資料則需要相當長的時間。因為Cassandra會識别所有需要恢複的資料,然後恢複每個資料最新的版本。并且由于它會在資料恢複過程中響應添加結點的請求,是以很有可能傳回錯誤的結果。如果不能提高資料一緻性水準,那麼它将不能被用于需要“讀處理”(read processing)服務。

  HBase

  由于HBase的結構問題,可能有多種因素導緻它産生錯誤。但是與Cassandra必須從錯誤中恢複資料不同,HBase隻有在HDFS(Hadoop Distributed File System - Hadoop分布式檔案系統)中産生錯誤時才需要恢複,這會使HBase産生一個短暫的故障時間。在HDFS故障期間,HBase所産生的故障時間顯得并不長。

  MongoDB

  MongoDB則提供一種稱為“出錯時自動備份(failover)”的技術,并且也會産生一個短暫的故障時間。不過它的異步複制方法可能會導緻在自動備份後部分資料的丢失。

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/753991,如需轉載請自行聯系原作者