Benchmarking databases for Global App

Bài tóm tắt Mercari 2025 3. Quy mô lớn Độ khó: Trung bình

Mercari · 2025 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Một bài trong series Global App (ngoài sheet). Quyết định AlloyDB đã nêu trước ở Mercari 2025; bài này là phần đánh giá. Số đo là benchmark tổng hợp do Mercari tự chạy.

Bối cảnh

  • Global App cần cả giao dịch throughput cao, latency thấp, lẫn nhân bản nhiều vùng nhất quán mạnh. Mercari trước đó chọn Spanner cho Merpay và nhiều service.

Thay đổi chính

  • Ma trận 11 tiêu chí có trọng số: scale và hiệu năng (20%), chi phí (15%), độ tin cậy (15%), đa vùng (10%), tuân thủ/bảo mật (10%), mô hình nhất quán (7,5%), độ phức tạp vận hành (5%), khoá nhà cung cấp (5%), cùng hệ sinh thái, hỗ trợ nhà cung cấp và kỹ năng sẵn có của đội (SQL/PostgreSQL).
  • Benchmark YCSB (bản Go) ở Tokyo, 200 triệu dòng, 10 triệu thao tác mỗi lượt, khởi động 1 giờ, đo 30 phút; số luồng chỉnh tới khi CPU khoảng 65% để so công bằng. Bốn tỉ lệ đọc/ghi (80/20, 95/5, 99/1, 50/50).
  • Kết quả (2025, theo Mercari): AlloyDB có p50 và p99 thấp nhất và throughput cao nhất ở mọi workload (ví dụ 80/20: đọc khoảng 82.800 ops, p99 5,2 ms; Spanner khoảng 13.100 ops; CockroachDB khoảng 14.900 ops, p99 13,2 ms). Spanner ổn định nhưng ghi chậm hơn; CockroachDB đọc p50 nhanh nhưng p99 dao động. Giá instance tham khảo: Spanner Standard 854 USD, AlloyDB Standard 290 USD (HA 580), CockroachDB 610 USD.
  • Quyết định: AlloyDB là DB chính (hiệu năng, tương thích PostgreSQL, vận hành đơn giản); Spanner tiếp tục cho service cần nhất quán mạnh toàn cầu và scale ngang; CockroachDB để xét sau (linh hoạt, ít khoá nhà cung cấp, nhưng vận hành phức tạp hơn và hiệu năng dao động).

Vì sao

  • Không có DB "hoàn hảo"; với một modular monolith mới trên một vùng chính (Tokyo), hiệu năng/chi phí và hệ sinh thái PostgreSQL nặng hơn đa vùng native ở thời điểm này.

Bài học cho SWE

  • Ghi trọng số tiêu chí trước khi đo, để benchmark trả lời câu hỏi đã định chứ không phải ngược lại.
  • So DB ở cùng mức tải tài nguyên (ở đây là CPU 65%) rồi mới so throughput; và đọc cả p99 chứ không chỉ p50.
  • Benchmark tổng hợp một vùng không nói gì về hành vi đa vùng; Mercari giữ Spanner cho đúng phần cần nó.

Liên quan