Выражения фильтров DynamoDB: все, что вам нужно знать

Vyrazenia Fil Trov Dynamodb Vse Cto Vam Nuzno Znat



Выражения фильтра используются в функции No-SQL DynamoDB, как и предложения WHERE, распространенные в базах данных SQL. Однако, поскольку DynamoDB является базой данных No-SQL, выражения фильтра ведут себя совершенно иначе, чем предложения WHERE из-за природы и структуры баз данных No-SQL.

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

Что такое выражения фильтра?

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







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



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



Кроме того, как и в случае с обычными операциями запроса, ограничение данных в 1 МБ для операций запроса происходит до оценки операции выражения фильтра. Вы можете использовать эту операцию для уменьшения полезной нагрузки, поиска определенных элементов и повышения простоты и удобочитаемости во время разработки приложения.





Синтаксис выражения фильтра и примеры

Примечательно, что и выражения фильтра, и ключевые выражения используют один и тот же синтаксис. Кроме того, выражения фильтра и выражения условия также могут использовать одни и те же функции, компараторы и логические операторы.

Другие операторы, которые могут использовать фильтрацию выражений, также включают оператор CONTAINS, оператор OR, оператор not-equals (), оператор IN, оператор BETWEEN, оператор BEGINS_WITH, оператор SIZE и оператор EXISTS.



Пример 1. Запросы с использованием AWS CLI и первичных ключей DynamoDB

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

Вы можете указать количество просмотров (#v) в команде. Например, мы помечаем наш минимальный предел 1000 просмотров, чтобы подразумевать, что будут возвращены только результаты для песен с более чем 1000 просмотров.

$ запрос aws dynamodb \
--имя-таблицы Музыка \
--key-условие-выражение «Жанр = :fn и исполнитель = :sub» \
--фильтр-выражение '#v >= :число(1000)' \
--expression-атрибуты-имена '{'#v': 'Просмотры'}' \
--значения-атрибутов-выражений файл: // значения.json

Пример 2. Использование интерфейса командной строки AWS с выражением условия

Мы можем реструктурировать тот же запрос, что и в предыдущем примере, но теперь с ключами условий вместе с нашими фильтрами. Он не включает ключ сортировки. Вместо этого он извлекает все записи для указанного исполнителя с более чем 1000 просмотров. Его также можно реконструировать для предоставления заказов выше заданного числа для определенного имени пользователя (customer_id).

$ запрос aws dynamodb \
--имя-таблицы Музыка \
--key-условие-выражение 'Имя пользователя = :имя пользователя' \
--фильтр-выражение 'Сумма > :сумма' \
--значения-атрибутов-выражений '{
':username': { 'S': 'исполнитель' },
': сумма': { 'N': '1000' }
}'
\
$ МЕСТНЫЙ

Пример результата выглядит так:

На приведенном рисунке видно, что из 56 названий песен одного и того же исполнителя только семь песен набрали более 1000 просмотров. Мы, однако, урезали рисунок для краткости и включили в список только первый и последний результаты.

Пример 3: Использование выражений фильтра с оператором No-Equal ()

В следующей утилите Java мы хотим запросить нашу таблицу (Movie Collection) для всех фильмов, которые не равны «Movie X». Убедитесь, что вы используете выражение фильтра с атрибутом (#name) вместе со значением атрибута выражения (:name), как показано ниже:

константа AWS = требуется ( 'AWS-SDK' ) ;
AWS.config.update ( { область: 'ЕС-запад-1' } ) ;
const dynamodb = новый AWS.DynamoDB.DocumentClient ( ) ;

переменные параметры = {
 Название таблицы: 'коллекция фильмов' ,
KeyConditionExpression: '#ПК = :ПК' ,
Выражение фильтра: '#имя :имя' , ( выражение фильтра )
ИмяАтрибутаВыражения: { '#ПК' : 'ПК' , '#имя' : 'имя' } , ( выражение условия )
значения ExpressionAttributeValues: {
':ПК' : 'ОгейхХрдРС453ХГД4Хт44' ,
':имя' : 'Фильм Х'
}
} ;

dynamodb.query ( параметры, функция ( ошибка, данные ) {
если ( ошибаться ) console.log ( ошибаться ) ;
еще console.log ( данные ) ;
} ) ;

Пример 4: Использование выражений фильтра с оператором сканирования

В то время как предыдущая команда использует <> для получения только тех элементов, которые не равны названию фильма под названием Movie X, убедитесь, что вы используете ключевые выражения условия вместе с выражением фильтра. Это связано с тем, что невозможно отфильтровать данные в операторе запроса без использования ключевого выражения условия.

переменные параметры = {
ИмяТаблицы: 'коллекция фильмов' ,
Выражение фильтра: 'ПК = :ПК и #имя :имя' ,
ИмяАтрибутаВыражения: { '#имя' : 'имя' } ,
значения ExpressionAttributeValues: {
':ПК' : 'ОгейхХрдРС453ХГД4Хт44' ,
':имя' : 'Фильм Х'
}
} ;

dynamodb.scan ( параметры, функция ( ошибка, данные ) {
если ( ошибаться ) console.log ( ошибаться ) ;
еще console.log ( данные ) ;
} ) ;

Заключение

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