Вызывает ли фильтрация «начало с» высокие чтения в DynamoDB? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть гипотетическая база данных, которая отслеживает адреса улиц по всему миру. Ключом раздела является страна, а ключом сортировки - штат и почтовый индекс улицы. Например, один предмет может выглядеть как CA#90210.

(Ясно, что это имеет большие проблемы с локализацией и распространением, но это гипотетически)

У меня есть 10000 элементов в США, если я запрашиваю и фильтрую ключ сортировки на «начинается с CA» (это может вернуть 900 элементов) и ключ разделения на США, DynamoDB будет использовать RCU только для 900 элементов что он нашел или 10000 пунктов с "американским" ключом раздела?

В той же заметке, если я использую почтовый код в ключе сортировки, правильно ли хранить его в другом столбце базы данных просто для чтения моим веб-приложением?

1 Ответ

1 голос
/ 28 июня 2019

если я запрашиваю и фильтрую ключ сортировки на «начинается с CA» (это может вернуть 900 элементов) и ключ разделения на США, DynamoDB будет использовать RCU только для 900 элементов

Да, запрос starts with будет касаться только элементов, начинающихся с этого значения.

Другими словами, Query() всегда требует использования индекса, либо таблицы с составным первичным ключом, либо локального / глобального вторичного индекса.

Scan() это тот, от которого нужно держаться подальше, каждая запись в таблице должна быть прочитана.

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

Возможно, в противном случае вашему клиенту придется разделить ключ сортировки для каждой записи. Дополнительное пространство, необходимое для двойного значения, не имеет большого значения.

...