В моей практике многим блестящим приложениям требуется доступ к базе данных Postgresql, установленной на хосте. Я использую пакет пула для получения пула подключений Postgresql и устанавливаю его на глобальную переменную, совместно используемую для других приложений. Но каждое новое приложение-триггер пользователя будет получать новое соединение Postgresql. Я боюсь, что Postgresql выйдет из строя, когда слишком много одновременных пользователей будут использовать блестящие приложения. Есть ли какое-нибудь решение для этого сценария?
введение пакета пула как нижеуказанный URL. https://shiny.rstudio.com/articles/pool-basics.html
Один эксперт посоветовал мне использовать pqbouncer, но я не знаю, как реализовать в ShinyProxy какие-либо советы или решения?
Большое спасибо.
Если Shinyproxy будет поддерживать пул подключений к базе данных (например, postgresql, mysql и т. Д.) В блестящих приложениях, это будет намного удобнее для разработчиков. Является ли это возможным?
Я не думаю, что есть собственный способ сделать это. Но обходных путей много. Одно из возможных простых решений - развернуть API с помощью сантехника.
спасибо @shrektan , попробую
Я устанавливаю pgbouncer и настраиваю блестящее подключение к службе pgbouncer, это решает проблему. Большое спасибо
Привет, @chienyuchuan, рад слышать, что ты нашел решение!
Поэтому сейчас закрываю этот вопрос.
Не стесняйтесь открывать новый выпуск, если у вас возникнут проблемы с ShinyProxy!
Я устанавливаю pgbouncer и настраиваю блестящее подключение к службе pgbouncer, это решает проблему. Большое спасибо
@chienyuchuan Привет! Подскажите, какой пакет R вы используете для соединения с pgbouncer?
А мой, пожалуйста, поделитесь примером строкового подключения?
Я устанавливаю pgbouncer и настраиваю блестящее подключение к службе pgbouncer, это решает проблему. Большое спасибо
@chienyuchuan Привет! Подскажите, какой пакет R вы используете для соединения с pgbouncer?
А мой, пожалуйста, поделитесь примером строкового подключения?
Уважаемый @ kuzmenkov111 , я все еще использую пакет shiny pool, но подключаюсь к pgbouncer.
После того, как вы отредактируете /etc/pgbouncer/pgbouncer.ini, введя раздел [базы данных], вы можете написать программу R, подключающуюся к имени базы данных и порту раздела [базы данных] с пакетом пула.
Вот вам какой-то справочный сайт, надеюсь, вы сможете извлечь из него уроки ...
PgBouncer + Ubuntu 18.04
https://www.willandskill.se/en/how-to-setup-pgbouncer-on-ubuntu/
Пул соединений PostgreSQL с помощью PgBouncer
https://pgdash.io/blog/pgbouncer-connection-pool.html
Использование пакета pool (основы)
https://shiny.rstudio.com/articles/pool-basics.html
Просто добавь мои два цента.
На самом деле я развернул несколько похожих сервисов, но с использованием API-интерфейса Plumber, как я прокомментировал выше.
Это немного сложнее, и вам нужно написать функцию-оболочку, чтобы ее использовать. Но он позволяет подключать несколько разных баз данных и не ограничивается PostgreSQL.
Как я это делаю:
httr
для использования развернутого API-интерфейса Plumber. Эта функция-оболочка будет использовать метод HTTP для получения данных запроса SQL из API или сообщений об ошибках, если таковые имеются. Вы можете распространять функцию-оболочку с помощью простого сценария R или внутреннего пакета R.Я лично предпочитаю этот метод, поскольку я почти всегда использую оболочку для получения данных SQL (потому что мне нужно подключаться к нескольким различным базам данных, и правильно обрабатывать тип данных encoding / timezone / date-datatype не так просто).
Надеюсь, это будет полезно для тех, кто сталкивается с подобными случаями, как я.
Самый полезный комментарий
Просто добавь мои два цента.
На самом деле я развернул несколько похожих сервисов, но с использованием API-интерфейса Plumber, как я прокомментировал выше.
Это немного сложнее, и вам нужно написать функцию-оболочку, чтобы ее использовать. Но он позволяет подключать несколько разных баз данных и не ограничивается PostgreSQL.
Как я это делаю:
httr
для использования развернутого API-интерфейса Plumber. Эта функция-оболочка будет использовать метод HTTP для получения данных запроса SQL из API или сообщений об ошибках, если таковые имеются. Вы можете распространять функцию-оболочку с помощью простого сценария R или внутреннего пакета R.Я лично предпочитаю этот метод, поскольку я почти всегда использую оболочку для получения данных SQL (потому что мне нужно подключаться к нескольким различным базам данных, и правильно обрабатывать тип данных encoding / timezone / date-datatype не так просто).
Надеюсь, это будет полезно для тех, кто сталкивается с подобными случаями, как я.