Ключ к DynamoDB - , зная ваши шаблоны доступа . Вы не указали, как планируете запрашивать данные, поэтому я не могу посоветовать общий дизайн, но вот что вы можете сделать, чтобы получить уникальный первичный ключ.
Вам действительно нужноавтоинкрементные идентификаторы? Если нет, рассмотрите возможность использования UUID для всех новых данных. Тогда вы можете использовать поле идентификатора в качестве ключа раздела;Вы также можете использовать customerId
в качестве ключа разделения и id
в качестве ключа сортировки.
Если вам необходимо иметь автоматически увеличивающиеся идентификаторы, то вы должны хранить creationDate
в DynamoDB как ISO 8061 строка. Затем вы можете добавить случайный UUID в конец creationDate
, чтобы избежать столкновения клавиш. Это позволит вам использовать customerId
и creationDate
в качестве первичных ключей, и вы по-прежнему сможете выполнять запросы с использованием даты (но вместо проверки на равенство следует использовать функцию begins_with
).
Наконец, вы можете ввести новое поле специально для обеспечения уникальности. Вы можете назвать его просто rangeKey
, и это будет случайно сгенерированный UUID, который вы можете использовать с любым другим полем в качестве ключа раздела. У вас все еще может быть поле для последовательного идентификатора (и, если хотите, создайте GSI для его запроса).
Я представил 3 решения, но на самом деле они все одинаковые - найдите способ добавить UUIDна ваш первичный ключ.