Estoy consultando AWS Aurora (MySQL) sin servidor desde AWS Lambda usando Boto3. Quiero consultar una tabla que tiene más de 10k registros. Mi consulta puede obtener registros de más de 7k. Ahora, ¿cómo puedo paginar estos datos, a nivel de base de datos o de Lambda, para poder obtener menos datos por página y enviar ese pequeño conjunto de datos a la interfaz de usuario para que se muestre? No puedo enviar el conjunto de datos completo de 7k registros.
Aquí está mi código Python
rdsDataClient.execute_statement(resourceArn=cluster_arn, secretArn=secret_arn, database='myTestDB', sql=sqlQuery, parameters = paramSet )Conozco el LÍMITE de consulta SQL y el DESPLAZAMIENTO, pero quiero saber si hay alguna otra forma mejor de hacerlo. Por favor ayuda.
Gracias.
Sí, utilicé el enfoque de pasar el límite y el desplazamiento a sqlQuery. Aquí esta lo que hice
def lambda_handler(event, context): queryParameters = event["queryStringParameters"] search = getQueryStringElement("search", queryParameters, '') pageSize = int(getQueryStringElement("pageSize", queryParameters, 5)) page = int(getQueryStringElement("page", queryParameters, 1)) limit = pageSize offset = (pageSize * page) - pageSize sqlQuery = sqlQuery + ' LIMIT {} OFFSET {} ;'.format(limit, offset) rdsDataClient.execute_statement(resourceArn=cluster_arn, secretArn=secret_arn, database='myTestDB', sql=sqlQuery, parameters = paramSet )Esta solución funcionó perfectamente para mi caso de uso en el que solía mostrar la lista paginada de registros en la interfaz de usuario
Gracias
Creo que la mejor manera es dejar que la base de datos maneje la paginación por varias razones:
La consulta es bastante simple de escribir, solo agregue un LÍMITE y una COMPENSACIÓN como sugirió.
Los datos transferidos entre la base de datos y el servicio/lambda serán mucho menores si están paginados, lo que ahorra tiempo y dinero.
La memoria necesaria para almacenar los datos en el servicio será menor, por lo que no necesitará una lambda más robusta para realizar el cálculo.
La capacidad de respuesta del servicio/lambda será mejor como resultado de lo anterior.