En mi práctica, muchas aplicaciones brillantes necesitan acceder a Postgresql DB que se instaló en el host. Utilizo el paquete de grupo para obtener el grupo de conexiones de Postgresql y lo configuro en una variable global compartida para otras aplicaciones. Pero cada nueva aplicación de activación de usuario, obtendría una nueva conexión de Postgresql. Me temo que Postgresql colapsaría cuando demasiados usuarios simultáneos usen aplicaciones brillantes. ¿Hay alguna solución para este secenario?
introducción del paquete de grupo como la siguiente URL. https://shiny.rstudio.com/articles/pool-basics.html
Un experto me aconseja usar pqbouncer, pero no sé cómo implementarlo en ShinyProxy, ¿algún consejo o solución?
Muchas gracias.
Si Shinyproxy fuera compatible con el grupo de conexiones de la base de datos (por ejemplo, postgresql, mysql, etc.) en aplicaciones brillantes, sería mucho más conveniente para los desarrolladores. ¿Es posible?
No creo que haya una forma nativa de hacer esto. Pero las soluciones alternativas son muchas. Una posible solución alternativa es implementar una API mediante un plomero.
gracias a @shrektan , lo intentaré más tarde.
Instalo pgbouncer y configuro la conexión brillante al servicio pgbouncer, resuelve el problema. Muchas gracias
Hola @chienyuchuan, feliz de saber que encontraste una solución.
Por lo tanto, estoy cerrando este tema ahora.
¡No dude en abrir un nuevo número si encuentra algún problema con ShinyProxy!
Instalo pgbouncer y configuro la conexión brillante al servicio pgbouncer, resuelve el problema. Muchas gracias
@chienyuchuan ¡Hola! ¿Puede decirme qué paquete R usa para la conexión con pgbouncer?
¿Y por favor, comparte un ejemplo de una conexión de cadena?
Instalo pgbouncer y configuro la conexión brillante al servicio pgbouncer, resuelve el problema. Muchas gracias
@chienyuchuan ¡Hola! ¿Puede decirme qué paquete R usa para la conexión con pgbouncer?
¿Y por favor, comparte un ejemplo de una conexión de cadena?
Estimado @ kuzmenkov111 , sigo usando el paquete shiny pool, pero me conecto a pgbouncer.
Después de editar /etc/pgbouncer/pgbouncer.ini, ingresando la sección [bases de datos], puede escribir el programa R que se conecta al nombre de la base de datos y al puerto de la sección [bases de datos] con el paquete de grupo.
Aquí hay un sitio de referencia para usted, espero que pueda aprender de él ...
PgBouncer + Ubuntu 18.04
https://www.willandskill.se/en/how-to-setup-pgbouncer-on-ubuntu/
Agrupación de conexiones de PostgreSQL con PgBouncer
https://pgdash.io/blog/pgbouncer-connection-pool.html
Usar el paquete de piscina (conceptos básicos)
https://shiny.rstudio.com/articles/pool-basics.html
Solo agregue mis dos centavos.
De hecho, implementé servicios algo similares pero usando la API de plomero, como comenté anteriormente.
Es un poco más complicado y tienes que escribir una función contenedora para usarlo. Pero permite conectar múltiples bases de datos diferentes y no se limita a PostgreSQL.
La forma en que lo estoy haciendo:
httr
para usar la API de plomero implementada. Esta función contenedora utilizará el método HTTP para obtener los datos de consulta SQL de la API o los mensajes de error, si los hubiera. Puede distribuir la función de contenedor a través de un script R simple o un paquete R interno.Personalmente, prefiero este método, ya que casi siempre uso un contenedor para obtener datos SQL (porque necesito conectarme a varias bases de datos diferentes y manejar correctamente la codificación / zona horaria / tipo de datos de fecha no es tan fácil).
Espero que esto sea útil para cualquiera que se enfrente a casos similares como yo.
Comentario más útil
Solo agregue mis dos centavos.
De hecho, implementé servicios algo similares pero usando la API de plomero, como comenté anteriormente.
Es un poco más complicado y tienes que escribir una función contenedora para usarlo. Pero permite conectar múltiples bases de datos diferentes y no se limita a PostgreSQL.
La forma en que lo estoy haciendo:
httr
para usar la API de plomero implementada. Esta función contenedora utilizará el método HTTP para obtener los datos de consulta SQL de la API o los mensajes de error, si los hubiera. Puede distribuir la función de contenedor a través de un script R simple o un paquete R interno.Personalmente, prefiero este método, ya que casi siempre uso un contenedor para obtener datos SQL (porque necesito conectarme a varias bases de datos diferentes y manejar correctamente la codificación / zona horaria / tipo de datos de fecha no es tan fácil).
Espero que esto sea útil para cualquiera que se enfrente a casos similares como yo.