Shinyproxy: كيفية مشاركة تجمع اتصال قاعدة البيانات بين التطبيقات اللامعة ضمن ShinyProxy

تم إنشاؤها على ١ أكتوبر ٢٠٢٠  ·  8تعليقات  ·  مصدر: openanalytics/shinyproxy

في ممارستي ، تحتاج العديد من التطبيقات اللامعة إلى الوصول إلى Postgresql DB المثبت على المضيف. أستخدم حزمة التجمع للحصول على تجمع اتصال Postgresql ، وقم بتعيينه على المتغير العام المشترك للتطبيقات الأخرى. لكن كل تطبيق مشغل جديد للمستخدم ، سيحصل على اتصال جديد بـ Postgresql. أخشى أن يتعطل Postgresql عندما يستخدم الكثير من المستخدمين المتزامنين تطبيقات لامعة. هل أي حل لهذا السيناريو؟

مقدمة حزمة التجمع كعنوان URL التالي. https://shiny.rstudio.com/articles/pool-basics.html

نصحني أحد الخبراء باستخدام pqbouncer ، لكنني لا أعرف كيفية التنفيذ في ShinyProxy ، هل هناك أي نصيحة أو حل؟

شكرا جزيلا.

question

التعليق الأكثر فائدة

فقط أضف سنتي.

لقد قمت بالفعل بنشر خدمات مشابهة إلى حد ما ولكن باستخدام Plumber API ، كما علقت أعلاه.

الأمر أكثر تعقيدًا بعض الشيء وعليك كتابة دالة غلاف لاستخدامها. ولكنه يسمح بربط عدة قواعد بيانات مختلفة ولا يقتصر على PostgreSQL.

الطريقة التي أفعل بها ذلك:

  1. الخادم: قم بإعداد خدمة إنشاء عامل ميناء تشغّل Plumber API. تتلقى واجهة برمجة تطبيقات Plumber SQL وتوفر إطار بيانات R. يتم تسلسل جميع البيانات ككائنات R (بدلاً من JSON) من أجل التعامل مع حالات الزاوية بشكل أسهل. بالإضافة إلى ذلك ، تسمح لك كائنات R التسلسلية بإرجاع خطأ R أو الرسائل إن وجدت.
  2. العميل: اكتب دالة مجمعة لاستخدام httr لاستخدام Plumber API المنشور. ستستخدم وظيفة المجمّع هذه طريقة HTTP للحصول على بيانات استعلام SQL من واجهة برمجة التطبيقات أو رسائل الخطأ إن وجدت. يمكنك توزيع وظيفة الغلاف عبر برنامج نصي بسيط R أو حزمة R داخلية.

أنا شخصياً أفضل هذه الطريقة لأنني أستخدم دائمًا غلافًا للحصول على بيانات SQL (لأنني بحاجة إلى الاتصال بقواعد بيانات مختلفة متعددة والتعامل بشكل صحيح مع الترميز / المنطقة الزمنية / نوع البيانات التاريخ ليس بهذه السهولة)

آمل أن يكون هذا مفيدًا لأي شخص يواجه حالات مماثلة مثلي.

ال 8 كومينتر

إذا كان Shinyproxy يدعم تجمع اتصال قاعدة البيانات (على سبيل المثال ، postgresql ، mysql ، إلخ) في التطبيقات اللامعة ، فسيكون ذلك أكثر ملاءمة للمطورين. هل هو ممكن؟

لا أعتقد أن هناك طريقة محلية للقيام بذلك. لكن الحلول كثيرة. أحد الحلول السهلة الممكنة هو نشر واجهة برمجة تطبيقات باستخدام سباك.

بفضل shrektan ، سأحاول ذلك

أقوم بتثبيت pgbouncer ، وقمت بضبط الاتصال اللامع بخدمة pgbouncer ، فإنه يحل المشكلة. شكرا جزيلا

مرحبًا chienyuchuan سعيد لسماع أنك وجدت حلاً!
لذلك أقوم بإغلاق هذه القضية الآن.
لا تتردد في فتح عدد جديد إذا واجهت بعض المشاكل مع ShinyProxy!

أقوم بتثبيت pgbouncer ، وقمت بضبط الاتصال اللامع بخدمة pgbouncer ، فإنه يحل المشكلة. شكرا جزيلا

تضمين التغريدة هل يمكن أن تخبرني ما هي حزمة R التي تستخدمها للاتصال بـ pgbouncer؟

ولكم من فضلك مشاركة مثال على اتصال سلسلة؟

أقوم بتثبيت pgbouncer ، وقمت بضبط الاتصال اللامع بخدمة pgbouncer ، فإنه يحل المشكلة. شكرا جزيلا

تضمين التغريدة هل يمكن أن تخبرني ما هي حزمة R التي تستخدمها للاتصال بـ pgbouncer؟

ولكم من فضلك مشاركة مثال على اتصال سلسلة؟

عزيزي @ kuzmenkov111 ، ما زلت أستخدم حزمة البلياردو اللامعة ، لكنني أتصل بـ pgbouncer.
بعد تحرير /etc/pgbouncer/pgbouncer.ini ، إدخال قسم [قواعد البيانات] ، يمكنك كتابة برنامج R متصل بـ dbname ومنفذ قسم [قواعد البيانات] مع حزمة التجمع.

إليك بعض المواقع المرجعية لك ، آمل أن تتعلم منها ...

PgBouncer + Ubuntu 18.04.2 تحديث
https://www.willandskill.se/en/how-to-setup-pgbouncer-on-ubuntu/

تجمع اتصال PostgreSQL مع PgBouncer
https://pgdash.io/blog/pgbouncer-connection-pool.html

استخدام حزمة البلياردو (الأساسيات)
https://shiny.rstudio.com/articles/pool-basics.html

فقط أضف سنتي.

لقد قمت بالفعل بنشر خدمات مشابهة إلى حد ما ولكن باستخدام Plumber API ، كما علقت أعلاه.

الأمر أكثر تعقيدًا بعض الشيء وعليك كتابة دالة غلاف لاستخدامها. ولكنه يسمح بربط عدة قواعد بيانات مختلفة ولا يقتصر على PostgreSQL.

الطريقة التي أفعل بها ذلك:

  1. الخادم: قم بإعداد خدمة إنشاء عامل ميناء تشغّل Plumber API. تتلقى واجهة برمجة تطبيقات Plumber SQL وتوفر إطار بيانات R. يتم تسلسل جميع البيانات ككائنات R (بدلاً من JSON) من أجل التعامل مع حالات الزاوية بشكل أسهل. بالإضافة إلى ذلك ، تسمح لك كائنات R التسلسلية بإرجاع خطأ R أو الرسائل إن وجدت.
  2. العميل: اكتب دالة مجمعة لاستخدام httr لاستخدام Plumber API المنشور. ستستخدم وظيفة المجمّع هذه طريقة HTTP للحصول على بيانات استعلام SQL من واجهة برمجة التطبيقات أو رسائل الخطأ إن وجدت. يمكنك توزيع وظيفة الغلاف عبر برنامج نصي بسيط R أو حزمة R داخلية.

أنا شخصياً أفضل هذه الطريقة لأنني أستخدم دائمًا غلافًا للحصول على بيانات SQL (لأنني بحاجة إلى الاتصال بقواعد بيانات مختلفة متعددة والتعامل بشكل صحيح مع الترميز / المنطقة الزمنية / نوع البيانات التاريخ ليس بهذه السهولة)

آمل أن يكون هذا مفيدًا لأي شخص يواجه حالات مماثلة مثلي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات