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

يقوم Firebase بفواتير مقابل البيانات التي تخزنها في قاعدة البيانات وجميع حركة بيانات الشبكة الصادرة في طبقة الجلسة (الطبقة 5) في نموذج OSI. يتم تحصيل رسوم مساحة التخزين بقيمة 5 دولار أمريكي لكل غيغابايت في الشهر، ويتم تقييمها يوميًا. لا تتأثر الفوترة بموقع قاعدة البيانات الخاصة بك. تتضمن حركة البيانات الصادرة نفقات الاتصال والتشفير من جميع عمليات قاعدة البيانات والبيانات التي يتم تنزيلها من خلال قراءات قاعدة البيانات. يمكن أن تؤدي كل من قراءة وكتابة قاعدة البيانات إلى تكاليف الاتصال على فاتورتك. تؤدي جميع الزيارات الواردة من قاعدة البيانات وإليها، بما في ذلك العمليات التي تم رفضها بموجب قواعد الأمان، إلى تحمُّل تكاليف قابلة للفوترة.

في ما يلي بعض الأمثلة الشائعة للزيارات التي يتم إصدار فواتير بها:

  • البيانات التي يتم تنزيلها: عندما يحصل العملاء على بيانات من قاعدة بياناتك، يفرض Firebase رسومًا على البيانات التي يتم تنزيلها. عادةً ما يشكل هذا الجزء الأكبر من تكاليف معدل نقل البيانات لديك، ولكنه ليس العامل الوحيد في فاتورتك.
  • أعباء عمل البروتوكول: من الضروري إجراء بعض الزيارات الإضافية بين الخادم والعملاء لإنشاء جلسة وصيانتها. وبناءً على البروتوكول الأساسي، قد تتضمن حركة البيانات هذه: النفقات العامة للبروتوكول في الوقت الفعلي لقاعدة بيانات Firebase في الوقت الفعلي، وحمل بروتوكول WebSocket، ونفقات رأس HTTP. وفي كل مرة يتم فيها إنشاء اتصال، تساهم هذه النفقات العامة، بالإضافة إلى أي النفقات العامة لتشفير طبقة المقابس الآمنة، في تكاليف الاتصال. وعلى الرغم من أنّ معدل نقل البيانات هذا ليس كبيرًا لطلب واحد، إلا أنّه يمكن أن يمثل جزءًا كبيرًا من فاتورتك إذا كانت أحمالك صغيرة أو كنت تجري اتصالات متكررة وقصيرة.
  • أعباء تشفير طبقة المقابس الآمنة (SSL): هناك تكلفة مرتبطة بترميز طبقة المقابس الآمنة (SSL) اللازم للاتصالات الآمنة. وفي المتوسط، تبلغ هذه التكلفة حوالي 3.5 كيلوبايت لعملية تأكيد الاتصال الأولية وحوالي عشرات البايت لرؤوس سجلات بروتوكول أمان طبقة النقل (TLS) لكل رسالة صادرة. بالنسبة إلى معظم التطبيقات، تكون هذه نسبة صغيرة من فاتورتك. ومع ذلك، يمكن أن يصبح هذا نسبة مئوية كبيرة إذا كانت حالتك الخاصة تتطلب الكثير من عمليات تأكيد الاتصال عبر طبقة المقابس الآمنة. على سبيل المثال، قد تتطلب الأجهزة التي لا تتوافق مع تذاكر جلسة بروتوكول أمان طبقة النقل (TLS) عددًا كبيرًا من عمليات تأكيد الاتصال لاتصال طبقة المقابس الآمنة (SSL).
  • بيانات وحدة تحكم Firebase: علمًا أنّ هذه البيانات لا تمثل عادةً جزءًا كبيرًا من تكاليف قاعدة البيانات في الوقت الفعلي، فإنّ Firebase يحصِّل رسومًا مقابل البيانات التي تقرأها وتكتبها من وحدة تحكُّم Firebase.

تقدير الاستخدام الذي تم إصدار فواتير به

للاطّلاع على اتصالات قاعدة البيانات الحالية في الوقت الفعلي واستخدام البيانات، اطّلِع على علامة التبويب الاستخدام في وحدة تحكُّم Firebase. يمكنك التحقّق من الاستخدام على مدار فترة الفوترة الحالية أو آخر 30 يومًا أو آخر 24 ساعة.

