Подтвердить что ты не робот

Получение значений из DynamoDB

Я только что начал изучать DynamoDB Amazon. Очевидно, что масштабируемость обращается, но я пытаюсь вывести свою голову из режима SQL и в режим без sql. Это можно сделать (со всеми преимуществами масштабирования dynamodb):

Загрузите количество записей (например, 5 - 10 миллионов), проиндексированных некоторым числом. Одним из полей в каждой записи будет дата создания. Есть ли эффективный способ для dynamo db предоставить моему веб-приложению все записи, созданные между двумя датами?

Более простой вопрос - может ли dynamo db дать мне все записи, в которых поле соответствует определенному числу. То есть, будет другое поле, которое является числом, так как аргумент sake позволяет говорить от 0 до 10. Могу ли я попросить dynamodb дать мне все записи, которые имеют значение, например. 6?

Нужно ли обоим этим запросам сканировать весь набор данных (что я считаю проблемой, учитывая размер набора данных?)

большое спасибо

4b9b3361

Ответ 1

Есть ли эффективный способ для dynamo db предоставить моему веб-приложению все записи, созданные между двумя датами?

Yup, пожалуйста, ознакомьтесь с концепцией Primary Key в модели данных Amazon DynamoDB, в частности основным ключом типа Хэш и диапазон:

В этом случае первичный ключ состоит из двух атрибутов. Первый атрибутами является хэш-атрибут, а второй - диапазон атрибут. Amazon DynamoDB строит неупорядоченный хеш-индекс на хэше атрибут первичного ключа и индекс отсортированного диапазона в диапазоне первичных ключевой атрибут. [...]

В приведенных примерах точно указан ваш прецедент, а именно таблица Reply (Id, ReplyDateTime,...) облегчает первичный ключ типа Hash и Range с идентификатором атрибута hash и атрибутом диапазона ReplyDateTime.

Вы будете использовать это с помощью Query API, см. RangeKeyCondition для деталей и Запрос таблиц в Amazon DynamoDB для соответствующих примеров.

может dynamo db дать мне все записи, в которых поле соответствует определенному номер. [...] Могу ли я попросить dynamodb дать мне все записи, которые имеют значение, например. 6?

Это возможно, хотя и с помощью только Scan API (т.е. требуется прочитать каждый элемент в таблице), см. ScanFilter для получения более подробной информации и Сканирование таблиц в Amazon DynamoDB для соответствующих примеров.

У обоих этих запросов требуется проверка всего набора данных (что я предположим, что проблема связана с размером набора данных?)

Как упоминалось, первый подход работает с Query, а второй требует сканирования, и, как правило, операция запроса более эффективна, чем операция сканирования - это хорошая рекомендация для начала работы, хотя детали более сложны и зависят в вашем примере использования, см. раздел "Сканирование и производительность запросов" в Запрос и сканирование в обзоре Amazon DynamoDB:

Для более быстрого реагирования создайте свои таблицы таким образом, чтобы можно было использовать API запросов, Get или BatchGetItem. Или, спроектируйте свой приложение для использования операций сканирования таким образом, чтобы минимизировать воздействие по скорости запроса в таблице. Для получения дополнительной информации см. Руководство по обеспечению пропускной способности в Amazon DynamoDB.

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