Сканирование Amazon DynamoDB и RDS, где производительность предложения без использования индексов

Я искал вокруг, но не нашел ответов, поэтому разместил вопрос здесь.

Я настраиваю новую БД и пытаюсь сравнить производительность операции Dynamo DB SCAN и предложения SQL WHERE (оба без создания индексов).

Я понимаю, что операции DynamoDB SCAN могут стать очень медленными по мере роста данных, поскольку им нужно пройти через все записи, чтобы получить желаемые результаты, но разве предложение SQL WHERE не сканирует всю таблицу, чтобы получить желаемые результаты?

Итак, означает ли это, что производительность операции SCAN Dynamo DB более или менее такая же, как производительность предложения SQL WHERE, или SCAN медленнее из-за всего хеширования, которое необходимо выполнить для первичных ключей?


person Vivek Kumar    schedule 19.04.2019    source источник
comment
возможный дубликат   -  person Atul Kumar    schedule 19.04.2019
comment
Упрощенно, но основное отличие заключается в следующем: при сканировании таблицы DynamoDB вы возвращаете все ее содержимое и должны фильтровать на стороне клиента, тогда как в базе данных, совместимой с SQL, вы можете использовать предложение WHERE для фильтрации данных на стороне сервера, прежде чем они будут отправлены обратно. вашему клиенту.   -  person Dunedan    schedule 19.04.2019


Ответы (1)


Предложение SQL WHERE также сканирует всю таблицу, чтобы получить желаемые результаты?

Только если уж совсем надо.

В большинстве случаев существует один или несколько индексов, которые помогают сократить количество записей, которые РСУБД должна прочитать. БД может даже построить его на лету.

Принимая во внимание, что Dynamo всегда будет читать каждую запись при использовании SCAN().

Если у вас много (несколько?) специальных запросов... Dynamo не для вас.

Это хороший справочный слайд из лекции AWS Summit Железный треугольник цели (теорема PIE)

Стоит посмотреть все видео... Сопоставление базы данных с рабочей нагрузкой

person Charles    schedule 19.04.2019