Подход, который я использую, заключается в том, чтобы использовать текущую временную метку для хэш-клавиши (или клавиши диапазона, если тоже используется клавиша диапазона).Сохраните метку времени как целое число, представляющее количество миллисекунд с начала «эпохи UNIX» (в часовом поясе UTC).Многие библиотеки даты / времени могут создать это число для вас.
Это имеет то преимущество, что если вы хотите, чтобы в вашей таблице было поле «время создания», ваш UUID уже хранит эту информацию.Просто вызовите другой метод в вашей библиотеке даты / времени, чтобы преобразовать отметку времени в читаемый формат.
(Обязательно обработайте исключение, которое произойдет, если второй элемент будет создан в той же таблице с той же отметкой времени в миллисекундах; просто отступите и повторите операцию в этом случае, с чуть более поздней текущей отметкой времени.)
Например:
User table
только для хеш-ключа: userID (отметка временио создании этого пользователя).
WidgetAttributes table
хэш-ключ плюс ключ диапазона.hash-key: userID (используйте userID из таблицы User пользователя, которому принадлежит виджет).range-key: attribID (используйте метку времени создания этого атрибута виджета).
Теперь вы можете запускать операции «запрос» в таблице WidgetAttributes, чтобы получить все атрибуты виджета для определенного пользователя.;используя «больше нуля» в качестве параметра запроса для ключа диапазона.