在過去幾年,一種新興的大型資料存儲機制正吞噬大資料存儲市場。 這種存儲解決方案與傳統的RDBMS有顯著的區別,它們被稱之為NoSQL。
在NoSQL世界中有以下關鍵的成員,包括
●Google BigTable、HBase、Hypertable
●Amazon Dynamo、Voldemort、Cassendra、Riak
●Redis
●CouchDB、MongoDB
而這些解決方案又有一些共同的特點
●基於鍵-值存儲
●系統運行在海量的普通機器上
●資料在經過分區和複製後分佈在集群中
●放寬對資料一致性的要求(因為CAP定理)。
選擇NoSQL的重要標準就是要看CAP(Consistency、Availability和Partition Tolerance),也就是我們所說的一致性、可用性和分區容忍性。 但CAP原則要求在分散式系統只能選擇一致性、可用性和分區容忍性其中的兩項。
本文旨在提取這些解決方案背後的共同的技術,以便更深入的瞭解應用程式設計的意義。 本文並不會對這些解決方案作比較,也不會建議使用某一款產品。
API模型
底層的資料模型可以被看作為一個大的Hashtable(鍵/值存儲)
API訪問基本形式:
get(key):提取給定鍵的對應值
put(key,value) :新建或更新給定鍵的對應值
delete(key):刪除鍵及其關聯值
在伺服器環境利用更高級的API執行使用者自訂的函數
execute(key, operation, parameters) :叫用作業給定鍵對應的值,值具有特殊資料(例如List、Set、Map等)
mapreduce(keyList, mapFunc, reduceFunc) :對範圍內的鍵調用MapReduce
機器佈局
底層基礎設施由大量(成百上千)廉價的、普通的、不可靠的機器通過網路組成。 每台機器為一個單獨的物理節點(PN)。 在每個PN軟體配置相同,但CPU、記憶體、硬碟等會有所不同。 每個PN根據不同的硬體設定運行不同數目的虛擬節點。
(責任編輯:蒙遺善)