تُحصّل Firebase رسومًا مقابل البيانات التي تخزّنها في قاعدة بياناتك وجميع ملفّات الشبكة المُرسَلة عند مستوى الجلسة (المستوى 5) من نموذج OSI. يتم تحصيل رسوم مساحة التخزين بقيمة ٥ دولار أمريكي لكل غيغابايت في الشهر، ويتم تقييمها يوميًا. لا تتأثر الفوترة بالموقع الجغرافي لقاعدة بياناتك. تشمل الزيارات الصادرة النفقات العامة للاتصال والتشفير من جميع عمليات قاعدة البيانات والبيانات التي يتم تنزيلها من خلال عمليات قراءة قاعدة البيانات. يمكن أن تؤدي كلّ من عمليات قراءة قاعدة البيانات وعمليات كتابتها إلى تحصيل رسوم اتصال في فاتورتك. تؤدي كل عمليات التنقّل من قاعدة بياناتك وإليها، بما في ذلك العمليات التي ترفضها قواعد الأمان، إلى تكاليف قابلة للفوترة.
تشمل بعض الأمثلة الشائعة للزيارات التي يتمّ تحصيل رسومها ما يلي:
- البيانات التي تم تنزيلها: عندما يحصل العملاء على بيانات من قاعدة بياناتك، تحصّل Firebase رسومًا مقابل البيانات التي تم تنزيلها. ويشكّل ذلك عادةً الجزء الأكبر من تكاليف النطاق الترددي، ولكنه ليس العامل الوحيد في فاتورتك.
- التكلفة الإضافية للبروتوكول: إنّ بعض الزيارات الإضافية بين الخادم والعملاء ضرورية لإنشاء جلسة والحفاظ عليها. استنادًا إلى الprotocolly الأساسي، قد تتضمّن هذه الزيارات: النفقات العامة لprotocolly في الوقت الفعلي في قاعدة بيانات Firebase في الوقت الفعلي، والنفقات العامة لبروتوكول WebSocket، والنفقات العامة لعنوان HTTP. في كل مرة يتم فيها إتمام اتصال، تساهم هذه التكاليف العامة، بالإضافة إلى أي تكاليف عامة لتشفير بروتوكول SSL، في تكاليف الاتصال. على الرغم من أنّ هذا المقدار ليس كبيرًا من النطاق الترددي لطلب واحد، إلا أنّه يمكن أن يشكّل جزءًا كبيرًا من فاتورتك إذا كانت حِزم البيانات صغيرة أو كنت تُجري عمليات اتصال قصيرة ومتكرّرة.
- التكلفة الإضافية لتشفير طبقة المقابس الآمنة: هناك تكلفة مرتبطة بالتكلفة الإضافية لتشفير طبقة المقابس الآمنة اللازمة للاتصالات الآمنة. في المتوسّط، تبلغ هذه التكلفة حوالي 3.5 كيلوبايت لمرحلة المصافحة الأولية، وعشرات بايت تقريبًا لرؤوس سجلّات TLS في كل رسالة خارجية. في معظم التطبيقات، يشكّل ذلك نسبة صغيرة من فاتورتك. ومع ذلك، يمكن أن تصبح هذه النسبة كبيرة إذا كانت حالتك المحدّدة تتطلّب الكثير من عمليات مصافحة طبقة المقابس الآمنة. على سبيل المثال، قد تتطلّب الأجهزة التي لا تتوافق مع تذاكر جلسات بروتوكول أمان طبقة النقل (TLS) إجراء عمليات مصافحة اتصال SSL بأعداد كبيرة.
- بيانات وحدة تحكّم Firebase: على الرغم من أنّ هذه البيانات لا تشكّل عادةً سوى جزء صغير من تكاليف Realtime Database، تفرض Firebase رسومًا مقابل البيانات التي تقرأها وتدونها من وحدة تحكّم Firebase.
تقدير الاستخدام الذي يتمّ فوترته
للاطّلاع على عمليات الاتصال الحالية واستخدام البيانات في Realtime Database، راجِع علامة التبويب الاستخدام في وحدة تحكّم Firebase. يمكنك الاطّلاع على معدل الاستخدام خلال مدة الفوترة الحالية أو آخر 30 يومًا أو آخر 24 ساعة.
تعرِض Firebase إحصاءات الاستخدام للمقاييس التالية:
- عمليات الربط: عدد عمليات الربط المتزامنة والمفتوحة حاليًا في الوقت الفعلي بقاعدة بياناتك ويشمل ذلك اتصالات الوقت الفعلي التالية: WebSocket وطلبات الاستطلاع الطويل وأحداث HTML المُرسَلة من الخادم. ولا يشمل الطلبات المستندة إلى أسلوب REST.
- مساحة التخزين: مقدار البيانات المخزّنة في قاعدة بياناتك ولا يشمل ذلك استضافة Firebase أو البيانات المخزّنة من خلال منتجات Firebase الأخرى.
- عمليات التنزيل: جميع وحدات البايت التي تم تنزيلها من قاعدة بياناتك، بما في ذلك النفقات العامة للبروتوكول والتشفير
- التحميل: يعرض هذا الرسم البياني مقدار قاعدة بياناتك المستخدَمة في معالجة الطلبات على مدار فاصل زمني محدّد مدته دقيقة واحدة. قد تلاحظ مشاكل في الأداء عندما تقترب قاعدة بياناتك من نسبة %100.
تحسين الاستخدام
هناك بعض أفضل الممارسات التي يمكنك استخدامها لتحسين استخدام قاعدة البيانات وتكاليف معدل نقل البيانات.
- استخدام حِزم SDK الأصلية: استخدِم حِزم SDK التي تتوافق مع منصّة تطبيقك كلما أمكن ذلك، بدلاً من REST API. تحافظ حِزم تطوير البرامج (SDK) على اتصالات مفتوحة، ما يقلل من تكاليف تشفير طبقة المقابس الآمنة التي تتراكم عادةً مع واجهة برمجة التطبيقات REST API.
- التحقّق من الأخطاء: إذا كانت تكاليف النطاق الترددي مرتفعة بشكل غير متوقّع، تأكَّد مما يلي: أنّ تطبيقك لا يُزامن المزيد من البيانات أو يُزامن البيانات بمعدّل أعلى مما كان مقصودًا في الأصل. لتحديد المشاكل، استخدِم أداة تحليل الأداء لقياس عمليات القراءة وتفعيل تسجيل تصحيح الأخطاء في حِزم تطوير البرامج (SDK) لأنظمة التشغيل Android و Objective-C و Web. تحقَّق من عمليات المزامنة والعمليات التي تعمل في الخلفية في تطبيقك للتأكّد من أنّه يعمل على النحو المطلوب.
- تقليل عمليات الربط: جرِّب تحسين معدل نقل بيانات اتصالك إن أمكن. يمكن أن تكون طلبات REST الصغيرة والمتكرّرة أكثر تكلفة من عملية ربط واحدة ومتواصلة باستخدام حزمة SDK الأصلية. في حال استخدام REST API، ننصح باستخدام ميزة "إبقاء الاتصال مفتوحًا" في بروتوكول HTTP أو الأحداث المُرسَلة من الخادم، التي يمكن أن تقلّل من التكاليف الناتجة عن عمليات مصافحة طبقة المقابس الآمنة.
- استخدام تذاكر جلسات بروتوكول أمان طبقة النقل (TLS): يمكنك تقليل التكاليف الإضافية لتشفير طبقة المقابس الآمنة (SSL) في اتصالات المتابعة من خلال إصدار تذاكر جلسات بروتوكول أمان طبقة النقل (TLS). ويُعدّ ذلك مفيدًا بشكل خاص إذا كنت بحاجة إلى عمليات اتصال آمنة ومتكررة بقاعدة البيانات.
- فهرسة طلبات البحث: فهرسة بياناتك تؤدي إلى تقليل إجمالي معدل نقل البيانات الذي تستخدمه لطلبات البحث، ما يحقّق لك فائدة مضاعفة، وهي خفض التكاليف وزيادة أداء قاعدة بياناتك. استخدِم أداة أداة تحليل الأداء للعثور على طلبات البحث غير المفهرَسة في قاعدة بياناتك.
- تحسين مستمعي البيانات: أضِف طلبات بحث للحد من البيانات التي تعرضها عمليات الاستماع، واستخدِم مستمعي البيانات الذين ينزِّلون تعديلات البيانات فقط، مثل
on()
بدلاً منonce()
. بالإضافة إلى ذلك، ضَع المستمعين في أقصى نقطة ممكنة من المسار لتقليل كمية البيانات التي تتم مزامنتها. - تقليل تكاليف مساحة التخزين: يمكنك تنفيذ مهام تنظيف دورية وتقليل أي بيانات تكرارية في قاعدة بياناتك.
- استخدام القواعد: يمكنك منع أي عمليات غير مصرّح بها قد تكون باهظة التكلفة على قاعدة بياناتك. على سبيل المثال، يمكن أن يؤدي استخدام Firebase Realtime Database Security Rules إلى تجنُّب سيناريو يتمثل في تنزيل مستخدم ضار لقاعدة بياناتك بالكامل بشكل متكرّر. اطّلِع على مزيد من المعلومات عن استخدام قواعد قاعدة بيانات Firebase الآنية الاستجابة.
تعتمد أفضل خطة تحسين لتطبيقك على حالة الاستخدام المحدّدة. على الرغم من أنّ هذه القائمة ليست شاملة لأفضل الممارسات، يمكنك العثور على مزيد من النصائح من خبراء Firebase على قناة Slack أو على Stack Overflow.