2016-08-09 13 views
6

Tôi có một bảng Dynamodb chỉ chứa một khóa băm (khóa phân vùng). Không có phím phạm vi (khóa sắp xếp) cho bảng này. Khóa băm là giá trị số (ví dụ: - 1,2,3 ... N) Khi tôi truy vấn hoặc Quét bảng này, thứ tự mà chúng gửi kết quả? Nếu có một phím phạm vi, nó rõ ràng sắp xếp các kết quả theo thứ tự tăng dần dựa trên giá trị khóa phạm vi. Nhưng trong trường hợp này không có RANGE KEY, nó hoạt động như thế nào?Làm thế nào để Dynamodb Sắp xếp kết quả truy vấn khi không có phím phạm vi avaialble?

Trả lời

3

DynamoDB không cung cấp bất kỳ đảm bảo đặt hàng nào (ẩn hoặc rõ ràng) để quét các mục từ bảng. Các mục được trả về nhiều hay ít theo thứ tự hàm băm bên trong ánh xạ các mục vào các phân đoạn của bảng nhưng không có sự bảo đảm đặt hàng ngầm định hoặc rõ ràng.

Ngay cả với phím sắp xếp, thứ tự chỉ được ngụ ý trong các mục của cùng một khóa phân vùng. Vì vậy, ngay cả khi bạn có một phím phạm vi trên bảng, điều đó sẽ chỉ cho phép bạn truy vấn mục để có khóa băm cụ thể tại một thời điểm.

Nếu bạn cần đặt hàng tất cả các mục trong bảng, bạn có một số tùy chọn: - quét tất cả dữ liệu và thứ tự trên máy khách - tạo chỉ mục thứ cấp chung với giá trị chung cho khóa phân vùng cho tất cả các mục và truy vấn rằng - thiết kế lớp lưu trữ bổ sung để cung cấp thứ tự

Điều quan trọng là phải nhấn mạnh rằng hai tùy chọn trên chỉ tốt cho các bảng tương đối nhỏ. Một khi bạn đạt khoảng 10 GB trong bảng có một GSI với một phím chung sẽ hoạt động như một cổ chai đáng kể và tất nhiên quét và đặt hàng toàn bộ bảng trở nên có vấn đề là tốt.

Các vấn đề liên quan