Shinyproxy: Cara berbagi kumpulan koneksi Database antara aplikasi mengkilap di bawah ShinyProxy

Dibuat pada 1 Okt 2020  ·  8Komentar  ·  Sumber: openanalytics/shinyproxy

Dalam praktik saya, banyak aplikasi mengkilap perlu mengakses Postgresql DB yang diinstal pada Host. Saya menggunakan paket kumpulan untuk mendapatkan kumpulan koneksi Postgresql, dan mengaturnya ke variabel global yang dibagikan untuk aplikasi lain. Tetapi setiap aplikasi pemicu pengguna baru, itu akan mendapatkan koneksi baru dari Postgresql. Saya khawatir Postgresql akan mogok ketika terlalu banyak pengguna bersamaan menggunakan aplikasi mengkilap. Apakah ada solusi untuk skenario ini?

pengenalan paket kolam renang sebagai url di bawah ini. https://shiny.rstudio.com/articles/pool-basics.html

Seorang ahli menyarankan saya untuk menggunakan pqbouncer, tetapi saya tidak tahu bagaimana menerapkannya di ShinyProxy, ada saran atau solusi?

Terima kasih banyak.

question

Komentar yang paling membantu

Tambahkan saja dua sen saya.

Saya sebenarnya menggunakan layanan yang agak mirip tetapi menggunakan Plumber API, seperti yang saya komentari di atas.

Ini sedikit lebih rumit dan Anda harus menulis fungsi pembungkus untuk menggunakannya. Tetapi memungkinkan untuk menghubungkan beberapa database yang berbeda dan tidak terbatas pada PostgreSQL.

Cara saya melakukannya:

  1. Server: Siapkan layanan penulisan buruh pelabuhan yang menjalankan API Plumber. Plumber API menerima SQL dan memberikan R data.frame. Semua data diserialkan sebagai objek R (bukan JSON) untuk menangani kasus sudut dengan lebih mudah. Selain itu, membuat serialisasi objek R memungkinkan Anda mengembalikan kesalahan R atau pesan jika ada.
  2. Klien: Tulis fungsi pembungkus untuk menggunakan httr untuk menggunakan API Tukang Ledeng yang digunakan. Fungsi pembungkus ini akan menggunakan metode HTTP untuk mendapatkan data kueri SQL dari API atau pesan kesalahan jika ada. Anda dapat mendistribusikan fungsi pembungkus melalui skrip R sederhana atau paket R internal.

Saya pribadi lebih suka metode ini karena saya hampir selalu menggunakan pembungkus untuk mendapatkan data SQL (karena saya perlu terhubung ke beberapa database yang berbeda dan menangani pengkodean/zona waktu/tanggal-tipe data dengan benar tidak semudah itu).

Saya harap ini bermanfaat bagi siapa pun yang menghadapi kasus serupa seperti saya.

Semua 8 komentar

Jika Shinyproxy akan mendukung kumpulan koneksi basis data (mis. postgresql, mysql, dll.) di aplikasi yang mengkilap, itu akan jauh lebih nyaman bagi pengembang. Apa itu mungkin?

Saya tidak berpikir ada cara asli untuk melakukan ini. Tapi solusinya banyak. Salah satu solusi mudah yang mungkin adalah menerapkan API menggunakan tukang ledeng.

terima kasih kepada @shrektan , saya akan mencobanya nanti.

Saya menginstal pgbouncer, dan mengatur koneksi mengkilap ke layanan pgbouncer, itu menyelesaikan masalah. Terima kasih banyak

Hai @chienyuchuan senang mendengar Anda menemukan solusi!
Oleh karena itu saya menutup masalah ini sekarang.
Jangan ragu untuk membuka edisi baru jika Anda mengalami masalah dengan ShinyProxy!

Saya menginstal pgbouncer, dan mengatur koneksi mengkilap ke layanan pgbouncer, itu menyelesaikan masalah. Terima kasih banyak

@chienyuchuan Hai! Bolehkah Anda memberi tahu saya paket R apa yang Anda gunakan untuk koneksi dengan pgbouncer?

Dan saya, tolong bagikan contoh koneksi string?

Saya menginstal pgbouncer, dan mengatur koneksi mengkilap ke layanan pgbouncer, itu menyelesaikan masalah. Terima kasih banyak

@chienyuchuan Hai! Bolehkah Anda memberi tahu saya paket R apa yang Anda gunakan untuk koneksi dengan pgbouncer?

Dan saya, tolong bagikan contoh koneksi string?

Dear @kuzmenkov111 , Saya masih menggunakan paket kolam mengkilap, tetapi terhubung ke pgbouncer.
Setelah Anda mengedit /etc/pgbouncer/pgbouncer.ini, memasukkan bagian [database], Anda dapat menulis program R yang menghubungkan ke dbname dan port bagian [database] dengan paket pool.

Berikut beberapa situs referensi untuk Anda, semoga Anda dapat mengambil pelajaran darinya...

PgBouncer + Ubuntu 18.04
https://www.willandskill.se/en/how-to-setup-pgbouncer-on-ubuntu/

Penyatuan Koneksi PostgreSQL dengan PgBouncer
https://pgdash.io/blog/pgbouncer-connection-pool.html

Menggunakan paket pool (dasar)
https://shiny.rstudio.com/articles/pool-basics.html

Tambahkan saja dua sen saya.

Saya sebenarnya menggunakan layanan yang agak mirip tetapi menggunakan Plumber API, seperti yang saya komentari di atas.

Ini sedikit lebih rumit dan Anda harus menulis fungsi pembungkus untuk menggunakannya. Tetapi memungkinkan untuk menghubungkan beberapa database yang berbeda dan tidak terbatas pada PostgreSQL.

Cara saya melakukannya:

  1. Server: Siapkan layanan penulisan buruh pelabuhan yang menjalankan API Plumber. Plumber API menerima SQL dan memberikan R data.frame. Semua data diserialkan sebagai objek R (bukan JSON) untuk menangani kasus sudut dengan lebih mudah. Selain itu, membuat serialisasi objek R memungkinkan Anda mengembalikan kesalahan R atau pesan jika ada.
  2. Klien: Tulis fungsi pembungkus untuk menggunakan httr untuk menggunakan API Tukang Ledeng yang digunakan. Fungsi pembungkus ini akan menggunakan metode HTTP untuk mendapatkan data kueri SQL dari API atau pesan kesalahan jika ada. Anda dapat mendistribusikan fungsi pembungkus melalui skrip R sederhana atau paket R internal.

Saya pribadi lebih suka metode ini karena saya hampir selalu menggunakan pembungkus untuk mendapatkan data SQL (karena saya perlu terhubung ke beberapa database yang berbeda dan menangani pengkodean/zona waktu/tanggal-tipe data dengan benar tidak semudah itu).

Saya harap ini bermanfaat bagi siapa pun yang menghadapi kasus serupa seperti saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat