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