DynamoDB: Why migrate to DynamoDB from Cassandra?
Bài tóm tắt Expedia 2018 3. Quy mô lớn Độ khó: Dễ
Expedia · 2018 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc
Bài thứ 2 trong series về DynamoDB của Expedia Group Tech. Đây là bài so sánh và đánh giá, không kể một cuộc migration cụ thể. Các giới hạn DynamoDB nêu dưới đây là của năm 2018.
Bối cảnh
Cassandra cho người dùng tự quyết gần như mọi thứ: số replica, chỗ đặt replica, mức consistency, số node. Theo tác giả, chính điều đó đặt độ bền và hiệu năng vào tay người cấu hình.
So sánh chính (theo Expedia, 2018)
| Khía cạnh | Cassandra | DynamoDB |
|---|---|---|
| Replica | Tự cấu hình số lượng và vị trí | Cố định 3 replica, mỗi AZ một bản |
| Consistency | ANY, ONE, QUORUM, ALL cho cả đọc và ghi | Đọc: eventual hoặc strong; ghi luôn đồng bộ tới 2 AZ, bất đồng bộ tới AZ thứ 3 |
| Dữ liệu tăng | Tự lo dung lượng node, thêm node | Tự tách partition (khi đó mỗi partition tối đa 10 GB) |
| Batch | Nguyên tử | Không nguyên tử, trả về item lỗi để retry |
| Vận hành | Tự chọn instance, EBS hay ephemeral, compaction, tombstone, VPN đa region | Managed |
| Capacity planning | Phải dựng ring rồi test | Tính được: mỗi partition 3.000 RCU / 1.000 WCU; 12.000 đọc/s × 4 KB là 4 partition |
Khi nào không nên dùng DynamoDB (theo Expedia)
- Cassandra mô hình hoá và tinh chỉnh tốt có thể đạt dưới 1 ms; DynamoDB thường 5–10 ms (trừ khi dùng DAX).
- Item tối đa 400 KB; TTL chỉ ở mức item.
- Đọc làm tròn lên 4 KB, ghi lên 1 KB, nên payload vài byte vẫn trả tiền cả khối; lưu trữ cũng tính tiền.
- Nội bộ bị che: khi có hot spot thì muốn xem access log phải mở ticket với AWS.
- Khi dữ liệu tăng, các partition chia nhau đúng lượng RCU/WCU đã cấp, nên phải tăng thêm nếu tải cũng tăng.
Bài học cho SWE
- Đổi từ DB tự vận hành sang managed là đổi quyền kiểm soát lấy gánh nặng vận hành ít hơn: mất khả năng tinh chỉnh latency và quan sát nội bộ, được capacity planning đơn giản.
- Mô hình tính tiền theo đơn vị đọc/ghi làm kích thước payload và mẫu truy cập trở thành biến chi phí (Chi phí hạ tầng và build vs buy).
- Cùng hướng Cassandra → DynamoDB: Wix Inbox (Wix 2021). Hướng ngược lại (tự vận hành để có latency thấp): Discord với Cassandra rồi ScyllaDB (Chọn database theo workload).
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)