Используйте тот же атрибут DynamoDB, что и HASH, и клавишу RANGE - PullRequest
1 голос
/ 14 марта 2019

У меня есть DynamoDB, который индексируется одним цифровым ключом. Я хотел бы иметь возможность извлекать элементы, имеющие определенное значение ключа, и находить его максимальное значение, запрашивая и запрашивая один элемент в обратном порядке сортировки. Когда я пытаюсь определить 2 индекса, как в приведенном ниже отрывке для одного и того же ключа, я получаю сообщение об ошибке «Два ключа не могут иметь одинаковое имя».

"KeySchema": [
  {
    "AttributeName": "logs",
    "KeyType": "HASH"
  },
  {
    "AttributeName": "logs",
    "KeyType": "RANGE"
  }
]

1 Ответ

0 голосов
/ 14 марта 2019

Вы можете определить свою ключевую схему только с помощью хеш-ключа, без ключа диапазона

"KeySchema": [
  {
    "AttributeName": "logs",
    "KeyType": "HASH"
  }
]

Чтобы запросить элемент с использованием определенного значения 'logs', используйте GetItem .

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

Возможно, вы захотите пересмотреть свой подход.Если вы просто пытаетесь создать уникальные идентификаторы, это не правильный подход для DynamoDB.Что вы должны сделать:

  • Создать длинный UUID
  • Выполните GetItem , чтобы убедиться, что UUID доступен.Это очень дешево и быстро в DynamoDB
  • Используйте UUID
...