пределы для ключей разделения и сортировки DynamoDB таковы, что если я хочу создать таблицу с большим количеством пользователей (например, всего населения мира), я не могу просто использовать уникальный ключ раздела для представления personId, мне нужно используйте как ключ раздела, так и ключ сортировки для представления personId.
$ util.autoId () в AppSync возвращает 128-битную строку. Если я хочу использовать его в качестве первичного ключа в таблице DynamoDB, мне нужно разделить его на две строки, одна из которых является ключом раздела, а другая - ключом сортировки.
Как лучше всего выполнить этот шпагат? Или, если это не лучший подход к дизайну, как мне его разработать?
Кроме того, распространяются ли ограничения на разделы и ключи сортировки также и на вторичные индексы?
Что касается $ util.autoId (), поскольку он генерируется случайным образом, если я вызываю его много раз, есть ли шанс, что он сгенерирует два совершенно одинаковых идентификатора?





Я думаю, что я неправильно понимаю предпосылку вашего вопроса, потому что, на мой взгляд, использование AppSync $ util.autoId () возвращает вам 128-битный UUID. Суть UUID в том, что они уникальны, поэтому у вас может быть абсолютно один UUID на человека в мире. И строка UUID определенно будет соответствовать максимальной длине символов требований к ключу раздела Dynamo.
Вы также спросили:
if I call it many times, is there a chance that it will generate two id's that are exactly the same?
Крайне маловероятно.
Ах! 128-битный UUID, представленный в шестнадцатеричной системе счисления, значительно короче 2048 байт; это 32 символа и четыре дефиса. знак равно
Что касается ключа раздела и ограничения ключа сортировки, здесь [ссылка] (docs.aws.amazon.com/amazondynamodb/latest/developerguide/…) указано, что максимальная длина составляет 2048 байтов. Похоже, что это значительно меньше, чем 128-битный UUID.