Chỉ mục, streams và tối ưu hóa trong DynamoDB
Sử dụng Kho dữ liệu trong AWS
Dunieski Otano
AWS Solutions Architect
Truy vấn không thể thực hiện
Bảng: userId (khóa phân vùng), orderDate (khóa sắp xếp)
Nhu cầu: Tìm đơn hàng theo email
Vấn đề: Không truy vấn được thuộc tính không phải khóa
Giải pháp: Global Secondary Index
Chỉ mục cho phép nhiều mẫu truy cập
Global Secondary Index (GSI)
Khóa phân vùng khác
so với bảng gốc
Có thể thêm bất kỳ lúc nào sau khi tạo bảng
Chỉ đọc nhất quán suy rộng
Dùng khi: Truy vấn thuộc tính không phải khóa chính
Local Secondary Index (LSI)
Cùng khóa phân vùng
, khóa sắp xếp khác
Phải tạo khi tạo bảng
Hỗ trợ đọc nhất quán mạnh
Dùng khi: Thứ tự sắp xếp thay thế trong phân vùng
GSI vs LSI - khi nào dùng mỗi loại
GSI
: Khóa phân vùng khác, thêm bất kỳ lúc nào, nhất quán suy rộng
LSI
: Cùng khóa phân vùng, tạo khi tạo bảng, nhất quán mạnh
Phổ biến nhất: GSI cho mẫu truy cập linh hoạt
Tuần tự hóa dữ liệu cho DynamoDB
Vấn đề
: DynamoDB không lưu trữ đối tượng Python
Giải pháp
: Tuần tự hóa sang JSON hoặc nhị phân
JSON
: Dữ liệu đơn giản (dict, list) - json.dumps()
Base64
: Dữ liệu nhị phân (ảnh, token)
DynamoDB Streams để ghi nhận thay đổi dữ liệu
Streams
: Nhật ký có thứ tự của mọi thay đổi bảng
Ghi nhận: Thêm, cập nhật, xóa
Trường hợp dùng: Nhật ký kiểm toán, sao chép, trigger
Xử lý bằng Lambda để phản ứng thời gian thực
Time-to-Live để tự động hết hạn
TTL
: Tự xóa mục sau khi hết hạn
Đặt Unix timestamp trong thuộc tính TTL
Phù hợp: Phiên, token tạm thời, bộ nhớ đệm
Không tốn phí cho xóa bằng TTL
Kiểu chiếu chỉ mục và hiệu năng truy vấn
KEYS_ONLY
: Chỉ thuộc tính khóa, kích thước nhỏ nhất
INCLUDE
: Khóa + các thuộc tính chỉ định
ALL
: Mọi thuộc tính, lớn nhất, không cần fetch thêm
Đánh đổi: Chi phí lưu trữ vs hiệu năng truy vấn
Tác vụ theo lô và giao dịch
BatchGetItem
: Đọc tối đa 100 mục, 16MB
BatchWriteItem
: Ghi tối đa 25 mục
TransactWriteItems
: ACID cho tối đa 100 mục
Dùng cho: Hiệu quả (batch) hoặc tính nhất quán (giao dịch)
Ayo berlatih!
Sử dụng Kho dữ liệu trong AWS
Preparing Video For Download...