إدارة البيانات

يتناول هذا المستند كيفية إدارة الأنواع المختلفة من البيانات وقواعد البيانات المرتبطة بعميل واجهة API الخاصة بتطبيق WhatsApp للأعمال.

وحدات التخزين

تمثل وحدات التخزين الآلية المفضلة للبيانات الدائمة التي أنشأتها حاويات Docker واستخدمتها. ويطلب عميل واجهة API الخاصة بتطبيق WhatsApp للأعمال توفير وحدة تخزين وسائط واحدة لحاوية Docker. وسيتم إنشاء وحدة التخزين هذه تلقائيًا عند تشغيل أوامر docker-compose أثناء عملية التثبيت.

تدعم وحدات التخزين في حاوية Docker إمكانية تخزين وحدات على أجهزة المضيف البعيدة أو موفري الخدمات السحابية. ويمكنك إعداد وحدة تخزين الوسائط على أي حل متوفر حاليًا لمشاركة الملفات بمراكز البيانات. كما يجب عليك أن تحرص على إمكانية الوصول للقراءة/الكتابة في جميع حاويات Webapp وCoreapp. ولعرض المسار إلى وحدة التخزين أو تعديله، قم بتعديل الملف docker-compose.yml.

الاسمالوصف

وحدة تخزين الوسائط

  • يمكن تخزين ملفات الوسائط الواردة والصادرة
  • يمكن التثبيت ضمن الحاويات حسب الإعداد الافتراضي في /usr/local/wamedia/

متغيرات البيئة

يمكن لعميل واجهة API الخاصة بتطبيق WhatsApp للأعمال استخدام MySQL أو PostgreSQL لتخزين البيانات.

يمكنك تكوين إعدادات قاعدة البيانات من خلال تعيين متغيرات البيئة التالية في الملف db.env عند تثبيت عميل واجهة API الخاصة بتطبيق WhatsApp للأعمال. وسيتم استخدام متغيرات البيئة هذه بواسطة Coreapp وWebapp عند الاتصال بقاعدة البيانات.

إعداد قاعدة البيانات متغير البيئة

database_engine

WA_DB_ENGINE

hostname

WA_DB_HOSTNAME

port

WA_DB_PORT

username

WA_DB_USERNAME

password

WA_DB_PASSWORD

database_name_prefix

WA_DB_NAME_PREFIX

connection_idle_timeout

WA_DB_CONNECTION_IDLE_TIMEOUT

  • WA_DB_NAME_PREFIX — يمكن استخدامه لإدخال بادئة في جميع قواعد البيانات التي تم إنشاؤها عند تثبيت عميل واجهة API واتساب للأعمال. ويمكن استخدامه لتشغيل عدة مجموعات من قواعد بيانات واجهة API الخاصة بتطبيق WhatsApp للأعمال على مضيف قاعدة البيانات نفسه.
  • WA_DB_CONNECTION_IDLE_TIMEOUT (مدعوم بواسطة MySQL فقط) — عند إعداد متغير البيئة هذا (بالمللي ثانية) أثناء بدء تشغيل Coreapp، يمكنك تعيين مهلة وضع السكون لقاعدة بيانات MySQL لديك. وحينئذ سيغلق خادم MySQL أي اتصالات بقاعدة البيانات في وضع السكون خلال الوقت الذي تم تعيينه.

إدارة قاعدة البيانات

إليك توصيات بشأن إدارة قاعدة البيانات المرتبطة بعميل واجهة API الخاصة بتطبيق WhatsApp للأعمال.

المشكلةالتوصيات

الترقية باستخدام قاعدة بيانات كبيرة الحجم

تُعد قواعد البيانات كبيرة الحجم هي تلك التي تحتوي على أكثر من 2 مليون صف في الجدول messages.
ويمكنك استخدام التوصيات الواردة أدناه من أجل استخدام نقطة النهاية /services/message/gc أثناء إجراء الترقية للحفاظ على ثبات قاعدة البيانات.

بدايةً من الإصدار v2.29.1، سيتم تعيين المعلمة pass_through إلى القيمة false افتراضيًا مما قد يتسبب في زيادة مساحة تخزين قاعدة البيانات بالنسبة للجدول messages.

