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