في ممارستي ، تحتاج العديد من التطبيقات اللامعة إلى الوصول إلى Postgresql DB المثبت على المضيف. أستخدم حزمة التجمع للحصول على تجمع اتصال Postgresql ، وقم بتعيينه على المتغير العام المشترك للتطبيقات الأخرى. لكن كل تطبيق مشغل جديد للمستخدم ، سيحصل على اتصال جديد بـ Postgresql. أخشى أن يتعطل Postgresql عندما يستخدم الكثير من المستخدمين المتزامنين تطبيقات لامعة. هل أي حل لهذا السيناريو؟
مقدمة حزمة التجمع كعنوان URL التالي. https://shiny.rstudio.com/articles/pool-basics.html
نصحني أحد الخبراء باستخدام pqbouncer ، لكنني لا أعرف كيفية التنفيذ في ShinyProxy ، هل هناك أي نصيحة أو حل؟
شكرا جزيلا.
إذا كان 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.
الطريقة التي أفعل بها ذلك:
httr
لاستخدام Plumber API المنشور. ستستخدم وظيفة المجمّع هذه طريقة HTTP للحصول على بيانات استعلام SQL من واجهة برمجة التطبيقات أو رسائل الخطأ إن وجدت. يمكنك توزيع وظيفة الغلاف عبر برنامج نصي بسيط R أو حزمة R داخلية.أنا شخصياً أفضل هذه الطريقة لأنني أستخدم دائمًا غلافًا للحصول على بيانات SQL (لأنني بحاجة إلى الاتصال بقواعد بيانات مختلفة متعددة والتعامل بشكل صحيح مع الترميز / المنطقة الزمنية / نوع البيانات التاريخ ليس بهذه السهولة)
آمل أن يكون هذا مفيدًا لأي شخص يواجه حالات مماثلة مثلي.
التعليق الأكثر فائدة
فقط أضف سنتي.
لقد قمت بالفعل بنشر خدمات مشابهة إلى حد ما ولكن باستخدام Plumber API ، كما علقت أعلاه.
الأمر أكثر تعقيدًا بعض الشيء وعليك كتابة دالة غلاف لاستخدامها. ولكنه يسمح بربط عدة قواعد بيانات مختلفة ولا يقتصر على PostgreSQL.
الطريقة التي أفعل بها ذلك:
httr
لاستخدام Plumber API المنشور. ستستخدم وظيفة المجمّع هذه طريقة HTTP للحصول على بيانات استعلام SQL من واجهة برمجة التطبيقات أو رسائل الخطأ إن وجدت. يمكنك توزيع وظيفة الغلاف عبر برنامج نصي بسيط R أو حزمة R داخلية.أنا شخصياً أفضل هذه الطريقة لأنني أستخدم دائمًا غلافًا للحصول على بيانات SQL (لأنني بحاجة إلى الاتصال بقواعد بيانات مختلفة متعددة والتعامل بشكل صحيح مع الترميز / المنطقة الزمنية / نوع البيانات التاريخ ليس بهذه السهولة)
آمل أن يكون هذا مفيدًا لأي شخص يواجه حالات مماثلة مثلي.