переход от RDS к DynamoDB - PullRequest
       90

переход от RDS к DynamoDB

0 голосов
/ 01 октября 2019

имеют следующие поля в RDS

id auto increment
creationDate datetime
status string
reason string
description string
customerID string

есть несколько записей для customerID + creationDate, поэтому я не могу использовать creationDate в качестве ключа сортировки. Поле со списком статуса с customerID не будет работать, так как клиент может иметь дублирующую запись для того же статуса. Если я использую поле id, я не могу автоматически увеличивать, так как DynamoDB не позволяет этого? Какие у меня есть варианты? Как должна выглядеть моя таблица ddb?

1 Ответ

3 голосов
/ 01 октября 2019

Ключ к DynamoDB - , зная ваши шаблоны доступа . Вы не указали, как планируете запрашивать данные, поэтому я не могу посоветовать общий дизайн, но вот что вы можете сделать, чтобы получить уникальный первичный ключ.

Вам действительно нужноавтоинкрементные идентификаторы? Если нет, рассмотрите возможность использования UUID для всех новых данных. Тогда вы можете использовать поле идентификатора в качестве ключа раздела;Вы также можете использовать customerId в качестве ключа разделения и id в качестве ключа сортировки.

Если вам необходимо иметь автоматически увеличивающиеся идентификаторы, то вы должны хранить creationDate в DynamoDB как ISO 8061 строка. Затем вы можете добавить случайный UUID в конец creationDate, чтобы избежать столкновения клавиш. Это позволит вам использовать customerId и creationDate в качестве первичных ключей, и вы по-прежнему сможете выполнять запросы с использованием даты (но вместо проверки на равенство следует использовать функцию begins_with).

Наконец, вы можете ввести новое поле специально для обеспечения уникальности. Вы можете назвать его просто rangeKey, и это будет случайно сгенерированный UUID, который вы можете использовать с любым другим полем в качестве ключа раздела. У вас все еще может быть поле для последовательного идентификатора (и, если хотите, создайте GSI для его запроса).

Я представил 3 решения, но на самом деле они все одинаковые - найдите способ добавить UUIDна ваш первичный ключ.

...