在分布式資料庫儲存中,資料分割槽和資料放置有什麼區別?

時間 2021-06-04 15:50:31

1樓:楊東東

資料分割槽和資料放置是邏輯和物理的關係,邏輯是頂層設計,物理是具體實現,邏輯設計決定物理實現,物理約束反過來影響邏輯設計。

舉個例子,

給你10個桌球,要求放入3個盒子裡。

如何決定哪個球放入哪個盒子?比如

按照編號大小:0-2放入盒子A,3-5放入盒子B,6-9放入盒子C

按照編號特徵:對3取餘==0放入盒子A,取餘==1放入盒子B,取餘==2放入盒子C

...上面的策略就是選擇資料分割槽的過程,既然有這麼多分割槽方法可以選,選哪個最好?有乙個比較重要的考慮因素是,3個盒子到底是什麼特徵?

比如是否一樣大小。比如我告訴你盒子A和B只能放1個,盒子C可以放100個,那麼上面兩種策略都不行。如果我告訴你,盒子ABC都能放100個,那麼上面兩種策略都可以。

具體到乙個盒子裡面,怎麼放也有講究,比如隨便扔,或者用格仔乙個個放。

對比上面說的,資料分割槽就是設計球和盒子對應關係的過程,資料放置就是球在盒子裡面怎麼擺放。分配策略決定了如何利用每個盒子,但是盒子的特性會影響分配的策略,資料分割槽和資料放置也是如此,是互相融合不可分割的,所以有時候放在一起說也不奇怪。

2樓:冷風

按照題主的描述

資料分割槽,是指如何把資料分布到不同的node上去資料放置,是指node上的資料是如何在磁碟上儲存的,在磁碟上可以順序的,也可以是隨機位置的。

建議題主去看一下SATA磁碟的原理

3樓:

按照我的理解試著回答一下。

資料分割槽應該就是你所理解的資料分割槽的概念,就是利用分割槽規則對資料進行分割槽,資料庫的分割槽方案可以叫做Database Partitioning Plan。這裡的分割槽規則可以是hash,range等等。

資料放置應該是指資料的具體物理放置,巨集觀上可以指放置在哪台node上,為了負載均衡等考慮,可以有不同的放置方法;微觀上可以指資料在乙個block裡面是如何進行儲存的。

《Skew-Aware Automatic Database Partitioninig in Shared-Nothing, Parallel OLTP Systems》,這篇文章是說的如何對資料進行分割槽。

《Trojan Data Layouts Right Shoes for a Running Elephant》,這篇文章是從微觀上看如何在乙個block裡面對資料進行組織。

至於巨集觀上的資料放置,我暫時還沒關注此方面的文章,或許Amazon的那篇Dynamo中講的那種一致性hash的方式也算是資料放置吧。

水平不夠,可恥的匿了

分布式資料庫的分布式事務?

NebulaGraph 業務系統往往是通過子系統組合的模式來完成,這些子系統很可能是不同的資料庫,甚至可能是 友商 的,互相直接無法保證事務,還是得業務自身保證。 codingfor 你說的單機事物,我的理解其實是指single threaded excution,而不是指在單台機器上做事物 暗含了...

為什麼分布式資料庫這麼喜歡用kv store?

NebulaGraph 採用鍵值對儲存主要還是出於資料模型和效能角度考慮的。目前比較流行的方案有 Google 開源的 LevelDB 和 FaceBook 開源的 RocksDB。鍵值型儲存模型比較簡單,LSM 模型將隨機寫轉換為順序寫,在隨機讀方面也可以優化,效能比較有保障。分布式系統往往根據 ...

什麼情況下,需要使用分布式資料庫?

NebulaGraph 首先,分布式資料庫的優勢大致上概括為三種 1,資料分布儲存在不同的節點上,解決了單機下資料量的限制問題 2,分布式計算,均衡了計算負載 3,從資料安全性考慮,分布式資料庫一般都有多副本機制,以此保證了某乙個節點資料壞掉後能正常提供服務。基於以上三點,我認為海量資料的高併發業務...