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 utilizan en la función DynamodB No-SQL como donde las cláusulas que son comunes en las bases de datos SQL. Sin embargo, dado que DynamodB es una base de datos sin SQL, las expresiones de filtro se comportan de manera muy diferente a las cláusulas debido a la naturaleza y la estructura de las bases de datos sin SQL.

Este artículo se centra en las expresiones de filtro. Por lo tanto, definiremos las expresiones del 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 escaneo. En DynamoDB, el modelado de datos y la organización adecuados dependen del filtrado. Si bien la mayoría de las aplicaciones siempre tienen toneladas de datos guardados, puede necesitar urgentemente un elemento del vasto desastre.

Su capacidad para recuperar los datos correctos siempre que lo 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 le devuelvan a medida 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 recupere los resultados de su llamada de consulta. Esto implica que su consulta todavía consume la misma cantidad de capacidad de lectura, independientemente de si usa una expresión de filtro.

Además, como las operaciones de consulta ordinaria, 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 aplicaciones.

Filtro de la expresión de la expresión y ejemplos

En particular, tanto las expresiones de filtro como las expresiones clave usan 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 pueden usar también incluyen el operador Contiene, el operador OR, el operador no-igual (), el operador interno, el operador entre el operador, el operador de principios, el operador de tamaño y el operador existe.

Ejemplo 1: Consulta usando las teclas primarias de AWS CLI y DynamodB

Este ejemplo consulta la mesa de música para un género particular (clave de partición) y un artista específico (clave de clasificación). La utilidad solo trae un resultado para los elementos que coinciden con la tecla de partición particular y clasifican la tecla de 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 a 1,000 vistas para implicar que solo regresarán los resultados de las canciones con más de 1000 vistas.

$ AWS DYNAMODB QUERY \
--Música de nombre de mesa \
--Key-Condition-Expression "Género =: fn y artista =: sub" \
--Filtro-Expresión "#V> =: NUM (1000)" \
--Expression-attribute-Names '"#v": "Vistas"' \
--Expression-attribute-values ​​archivo: // 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 las teclas de condición junto con nuestros filtros. No incluye la tecla de clasificación. En cambio, recupera todos los registros del artista especificado con más de 1,000 vistas. También se puede reconstruir para proporcionar pedidos por encima de un número determinado para un nombre de usuario particular (Customer_ID).

$ AWS DYNAMODB QUERY \
--Música de nombre de mesa \
--EXPRESIÓN DE CONDICIÓN CLAVE "UserName =: UserName" \
--Filtro-Expresión "Cantidad>: Cantidad" \
--Expression-attribute-values ​​'
": nombre de usuario": "s": "artista",
": cantidad": "n": "1000"
'\
$ Local

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 visitas. Sin embargo, hemos truncado la cifra para fines de brevedad e incluimos solo el primero y los últimos resultados en la lista.

Ejemplo 3: Uso de expresiones de filtro con el operador sin igual ()

En la siguiente utilidad de Java, queremos consultar nuestra mesa (colección de películas) para todas las películas que no igualan a "Movie X". Asegúrese de usar una expresión de filtro con un atributo (#name) junto con un valor de atributo de expresión (: nombre) como se ilustra en lo siguiente:

const AWS = require ("AWS-SDK");
AWS.configuración.actualización (región: "EU-West-1");
const dynamodb = nuevo AWS.Dinamodb.DocumentClient ();
var params =
Tablename: 'Colección de películas',
KeyConditionExpression: '#pk =: PK',
FilterExpression: "#name: name", (expresión de filtro)
ExpressionAtTributeNames: "#pk": "pk", "#nombre": "nombre", (expresión de condición)
ExpressionAttributeValues:
': PK': 'OGEJHHRDRS453HGD4HT44',
': nombre': "Película x"

;
dinamodb.consulta (parámetros, function (err, data)
consola if (err).log (err);
Else consola.Dato de registro);
);

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 llamado Movie X, asegúrese de usar las expresiones de condición clave aquí junto con la expresión del filtro. Esto se debe a que es imposible filtrar los datos en el operador de consultas sin usar una expresión de condición clave.

var params =
Tablename: 'Colección de películas',
FilterExpression: "pk =: pk y #name: nombre",
ExpressionAtTributenames: "#name": "nombre",
ExpressionAttributeValues:
': PK': 'OGEJHHRDRS453HGD4HT44',
': nombre': "Película x"

;
dinamodb.escanear (parámetros, function (err, data)
consola if (err).log (err);
Else consola.Dato de registro);
);

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 un escaneo o consulta, o devolver un conjunto de datos a un cliente. Si bien es aplicable con una variedad de herramientas, hay casos en que el uso de expresiones de filtro no es viable. Por ejemplo, solo puede usarlos si tiene un modelo de datos adecuado, cuando usa una clave primaria y al extraer grandes porciones de datos.