Expresiones de filtro de DynamoDB: todo lo que necesita saber

Expresiones De Filtro De Dynamodb Todo Lo Que Necesita Saber



Las expresiones de filtro se usan en la función No-SQL de DynamoDB como las cláusulas WHERE que son comunes en las bases de datos SQL. Sin embargo, dado que DynamoDB es una base de datos No-SQL, las expresiones de filtro se comportan de forma muy diferente a las cláusulas WHERE debido a la naturaleza y estructura de las bases de datos No-SQL.

Este artículo se centra en las expresiones de filtro. Por lo tanto, definiremos las expresiones de filtro, explicaremos por qué y cuándo son aplicables y proporcionaremos una guía paso a paso sobre cómo usarlas a través de ejemplos relevantes.

¿Qué son las expresiones de filtro?

Las expresiones de filtro son una técnica popular para filtrar los datos en DynamoDB durante las operaciones de consulta y exploración. En DynamoDB, el modelado y la organización de datos adecuados se basan en el filtrado. Si bien la mayoría de las aplicaciones siempre tienen toneladas de datos guardados, es posible que necesite con urgencia un elemento del gran desorden.







Su capacidad para recuperar los datos correctos siempre que los necesite depende de las capacidades de filtrado de su base de datos, y aquí es donde ayudan las expresiones de filtro. Especifican los resultados dentro del elemento de consulta que desea que se le devuelvan, ya que descartan el resto de los elementos.



Puede aplicar las expresiones de filtro en los filtros del lado del servidor en los atributos del elemento después de que finalice una operación de consulta, pero antes de que el servidor le devuelva los resultados de su llamada de consulta. Esto implica que su Query todavía consume la misma cantidad de capacidad de lectura, independientemente de si usa una expresión de filtro.



Además, al igual que las operaciones de consulta ordinarias, su límite de datos de 1 MB para las operaciones de consulta ocurre antes de la evaluación de su operación de expresión de filtro. Puede usar esta operación para reducir la carga útil, buscar elementos específicos y mejorar la simplicidad y la legibilidad durante el desarrollo de la aplicación.





Sintaxis y ejemplos de expresiones de filtro

En particular, tanto las expresiones de filtro como las expresiones clave utilizan la misma sintaxis. Además, las expresiones de filtro y las expresiones de condición también pueden usar las mismas funciones, comparadores y operadores lógicos.

Los otros operadores que filtran las expresiones que se pueden usar también incluyen el operador CONTIENE, el operador OR, el operador no igual (), el operador IN, el operador BETWEEN, el operador BEGINS_WITH, el operador SIZE y el operador EXISTS.



Ejemplo 1: consulta mediante AWS CLI y claves principales de DynamoDB

Este ejemplo consulta la tabla Música para un género en particular (clave de partición) y un artista específico (clave de ordenación). La utilidad solo devuelve un resultado para los elementos que coinciden con la clave de partición particular y la clave de clasificación para las canciones con la mayor cantidad de vistas.

Puede especificar el número de vistas (#v) en el comando. Por ejemplo, etiquetamos nuestro límite mínimo de 1000 reproducciones para implicar que solo volverán los resultados de las canciones con más de 1000 reproducciones.

$ aws dynamodb consulta \
    --nombre de la tabla Música \
    --clave-condición-expresión 'Género = :fn y Artista = :sub' \
    --expresión-filtro '#v >= :num(1000)' \
    --expresión-atributo-nombres '{'#v': 'Vistas'}' \
    --expresión-valores-atributos expediente: // valores.json

Ejemplo 2: uso de AWS CLI con expresión de condición

Podemos reestructurar la misma consulta que en el ejemplo anterior pero ahora con claves de condición junto con nuestros filtros. No incluye la clave de clasificación. En su lugar, recupera todos los registros del artista especificado con más de 1000 vistas. También se puede reconstruir para proporcionar pedidos por encima de un número determinado para un nombre de usuario en particular (customer_id).

$ aws dynamodb consulta \
    --nombre de la tabla Música \
    --clave-condición-expresión 'Nombre de usuario =: nombre de usuario' \
    --expresión-filtro 'Cantidad > :cantidad' \
    --expresión-valores-atributos '{
':nombre de usuario': { 'S': 'artista' },
':cantidad': { 'N': '1000' }
    }'
\
    $LOCALES

Un ejemplo del resultado se ve así:

La ilustración dada muestra que de los 56 títulos de canciones para el mismo artista, solo siete canciones tienen más de 1,000 vistas. Sin embargo, hemos truncado la figura por razones de brevedad e incluimos solo el primero y el último resultado en la lista.

Ejemplo 3: uso de expresiones de filtro con el operador No-Equal ()

En la siguiente utilidad de Java, queremos consultar nuestra tabla (Colección de películas) para todas las películas que no sean iguales a 'Película X'. Asegúrese de utilizar una expresión de filtro con un atributo (#nombre) junto con un valor de atributo de expresión (:nombre) como se ilustra a continuación:

const AWS = requiere ( 'aws-sdk' ) ;
AWS.config.update ( { región: 'eu-oeste-1' } ) ;
const dynamodb = new AWS.DynamoDB.DocumentClient ( ) ;

var parámetros = {
Nombre de la tabla: 'colección de películas' ,
Expresión de condición clave: '#PK = :PK' ,
Expresión de filtro: '#nombre nombre' , ( expresión de filtro )
Nombres de atributos de expresión: { '#PAQUETE' : 'PAQUETE' , '#nombre' : 'nombre' } , ( expresión de condición )
Valores de atributo de expresión: {
        ':PAQUETE' : 'OgejhHrdRS453HGD4Ht44' ,
        ':nombre' : 'Película X'
    }
} ;

dynamodb.consulta ( parámetros, función ( error, datos ) {
    si ( errar ) consola.log ( errar ) ;
    más consola.log ( datos ) ;
} ) ;

Ejemplo 4: uso de expresiones de filtro con el operador de escaneo

Mientras que el comando anterior usa <> para obtener solo aquellos elementos que no son iguales al nombre de la película llamada Película X, asegúrese de usar las expresiones de condición clave aquí junto con la expresión de filtro. Esto se debe a que es imposible filtrar los datos en el operador Consulta sin usar una expresión de condición clave.

var parámetros = {
Nombre de la tabla: 'colección de películas' ,
Expresión de filtro: 'PK = :PK y #nombre :nombre' ,
Nombres de atributos de expresión: { '#nombre' : 'nombre' } ,
Valores de atributo de expresión: {
        ':PAQUETE' : 'OgejhHrdRS453HGD4Ht44' ,
        ':nombre' : 'Película X'
}
} ;

dynamodb.scan ( parámetros, función ( error, datos ) {
    si ( errar ) consola.log ( errar ) ;
    más consola.log ( datos ) ;
} ) ;

Conclusión

Ese es el final de nuestro tutorial de DynamoDB sobre expresiones de filtro. Puede usar las expresiones de filtro para recuperar un conjunto de datos preferidos, filtrar los datos recuperados después de una exploración o consulta, o devolver un conjunto de datos a un cliente. Si bien es aplicable con una variedad de herramientas, hay instancias en las que el uso de las expresiones de filtro no es viable. Por ejemplo, solo puede usarlos si tiene un modelo de datos adecuado, cuando usa una clave principal y cuando extrae grandes porciones de datos.