از این مثال واقعی از یک برنامه چت ساده برای سنجش میزان استفاده و هزینههای Cloud Firestore خود استفاده کنید. این یک تخمین دقیق نیست، اما میتواند به شما کمک کند تا نحوه محاسبه هزینه استفاده Cloud Firestore خود را بهتر درک کنید.
مرور کلی: هزینهها بر اساس سطح استفاده
برای نشان دادن هزینههای معمول، یک برنامه چت را در نظر بگیرید که در آن کاربران میتوانند چتها را با دو یا چند شرکتکننده آغاز کنند. کاربران میتوانند چتهای فعال خود را در یک لیست مشاهده کنند، پیامها را بخوانند و پیام ارسال کنند. برای این مثال، ما از قیمتگذاری برای منطقه چند منطقهای آمریکای شمالی (به طور خاص nam5 ) استفاده میکنیم.
فرضیات
فرضیات زیر را در مورد استفاده و ذخیره دادهها در نظر بگیرید:
- کاربران فعال روزانه (DAU) 10٪ از کل نصبهای برنامه هستند. شما میتوانید هزینههای روزانه خود را با استفاده از یک تخمین تقریبی از کاربران فعال روزانه (DAU) خود تخمین بزنید. اینها کاربرانی هستند که به طور فعال برنامه شما را در یک روز مشخص باز کرده و از آن استفاده میکنند، که معمولاً زیرمجموعه کوچکی از کل نصبهای برنامه شما است. برای محاسبات زیر، DAU ها را 10٪ از کل تعداد نصبهای برنامه تخمین زدهایم.
- اندازه اسناد نسبتاً کوچک است. برای تفکیک اندازه اسناد بر اساس نوع، به جدول زیر مراجعه کنید.
- دادهها فقط به مدت سه ماه ذخیره میشوند. پیامهای موجود در برنامه چت نمونه فقط برای یک دوره سه ماهه ذخیره میشوند. برای در نظر گرفتن عملیات حذف، محاسبات زیر یک حذف روزانه را برای هر نوشتن روزانه نشان میدهد.
- These cost estimates reflect the bulk of the example app's costs, but not all of them. We've accounted for the bulk of an app's costs by calculating operations, user and message storage, and egress for the most frequent user tasks outlined in this guide. However, you might need to take into account additional costs, depending on your app's structure and data needs. Use this example to guide your calculations, but refer to the pricing page for more thorough explanations of Cloud Firestore costs.
برای مشاهدهی جزئیات عملیات بر اساس وظیفهی کاربر، به بخش « جزئیات: میزان مصرف صورتحسابشده بر اساس وظیفهی کاربر» مراجعه کنید.
کوچک
(۵۰ هزار نصب)
برای ۵۰،۰۰۰ نصب برنامه (۵،۰۰۰ کاربر فعال روزانه): ۱۲.۱۴ دلار در ماه
| هزینههای خواندن/نوشتن | |||||
|---|---|---|---|---|---|
| کل هزینه ماهانه = ۱۱.۱۰ دلار در ماه | |||||
| ۴۰۰ هزار بازدید روزانه | = | ۵۰ هزار بازدید رایگان + (۳۵۰ هزار بازدید با قیمت ۰.۰۶ دلار برای هر ۱۰۰ هزار بازدید) | = | ۳.۵ * ۰.۰۶ دلار | |
| $0.21 / day * 30 = $6.30 | |||||
| ۱۰۰ هزار نوشته روزانه | = | ۲۰ هزار نوشتن رایگان + (۸۰ هزار نوشتن با قیمت ۰.۱۸ دلار/۱۰۰ هزار) | = | ۰.۸ * ۰.۱۸ دلار | |
| ۰.۱۴ دلار در روز * ۳۰ = ۴.۲۰ دلار | |||||
| ۱۰۰ هزار حذف روزانه | = | ۲۰ هزار حذف رایگان + (۸۰ هزار حذف با قیمت ۰.۰۲ دلار برای هر ۱۰۰ هزار) | = | .8 * 0.02 دلار | |
| ۰.۰۲ دلار در روز * ۳۰ = ۰.۶۰ دلار | |||||
| هزینههای ذخیرهسازی/شبکه | |||||||
|---|---|---|---|---|---|---|---|
| کل هزینه ماهانه = ۱.۰۴ دلار در ماه | |||||||
| ۲۰ کیلوبایت در روز / روزانه خروجی * ۵ هزار روزانه | = | 100MB of daily egress * 30 | = | ۳ گیگابایت حجم شبکه ماهانه | |||
| ۳ گیگابایت فضای رایگان خروجی = ۱ فضای رایگان | |||||||
| ۱۵ کیلوبایت فضای ذخیرهسازی پیام روزانه / DAU + ۳ کیلوبایت فضای ذخیرهسازی / نصب ۲ | = | ۴۵ کیلوبایت فضای ذخیرهسازی / روزانه * ۵ هزار روزانه | = | ۲۲۵ مگابایت فضای ذخیرهسازی روزانه / روزانه * ۳۰ | = | مصرف ماهانه ۶.۷۵ گیگابایت فضای ذخیرهسازی | |
| ۱ گیگابایت فضای ذخیرهسازی رایگان + (۵.۷۵ * ۰.۱۸ دلار) = ۱.۰۴ دلار در ماه | |||||||
10 گیگابایت فضای خروجی شبکه ماهانه برای Cloud Firestore رایگان است.
۲ از آنجایی که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصبهای برنامه را تشکیل میدهند، این عدد نشاندهندهی تعداد کل کاربرانی است که برنامه شما را نصب کردهاند.
متوسط
(1M installs)
برای ۱,۰۰۰,۰۰۰ نصب برنامه (۱۰۰,۰۰۰ کاربر فعال روزانه): ۲۹۲.۰۲ دلار در ماه
| هزینههای خواندن/نوشتن | |||||
|---|---|---|---|---|---|
| کل هزینه ماهانه = ۲۶۱.۹۰ دلار در ماه | |||||
| ۸ میلیون کل بازدید روزانه | = | ۵۰ هزار بازدید رایگان + (۷.۹۵ میلیون بازدید با قیمت ۰.۰۶ دلار در هر ۱۰۰ هزار بازدید) | = | ۷۹.۵ * ۰.۰۶ دلار | |
| $4.77 / day * 30 = $143.10 | |||||
| ۲ میلیون نوشته روزانه | = | ۲۰ هزار نوشتن رایگان + (۱.۹۸ میلیون نوشتن با قیمت ۰.۱۸ دلار در هر ۱۰۰ هزار) | = | ۱۹.۸ * ۰.۱۸ دلار | |
| ۳.۵۶ دلار در روز * ۳۰ = ۱۰۶.۸۰ دلار | |||||
| ۲ میلیون حذف روزانه | = | ۲۰ هزار حذف رایگان + (۱.۹۸ میلیون حذف با قیمت ۰.۰۲ دلار در هر ۱۰۰ هزار) | = | ۱۹.۸ * ۰.۰۲ دلار | |
| ۰.۴۰ دلار در روز * ۳۰ = ۱۲.۰۰ دلار | |||||
| Storage/Networking Costs | |||||||
|---|---|---|---|---|---|---|---|
| کل هزینه ماهانه = 30.12 دلار در ماه | |||||||
| ۲۰ کیلوبایت در روز / روزانه خروجی * ۱۰۰ هزار روزانه | = | ۲ گیگابایت حجم خروجی روزانه * ۳۰ | = | ۶۰ گیگابایت حجم شبکه ماهانه | |||
| ۱۰ گیگابایت فضای رایگان + (۵۰ گیگابایت فضای رایگان * ۰.۱۲ دلار برای هر گیگابایت) = ۶ دلار در ماه | |||||||
| ۱۵ کیلوبایت فضای ذخیرهسازی پیام روزانه / DAU + ۳ کیلوبایت فضای ذخیرهسازی / نصب ۱ | = | ۴۵ کیلوبایت فضای ذخیرهسازی / روزانه * ۱۰۰ هزار روزانه | = | ۴.۵ گیگابایت فضای ذخیرهسازی روزانه / روزانه * ۳۰ | = | مصرف ماهانه ۱۳۵ گیگابایت فضای ذخیرهسازی | |
| ۱ گیگابایت فضای ذخیرهسازی رایگان + (۱۳۴ گیگابایت * ۰.۱۸ دلار برای هر گیگابایت) = ۲۴.۱۲ دلار در ماه | |||||||
۱ از آنجایی که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصبهای برنامه را تشکیل میدهند، این عدد نشاندهندهی تعداد کل کاربرانی است که برنامه شما را نصب کردهاند.
بزرگ
(۱۰ میلیون نصب)
برای ۱۰،۰۰۰،۰۰۰ نصب اپلیکیشن (۱،۰۰۰،۰۰۰ کاربر فعال روزانه): ۲۹۵۱.۵۲ دلار
| هزینههای خواندن/نوشتن | |||||
|---|---|---|---|---|---|
| کل هزینه ماهانه = مجموع: ۲۶۳۷.۹۰ دلار در ماه | |||||
| ۸۰ میلیون بازدید روزانه | = | ۵۰ هزار بازدید رایگان + (۷۹.۹۵ میلیون بازدید با قیمت ۰.۰۶ دلار در هر ۱۰۰ هزار بازدید) | = | 799.5 * $0.06 | |
| ۴۷.۹۷ دلار در روز * ۳۰ = ۱۴۳۹.۱۰ دلار | |||||
| ۲۰ میلیون نوشته روزانه | = | ۲۰ هزار نوشتن رایگان + (۱۹.۹۸ میلیون نوشتن با قیمت ۰.۱۸ دلار در هر ۱۰۰ هزار) | = | ۱۹۹.۸ * ۰.۱۸ دلار | |
| ۳۵.۹۶ دلار در روز * ۳۰ = ۱۰۷۸.۸۰ دلار | |||||
| 20M total daily deletes | = | ۲۰ هزار حذف رایگان + (۱۹.۹۸ میلیون حذف با قیمت ۰.۰۲ دلار در هر ۱۰۰ هزار) | = | ۱۹۹.۸ * ۰.۰۲ دلار | |
| ۴ دلار در روز * ۳۰ = ۱۲۰ دلار | |||||
| هزینههای ذخیرهسازی/شبکه | |||||||
|---|---|---|---|---|---|---|---|
| کل هزینه ماهانه = ۳۱۳.۶۲ دلار در ماه | |||||||
| ۲۰ کیلوبایت در روز / خروجی روزانه * ۱ میلیون DAU | = | 20 گیگابایت حجم خروجی روزانه * 30 | = | ۶۰۰ گیگابایت حجم شبکه ماهانه | |||
| ۱۰ گیگابایت فضای رایگان + (۵۹۰ گیگابایت فضای رایگان * ۰.۱۲ دلار به ازای هر گیگابایت) = ۷۰.۸۰ دلار در ماه | |||||||
| ۱۵ کیلوبایت فضای ذخیرهسازی پیام روزانه / DAU + ۳ کیلوبایت فضای ذخیرهسازی / نصب ۱ | = | ۴۵ کیلوبایت فضای ذخیرهسازی / روزانه * ۱ میلیون روزانه | = | ۴۵ گیگابایت فضای ذخیرهسازی روزانه / DAU * ۳۰ | = | 1350GB monthly storage usage | |
| (۱ گیگابایت فضای ذخیرهسازی رایگان) + (۱۳۴۹ گیگابایت * ۰.۱۸ دلار برای هر گیگابایت) = ۲۴۲.۸۲ دلار در ماه | |||||||
۱ از آنجایی که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصبهای برنامه را تشکیل میدهند، این عدد نشاندهندهی تعداد کل کاربرانی است که برنامه شما را نصب کردهاند.
یکی از مزایای مدل پرداخت Cloud Firestore که ارزش بررسی دارد این است که شما فقط برای آنچه استفاده میکنید هزینه پرداخت میکنید. در نتیجه، صورتحساب شما ممکن است با تعداد کاربران فعال روزانهتان افزایش یا کاهش یابد.
تفکیک: میزان استفادهی ثبتشده بر اساس وظیفهی کاربر
برای برنامه چت مثال ما، ساختار داده به شرح زیر است:
-
users/{userId}— User records -
groups/{groupId}— چتهای بین ۲ یا چند کاربر-
messages/{messageId}— هر پیام در یک چت.
-
ذخیرهسازی دادهها
برای محاسبه هزینههای ذخیرهسازی دادههای برنامه، فرضیات زیر را در مورد اندازه اسناد اعمال کنید:
| مجموعه | اندازه سند (در حال انتقال) | اندازه سند (روی دیسک)* |
|---|---|---|
| کاربران | ۱ کیلوبایت | ۳ کیلوبایت |
| گروهها | ۰.۵ کیلوبایت | ۱.۵ کیلوبایت |
| پیامها | ۰.۲۵ کیلوبایت | ۰.۷۵ کیلوبایت |
*این محاسبه اندازه شامل اندیسهایی برای فیلدهای پیام میشود، اما فرض بر این است که اندیسگذاری برای محتوای پیام غیرفعال است.
این برنامه همچنین فقط پیامهایی را که تا سه ماه از تاریخ انتشارشان گذشته است، ذخیره میکند تا هزینههای ذخیرهسازی را کاهش دهد.
برای اطلاعات بیشتر در مورد محاسبه هزینههای ذخیرهسازی، به درک محاسبات اندازه ذخیرهسازی مراجعه کنید.
عملیات
Users typically complete the following common tasks in the app:
- مشاهده لیست چتها: کاربران صفحه اصلی برنامه را باز میکنند و لیستی از چتها (گروهی و مستقیم) را که بر اساس جدیدترین پیام ارسال شده مرتب شدهاند، مشاهده میکنند.
- خواندن پیامها در یک چت: کاربران چتها را از صفحه اصلی انتخاب میکنند و پیامهای اخیر چتها را میخوانند.
- ارسال پیام به یک چت: کاربران به چتها (گروهی یا مستقیم) پیام ارسال میکنند.
کل عملیات تخمینی برنامه نمونه در Cloud Firestore برای سه وظیفه معمول کاربر به شرح زیر است:
- تعداد دفعات بازدید: (5 * 10) + (30) = 80 بازدید / کاربر / روز
- نوشتن: (10 * 2) = 20 نوشتن / کاربر / روز
- خروجی شبکه : (50 * 0.25KB) + (30 * 0.25KB) = 20KB / کاربر / روز
- فضای ذخیرهسازی : (20 * 0.75KB) = 15KB / کاربر / روز
کل استفاده بر اساس وظیفه کاربر
برای مشاهده توضیحات کامل و جزئیات عملیات، فضای ذخیرهسازی و هزینههای شبکه در برنامه، هر وظیفه کاربر را انتخاب کنید.
مشاهده لیست چت ها
The home screen of the app loads the 25 most recent chats, incurring charges for 25 document reads. Assume that an active user opens the app 5 times per day, totaling 125 reads per user each day. However, more efficient queries, like the one in the following example, can reduce this load.
در مثال زیر، ما با استفاده از یک مهر زمانی برای هر واکشی موفق که توسط برنامه ذخیره میشود، کوئری را به چتهای جدید محدود میکنیم:
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)
فرض کنید که یک کاربر روزانه حدود ۳۰ پیام در تمام چتها دریافت میکند. از آنجایی که شما کوئری را به دریافت پیامهای جدید محدود کردهاید، این به معنای فقط ۳۰ پیام بازیابی شده در روز است.
ارسال پیام به چت
کاربران میتوانند پس از ورود به چت، برای سایر شرکتکنندگان پیام ارسال کنند. فرض کنید یک کاربر فعال روزانه حدود ۱۰ پیام ارسال میکند.
Each sent message will cause two document writes: one write to the messages subcollection of the chat and one write to the chat parent document to update the lastUpdated timestamp and other metadata.
Note that the cost of reading these messages has been accounted for in the other journeys, so the totals below only consider this write cost.
استفاده صورتحساب شده برای وظایف مدیر
به عنوان مالک یا مدیر برنامه، احتمالاً میخواهید از دادههای برنامه خود گزارش تهیه کنید. برای مثال، ممکن است بخواهید تعداد پیامهای ارسالی روزانه کاربران خود را ثبت کنید. میتوانید این کار را با استفاده از تابع count() از گروه جمعآوری messages انجام دهید.
برای پرسوجوهای تجمیعی مانند count() ، برای هر دسته تا ۱۰۰۰ ورودی شاخص که با پرسوجو مطابقت دارند، هزینه یک سند خوانده شده از شما دریافت میشود. اجرای این تجمیع روزانه، هزینههای ماهانه زیر را اضافه میکند:
کوچک
(50k installs)
برای ۵۰،۰۰۰ نصب برنامه (۵،۰۰۰ کاربر فعال روزانه): ۰.۰۰۰۹ دلار در ماه
۵۰۰۰ کاربر فعال * ۱۰ پیام جدید به ازای هر کاربر = ۵۰۰۰۰ سند پیام جدید در روز
۵۰،۰۰۰ سند شمارش شده / ۱۰۰۰ تطابق شاخص در هر بار خواندن = ۵۰ بار خواندن
۵۰ بار مطالعه در روز * ۳۰ روز = ۱۵۰۰ بار مطالعه در ماه
۱۵۰۰ بازدید در ماه * ۰.۰۶ / ۱۰۰۰۰۰ بازدید = ۰.۰۰۰۹ دلار در ماه
متوسط
(۱ میلیون نصب)
برای ۱,۰۰۰,۰۰۰ نصب برنامه (۱۰۰,۰۰۰ کاربر فعال روزانه): ۰.۰۱۸ دلار در ماه
۱۰۰۰۰۰ کاربر فعال * ۱۰ پیام جدید به ازای هر کاربر = ۱,۰۰۰,۰۰۰ سند پیام جدید در روز
۱,۰۰۰,۰۰۰ سند شمارش شده / ۱۰۰۰ تطابق شاخص به ازای هر بار خواندن = ۱۰۰۰ بار خواندن
۱۰۰۰ مطالعه در روز * ۳۰ روز = ۳۰۰۰۰ مطالعه در ماه
۳۰،۰۰۰ بازدید در ماه * ۰.۰۶ / ۱۰۰،۰۰۰ بازدید = ۰.۰۱۸ دلار در ماه
بزرگ
(۱۰ میلیون نصب)
برای ۱۰،۰۰۰،۰۰۰ نصب برنامه (۱،۰۰۰،۰۰۰ کاربر فعال روزانه): ۰.۱۸ دلار
۱,۰۰۰,۰۰۰ کاربر فعال * ۱۰ پیام جدید به ازای هر کاربر = ۱۰,۰۰۰,۰۰۰ سند پیام جدید در روز
۱۰،۰۰۰،۰۰۰ سند شمارش شده / ۱۰۰۰ تطابق شاخص در هر بار خواندن = ۱۰،۰۰۰ بار خواندن
۱۰،۰۰۰ مطالعه در روز * ۳۰ روز = ۳۰۰،۰۰۰ مطالعه در ماه
۳۰۰۰۰۰ بازدید در ماه * قیمت ۰.۰۶/۱۰۰۰۰۰ بازدید = ۰.۱۸ دلار در ماه
Included benefits: No-cost services for your app
در حالی که عملیات، فضای ذخیرهسازی و پهنای باند شبکه Cloud Firestore همگی به عنوان استفاده قابل پرداخت در نظر گرفته میشوند، شما همچنین از مزایای متنوع دیگری بدون هیچ هزینه اضافی بهرهمند میشوید. هنگام مقایسه Cloud Firestore با سایر گزینههای پایگاه داده، خدمات رایگان زیر را در نظر بگیرید:
- دسترسی مستقیم کلاینت: Cloud Firestore مستقیماً از طریق کد کلاینت شما و با استفاده از SDK های بومی ما قابل دسترسی است. این بدان معناست که برای اتصال کلاینت های موبایل خود به پایگاه داده، نیازی به ساخت و اجرای سرور API ندارید.
- متعادلسازی بار: از آنجایی که Cloud Firestore به طور خودکار برای پشتیبانی از ترافیک پایگاه داده شما مقیاسپذیر است، نیازی به اجرای متعادلکننده بار ندارید.
- آپتایم سرور: پایگاههای داده Cloud Firestore روی سرورهای Google Cloud کار میکنند و بیش از ۹۹٪ آپتایم ماهانه ارائه میدهند.
- احراز هویت: با استفاده Firebase Authentication به سادگی و با امنیت، تعداد نامحدودی از کاربران را احراز هویت کنید. Firebase Authentication مستقیماً با Cloud Firestore ادغام میشود، بنابراین نیازی به اجرای سرویس احراز هویت خودتان ندارید.
- اعلانهای فوری: با استفاده از Cloud Messaging پیامها و اعلانها را ارسال کنید.
- Other Firebase products: Integrate other Firebase products at no cost, including A/B Testing, Analytics, Crashlytics, Performance Monitoring, and Remote Config. Learn more about other Firebase products and Firebase pricing .