weblab-tw / ddia-study-group

Designing Data-Intensive Applications Study Group
36 stars 5 forks source link

第六章節:分區再分區 - Taco #75

Open taco0929 opened 2 years ago

taco0929 commented 2 years ago
  • 键范围分区

其中键是有序的,并且分区拥有从某个最小值到某个最大值的所有键。排序的优势在于可以进行有效的范围查询,但是如果应用程序经常访问相邻的键,则存在热点的风险。

在这种方法中,当分区变得太大时,通常将分区分成两个子分区,动态地再平衡分区。

分區的優點是可以分散平衡負載,且分區的資源都是獨立的,因此分區可以增進效能。 但當分區到一定單位時,再分區的意義是?

e.g.: 按照關鍵詞字母區分區,當b~c變大時將b~c分成ba~bg,bh~ca,這樣能增進效能嗎?

Parkerhiphop commented 2 years ago

分區再分區是為了 Rebalancing 房間的例子,多一個房間的話,會需要把原本房間們的東西移過去,如果有分區的話,就能讓這過程更方便。

J 神實務上沒有遇過再分區,因為就是用 timestamp 去切。 通常就是去設定 MySQL 跟 Pg 的一些參數。

分區的一種作法:UserId + TimeStamp ex: UserId Hash 成 0~99 的值,TimeStamp 都存成 2022Q3 之類的,兩者就能形成一個 Shard Key

Query 時只要根據 時間區段 去找就好。

過舊的資料不會存在 主 Table,會根據資料熱度區分