Shinyproxy: Как разделить пул соединений с базой данных между блестящими приложениями под ShinyProxy

Созданный на 1 окт. 2020  ·  8Комментарии  ·  Источник: openanalytics/shinyproxy

В моей практике многим блестящим приложениям требуется доступ к базе данных Postgresql, установленной на хосте. Я использую пакет пула для получения пула подключений Postgresql и устанавливаю его на глобальную переменную, совместно используемую для других приложений. Но каждое новое приложение-триггер пользователя будет получать новое соединение Postgresql. Я боюсь, что Postgresql выйдет из строя, когда слишком много одновременных пользователей будут использовать блестящие приложения. Есть ли какое-нибудь решение для этого сценария?

введение пакета пула как нижеуказанный URL. https://shiny.rstudio.com/articles/pool-basics.html

Один эксперт посоветовал мне использовать pqbouncer, но я не знаю, как реализовать в ShinyProxy какие-либо советы или решения?

Большое спасибо.

question

Самый полезный комментарий

Просто добавь мои два цента.

На самом деле я развернул несколько похожих сервисов, но с использованием API-интерфейса Plumber, как я прокомментировал выше.

Это немного сложнее, и вам нужно написать функцию-оболочку, чтобы ее использовать. Но он позволяет подключать несколько разных баз данных и не ограничивается PostgreSQL.

Как я это делаю:

  1. Сервер: настройте службу создания докеров, которая запускает API-интерфейс сантехника. API водопроводчика получает SQL и выдает R data.frame. Все данные сериализуются как объекты R (вместо JSON), чтобы упростить обработку угловых случаев. Кроме того, сериализация объектов R позволяет возвращать ошибку R или сообщения, если таковые имеются.
  2. Клиент: напишите функцию-оболочку, чтобы использовать httr для использования развернутого API-интерфейса Plumber. Эта функция-оболочка будет использовать метод HTTP для получения данных запроса SQL из API или сообщений об ошибках, если таковые имеются. Вы можете распространять функцию-оболочку с помощью простого сценария R или внутреннего пакета R.

Я лично предпочитаю этот метод, поскольку я почти всегда использую оболочку для получения данных SQL (потому что мне нужно подключаться к нескольким различным базам данных, и правильно обрабатывать тип данных encoding / timezone / date-datatype не так просто).

Надеюсь, это будет полезно для тех, кто сталкивается с подобными случаями, как я.

Все 8 Комментарий

Если 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.

Как я это делаю:

  1. Сервер: настройте службу создания докеров, которая запускает API-интерфейс сантехника. API водопроводчика получает SQL и выдает R data.frame. Все данные сериализуются как объекты R (вместо JSON), чтобы упростить обработку угловых случаев. Кроме того, сериализация объектов R позволяет возвращать ошибку R или сообщения, если таковые имеются.
  2. Клиент: напишите функцию-оболочку, чтобы использовать httr для использования развернутого API-интерфейса Plumber. Эта функция-оболочка будет использовать метод HTTP для получения данных запроса SQL из API или сообщений об ошибках, если таковые имеются. Вы можете распространять функцию-оболочку с помощью простого сценария R или внутреннего пакета R.

Я лично предпочитаю этот метод, поскольку я почти всегда использую оболочку для получения данных SQL (потому что мне нужно подключаться к нескольким различным базам данных, и правильно обрабатывать тип данных encoding / timezone / date-datatype не так просто).

Надеюсь, это будет полезно для тех, кто сталкивается с подобными случаями, как я.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги