وقتی پروژهتان در طرح قیمتگذاری Spark بدون هزینه باشد، برای استفاده از Realtime Database صورتحساب دریافت نمیکنید. استفاده بدون هزینه دریافت میکنید که شامل ۱ گیگابایت فضای ذخیرهسازی داده و ۱۰ گیگابایت بارگیری داده در ماه میشود.
اگر به طرح قیمتگذاری Blaze با پرداخت به اندازه استفاده ارتقا دهید، استفاده بدون هزینه (۱ گیگابایت فضای ذخیرهسازی داده و ۱۰ گیگابایت بارگیری داده در ماه) را حفظ میکنید و اکنون برای هرگونه استفاده فراتر از این مقدار صورتحساب دریافت میکنید. وقتی پروژهتان در طرح قیمتگذاری Blaze است، توصیه میکنیم هشدارهای بودجه را برای پروژهتان راهاندازی کنید.
بقیه این صفحه صورتحساب را با جزئیات بیشتری شرح میدهد.
نحوه محاسبه صورتحساب توسط Realtime Database
Firebase برای دادههایی که در پایگاه دادهتان ذخیره میکنید و همه ترافیک شبکه برونسو در لایه نشست (لایه ۵) مدل بینااتصالی سامانههای باز صورتحساب صادر میکند. هزینه فضای ذخیرهسازی ۵ دلار برای هر گیگابایت در ماه است که بهصورت روزانه ارزیابی میشود. صدور صورتحساب تحت تأثیر مکان پایگاه داده شما قرار نمیگیرد. ترافیک خروجی شامل سربار اتصال و رمزگذاری از همه عملیات پایگاه داده و دادههای بارگیریشده ازطریق خواندن پایگاه داده است. هم خواندن و هم نوشتن پایگاه داده میتواند منجر به هزینههای اتصال در صورتحساب شما شود. همه ترافیک ورودی و خروجی پایگاه داده شما، ازجمله عملیات ردشده توسط قوانین امنیتی، منجر به هزینههای قابلپرداخت میشود.
برخیاز نمونههای رایج ترافیک صورتحسابشده عبارتاند از:
- دادههای بارگیریشده: وقتی مشتریان دادهها را از پایگاه داده شما دریافت میکنند، Firebase برای دادههای بارگیریشده هزینه دریافت میکند. معمولاً این بخش عمدهای از هزینههای پهنای باند شما را تشکیل میدهد، اما تنها عامل در صورتحساب شما نیست.
- سربار پروتکل: برای ایجاد و حفظ جلسه، مقداری ترافیک اضافی بین سرور و کارخواهها لازم است. بسته به پروتکل زیربنایی، این ترافیک ممکن است شامل این موارد باشد: سربار پروتکل همزمان «پایگاه داده همزمان Firebase»، سربار WebSocket، و سربار سرصفحه HTTP. هربار که اتصالی برقرار میشود، این سربار، بههمراه هر سربار رمزگذاری SSL، به هزینههای اتصال اضافه میشود. اگرچه این مقدار پهنای باند برای یک درخواست زیاد نیست، اما اگر بار دادههای شما کوچک باشد یا اتصالات کوتاه و مکرر برقرار کنید، میتواند بخش قابلتوجهی از صورتحساب شما را تشکیل دهد.
- سربار رمزگذاری SSL: هزینهای مرتبط با سربار رمزگذاری SSL وجود دارد که برای اتصالات امن ضروری است. بهطور میانگین، این هزینه تقریباً ۳.۵ کیلوبایت برای دستدهی اولیه و تقریباً دهها بایت برای سرصفحههای ثبت TLS در هر پیام خروجی است. برای اکثر برنامهها، این مقدار درصد کمی از صورتحساب شما است. اما اگر مورد خاص شما به دستدهیهای SSL زیادی نیاز داشته باشد، این مقدار میتواند به درصد بالایی تبدیل شود. برای مثال، دستگاههایی که از بلیتهای جلسه «امنیت لایه انتقال» پشتیبانی نمیکنند ممکن است به تعداد زیادی دستدهی اتصال SSL نیاز داشته باشند.
- دادههای کنسول Firebase: اگرچه این معمولاً بخش قابلتوجهی از هزینههای Realtime Database نیست، Firebase برای دادههایی که از کنسول Firebase میخوانید و مینویسید هزینه دریافت میکند.
تخمین مصرف صورتحسابشده
برای دیدن اتصالات Realtime Database و مصرف داده فعلیتان، برگه مصرف را در کنسول Firebase بررسی کنید. میتوانید مصرف را در دوره صورتحساب فعلی، ۳۰ روز گذشته، یا ۲۴ ساعت گذشته بررسی کنید.
Firebase آمار کاربرد را برای سنجههای زیر نشان میدهد:
- اتصالها: تعداد اتصالهای همزمان، درحالحاضر باز، و همزمان به پایگاه داده شما. این شامل اتصالات همزمان زیر است: WebSocket، نظرسنجی طولانی، و رویدادهای ارسالشده از سرور HTML. این گزارش شامل درخواستهای RESTful نمیشود.
- فضای ذخیرهسازی: چه مقدار داده در پایگاه داده شما ذخیره شده است. این شامل میزبانی Firebase یا دادههای ذخیرهشده ازطریق سایر محصولات Firebase نمیشود.
- بارگیریها: همه بایتهای بارگیریشده از پایگاه داده شما، ازجمله سربار پروتکل و رمزگذاری.
- بار: این نمودار نشان میدهد که چه مقدار از پایگاه داده شما درحال استفاده است و درخواستها را در یک بازه زمانی ۱ دقیقهای پردازش میکند. وقتی پایگاه دادهتان به ۱۰۰٪ نزدیک میشود، ممکن است مشکلات عملکردی مشاهده کنید.
بهینهسازی مصرف
چند روال مطلوب وجود دارد که میتوانید برای بهینهسازی استفاده از پایگاه داده و هزینههای پهنای باند بهکار بگیرید.
- از کیتهای توسعه نرمافزار بومی استفاده کنید: هر زمان ممکن بود، بهجای REST API، از کیتهای توسعه نرمافزار مربوط به پلاتفرم برنامهتان استفاده کنید. کیتهای توسعه نرمافزار اتصالهای باز را حفظ میکنند و هزینههای رمزگذاری SSL را که معمولاً با REST API افزایش مییابد کاهش میدهند.
- بررسی اشکالات: اگر هزینههای پهنای باند شما بهطور غیرمنتظرهای بالا است، بررسی کنید که برنامهتان دادههای بیشتری را همگامسازی نمیکند یا بیشتر از آنچه در ابتدا قصد داشتید همگامسازی نمیکند. برای مشخص کردن مشکلات، از ابزار نمایهساز برای اندازهگیری عملیات خواندن خود استفاده کنید و گزارش اشکالزدایی را در کیتهای توسعه نرمافزار Android، Objective-C، و وب روشن کنید. فرایندهای همگامسازی و پسزمینه را در برنامهتان بررسی کنید تا مطمئن شوید همه چیز طبق انتظار شما کار میکند.
- کاهش اتصالات: درصورت امکان، سعی کنید پهنای باند اتصال خود را بهینهسازی کنید. درخواستهای REST کوچک و مکرر میتواند پرهزینهتر از یک اتصال مداوم و تکی بااستفاده از کیت توسعه نرمافزار بومی باشد. اگر از REST API استفاده میکنید، استفاده از HTTP keep-alive یا رویدادهای ارسالشده توسط سرور را مدنظر قرار دهید، که میتواند هزینههای ناشی از دستدهی SSL را کاهش دهد.
- استفاده از بلیتهای جلسه TLS: با صدور بلیتهای جلسه TLS، هزینههای سربار رمزگذاری SSL را در اتصالهای ازسرگرفتهشده کاهش دهید. این امر بهویژه زمانی مفید است که به اتصالهای مکرر و ایمن به پایگاه داده نیاز دارید.
- پرسوجوهای نمایه: نمایهسازی دادههایتان کل پهنای باندی را که برای پرسوجوها استفاده میکنید کاهش میدهد، که این امر مزیت دوگانهای در کاهش هزینههایتان و افزایش عملکرد پایگاه دادهتان دارد. از ابزار نمایهساز برای یافتن پُرسمانهای نمایهنشده در پایگاه دادهتان استفاده کنید.
- بهینهسازی شنوندگان: برای محدود کردن دادههایی که عملیات شنیدن شما برمیگرداند، پُرسمان اضافه کنید و از شنوندگانی استفاده کنید که فقط بهروزرسانیهای دادهها را بارگیری میکنند — برای مثال،
on()بهجایonce(). علاوهبراین، شنوندگان خود را تا جایی که میتوانید در پایین مسیر قرار دهید تا میزان دادههایی را که همگامسازی میکنند محدود کنید. - کاهش هزینههای فضای ذخیرهسازی: کارهای پاکسازی دورهای را اجرا کنید و هرگونه داده تکراری را در پایگاه دادهتان کاهش دهید.
- استفاده از قوانین: از هرگونه عملیات غیرمجاز و احتمالاً پرهزینه در پایگاه دادهتان جلوگیری کنید. برای مثال، استفاده از Firebase Realtime Database Security Rules میتواند از سناریویی که در آن کاربر مخرب بهطور مکرر کل پایگاه داده شما را بارگیری میکند جلوگیری کند. درباره استفاده از «قوانین پایگاه داده بیدرنگ Firebase» بیشتر بدانید.
بهترین طرح بهینهسازی برای برنامه شما به مورد استفاده خاص شما بستگی دارد. اگرچه این فهرست کاملی از روالهای مطلوب نیست، میتوانید توصیهها و نکات بیشتری را از کارشناسان Firebase در کانال Slack ما یا در Stack Overflow پیدا کنید.