Генерация идентификаторов желаемой длины в DynamoDB - PullRequest
1 голос
/ 06 августа 2020

Я работаю с Amazon DynamoDB, и мне нужен объект с идентификатором длины 10. Я думаю, что невозможно указать Dynamo, чтобы он автоматически генерировал идентификаторы такой длины (если я ошибаюсь, как я могу это сделать это?), поэтому я думал об установке поля объекта с уникальной строкой длиной 10, определенной мной. Как лучше всего это сделать? Автоматическое увеличение - плохая идея для этой цели?

1 Ответ

1 голос
/ 06 августа 2020

DynamoDB не имеет механизма для генерации уникальных идентификаторов для новых элементов. Однако вам вряд ли понадобится такая функция, потому что ваше приложение может легко сгенерировать 10-байтовую случайную строку и использовать ее в качестве ключа для нового элемента.

Если вы беспокоитесь, что раз в сто лет, этот случайный ключ будет конфликтовать с ключом элемента, который уже существует, и это тоже легко решить: вы можете использовать ConditionExpression в PutItem, чтобы запросить создание элемента, только если он еще не существует:

  1. Условием может быть id <> :id, где id - ключевой столбец, а :id - случайный идентификатор, который мы пытаемся создать. Это не удастся, если элемент существует (само значение не равно), но будет успешным, если элемент не существует (если элемент не существует, он считается ничем не равным).
  2. Или, что еще проще, используйте условие attribute_not_exists(id). Если элемент не существует, проверка «attribute_not_exists» будет успешной, но если элемент действительно существует, очевидно, что его первичный ключ существует, поэтому условие attribute_not_exists не будет выполнено.
...