Member Transaction History: Data Store Selection Journey
Bài tóm tắt Walmart 2019 2. Tăng trưởng Độ khó: Dễ
Walmart · 2019 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Bài ngắn, mô tả lựa chọn lúc thiết kế; không có số liệu tải hay kết quả vận hành.
Bối cảnh
- Member Transaction History (MTH) là lớp đọc đa kênh cho đơn hàng của club (Sam's Club) và online: nguồn sự thật duy nhất để tra cứu và sửa đơn, với một mô hình đơn hàng chuẩn.
- Truy vấn cần hỗ trợ: theo orderID; theo số điện thoại/email; theo membershipID + khoảng ngày/mã hàng; theo điện thoại/email + trạng thái + ngày; đếm đơn theo người dùng/khoảng ngày.
Thay đổi chính: chia truy vấn thành bốn nhóm, mỗi nhóm một kho (Azure)
| Nhóm truy vấn | Đã xét | Chọn | Lý do theo Walmart |
|---|---|---|---|
| Key-value (đơn theo orderId) | Redis, Cosmos DB, Azure SQL, Cassandra | Cosmos DB | Azure SQL không scale trong test; Redis hợp cache hơn |
| Truy vấn động (facet, group-by, lọc) | Cosmos, Azure Search, Azure SQL | Azure Search | Cosmos chưa có group-by/facet; nhưng Search latency cao, đang làm việc với Microsoft |
| Phân tích, tổng hợp phức tạp (streaming) | Databricks, Stream Analytics | Databricks | Spark, nhiều ngôn ngữ |
| Lọc theo metadata, phân trang | Cosmos, Azure Search, Azure SQL | Cosmos DB | Latency thấp; tính năng phân trang lúc đó chưa ra, nhưng ưu tiên latency |
- Kết luận của bài: không có một kho nào đáp ứng mọi trường hợp. Tiêu chí liệt kê: định dạng, kích thước, quan hệ dữ liệu, mô hình nhất quán, độ linh hoạt schema, đồng thời, vòng đời nóng/lạnh, vùng có sẵn, audit, throughput, chi phí, bảo mật.
Vì sao
- Một lớp đọc phục vụ nhiều kiểu truy vấn khác nhau; ép tất cả vào một kho thì nhóm truy vấn nào đó sẽ chậm hoặc không làm được.
Bài học cho SWE
- Phân loại truy vấn theo hình dạng (tra khoá, lọc, facet, tổng hợp) trước khi chọn kho (Chọn database theo workload).
- Nhiều kho cho một lớp đọc thì phải có đường đồng bộ dữ liệu giữa chúng; bài không nói phần này, và đó là phần khó.
- Lựa chọn có ghi rõ chỗ chưa ổn (latency của Azure Search, phân trang của Cosmos) là quyết định trung thực hơn một bảng so sánh "toàn thắng".
Liên quan
Được nhắc tới trong
Chủ đề (1)
Công ty (1)
Bài tóm tắt (1)