يمكنك استخدام معلمة جمع البيانات المهملة تلقائيًا لضمان تشغيل قاعدة بياناتك بشكل ثابت من خلال تنظيف قاعدة البيانات بصفة دورية. ولمزيد من المعلومات حول المعلمتين pass_through وdb_garbagecollector_enable، راجع وثائق إعدادات التطبيق.

تكوين جمع البيانات المهملة تلقائيًا

  • يتم التمكين للأنشطة التجارية التي تعمل على الترقية عند تمكين المعلمة pass_through.
  • يتم التعطيل للأنشطة التجارية التي تعمل على الترقية عند تعطيل المعلمة pass_through.
    • إذا تم تعطيل pass_through قبل إجراء الترقية، فنوصيك بتمكين جمع البيانات المهملة تلقائيًا بعد إجراء الترقية باستخدام المعلمة db_garbagecollector_enable في إعدادات التطبيق
  • بالنسبة للأنشطة التجارية التي لديها زيارات أقل من 120 استعلامًا/ثانية، يوصى بجمع البيانات المهملة القائمة على استدعاءات واجهة API باستخدام نقطة النهاية /services/message/gc.

جمع البيانات المهملة القائمة على استدعاءات واجهة API

  • يمكن تنظيف قاعدة البيانات معتمدًا على الدمج ومن الأفضل تجنبه بالنسبة لمعظم الأنشطة التجارية.
  • يوصى بأن تعمل الأنشطة التجارية التي تستخدم واجهة API الخاصة بتطبيق WhatsApp للأعمال على جمع البيانات المهملة في قاعدة البيانات:
    • يمكنك تحديد الرسائل الواردة كمقروءة قبل إجراء طلب واجهة API لتمكين عملية التنظيف الدقيقة.
    • نوصي باستخدام نقطة النهاية `/services/message/gc مرة واحدة كل 24 ساعة أثناء وقت التعطل (مثل الرسائل الصادرة بالحجم المنخفض).
    • بالنسبة لجدول messages الذي يحتوي على أكثر من 10 ملايين صف، قد تحتاج إلى تشغيل طلب واجهة API عدة مرات لضمان إرجاع إشعارات الاستدعاءات بدون ظهور أخطاء.

لمزيد من المعلومات، يمكنك الرجوع إلى وثائق الخدمات.

تدوير التسجيل

يتم حزم البرنامج النصي لتدوير التسجيل داخل حاويات Coreapp وWebapp.

Webapp

البرنامج النصي لتدوير التسجيل في حاوية Webapp:

  • يستخدم الأداة المساعدة لتدوير التسجيل،
  • يحتفظ بآخر 30 ملفًا من تسجيلات الويب والوصول والأخطاء،
  • لا يتم التدوير إلا إذا كان الحجم أكبر من 20 ميجابايت،
  • يضغط ملفات التسجيل التي تم تدويرها،
  • ويقوم بأرشفة ملفات التسجيل القديمة إلى /var/log/whatsapp/archive.

Coreapp

البرنامج النصي لتدوير التسجيل في حاوية Coreapp:

  • يستخدم برنامجًا نصيًا داخليًا،
  • يحتفظ بآخر 30 ملفًا،
  • يتم التدوير تلقائيًا إذا كان الحجم أكبر من 15 ميجابايت،
  • يضغط ملفات التسجيل التي تم تدويرها،
  • ويقوم بأرشفة ملفات التسجيل القديمة إلى /var/log/whatsapp/archive.

في Coreapp، يتم فقط إنشاء ملف تسجيل جديد عندما يتجاوز الحجم 15 ميجابايت لكل ملف تسجيل. ولا تتم إزالة ملفات التسجيل القديمة تلقائيًا.

التوصية باستخدام البرنامج النصي للتنظيف

يوصى بتنفيذ البرنامج النصي للتنظيف الموضح أدناه بشكل دوري (أي يوميًا) لإجراء تدوير التسجيل في جميع حاويات Webapp وCoreapp وMaster (في حالة إعداد وضع الاتصال المتعدد). ومن الأفضل تكوين مهمة cron بالمضيف لديك لتشغيلها على جميع حاويات واجهة API الخاصة بتطبيق WhatsApp للأعمال قيد التشغيل وتنفيذها في غير ساعات الذروة. علمًا بأن استدعاء البرنامج النصي للتنظيف بشكل دوري سيحافظ على مساحة القرص التي شغلتها ملفات التسجيل من أن تظل قيد التحكم.

docker exec your-container-name /opt/whatsapp/bin/cleanup.sh