2012-11-07 19 views
9

Có tùy chọn trong DynammoDB để lưu trữ ID tăng tự động làm khóa chính trong bảng không? Tôi cũng cần lưu trữ thời gian của máy chủ trong các bảng dưới dạng trường "được tạo tại" (ví dụ: người dùng tạo tại). Nhưng tôi không tìm thấy bất kỳ cách nào để có được thời gian máy chủ từ DynamoDB hoặc bất kỳ dịch vụ AWS nào khác.Tự động tăng cấp ID & thời gian máy chủ (iOS SDK)

các bạn có thể giúp tôi với,

  1. Làm việc với ô tô tăng lên ID trong bảng DyanmoDB
  2. Lưu trữ thời gian máy chủ trong các bảng cho "tạo tại" như lĩnh vực.

Cảm ơn.

Trả lời

8

Thực ra, có rất ít tính năng trong DynamoDB và đây chính là sức mạnh chính của nó. Sự đơn giản.

  • Không có cách nào tự động tạo ID và UUID.
  • Không có cách nào để tự động tạo ra một ngày

Đối với "ngày" vấn đề, nó phải là dễ dàng để tạo nó trên các mặt hàng. Tôi có thể đề nghị bạn sử dụng định dạng ngày ISO 8601 không? Đó là cả lập trình viên và máy tính thân thiện.

Hầu hết thời gian, có cách tốt hơn so với sử dụng ID tự động cho Mục. Đây thường là một thói quen xấu được lấy từ thế giới SQL hoặc MongoDB. Ví dụ, một e-mail hoặc đăng nhập sẽ tạo một ID hoàn hảo cho người dùng. Nhưng tôi biết có những trường hợp cụ thể trong đó ID có thể hữu ích.

Trong những trường hợp này, bạn cần xây dựng hệ thống của riêng mình. Trong số SO answerthis article từ tài liệu DynamoDB-Mapper này, tôi giải thích cách thực hiện. Tôi hy vọng nó sẽ giúp

+0

Tuyệt vời .. Cảm ơn .. – EmptyStack

+0

Bạn có chắc chắn không có cách nào để tạo ID gia tăng không? –

7

Thay vì làm việc với ID tự động tăng, hãy xem xét làm việc với GUID. Bạn nhận được thông lượng lý thuyết cao hơn và xử lý lỗi tốt hơn, và điều duy nhất bạn mất là thứ tự thời gian tự nhiên, được xử lý tốt hơn theo ngày tháng.

Thông lượng cao hơn vì bạn không cần yêu cầu Dynamo tạo các ID khả dụng tiếp theo (yêu cầu một số tài nguyên ở đâu đó lấy khóa, nhận một số số và đảm bảo không có gì khác nhận được số đó). Xử lý thất bại tốt hơn xảy ra khi bạn mất kết nối với Dynamo (Dynamo đi xuống, hoặc bạn đang bùng nổ và ứng dụng của bạn đang làm nhiều công việc hơn thông lượng hiện tại được cung cấp). Một ứng dụng ghi chỉ có thể tiếp tục "làm việc" và tạo ra dữ liệu hoàn chỉnh với các ID, xếp hàng nó lên để được ghi vào máy phát điện và không bao giờ lo lắng về các xung đột ID.

+0

Cảm ơn bạn Cory! – EmptyStack

0

Tôi đã tạo một dịch vụ web nhỏ chỉ dành cho mục đích này. Xem bài viết trên blog này, giải thích làm thế nào tôi đang sử dụng stateful.co với DynamoDB để mô phỏng chức năng auto-increment: http://www.yegor256.com/2014/05/18/cloud-autoincrement-counters.html

Về cơ bản, bạn đăng ký một quầy nguyên tử tại stateful.co và tăng nó mỗi khi bạn cần một giá trị mới, thông qua API RESTful.

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