از این مثال واقعی از یک برنامه چت ساده برای سنجش میزان استفاده و هزینههای Cloud Firestore خود استفاده کنید. این یک تخمین دقیق نیست، اما میتواند به شما کمک کند تا نحوه محاسبه هزینه استفاده Cloud Firestore خود را بهتر درک کنید.
مرور کلی: هزینهها بر اساس سطح استفاده
برای نشان دادن هزینههای معمول، یک برنامه چت را در نظر بگیرید که در آن کاربران میتوانند چتها را با دو یا چند شرکتکننده آغاز کنند. کاربران میتوانند چتهای فعال خود را در یک لیست مشاهده کنند، پیامها را بخوانند و پیام ارسال کنند. برای این مثال، ما از قیمتگذاری برای منطقه چند منطقهای آمریکای شمالی (به طور خاص nam5 ) استفاده میکنیم.
فرضیات
فرضیات زیر را در مورد استفاده و ذخیره دادهها در نظر بگیرید:
- کاربران فعال روزانه (DAU) 10٪ از کل نصبهای برنامه هستند. شما میتوانید هزینههای روزانه خود را با استفاده از یک تخمین تقریبی از کاربران فعال روزانه (DAU) خود تخمین بزنید. اینها کاربرانی هستند که به طور فعال برنامه شما را در یک روز مشخص باز کرده و از آن استفاده میکنند، که معمولاً زیرمجموعه کوچکی از کل نصبهای برنامه شما است. برای محاسبات زیر، DAU ها را 10٪ از کل تعداد نصبهای برنامه تخمین زدهایم.
- اندازه اسناد نسبتاً کوچک است. برای تفکیک اندازه اسناد بر اساس نوع، به جدول زیر مراجعه کنید.
- دادهها فقط به مدت سه ماه ذخیره میشوند. پیامهای موجود در برنامه چت نمونه فقط برای یک دوره سه ماهه ذخیره میشوند. برای در نظر گرفتن عملیات حذف، محاسبات زیر یک حذف روزانه را برای هر نوشتن روزانه نشان میدهد.
- این تخمین هزینهها، بخش عمدهای از هزینههای برنامه نمونه را منعکس میکند، اما نه همه آنها را. ما بخش عمدهای از هزینههای یک برنامه را با محاسبه عملیات، ذخیرهسازی کاربر و پیام و خروجی برای رایجترین وظایف کاربر که در این راهنما ذکر شده است، محاسبه کردهایم. با این حال، ممکن است لازم باشد بسته به ساختار و نیازهای دادهای برنامه خود، هزینههای اضافی را نیز در نظر بگیرید. از این مثال برای راهنمایی محاسبات خود استفاده کنید، اما برای توضیحات کاملتر در مورد هزینههای Cloud Firestore به صفحه قیمتگذاری مراجعه کنید.
برای مشاهدهی جزئیات عملیات بر اساس وظیفهی کاربر، به بخش «جزئیات: میزان مصرف صورتحسابشده بر اساس وظیفهی کاربر» مراجعه کنید.
کوچک
(۵۰ هزار نصب)
برای ۵۰،۰۰۰ نصب برنامه (۵،۰۰۰ کاربر فعال روزانه): ۱۲.۱۴ دلار در ماه
| هزینههای خواندن/نوشتن | |||||
|---|---|---|---|---|---|
| کل هزینه ماهانه = ۱۱.۱۰ دلار در ماه | |||||
| ۴۰۰ هزار بازدید روزانه | = | ۵۰ هزار بازدید رایگان + (۳۵۰ هزار بازدید با قیمت ۰.۰۶ دلار برای هر ۱۰۰ هزار بازدید) | = | ۳.۵ * ۰.۰۶ دلار | |
| ۰.۲۱ دلار در روز * ۳۰ = ۶.۳۰ دلار | |||||
| ۱۰۰ هزار نوشته روزانه | = | ۲۰ هزار نوشتن رایگان + (۸۰ هزار نوشتن با قیمت ۰.۱۸ دلار/۱۰۰ هزار) | = | ۰.۸ * ۰.۱۸ دلار | |
| ۰.۱۴ دلار در روز * ۳۰ = ۴.۲۰ دلار | |||||
| ۱۰۰ هزار حذف روزانه | = | ۲۰ هزار حذف رایگان + (۸۰ هزار حذف با قیمت ۰.۰۲ دلار برای هر ۱۰۰ هزار) | = | .8 * 0.02 دلار | |
| ۰.۰۲ دلار در روز * ۳۰ = ۰.۶۰ دلار | |||||
| هزینههای ذخیرهسازی/شبکه | |||||||
|---|---|---|---|---|---|---|---|
| کل هزینه ماهانه = ۱.۰۴ دلار در ماه | |||||||
| ۲۰ کیلوبایت در روز / روزانه خروجی * ۵ هزار روزانه | = | ۱۰۰ مگابایت حجم روزانه * ۳۰ | = | ۳ گیگابایت حجم شبکه ماهانه | |||
| ۳ گیگابایت فضای رایگان خروجی = ۱ فضای رایگان | |||||||
| ۱۵ کیلوبایت فضای ذخیرهسازی پیام روزانه / DAU + ۳ کیلوبایت فضای ذخیرهسازی / نصب ۲ | = | ۴۵ کیلوبایت فضای ذخیرهسازی / روزانه * ۵ هزار روزانه | = | ۲۲۵ مگابایت فضای ذخیرهسازی روزانه / روزانه * ۳۰ | = | مصرف ماهانه ۶.۷۵ گیگابایت فضای ذخیرهسازی | |
| ۱ گیگابایت فضای ذخیرهسازی رایگان + (۵.۷۵ * ۰.۱۸ دلار) = ۱.۰۴ دلار در ماه | |||||||
10 گیگابایت فضای خروجی شبکه ماهانه برای Cloud Firestore رایگان است.
۲ از آنجایی که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصبهای برنامه را تشکیل میدهند، این عدد نشاندهندهی تعداد کل کاربرانی است که برنامه شما را نصب کردهاند.
متوسط
(۱ میلیون نصب)
برای ۱,۰۰۰,۰۰۰ نصب برنامه (۱۰۰,۰۰۰ کاربر فعال روزانه): ۲۹۲.۰۲ دلار در ماه
| هزینههای خواندن/نوشتن | |||||
|---|---|---|---|---|---|
| کل هزینه ماهانه = ۲۶۱.۹۰ دلار در ماه | |||||
| ۸ میلیون کل بازدید روزانه | = | ۵۰ هزار بازدید رایگان + (۷.۹۵ میلیون بازدید با قیمت ۰.۰۶ دلار در هر ۱۰۰ هزار بازدید) | = | ۷۹.۵ * ۰.۰۶ دلار | |
| ۴.۷۷ دلار در روز * ۳۰ = ۱۴۳.۱۰ دلار | |||||
| ۲ میلیون نوشته روزانه | = | ۲۰ هزار نوشتن رایگان + (۱.۹۸ میلیون نوشتن با قیمت ۰.۱۸ دلار در هر ۱۰۰ هزار) | = | ۱۹.۸ * ۰.۱۸ دلار | |
| ۳.۵۶ دلار در روز * ۳۰ = ۱۰۶.۸۰ دلار | |||||
| ۲ میلیون حذف روزانه | = | ۲۰ هزار حذف رایگان + (۱.۹۸ میلیون حذف با قیمت ۰.۰۲ دلار در هر ۱۰۰ هزار) | = | ۱۹.۸ * ۰.۰۲ دلار | |
| ۰.۴۰ دلار در روز * ۳۰ = ۱۲.۰۰ دلار | |||||
| هزینههای ذخیرهسازی/شبکه | |||||||
|---|---|---|---|---|---|---|---|
| کل هزینه ماهانه = 30.12 دلار در ماه | |||||||
| ۲۰ کیلوبایت در روز / روزانه خروجی * ۱۰۰ هزار روزانه | = | ۲ گیگابایت حجم خروجی روزانه * ۳۰ | = | ۶۰ گیگابایت حجم شبکه ماهانه | |||
| ۱۰ گیگابایت فضای رایگان + (۵۰ گیگابایت فضای رایگان * ۰.۱۲ دلار برای هر گیگابایت) = ۶ دلار در ماه | |||||||
| ۱۵ کیلوبایت فضای ذخیرهسازی پیام روزانه / DAU + ۳ کیلوبایت فضای ذخیرهسازی / نصب ۱ | = | ۴۵ کیلوبایت فضای ذخیرهسازی / روزانه * ۱۰۰ هزار روزانه | = | ۴.۵ گیگابایت فضای ذخیرهسازی روزانه / روزانه * ۳۰ | = | مصرف ماهانه ۱۳۵ گیگابایت فضای ذخیرهسازی | |
| ۱ گیگابایت فضای ذخیرهسازی رایگان + (۱۳۴ گیگابایت * ۰.۱۸ دلار برای هر گیگابایت) = ۲۴.۱۲ دلار در ماه | |||||||
۱ از آنجایی که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصبهای برنامه را تشکیل میدهند، این عدد نشاندهندهی تعداد کل کاربرانی است که برنامه شما را نصب کردهاند.
بزرگ
(۱۰ میلیون نصب)
برای ۱۰،۰۰۰،۰۰۰ نصب اپلیکیشن (۱،۰۰۰،۰۰۰ کاربر فعال روزانه): ۲۹۵۱.۵۲ دلار
| هزینههای خواندن/نوشتن | |||||
|---|---|---|---|---|---|
| کل هزینه ماهانه = مجموع: ۲۶۳۷.۹۰ دلار در ماه | |||||
| ۸۰ میلیون بازدید روزانه | = | ۵۰ هزار بازدید رایگان + (۷۹.۹۵ میلیون بازدید با قیمت ۰.۰۶ دلار در هر ۱۰۰ هزار بازدید) | = | ۷۹۹.۵ * ۰.۰۶ دلار | |
| ۴۷.۹۷ دلار در روز * ۳۰ = ۱۴۳۹.۱۰ دلار | |||||
| ۲۰ میلیون نوشته روزانه | = | ۲۰ هزار نوشتن رایگان + (۱۹.۹۸ میلیون نوشتن با قیمت ۰.۱۸ دلار در هر ۱۰۰ هزار) | = | ۱۹۹.۸ * ۰.۱۸ دلار | |
| ۳۵.۹۶ دلار در روز * ۳۰ = ۱۰۷۸.۸۰ دلار | |||||
| ۲۰ میلیون حذف روزانه | = | ۲۰ هزار حذف رایگان + (۱۹.۹۸ میلیون حذف با قیمت ۰.۰۲ دلار در هر ۱۰۰ هزار) | = | ۱۹۹.۸ * ۰.۰۲ دلار | |
| ۴ دلار در روز * ۳۰ = ۱۲۰ دلار | |||||
| هزینههای ذخیرهسازی/شبکه | |||||||
|---|---|---|---|---|---|---|---|
| کل هزینه ماهانه = ۳۱۳.۶۲ دلار در ماه | |||||||
| ۲۰ کیلوبایت در روز / خروجی روزانه * ۱ میلیون DAU | = | 20 گیگابایت حجم خروجی روزانه * 30 | = | ۶۰۰ گیگابایت حجم شبکه ماهانه | |||
| ۱۰ گیگابایت فضای رایگان + (۵۹۰ گیگابایت فضای رایگان * ۰.۱۲ دلار به ازای هر گیگابایت) = ۷۰.۸۰ دلار در ماه | |||||||
| ۱۵ کیلوبایت فضای ذخیرهسازی پیام روزانه / DAU + ۳ کیلوبایت فضای ذخیرهسازی / نصب ۱ | = | ۴۵ کیلوبایت فضای ذخیرهسازی / روزانه * ۱ میلیون روزانه | = | ۴۵ گیگابایت فضای ذخیرهسازی روزانه / DAU * ۳۰ | = | استفاده ماهانه از فضای ذخیرهسازی ۱۳۵۰ گیگابایت | |
| (۱ گیگابایت فضای ذخیرهسازی رایگان) + (۱۳۴۹ گیگابایت * ۰.۱۸ دلار برای هر گیگابایت) = ۲۴۲.۸۲ دلار در ماه | |||||||
۱ از آنجایی که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصبهای برنامه را تشکیل میدهند، این عدد نشاندهندهی تعداد کل کاربرانی است که برنامه شما را نصب کردهاند.
یکی از مزایای مدل پرداخت Cloud Firestore که ارزش بررسی دارد این است که شما فقط برای آنچه استفاده میکنید هزینه پرداخت میکنید. در نتیجه، صورتحساب شما ممکن است با تعداد کاربران فعال روزانهتان افزایش یا کاهش یابد.
تفکیک: میزان استفادهی ثبتشده بر اساس وظیفهی کاربر
برای برنامه چت مثال ما، ساختار داده به شرح زیر است:
-
users/{userId}— رکوردهای کاربر -
groups/{groupId}— چتهای بین ۲ یا چند کاربر-
messages/{messageId}— هر پیام در یک چت.
-
ذخیرهسازی دادهها
برای محاسبه هزینههای ذخیرهسازی دادههای برنامه، فرضیات زیر را در مورد اندازه اسناد اعمال کنید:
| مجموعه | اندازه سند (در حال انتقال) | اندازه سند (روی دیسک)* |
|---|---|---|
| کاربران | ۱ کیلوبایت | ۳ کیلوبایت |
| گروهها | ۰.۵ کیلوبایت | ۱.۵ کیلوبایت |
| پیامها | ۰.۲۵ کیلوبایت | ۰.۷۵ کیلوبایت |
*این محاسبه اندازه شامل اندیسهایی برای فیلدهای پیام میشود، اما فرض بر این است که اندیسگذاری برای محتوای پیام غیرفعال است.
این برنامه همچنین فقط پیامهایی را که تا سه ماه از تاریخ انتشارشان گذشته است، ذخیره میکند تا هزینههای ذخیرهسازی را کاهش دهد.
برای اطلاعات بیشتر در مورد محاسبه هزینههای ذخیرهسازی، به درک محاسبات اندازه ذخیرهسازی مراجعه کنید.
عملیات
کاربران معمولاً کارهای رایج زیر را در برنامه انجام میدهند:
- مشاهده لیست چتها: کاربران صفحه اصلی برنامه را باز میکنند و لیستی از چتها (گروهی و مستقیم) را که بر اساس جدیدترین پیام ارسال شده مرتب شدهاند، مشاهده میکنند.
- خواندن پیامها در یک چت: کاربران چتها را از صفحه اصلی انتخاب میکنند و پیامهای اخیر چتها را میخوانند.
- ارسال پیام به یک چت: کاربران به چتها (گروهی یا مستقیم) پیام ارسال میکنند.
کل عملیات تخمینی برنامه نمونه در Cloud Firestore برای سه وظیفه معمول کاربر به شرح زیر است:
- تعداد دفعات بازدید: (5 * 10) + (30) = 80 بازدید / کاربر / روز
- نوشتن: (10 * 2) = 20 نوشتن / کاربر / روز
- خروجی شبکه : (50 * 0.25KB) + (30 * 0.25KB) = 20KB / کاربر / روز
- فضای ذخیرهسازی : (20 * 0.75KB) = 15KB / کاربر / روز
کل استفاده بر اساس وظیفه کاربر
برای مشاهده توضیحات کامل و جزئیات عملیات، فضای ذخیرهسازی و هزینههای شبکه در برنامه، هر وظیفه کاربر را انتخاب کنید.
مشاهده لیست چت ها
صفحه اصلی برنامه، ۲۵ چت اخیر را بارگذاری میکند و برای ۲۵ بار خواندن سند، هزینه دریافت میشود. فرض کنید یک کاربر فعال، ۵ بار در روز برنامه را باز میکند که در مجموع ۱۲۵ بار خواندن برای هر کاربر در هر روز میشود. با این حال، پرسوجوهای کارآمدتر، مانند نمونهای که در مثال زیر آمده است، میتوانند این بار را کاهش دهند.
در مثال زیر، ما با استفاده از یک مهر زمانی برای هر واکشی موفق که توسط برنامه ذخیره میشود، کوئری را به چتهای جدید محدود میکنیم:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
فرض کنید هر بار که کاربر برنامه را بررسی میکند، به طور متوسط ۱۰ چت بهروزرسانی شده وجود دارد. این پرسوجو فقط ۱۰ بار خواندن سند را متحمل میشود.
خواندن پیامها در یک چت
کاربران از صفحه اصلی روی رشتههای چت کلیک میکنند تا پیامهای اخیر را ببینند و ۵۰ پیام اخیر در بارگذاری اولیه بارگذاری میشوند.
فرض کنید یک کاربر معمولی این عمل را ۵ بار در روز انجام میدهد (یک بار به ازای هر بار باز کردن صفحه اصلی)، که منجر به مجموع ۲۵۰ بار خواندن توسط هر کاربر در هر روز میشود. ما همچنین میتوانیم کوئری خود را به پیامهای جدید از آخرین زمان واکشی محدود کنیم:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
فرض کنید که یک کاربر روزانه حدود ۳۰ پیام در تمام چتها دریافت میکند. از آنجایی که شما کوئری را به دریافت پیامهای جدید محدود کردهاید، این به معنای فقط ۳۰ پیام بازیابی شده در روز است.
ارسال پیام به چت
کاربران میتوانند پس از ورود به چت، برای سایر شرکتکنندگان پیام ارسال کنند. فرض کنید یک کاربر فعال روزانه حدود ۱۰ پیام ارسال میکند.
هر پیام ارسالی باعث دو بار نوشتن در سند میشود: یکی نوشتن در زیرمجموعه messages چت و دیگری نوشتن در سند والد چت برای بهروزرسانی lastUpdated برچسب زمانی بهروزرسانیشده و سایر فرادادهها.
توجه داشته باشید که هزینه خواندن این پیامها در سفرهای دیگر در نظر گرفته شده است، بنابراین مجموع هزینههای زیر فقط این هزینه نوشتن را در نظر میگیرد.
استفاده صورتحساب شده برای وظایف مدیر
به عنوان مالک یا مدیر برنامه، احتمالاً میخواهید از دادههای برنامه خود گزارش تهیه کنید. برای مثال، ممکن است بخواهید تعداد پیامهای ارسالی روزانه کاربران خود را ثبت کنید. میتوانید این کار را با استفاده از تابع count() از گروه جمعآوری messages انجام دهید.
برای پرسوجوهای تجمیعی مانند count() ، برای هر دسته تا ۱۰۰۰ ورودی شاخص که با پرسوجو مطابقت دارند، هزینه یک سند خوانده شده از شما دریافت میشود. اجرای این تجمیع روزانه، هزینههای ماهانه زیر را اضافه میکند:
کوچک
(۵۰ هزار نصب)
برای ۵۰،۰۰۰ نصب برنامه (۵،۰۰۰ کاربر فعال روزانه): ۰.۰۰۰۹ دلار در ماه
۵۰۰۰ کاربر فعال * ۱۰ پیام جدید به ازای هر کاربر = ۵۰۰۰۰ سند پیام جدید در روز
۵۰،۰۰۰ سند شمارش شده / ۱۰۰۰ تطابق شاخص در هر بار خواندن = ۵۰ بار خواندن
۵۰ بار مطالعه در روز * ۳۰ روز = ۱۵۰۰ بار مطالعه در ماه
۱۵۰۰ بازدید در ماه * ۰.۰۶ / ۱۰۰۰۰۰ بازدید = ۰.۰۰۰۹ دلار در ماه
متوسط
(۱ میلیون نصب)
برای ۱,۰۰۰,۰۰۰ نصب برنامه (۱۰۰,۰۰۰ کاربر فعال روزانه): ۰.۰۱۸ دلار در ماه
۱۰۰۰۰۰ کاربر فعال * ۱۰ پیام جدید به ازای هر کاربر = ۱,۰۰۰,۰۰۰ سند پیام جدید در روز
۱,۰۰۰,۰۰۰ سند شمارش شده / ۱۰۰۰ تطابق شاخص به ازای هر بار خواندن = ۱۰۰۰ بار خواندن
۱۰۰۰ مطالعه در روز * ۳۰ روز = ۳۰۰۰۰ مطالعه در ماه
۳۰،۰۰۰ بازدید در ماه * ۰.۰۶ / ۱۰۰،۰۰۰ بازدید = ۰.۰۱۸ دلار در ماه
بزرگ
(۱۰ میلیون نصب)
برای ۱۰،۰۰۰،۰۰۰ نصب برنامه (۱،۰۰۰،۰۰۰ کاربر فعال روزانه): ۰.۱۸ دلار
۱,۰۰۰,۰۰۰ کاربر فعال * ۱۰ پیام جدید به ازای هر کاربر = ۱۰,۰۰۰,۰۰۰ سند پیام جدید در روز
۱۰،۰۰۰،۰۰۰ سند شمارش شده / ۱۰۰۰ تطابق شاخص در هر بار خواندن = ۱۰،۰۰۰ بار خواندن
۱۰،۰۰۰ مطالعه در روز * ۳۰ روز = ۳۰۰،۰۰۰ مطالعه در ماه
۳۰۰۰۰۰ بازدید در ماه * قیمت ۰.۰۶/۱۰۰۰۰۰ بازدید = ۰.۱۸ دلار در ماه
مزایای شامل: خدمات رایگان برای برنامه شما
در حالی که عملیات، فضای ذخیرهسازی و پهنای باند شبکه Cloud Firestore همگی به عنوان استفاده قابل پرداخت در نظر گرفته میشوند، شما همچنین از مزایای متنوع دیگری بدون هیچ هزینه اضافی بهرهمند میشوید. هنگام مقایسه Cloud Firestore با سایر گزینههای پایگاه داده، خدمات رایگان زیر را در نظر بگیرید:
- دسترسی مستقیم کلاینت: Cloud Firestore مستقیماً از طریق کد کلاینت شما و با استفاده از SDK های بومی ما قابل دسترسی است. این بدان معناست که برای اتصال کلاینت های موبایل خود به پایگاه داده، نیازی به ساخت و اجرای سرور API ندارید.
- متعادلسازی بار: از آنجایی که Cloud Firestore به طور خودکار برای پشتیبانی از ترافیک پایگاه داده شما مقیاسپذیر است، نیازی به اجرای متعادلکننده بار ندارید.
- آپتایم سرور: پایگاههای داده Cloud Firestore روی سرورهای Google Cloud کار میکنند و بیش از ۹۹٪ آپتایم ماهانه ارائه میدهند.
- احراز هویت: با استفاده از Firebase Authentication به سادگی و با امنیت، تعداد نامحدودی از کاربران را احراز هویت کنید. Firebase Authentication مستقیماً با Cloud Firestore ادغام میشود، بنابراین نیازی به اجرای سرویس احراز هویت خودتان ندارید.
- اعلانهای فوری: با استفاده از Cloud Messaging پیامها و اعلانها را ارسال کنید.
- سایر محصولات Firebase: سایر محصولات Firebase، از جمله تست A/B، تجزیه و تحلیل، Crashlytics، نظارت بر عملکرد و پیکربندی از راه دور را بدون هیچ هزینهای ادغام کنید. درباره سایر محصولات Firebase و قیمتهای Firebase بیشتر بدانید.