NoSQL數據庫大比拼 --更新中...

Redis

與CouchDB和MongoDB同樣,Redis用於存儲文檔和由鍵值對組織的文件。與其餘的NoSQL數據庫不一樣的是,其存儲的不只僅是字符串或是數字,其中還包括分類和未分類的字符串集合做爲與鍵關聯的值。這一特色使其能夠爲用戶提供更爲複雜的集合操做。用戶再也不須要下載數據計算交集,由於Redis可以在服務器上作這一工做。

Redis催生了一些沒有過多編碼的簡單結構。Luke Melia經過建立一個全新集合追蹤其網站上的訪問者。最後五個集合的並集可肯定那些當時在線的訪問者。這一帶有好友列表的並集的交集能夠生成在線好友列表。這類集操做擁有許多應用。Redis集羣爲咱們揭示了其強大的功能。

Redis將數據存儲在內存中,僅記錄下每次變化的列表。因爲其具備功能強大,可寫入硬盤中寫入的緩存,許多人甚至並不將Redis稱之爲數據庫。因爲Redis只須要在數據讀入內存以前進行等待,所以速度要比傳統數據庫快不少,可是不適時機的斷電致使其存在潛在的應用風險。

Riak

Riak是設計最爲精巧的數據存儲,其擁有其餘產品的絕大多數功能,而且對副本有着更多的控制。儘管基本結構存儲着多對鍵值,可是恢復它們和確保它們的一致性的選項不少。好比寫入操做包括了要求Riak確認數據什麼時候被成功傳輸到集羣其餘機器上的參數。若是你不但願僅信任一臺機器,在發送確認信息前,你能夠要求其等待,直至兩臺、三臺或是54臺機器寫入了數據。這也是該團隊可以打出「最終一致性不是數據遺失的藉口」這一口號的緣由。

數據自身並不只僅寫在硬盤中。這只是其中的一個選項,可是並非主要的。Riak使用的是插件式存儲引擎(默認爲Bitcask)。該引擎用它們本身的內部格式將數據寫入硬盤中。此外,它還有多種選項,包括MySQL使用的InnoDB版本。Riak的集羣能力能夠確保全部一切都萬無一失。

在抓取數據時,Riak會消除任何可能出現的錯誤。若是在兩個節點的目標版本不一樣,那麼Riak會選擇最新升級版本,或是將兩個目標版本都反饋回來,交由你的客戶端代碼作決定。對於發現數據中存在的潛在錯誤,這是一個很是有用的選項。

Neo4J

在咱們所提到的幾個應用之中,Neo4J是最具特點一個。它能夠用於存儲圖而不是數據。它對圖數據是以節點和邊(關係)模式進行存儲。社交網絡應用是它的強項。Neo4J很是的新,開發人員仍然在尋找更好的算法。在新版本中,開發人員開始嘗試新的緩存策略:因爲Neo4J可以緩存節點信息,所以搜索算法運行速度很快。開發人員還爲其增長了相似XSL模式匹配的新查詢語言。

Neo4J受到了Neo Technology公司的支持。該公司推出的商業用版本數據庫擁有備份、故障恢復和複雜監視功能。

FlockDB

有些人抱怨代碼過於複雜,他們認爲Neo4J過於複雜,超出了他們的需求。那麼他們不妨嘗試一下FlockDB。FlockDB是一個實時的、分佈式的數據庫,是Twitter網站基礎設施的核心組件。Twitter在一年多之前推出了基於Apache許可證的開源項目FlockDB。若是你想創建起本身的Twitter,那麼你須要下載Gizzard工具,其做用是分割跨多個Flock的數據。因爲FlockDB存儲兩個節點之間的關聯,咱們中的許多人將FlockDB稱爲「圖數據庫」。不過,也有人認爲這一稱呼僅適用於像Neo4J這類複雜的工具。(範範編譯)

如何選擇NoSQL數據庫? 關於如何選擇NoSQL數據庫這一問題並很差回答。許多IT部門會隨便選一個,有時候他們選擇的數據庫並不能知足他們的需求。因爲優秀的開發人員但願可以平衡項目的優點、商業支持的可得到性以及文檔質量,所以選擇一個最佳數據庫是十分困難的。 這些數據庫都存儲了大堆的鍵和值,可是真正的問題是如何在服務器中合理分配負載,如何將變動傳遞給它們。另外一個問題是託管。雲服務可以替你完成全部的維護,這一點很是具備吸引力。與SQL數據庫相比,NoSQL數據庫的數據交換更爲困難。目前全球尚未一個標準的查詢語言,也沒有一個像JDBC同樣的大型虛擬層。儘管如此,NoSQL數據庫已經對咱們具有了足夠的吸引力。
相關文章
相關標籤/搜索