</>
⌕
Senior #replication#sharding#consistent-hashing#database

Database replication, sharding và consistent hashing

⚡ Trả lời nhanh

Replication sao chép dữ liệu sang nhiều node để tăng đọc và chịu lỗi (có replication lag). Sharding chia dữ liệu theo shard key sang nhiều node để scale ghi và dung lượng. Consistent hashing đặt node và key lên một vòng hash, thêm hoặc bớt node chỉ di chuyển khoảng K/N key.

ReplicationSharding
Mục tiêuđọc nhiều, HAscale ghi và dung lượng
Mỗi node chứatoàn bộ dữ liệumột phần dữ liệu
Vấn đềreplication lag, failoverchọn shard key, truy vấn chéo shard, rebalance
hash(key) % N         -> thêm node: gần như mọi key đổi chỗ (rebalance cực lớn)
vòng consistent hash  -> key đi theo chiều kim đồng hồ tới node gần nhất
                         thêm node: chỉ key trong một cung di chuyển
  • Consistent hashing thêm virtual node (mỗi node nhiều điểm trên vòng) để phân bố đều và cân theo công suất.
  • Shard key tốt: cardinality cao, phân bố đều, khớp pattern truy vấn. Tránh key tăng đơn điệu (timestamp) gây hot shard.
  • Cách chia: hash-based, range-based, directory-based (bảng tra cứu).
🃏 Ôn bằng flashcard