تحسين أداء قاعدة البيانات

هناك عدة طرق مختلفة لتحسين أداء Firebase Realtime Database في تطبيقك. لمعرفة ما يمكنك فعله لتحسين أداء قاعدة بيانات Realtime، قم بجمع البيانات من خلال أدوات مراقبة Realtime Database المختلفة، ثم قم بإجراء تغييرات على تطبيقك أو استخدام قاعدة بيانات Realtime وفقًا لذلك.

مراقبة أداء قاعدة البيانات في الوقت الحقيقي

يمكنك جمع بيانات حول أداء قاعدة بيانات Realtime من خلال بعض الأدوات المختلفة، اعتمادًا على مستوى الدقة الذي تحتاجه:

  • نظرة عامة عالية المستوى: استخدم أداة التعريف للحصول على قائمة بالاستعلامات غير المفهرسة ونظرة عامة في الوقت الفعلي على عمليات القراءة/الكتابة.
  • تقدير الاستخدام المفوتر: استخدم مقاييس الاستخدام المتوفرة في وحدة تحكم Firebase لمعرفة استخدامك المفوتر ومقاييس الأداء عالية المستوى.
  • التنقل التفصيلي: استخدم المراقبة السحابية لإلقاء نظرة أكثر تفصيلاً على كيفية أداء قاعدة البيانات الخاصة بك بمرور الوقت.

تحسين الأداء عن طريق المقياس

بمجرد قيامك بجمع البيانات، استكشف أفضل الممارسات والاستراتيجيات التالية بناءً على مجال الأداء الذي تريد تحسينه.

استراتيجيات تحسين الأداء في لمحة سريعة
قياس وصف أفضل الممارسات
التحميل/الاستخدام قم بتحسين مقدار سعة قاعدة بياناتك المستخدمة لمعالجة الطلبات في أي وقت محدد (وهو ما ينعكس في مقاييس **تحميل** أو **io/database_load**). تحسين بنية البيانات الخاصة بك
تقسيم البيانات عبر قواعد البيانات
تحسين كفاءة المستمع
الحد من التنزيلات باستخدام القواعد المستندة إلى الاستعلام
تحسين الاتصالات
اتصالات نشطة قم بموازنة عدد الاتصالات المتزامنة والنشطة بقاعدة البيانات الخاصة بك لتظل أقل من حد 200000 اتصال. تقسيم البيانات عبر قواعد البيانات
تقليل الاتصالات الجديدة
عرض النطاق الترددي الصادر إذا كانت التنزيلات من قاعدة بياناتك تبدو أعلى مما تريد، فيمكنك تحسين كفاءة عمليات القراءة وتقليل حمل التشفير. تحسين الاتصالات
تحسين بنية البيانات الخاصة بك
الحد من التنزيلات باستخدام القواعد المستندة إلى الاستعلام
إعادة استخدام جلسات SSL
تحسين كفاءة المستمع
تقييد الوصول إلى البيانات
تخزين تأكد من عدم تخزين البيانات غير المستخدمة، أو موازنة بياناتك المخزنة عبر قواعد بيانات أخرى و/أو منتجات Firebase لتظل ضمن الحصة النسبية. تنظيف البيانات غير المستخدمة
تحسين بنية البيانات الخاصة بك
تقسيم البيانات عبر قواعد البيانات
استخدم التخزين السحابي لـ Firebase

تحسين الاتصالات

لا تزال طلبات RESTful مثل GET و PUT تتطلب اتصالاً، على الرغم من أن هذا الاتصال قصير الأجل. يمكن لهذه الاتصالات المتكررة قصيرة العمر أن تضيف في الواقع تكاليف اتصال وتحميل قاعدة البيانات وعرض النطاق الترددي الصادر أكبر بكثير من الاتصالات النشطة في الوقت الحقيقي بقاعدة البيانات الخاصة بك.

كلما أمكن، استخدم حزم SDK الأصلية للنظام الأساسي لتطبيقك، بدلاً من REST API. تحافظ مجموعات SDK على اتصالات مفتوحة، مما يقلل من تكاليف تشفير SSL وتحميل قاعدة البيانات التي يمكن إضافتها مع REST API.

إذا كنت تستخدم REST API، ففكر في استخدام HTTP keep-alive للحفاظ على اتصال مفتوح أو استخدام الأحداث المرسلة من الخادم ، والتي يمكن أن تقلل التكاليف من مصافحات SSL.

تقسيم البيانات عبر قواعد بيانات متعددة

يوفر تقسيم بياناتك عبر مثيلات قاعدة بيانات Realtime المتعددة، والمعروف باسم تقسيم قاعدة البيانات، ثلاث فوائد:

  1. يمكنك زيادة إجمالي الاتصالات النشطة والمتزامنة المسموح بها في تطبيقك عن طريق تقسيمها عبر مثيلات قاعدة البيانات.
  2. تحميل التوازن عبر مثيلات قاعدة البيانات.
  3. إذا كان لديك مجموعات مستقلة من المستخدمين الذين يحتاجون فقط إلى الوصول إلى مجموعات البيانات المنفصلة، ​​فاستخدم مثيلات قاعدة بيانات مختلفة لزيادة الإنتاجية ووقت استجابة أقل.

