فهم فوترة Realtime Database

عندما يكون مشروعك ضمن خطة تسعير 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.