Expressões de filtro do DynamoDB: tudo o que você precisa saber

Expressoes De Filtro Do Dynamodb Tudo O Que Voce Precisa Saber



As expressões de filtro são usadas na função No-SQL do DynamoDB como cláusulas WHERE que são comuns em bancos de dados SQL. No entanto, como o DynamoDB é um banco de dados No-SQL, as expressões de filtro se comportam de maneira bem diferente das cláusulas WHERE devido à natureza e à estrutura dos bancos de dados No-SQL.

Este artigo se concentra nas expressões de filtro. Portanto, definiremos as expressões de filtro, explicaremos por que e quando elas são aplicáveis ​​e forneceremos um guia passo a passo sobre como usá-las por meio de exemplos relevantes.

O que são expressões de filtro?

As expressões de filtro são uma técnica popular para filtrar os dados no DynamoDB durante as operações de consulta e verificação. No DynamoDB, a modelagem e a organização de dados adequadas dependem da filtragem. Embora a maioria dos aplicativos sempre tenha toneladas de dados salvos, você pode precisar urgentemente de um item da vasta bagunça.







Sua capacidade de recuperar os dados corretos sempre que precisar depende dos recursos de filtragem de seu banco de dados, e é aí que as expressões de filtro ajudam. Eles especificam os resultados dentro do item de consulta que você deseja que retorne a você enquanto descartam o restante dos itens.



Você pode aplicar as expressões de filtro nos filtros do lado do servidor nos atributos do item após a conclusão de uma operação de consulta, mas antes que o servidor retorne os resultados de sua chamada de consulta. Isso significa que sua consulta ainda consome a mesma quantidade de capacidade de leitura, independentemente de você usar uma expressão de filtro.



Além disso, como as operações de consulta comuns, seu limite de dados de 1 MB para operações de consulta ocorre antes da avaliação de sua operação de expressão de filtro. Você pode usar essa operação para reduzir a carga útil, pesquisar itens específicos e melhorar a simplicidade e a legibilidade durante o desenvolvimento do aplicativo.





Sintaxe e exemplos de expressões de filtro

Notavelmente, tanto as expressões de filtro quanto as expressões-chave usam a mesma sintaxe. Além disso, expressões de filtro e expressões de condição também podem usar as mesmas funções, comparadores e operadores lógicos.

Os outros operadores que filtram as expressões podem usar também incluem o operador CONTAINS, o operador OR, o operador não igual a (), o operador IN, o operador BETWEEN, o operador BEGINS_WITH, o operador SIZE e o operador EXISTS.



Exemplo 1: consulta usando AWS CLI e chaves primárias do DynamoDB

Este exemplo consulta a tabela Music para um determinado gênero (chave de partição) e um artista específico (chave de classificação). O utilitário retorna apenas um resultado para os itens que correspondem à chave de partição específica e à chave de classificação para as músicas com mais visualizações.

Você pode especificar o número de visualizações (#v) no comando. Por exemplo, marcamos nosso limite mínimo como 1.000 visualizações para indicar que apenas os resultados das músicas com mais de 1.000 visualizações retornarão.

$ consulta dynamodb aws \
--Nome da tabela Música \
--expressão-chave-condição 'Gênero = :fn e Artista = :sub' \
--filter-expressão '#v >= :num(1000)' \
--expression-attribute-names '{'#v': 'Visualizações'}' \
--expressão-atributo-valores Arquivo: // valores.json

Exemplo 2: usando AWS CLI com expressão de condição

Podemos reestruturar a mesma Consulta do exemplo anterior, mas agora com chaves de condição ao lado de nossos filtros. Não inclui a chave de classificação. Em vez disso, recupera todos os registros do artista especificado com mais de 1.000 visualizações. Ele também pode ser reconstruído para fornecer pedidos acima de um determinado número para um nome de usuário específico (customer_id).

$ consulta dynamodb aws \
--Nome da tabela Música \
--expressão-chave-condição 'Nome de usuário = :nome de usuário' \
--filter-expressão 'Quantidade > :quantia' \
--expressão-atributo-valores '{
':username': { 'S': 'artista' },
':quantia': { 'N': '1000' }
}'
\
$LOCAL

Um exemplo do resultado se parece com isso:

A ilustração dada mostra que dos 56 títulos de músicas do mesmo artista, apenas sete músicas têm mais de 1.000 visualizações. No entanto, truncamos a figura para fins de brevidade e incluímos apenas o primeiro e o último resultado na lista.

Exemplo 3: usando expressões de filtro com o operador No-Equal ()

No seguinte utilitário Java, queremos consultar nossa tabela (Movie Collection) para todos os filmes que não sejam iguais a “Movie X”. Certifique-se de usar uma expressão de filtro com um atributo (#name) ao lado de um valor de atributo de expressão (:name), conforme ilustrado a seguir:

const AWS = requer ( 'aws-sdk' ) ;
AWS.config.update ( { região: 'eu-west-1' } ) ;
const dynamodb = novo AWS.DynamoDB.DocumentClient ( ) ;

var parâmetros = {
Nome da tabela: 'coleção de filmes' ,
ExpressãoCondiçãoChave: '#PK = :PK' ,
FilterExpression: '#nome nome' , ( expressão de filtro )
ExpressionAttributeNames: { '#PK' : 'PK' , '#nome' : 'nome' } , ( expressão de condição )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nome' : 'Filme X'
}
} ;

dynamodb.query ( parâmetros, função ( erro, dados ) {
E se ( errar ) console.log ( errar ) ;
outro console.log ( dados ) ;
} ) ;

Exemplo 4: usando expressões de filtro com o operador de digitalização

Enquanto o comando anterior usa <> para buscar apenas os itens que não são iguais ao nome do filme chamado Movie X, certifique-se de usar as expressões de condição chave aqui junto com a expressão de filtro. Isso ocorre porque é impossível filtrar os dados no operador Query sem usar uma expressão de condição chave.

var parâmetros = {
Nome da tabela: 'coleção de filmes' ,
FilterExpression: 'PK = :PK e #nome  :nome' ,
ExpressionAttributeNames: { '#nome' : 'nome' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nome' : 'Filme X'
}
} ;

dynamodb.scan ( parâmetros, função ( erro, dados ) {
E se ( errar ) console.log ( errar ) ;
outro console.log ( dados ) ;
} ) ;

Conclusão

Este é o fim do nosso tutorial do DynamoDB sobre expressões de filtro. Você pode usar as expressões de filtro para recuperar um conjunto de dados preferenciais, filtrar os dados recuperados após uma varredura ou consulta ou retornar um conjunto de dados para um cliente. Embora seja aplicável com uma variedade de ferramentas, há casos em que o uso das expressões de filtro não é viável. Por exemplo, você só pode usá-los se tiver um modelo de dados adequado, ao usar uma chave primária e ao extrair grandes porções de dados.