一雌续、Consistency
1、CAP theorem---Consistency、Availability婴谱、Partition Tolerance
????????? (English)How to beat the CAP theorem?
??????? (中文版)如何打敗CAP理論?
2、Optimistic Locking樂觀鎖躯泰、Timestamps時間戳、向量時鐘Vector Clock
???? 樂觀鎖(Optimistic Locking)與悲觀鎖(Pessimistic Locking)?
???? mysql樂觀鎖總結(jié)和實踐
??? 向量時鐘兩篇好文: ? 向量時鐘Vector Clock in Riak?????? Vector Clock理解 ?
二华糖、Partition
??? 當大規(guī)模數(shù)據(jù)系統(tǒng)的數(shù)據(jù)超過單個計算機的容量麦向,并且還要保證數(shù)據(jù)副本的可靠性、系統(tǒng)的可擴展性(負載平衡措施)客叉,這時推薦數(shù)據(jù)切分的方法诵竭,將數(shù)據(jù)存儲于不同數(shù)據(jù)庫節(jié)點上。有不同的方法實現(xiàn)數(shù)據(jù)庫讀取的負載平衡: memory cache: 如MangoDB兼搏、? Clustering卵慰、數(shù)據(jù)的讀寫分開、數(shù)據(jù)切分sharding(如MongoDB采取橫向切分的方法)佛呻。
? 其中裳朋,數(shù)據(jù)的切分(Sharding)根據(jù)其切分規(guī)則的類型,可以分為兩種切分模式吓著。一種是按照不同的表(或者Schema)來切分到不同的數(shù)據(jù)庫(主機)之上鲤嫡,這種切可以稱之為數(shù)據(jù)的垂直(縱向)切分送挑;另外一種則是根據(jù)表中的數(shù)據(jù)的邏輯關(guān)系,將同一個表中的數(shù)據(jù)按照某種條件拆分到多臺數(shù)據(jù)庫(主機)上面暖眼,這種切分稱之為數(shù)據(jù)的水平(橫向)切分惕耕。
技術(shù):? 1、sharding過程中使用 一致性哈希算法 ? ? 分布式緩存的一致性hash算法原理
??? Consistent Hashing最大限度地抑制了hash鍵的重新分布诫肠。另外要取得比較好的負載均衡的效果司澎,往往在服務(wù)器數(shù)量比較少的時候需要增加虛擬節(jié)點來保證服務(wù)器能均勻的分布在圓環(huán)上。因為使用一般的hash方法栋豫,服務(wù)器的映射地點的分布非常不均勻挤安。使用虛擬節(jié)點的思想,為每個物理節(jié)點(服務(wù)器)在圓上分配100~200個點笼才。這樣就能抑制分布不均勻漱受,最大限度地減小服務(wù)器增減時的緩存重新分布。用戶數(shù)據(jù)映射在虛擬節(jié)點上骡送,就表示用戶數(shù)據(jù)真正存儲位置是在該虛擬節(jié)點代表的實際物理服務(wù)器上昂羡。
? ? ? 2、副本策略——減少讀取訪問的次數(shù)摔踱,負載平衡虐先,如cassandra副本策略:
并且還討論了分布式數(shù)據(jù)庫某節(jié)點的加入及宕機情況下,如何保證某數(shù)據(jù)片段依然能夠在其他數(shù)據(jù)結(jié)點上訪問到派敷。
三蛹批、數(shù)據(jù)存儲(決定了物理存儲以何種方式被訪問)
1、行式存儲 Row-based storage
2篮愉、列式存儲 Columar storage
另外腐芍。幾張圖看懂列式存儲? 一文包括字典表壓縮數(shù)據(jù)。
3试躏、列族存儲 Columnar Storage Layout with Locality Groups(如Google BigTable)
4猪勇、日志結(jié)構(gòu)的合并樹? Log Structured Merge Trees
? 前三個存儲方式?jīng)]有涉及到序列化的邏輯數(shù)據(jù)結(jié)構(gòu),他們都涉及的是如何高效利用內(nèi)存和磁盤存儲空間進行讀寫(效率颠蕴、性能和安全)泣刹。
????????????
???