إذا كنت مشتركًا في خطة تسعير Blaze ، فيمكنك إنشاء مثيلات قاعدة بيانات متعددة ضمن مشروع Firebase نفسه، مع الاستفادة من طريقة مصادقة المستخدم الشائعة عبر مثيلات قاعدة البيانات.

تعرف على المزيد حول كيفية ووقت تقسيم البيانات .

بناء هياكل بيانات فعالة

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

على وجه الخصوص، ضع في اعتبارك عمليات الكتابة والحذف عند تنظيم بياناتك. على سبيل المثال، من المحتمل أن يكون حذف المسارات التي تحتوي على آلاف الأوراق مكلفًا. يمكن أن يؤدي تقسيمها إلى مسارات ذات أشجار فرعية متعددة وعدد أقل من الأوراق لكل عقدة إلى تسريع عمليات الحذف.

بالإضافة إلى ذلك، يمكن أن تستهلك كل عملية كتابة 0.1% من إجمالي استخدام قاعدة البيانات لديك. قم ببناء بياناتك بطريقة تسمح لك بكتابة دفعة واحدة في عملية واحدة كتحديثات متعددة المسارات من خلال أساليب update() في مجموعات SDK أو طلبات RESTful PATCH .

لتحسين بنية البيانات وتحسين الأداء، اتبع أفضل الممارسات الخاصة بهياكل البيانات .

منع الوصول غير المصرح به

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

تعرف على المزيد حول استخدام قواعد قاعدة بيانات Firebase Realtime .

استخدم القواعد المستندة إلى الاستعلام للحد من التنزيلات

تعمل قواعد أمان قاعدة البيانات في الوقت الفعلي على تقييد الوصول إلى البيانات الموجودة في قاعدة البيانات الخاصة بك، ولكنها يمكن أيضًا أن تكون بمثابة حدود للبيانات التي يتم إرجاعها من خلال عمليات القراءة. عند استخدام القواعد المستندة إلى الاستعلام، كما هو محدد بواسطة query. تعبيرات مثل query.limitToFirst ، تقوم الاستعلامات فقط باسترداد البيانات المحددة بالقاعدة.

على سبيل المثال، تحدد القاعدة التالية إمكانية الوصول للقراءة فقط إلى أول 1000 نتيجة للاستعلام، حسب الترتيب حسب الأولوية:

messages: {
  ".read": "query.orderByKey &&
            query.limitToFirst <= 1000"
}

// Example query:
db.ref("messages").limitToFirst(1000)
                  .orderByKey("value")

تعرف على المزيد حول قواعد أمان قاعدة البيانات في الوقت الفعلي .

استعلامات الفهرس

تعمل فهرسة بياناتك على تقليل إجمالي النطاق الترددي الذي تستخدمه لكل استعلام يقوم تطبيقك بتشغيله.

إعادة استخدام جلسات SSL

يمكنك تقليل التكاليف العامة لتشفير SSL على الاتصالات المستأنفة عن طريق إصدار تذاكر جلسة TLS . يعد هذا مفيدًا بشكل خاص إذا كنت تحتاج إلى اتصالات متكررة وآمنة بقاعدة البيانات.

تحسين كفاءة المستمع

ضع مستمعيك في أقصى المسار قدر الإمكان للحد من كمية البيانات التي يقومون بمزامنتها. يجب أن يكون مستمعيك قريبين من البيانات التي تريدهم أن يحصلوا عليها. لا تستمع إلى جذر قاعدة البيانات، حيث يؤدي ذلك إلى تنزيل قاعدة البيانات بأكملها.

أضف استعلامات للحد من البيانات التي ترجعها عمليات الاستماع الخاصة بك واستخدم المستمعين الذين يقومون فقط بتنزيل التحديثات على البيانات - على سبيل المثال، on() بدلاً من once() . احجز .once() ‎ للإجراءات التي لا تتطلب تحديثات البيانات حقًا. بالإضافة إلى ذلك، قم بفرز استعلاماتك باستخدام orderByKey() ، كلما أمكن ذلك، للحصول على أفضل أداء. يمكن أن يكون الفرز باستخدام orderByChild() أبطأ بمقدار 6-8 مرات، ويمكن أن يكون الفرز باستخدام orderByValue() بطيئًا جدًا لمجموعات البيانات الكبيرة، لأنه يتطلب قراءة الموقع بالكامل من طبقة الثبات.

تأكد أيضًا من إضافة المستمعين ديناميكيًا، وإزالتهم عندما لا يعودون ضروريين.

تنظيف البيانات غير المستخدمة

قم بشكل دوري بإزالة أي بيانات غير مستخدمة أو مكررة في قاعدة البيانات الخاصة بك. يمكنك تشغيل النسخ الاحتياطية لفحص بياناتك يدويًا أو نسخها احتياطيًا بشكل دوري إلى مجموعة Google Cloud Storage. ضع في اعتبارك أيضًا استضافة البيانات المخزنة من خلال Cloud Storage for Firebase .

شحن رمز قابل للتطوير يمكنك تحديثه

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