يعرض Firebase إحصاءات الاستخدام للمقاييس التالية:

  • الاتصالات: عدد الاتصالات المتزامنة والمفتوحة حاليًا في الوقت الفعلي بقاعدة بياناتك. ويشمل ذلك عمليات الاتصال في الوقت الفعلي التالية: WebSocket والاستطلاع الطويل والأحداث التي يرسلها خادم HTML. إنه لا يتضمن طلبات REST.
  • التخزين: يشير هذا المصطلح إلى مقدار البيانات التي يتم تخزينها في قاعدة البيانات. ولا يشمل ذلك استضافة Firebase أو البيانات المخزَّنة من خلال منتجات Firebase الأخرى.
  • عمليات التنزيل: جميع وحدات البايت التي يتم تنزيلها من قاعدة البيانات، بما في ذلك النفقات العامة للتشفير والبروتوكول.
  • التحميل: يعرض هذا الرسم البياني مقدار ما تكون من قاعدة البيانات قيد الاستخدام ومعالجة الطلبات على مدار فترة دقيقة واحدة. قد ترى مشكلات في الأداء مع اقتراب قاعدة البيانات من 100٪.

تحسين الاستخدام

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

  • استخدام حِزم SDK الأصلية: كلما أمكن ذلك، استخدِم حِزم SDK التي تتوافق مع النظام الأساسي لتطبيقك، بدلاً من REST API. تحتفظ حِزم SDK باتصالات مفتوحة، ما يقلّل من تكاليف تشفير طبقة المقابس الآمنة التي تتم إضافتها عادةً إلى واجهة برمجة تطبيقات REST.
  • التحقّق من الأخطاء: إذا كانت تكاليف معدل نقل البيانات مرتفعة بشكل غير متوقع، تأكَّد من أنّ تطبيقك لا يزامن المزيد من البيانات أو لا يزامن المزيد من البيانات أكثر مما كنت تقصد. لتحديد المشاكل، استخدِم أداة الملف الشخصي لقياس عمليات القراءة وتفعيل ميزة تسجيل تصحيح الأخطاء في حِزم تطوير البرامج (SDK) الخاصة بكل من Android وObjective-C والويب. افحص الخلفية وعمليات المزامنة في تطبيقك للتأكد من أن كل شيء يعمل على النحو المطلوب.
  • تقليل الاتصالات: حاوِل تحسين معدّل نقل البيانات للاتصال لديك، إن أمكن. قد تكون طلبات REST المتكرّرة الصغيرة أكثر تكلفة من اتصال واحد مستمر باستخدام حزمة تطوير البرامج (SDK) الأصلية. وإذا كنت تستخدم واجهة برمجة تطبيقات REST، يمكنك استخدام واجهة HTTP للحفاظ على الاتصال أو الأحداث التي يرسلها الخادم، ما يمكن أن يؤدي إلى خفض التكاليف الناتجة من عمليات تأكيد الاتصال من خلال طبقة المقابس الآمنة.
  • استخدام تذاكر جلسة بروتوكول أمان طبقة النقل (TLS): يمكنك خفض التكاليف العامة لتشفير طبقة المقابس الآمنة (SSL) عند استئناف الاتصالات عن طريق إصدار تذاكر جلسات بروتوكول أمان طبقة النقل (TLS). ويكون ذلك مفيدًا بشكل خاص إذا كنت تحتاج إلى اتصالات متكررة وآمنة بقاعدة البيانات.
  • طلبات البحث في الفهرس: تعمل فهرسة بياناتك على خفض إجمالي معدل نقل البيانات الذي تستخدمه لطلبات البحث، ما يعود بالفائدة على مضاعفة خفض التكاليف وتعزيز أداء قاعدة البيانات. استخدِم أداة الملف الشخصي للعثور على طلبات البحث غير المفهرَسة في قاعدة بياناتك.
  • تحسين المستمعين: يمكنك إضافة طلبات بحث للحدّ من البيانات التي تعرضها عمليات الاستماع واستخدام أدوات معالجة البيانات التي تنزّل تحديثات البيانات فقط، على سبيل المثال، on() بدلاً من once(). بالإضافة إلى ذلك، ضع مستمعيك بعيدًا عن المسار قدر الإمكان للحد من كمية البيانات التي يقومون بمزامنة.
  • تقليل تكاليف التخزين: يمكنك تنفيذ مهام التنظيف الدوري وتقليل أي بيانات مكررة في قاعدة البيانات.
  • استخدام القواعد: يمكنك منع أي عمليات مكلفة قد تكون غير مصرّح بها على قاعدة البيانات. على سبيل المثال، قد يؤدّي استخدام "قواعد أمان قاعدة بيانات Firebase في الوقت الفعلي" إلى تجنُّب سيناريو ينزّل فيه أحد المستخدمين الضارين قاعدة البيانات بأكملها بشكل متكرّر. اطّلِع على مزيد من المعلومات عن استخدام قواعد قاعدة بيانات Firebase في الوقت الفعلي.

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