Cách tiếp cận tôi đang sử dụng là sử dụng dấu thời gian hiện tại cho khóa băm (hoặc phím phạm vi, nếu sử dụng một khóa-dải quá). Lưu dấu thời gian dưới dạng số nguyên, biểu thị số mili giây kể từ khi bắt đầu "kỷ nguyên UNIX" (theo múi giờ UTC). Nhiều thư viện ngày/giờ có thể tạo số này cho bạn.
Điều này có lợi thế là nếu bạn muốn có trường "thời gian tạo" trong bảng, UUID của bạn đã lưu trữ thông tin này. Chỉ cần gọi một phương thức khác trong thư viện ngày/giờ của bạn để chuyển đổi dấu thời gian thành định dạng có thể đọc được.
(Hãy đảm bảo xử lý ngoại lệ sẽ xảy ra nếu mục thứ hai được tạo trong cùng một bảng có cùng dấu thời gian mili giây; chỉ cần quay lại và thử lại thao tác trong trường hợp đó, với dấu thời gian hiện tại sau đó.)
Ví dụ:
User table
chỉ băm-key: userID (timestamp của việc tạo ra các thành viên này).
WidgetAttributes table
khóa băm cộng với phạm vi-khóa.
khóa băm: userID (sử dụng userID từ bảng Người dùng của người dùng mà tiện ích con thuộc). phạm vi khóa: attribID (sử dụng dấu thời gian của việc tạo thuộc tính widget này).
Bây giờ bạn có thể chạy các hoạt động "truy vấn" trên bảng WidgetAttributes để nhận tất cả thuộc tính tiện ích con cho một người dùng nhất định; bằng cách sử dụng "lớn hơn 0" làm thông số truy vấn cho khóa phạm vi.
Cảm ơn Tôi không quen thuộc với Java vì vậy câu trả lời của bạn là thực sự hữu ích. Vì vậy, @DynamoDBAutoGeneratedKey chỉ đơn giản là nhận được Java API để tạo ra một UUID, không phải Dynamo chính nó phải không? Nó sẽ thực sự tuyệt vời nếu Dynamo có kiểu thuộc tính UUID sẽ tạo ra các ID ở bên cạnh chúng và trả lại chúng khi thêm các mục mới. – Adam
@Adam: Thật vậy, '@ DynamoDBAutoGeneratedKey' chỉ đơn giản là chú thích tùy chỉnh do Java SDK cung cấp, tạo mã được tạo tại thời gian biên dịch và được thực thi trong ứng dụng Java để tạo UUID khi chạy - điều này không liên quan gì đến DynamoDB như vậy. Và tôi đồng ý, một kiểu dữ liệu DynamoDB UUID gốc sẽ khá thuận tiện - hãy hy vọng nhóm AWS sẽ mở rộng chức năng DynamoDB theo thời gian, chúng nổi tiếng để đáp ứng nhu cầu của khách hàng và đổi mới cho phù hợp! –