Список заказа DynamoDB

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

например. key = position1, value = value1, String для сохранения в DB = "position1 # value1"

Чтобы использовать список, мне нужно отфильтровать, упорядочить, подстроить и переконвертировать исходный тип. Это похоже на долгий путь, но на данный момент это единственное решение, которое я могу придумать.

Есть ли у кого-нибудь лучшие решения или идеи?

Ответ 1

Я не верю, что можно сохранить упорядоченный список в качестве атрибута, так как DynamoDB поддерживает только однозначные и (неупорядоченные) атрибуты набора. Однако служебные данные о производительности для хранения строки разделенных запятыми значений (или какой-либо другой схемы разделителя), вероятно, довольно минимальны, учитывая тот факт, что все атрибуты для строки должны быть под 64 КБ.

(источник: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/DataModel.html)

Ответ 2

Тип списка в новых добавленных типах документов должен помочь.

Типы данных документа

DynamoDB поддерживает типы данных List и Map, которые могут быть вложены для представления сложных структур данных.

  • Тип списка содержит упорядоченный набор значений.
  • Тип карты содержит неупорядоченный набор пар имя-значение.

Списки и карты идеально подходят для хранения документов JSON. Тип данных List похож на массив JSON, а тип данных Map похож на объект JSON. Нет ограничений на типы данных, которые могут быть сохранены в элементах List или Map, и элементы не должны быть одного типа.

Ответ 3

Добавьте атрибут диапазона к основным ключам.

Компонентный первичный ключ для запросов диапазона

Составной первичный ключ позволяет указать два атрибута в таблице, которые в совокупности образуют уникальный первичный индекс. Все элементы в таблице должны иметь оба атрибута. Один из них служит "атрибутом раздела хэш", а другой - "атрибутом диапазона". Например, у вас может быть таблица "Обновления состояния" с составным первичным ключом, состоящим из "UserID" (хэш-атрибут, используемый для разделения рабочей нагрузки на нескольких серверах) и "Время" (атрибут диапазона). Затем вы можете запустить запрос для извлечения: 1) определенного элемента, однозначно идентифицированного комбинацией значений UserID и Time; 2) все элементы для конкретного хэша "ведро" - в этом случае UserID; или 3) все элементы для определенного UserID в определенном временном диапазоне. Запросы диапазона по запросу "Время" поддерживаются только в том случае, если указан хэш файл UserID.