es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo una tabla grande de SQL en la sesión de la aplicación web

Soy bastante nuevo en aplicaciones web, así que disculpen si mi pregunta es un poco básica. Estoy desarrollando una aplicación web con R shiny donde las entradas son tablas muy grandes de un servidor Azure SQL. Son 20 tablas, cada una con cientos de miles de filas y cientos de columnas que contienen números, caracteres, etc. No tengo problemas para llamarlas, mi principal problema es que lleva mucho tiempo obtener todo de Azure SQL. Aproximadamente tarda 20 minutos. Entonces el usuario de la aplicación web tiene que esperar bastante tiempo.
Estoy utilizando el paquete DBI de la siguiente manera:

db_connect <- function(database_config_name){
  dbConfig <- config::get(database_config_name)
  connection <- DBI::dbConnect(odbc::odbc(),
                        Driver = dbConfig$driver,
                        Server = dbConfig$server,
                        UID    = dbConfig$uid,
                        PWD    = dbConfig$pwd,
                        Database = dbConfig$database,
                        encoding = "latin1"
  )

  return(connection)
}

y luego obteniendo las tablas así:

connection <- db_connect(db_config_name)
tabla <- dplyr::tbl(con, dbplyr::in_schema(fetch_schema_name(db_config_name,table_name,data_source_type), fetch_table_name(db_config_name,table_name,data_source_type)))

Busqué mucho pero no encontré una buena solución, agradezco cualquier solución que pueda abordar este problema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Existen varios enfoques que pueden ayudar a optimizar el rendimiento al obtener tablas grandes de Azure SQL Server para usar en una aplicación web R shiny. Aquí hay algunas sugerencias:

    1. Optimiza la consulta: Asegúrate de que las consultas SQL utilizadas para obtener las tablas estén optimizadas para el rendimiento. Esto puede incluir el uso de índices adecuados en las tablas, filtrar los datos a nivel de base de datos y utilizar uniones adecuadas para reducir la cantidad de datos que se obtienen. Puedes utilizar SQL Server Management Studio para analizar la consulta e identificar áreas que se pueden optimizar.
    2. Utiliza el procesamiento en el lado del servidor: Una forma de reducir la cantidad de datos que se necesita transferir es utilizar el procesamiento en el lado del servidor en R shiny. Esto implica utilizar paquetes como dplyr y dbplyr para realizar manipulación y filtrado de datos directamente en la base de datos, en lugar de obtener todos los datos y luego manipularlos en R. Esto puede reducir significativamente la cantidad de datos transferidos y mejorar el rendimiento.

    3. Utiliza paginación de datos: Otro enfoque para manejar tablas grandes es obtener los datos en fragmentos más pequeños o páginas. Esto implica obtener solo un cierto número de filas a la vez y mostrarlas en la aplicación, con la opción de obtener más filas según sea necesario. Esto se puede implementar utilizando paquetes como shinydashboard y DT.

    4. Utiliza la Recuperación Acelerada de Base de Datos (ADR) de Azure SQL Database: Si tus tablas son grandes y realizas muchas actualizaciones, es posible que te beneficies de utilizar ADR. ADR es una característica en Azure SQL Database que proporciona recuperación instantánea de la base de datos para bases de datos grandes. Esto puede ayudar a reducir el tiempo necesario para realizar actualizaciones y mejorar el rendimiento en general.

    5. Considera utilizar Azure Synapse Analytics: Si tus necesidades de datos son más complejas, puedes considerar migrar tus datos a Azure Synapse Analytics. Este es un servicio de análisis basado en la nube que puede manejar grandes cantidades de datos y realizar tareas de análisis complejas. Soporta R y otros lenguajes de programación y se puede integrar con Power BI y otras herramientas de visualización de datos.

    Al implementar estas estrategias, puedes mejorar el rendimiento de tu aplicación R shiny al manejar tablas grandes en Azure SQL Server.

Comments are closed.