Object and Key-Value Storage Patterns

Ý chính

Storage ở quy mô lớn thường tách thành hai câu hỏi: dữ liệu vật lý nằm ở đâu và metadata/key được tìm như thế nào. Object Storage tối ưu cho file/object lớn qua API; Distributed Key-Value Store tối ưu cho lookup theo key với latency thấp. Cả hai đều sống chết bởi partitioning, replication, lifecycle và fallback.

Hai kiểu storage cần phân biệt

PatternMental modelĐiểm mạnhCẩn thận
Object StorageBucket/key → object bytesẢnh, video, backup, dataset, archiveMetadata index, hot prefix, lifecycle cost
Distributed Key-Value StoreKey → value/read modelLow-latency lookup, derived data, configSource-of-truth, replication lag, blast radius

Bài học từ các case

  • Amazon S3 cho thấy object storage không scale bằng một storage engine duy nhất, mà bằng front-end routing, metadata index, data placement, replication, erasure coding và background repair.
  • Canva cho thấy chi phí storage phải được tối ưu bằng access-pattern measurement trước khi chuyển class.
  • Airbnb Mussel cho thấy derived data store cần kết hợp batch bulk load, realtime log và partition management để phục vụ read-heavy workloads.
  • Cloudflare KV cho thấy cache/hot data không thay thế được fallback cho cold reads nếu storage phụ thuộc nằm trên critical path.

Câu hỏi thiết kế

  • Workload là object lớn, key-value lookup, hay database transaction?
  • Key/prefix có tạo hot partition không?
  • Metadata/index có replicate và repair độc lập không?
  • Cold read/write phụ thuộc vào source-of-truth nào?
  • Data cũ có thể chuyển storage class hoặc expire không?
  • Khi storage backend chết, service fail open, fail closed hay degrade một phần?

Liên kết