از این مثال واقعی از یک برنامه چت اولیه برای سنجش میزان استفاده و هزینه های Cloud Firestore خود استفاده کنید. این یک تخمین دقیق نیست، اما میتواند به شما کمک کند تا نحوه محاسبه استفاده Cloud Firestore خود را بهتر درک کنید.
نمای کلی: هزینه ها بر اساس سطح استفاده
برای نشان دادن هزینههای معمولی، یک برنامه چت مثال را در نظر بگیرید، جایی که کاربران میتوانند با دو یا چند شرکتکننده چت را آغاز کنند. کاربران می توانند چت های فعال خود را در یک لیست ببینند، پیام ها را بخوانند و پیام ارسال کنند. برای این مثال، ما از قیمت گذاری برای چند منطقه آمریکای شمالی (به ویژه nam5
) استفاده می کنیم.
مفروضات
مفروضات زیر را در مورد استفاده و ذخیره سازی داده ها در نظر بگیرید:
- کاربران فعال روزانه (DAU) 10٪ از کل نصب برنامه را تشکیل می دهند. میتوانید هزینههای روزانه خود را با استفاده از تخمین تقریبی کاربران فعال روزانه (DAU) تخمین بزنید. اینها کاربرانی هستند که به طور فعال برنامه شما را در یک روز معین باز می کنند و از آن استفاده می کنند، که معمولاً زیرمجموعه کوچکی از کل نصب برنامه شما است. برای محاسبات زیر، DAU را 10٪ از کل تعداد نصبهای برنامه تخمین زدیم.
- اندازه اسناد نسبتا کوچک است. برای تفکیک اندازه سند بر اساس نوع، به جدول زیر مراجعه کنید.
- داده ها فقط برای سه ماه ذخیره می شوند. پیامهای موجود در برنامه چت نمونه فقط برای یک دوره سه ماهه ذخیره میشوند. برای محاسبه عملیات حذف، محاسبات زیر حذف روزانه را برای هر نوشتن روزانه نشان می دهد.
- این تخمین های هزینه منعکس کننده بخش عمده هزینه های برنامه نمونه است، اما نه همه آنها. ما عمده هزینه های یک برنامه را با محاسبه عملیات، ذخیره سازی کاربر و پیام، و خروجی برای متداول ترین وظایف کاربر که در این راهنما بیان شده است، محاسبه کرده ایم. با این حال، بسته به ساختار برنامه و نیازهای داده، ممکن است لازم باشد هزینههای اضافی را در نظر بگیرید. از این مثال برای راهنمایی محاسبات خود استفاده کنید، اما برای توضیحات کامل تر در مورد هزینه های Cloud Firestore به صفحه قیمت گذاری مراجعه کنید.
برای تفکیک عملیات بر اساس وظیفه کاربر، به بخش Breakdown: مصرف صورتحساب بر اساس وظیفه کاربر مراجعه کنید.
کوچک
(50 هزار نصب)
برای 50000 نصب برنامه (5000 کاربر فعال روزانه): 12.14 دلار در ماه
هزینه های خواندن/نوشتن | |||||
---|---|---|---|---|---|
کل هزینه ماهانه = 11.10 دلار در ماه | |||||
400 هزار مطالعه روزانه | = | 50 هزار خواندن بدون هزینه + (350 هزار خواندن با 0.06/100 هزار دلار) | = | 3.5 * 0.06 دلار | |
0.21 دلار / روز * 30 = 6.30 دلار | |||||
روزانه 100 هزار می نویسد | = | نوشتن 20 هزار بدون هزینه + (80 هزار نوشتن با 0.18/100 هزار دلار) | = | 0.8 * 0.18 دلار | |
0.14 دلار / روز * 30 = 4.20 دلار | |||||
100 هزار کل حذف روزانه | = | 20 هزار حذف بدون هزینه + (80 هزار حذف با 0.02/100 هزار دلار) | = | 0.8 * 0.02 دلار | |
0.02 دلار / روز * 30 = 0.60 دلار |
هزینه های ذخیره سازی/شبکه سازی | |||||||
---|---|---|---|---|---|---|---|
کل هزینه ماهانه = 1.04 دلار در ماه | |||||||
20 کیلوبایت / DAU خروج روزانه * 5 هزار DAU | = | 100 مگابایت خروجی روزانه * 30 | = | خروجی ماهانه شبکه 3 گیگابایت | |||
3 گیگابایت خروج بدون هزینه = بدون هزینه 1 | |||||||
15 کیلوبایت ذخیره پیام روزانه / DAU + 3 کیلوبایت ذخیره سازی / نصب 2 | = | 45 کیلوبایت فضای ذخیره سازی / DAU * 5 هزار DAU | = | 225 مگابایت حافظه روزانه / DAU * 30 | = | 6.75 گیگابایت فضای ذخیره سازی ماهانه | |
1 گیگابایت فضای ذخیره سازی بدون هزینه + (5.75 * 0.18 دلار) = 1.04 دلار در ماه |
1 10 گیگابایت خروجی ماهانه شبکه برای Cloud Firestore بدون هزینه است.
2 از آنجایی که فرض ما این است که DAU ها 10٪ از کل نصب های برنامه را تشکیل می دهند، این تعداد تعداد کل کاربرانی است که برنامه شما را نصب کرده اند.
متوسط
(1 میلیون نصب)
برای 1,000,000 نصب برنامه (100,000 کاربر فعال روزانه): 292.02 دلار در ماه
هزینه های خواندن/نوشتن | |||||
---|---|---|---|---|---|
کل هزینه ماهانه = 261.90 دلار در ماه | |||||
8 میلیون مطالعه روزانه | = | 50 هزار خواندن بدون هزینه + (7.95 میلیون خواندن با 0.06/100 هزار دلار) | = | 79.5 * 0.06 دلار | |
4.77 دلار در روز * 30 = 143.10 دلار | |||||
روزانه 2 میلیون می نویسد | = | نوشتن 20 هزار بدون هزینه + (1.98 میلیون نوشتن با 0.18/100 هزار دلار) | = | 19.8 * 0.18 دلار | |
3.56 دلار / روز * 30 = 106.80 دلار | |||||
2 میلیون کل حذف روزانه | = | 20 هزار حذف بدون هزینه + (1.98 میلیون حذف با 0.02/100 هزار دلار) | = | 19.8 * 0.02 دلار | |
0.40 دلار / روز * 30 = 12.00 دلار |
هزینه های ذخیره سازی/شبکه سازی | |||||||
---|---|---|---|---|---|---|---|
کل هزینه ماهانه = 30.12 دلار در ماه | |||||||
20 کیلوبایت / DAU خروج روزانه * 100 هزار DAU | = | 2 گیگابایت خروجی روزانه * 30 | = | خروجی ماهانه شبکه 60 گیگابایتی | |||
خروجی 10 گیگابایتی بدون هزینه + (خروجی 50 گیگابایتی * 0.12 دلار/گیگابایت) = 6.00 دلار در ماه | |||||||
15 کیلوبایت ذخیره پیام روزانه / DAU + 3 کیلوبایت ذخیره سازی / نصب 1 | = | 45 کیلوبایت حافظه / DAU * 100 هزار DAU | = | 4.5 گیگابایت حافظه روزانه / DAU * 30 | = | 135 گیگابایت ذخیره سازی ماهانه | |
1 گیگابایت فضای ذخیره سازی بدون هزینه + (134 گیگابایت * 0.18 دلار / گیگابایت) = 24.12 دلار در ماه |
1 از آنجایی که فرض ما این است که DAU ها 10٪ از کل نصب های برنامه را تشکیل می دهند، این تعداد تعداد کل کاربرانی است که برنامه شما را نصب کرده اند.
بزرگ
(10 میلیون نصب)
برای 10,000,000 نصب برنامه (1,000,000 کاربر فعال روزانه): 2951.52 دلار
هزینه های خواندن/نوشتن | |||||
---|---|---|---|---|---|
کل هزینه ماهانه = مجموع: 2637.90 دلار در ماه | |||||
80 میلیون مطالعه روزانه | = | 50 هزار خواندن بدون هزینه + (79.95 میلیون خواندن با 0.06/100 هزار دلار) | = | 799.5 * 0.06 دلار | |
47.97 دلار / روز * 30 = 1439.10 دلار | |||||
روزانه 20 میلیون می نویسد | = | نوشتن 20 هزار بدون هزینه + (19.98 میلیون نوشتن با 0.18/100 هزار دلار) | = | 199.8 * 0.18 دلار | |
35.96 دلار / روز * 30 = 1078.80 دلار | |||||
20 میلیون کل حذف روزانه | = | 20 هزار حذف بدون هزینه + (19.98 میلیون حذف با 0.02/100 هزار دلار) | = | 199.8 * 0.02 دلار | |
4.00 دلار / روز * 30 = 120.00 دلار |
هزینه های ذخیره سازی/شبکه سازی | |||||||
---|---|---|---|---|---|---|---|
کل هزینه ماهانه = 313.62 دلار در ماه | |||||||
20 کیلوبایت / DAU خروج روزانه * 1 میلیون DAU | = | 20 گیگابایت خروجی روزانه * 30 | = | خروجی ماهانه 600 گیگابایت شبکه | |||
10 گیگابایت خروج بدون هزینه + (خروجی 590 گیگابایت * 0.12 دلار / گیگابایت) = 70.80 دلار در ماه | |||||||
15 کیلوبایت ذخیره پیام روزانه / DAU + 3 کیلوبایت ذخیره سازی / نصب 1 | = | 45 کیلوبایت فضای ذخیره سازی / DAU * 1M DAU | = | 45 گیگابایت حافظه روزانه / DAU * 30 | = | 1350 گیگابایت حافظه ذخیره سازی ماهانه | |
(1 گیگابایت فضای ذخیره سازی بدون هزینه) + (1349 گیگابایت * 0.18 دلار/ گیگابایت) = 242.82 دلار در ماه |
1 از آنجایی که فرض ما این است که DAU ها 10٪ از کل نصب های برنامه را تشکیل می دهند، این تعداد تعداد کل کاربرانی است که برنامه شما را نصب کرده اند.
یکی از مزایای مدل صورتحساب Cloud Firestore که ارزش توجه دارد این است که شما فقط برای آنچه استفاده می کنید پرداخت می کنید. در نتیجه، صورتحساب شما ممکن است با تعداد DAU شما رشد کرده و کوچک شود.
تفکیک: صورتحساب استفاده بر اساس وظیفه کاربر
برای برنامه چت مثال ما، ساختار داده به شرح زیر است:
-
users/{userId}
— سوابق کاربر -
groups/{groupId}
— چت بین 2 یا چند کاربر-
messages/{messageId}
- هر پیام در یک چت.
-
ذخیره سازی داده ها
برای محاسبه هزینههای ذخیرهسازی برای ذخیره دادههای برنامه، مفروضات زیر را در مورد اندازه سند اعمال کنید:
مجموعه | اندازه سند (در حال انتقال) | اندازه سند (روی دیسک)* |
---|---|---|
کاربران | 1 کیلوبایت | 3 کیلوبایت |
گروه ها | 0.5 کیلوبایت | 1.5 کیلوبایت |
پیام ها | 0.25 کیلوبایت | 0.75 کیلوبایت |
*این محاسبه اندازه شامل نمایه هایی برای فیلدهای پیام است، اما فرض می کند نمایه سازی برای محتوای پیام غیرفعال است.
این برنامه همچنین فقط پیامهایی را ذخیره میکند که حداکثر سه ماه از عمر آنها گذشته باشد تا هزینههای ذخیرهسازی را کاهش دهد.
برای اطلاعات بیشتر در مورد محاسبه هزینه های ذخیره سازی، به درک محاسبات اندازه ذخیره سازی مراجعه کنید.
عملیات
کاربران معمولاً وظایف رایج زیر را در برنامه انجام می دهند:
- مشاهده لیست چت ها: کاربران صفحه اصلی برنامه را باز می کنند و لیستی از چت ها (گروهی و مستقیم) را می بینند که بر اساس آخرین پیام ارسال شده مرتب شده اند.
- خواندن پیامها در چت: کاربران چتها را از صفحه اصلی انتخاب میکنند و پیامهای اخیر را از چت میخوانند.
- ارسال پیام به چت: کاربران به چت ها (گروهی یا مستقیم) پیام ارسال می کنند.
کل عملیات تخمینی برنامه نمونه در Cloud Firestore برای سه کار معمول کاربر به شرح زیر است:
- تعداد خوانده شده: (5 * 10) + (30) = 80 مطالعه / کاربر / روز
- می نویسد: (10 * 2) = 20 نوشتن / کاربر / روز
- خروجی شبکه : (50 * 0.25 کیلوبایت) + (30 * 0.25 کیلوبایت) = 20 کیلوبایت / کاربر / روز
- فضای ذخیره سازی : (20 * 0.75 کیلوبایت) = 15 کیلوبایت / کاربر / روز
کل استفاده بر اساس وظیفه کاربر
هر کار کاربر را انتخاب کنید تا شرح کامل و تفکیک عملیات، ذخیره سازی و هزینه های شبکه را در برنامه ببینید.
لیست چت ها را ببینید
صفحه اصلی برنامه 25 گپ اخیر را بارگیری می کند و برای 25 خواندن سند هزینه ای را متحمل می شود. فرض کنید یک کاربر فعال برنامه را 5 بار در روز باز می کند که در مجموع 125 بار در روز به ازای هر کاربر مطالعه می کند. با این حال، پرس و جوهای کارآمدتر، مانند نمونه زیر، می توانند این بار را کاهش دهند.
در مثال زیر، ما درخواست را به چت های جدید با استفاده از مهر زمانی هر واکشی موفق که توسط برنامه ذخیره شده است محدود می کنیم:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
فرض کنید هر بار که کاربر برنامه را بررسی می کند، به طور متوسط 10 چت به روز شده وجود دارد. این پرس و جو فقط دارای 10 خواندن سند است.
خواندن پیام ها در یک چت
کاربران از صفحه اصلی روی موضوعات چت کلیک می کنند تا پیام های اخیر را ببینند و 50 پیام اخیر را در بارگذاری اولیه بارگیری کنند.
فرض کنید کاربر معمولی این عمل را 5 بار در روز انجام می دهد (یک بار برای هر بار که صفحه اصلی را باز می کند)، که منجر به در مجموع 250 خواندن برای هر کاربر در هر روز می شود. همچنین میتوانیم درخواست خود را از آخرین زمان واکشی به پیامهای جدید محدود کنیم:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
فرض کنید یک کاربر روزانه حدود 30 پیام در تمام چت ها دریافت می کند. از آنجایی که پرس و جو را برای دریافت پیام های جدید محدود کرده اید، این به 30 پیام بازیابی شده در روز تبدیل می شود.
به یک چت پیام بفرستید
کاربران می توانند پس از وارد شدن به یک چت برای سایر شرکت کنندگان پیام ارسال کنند. فرض کنید یک کاربر فعال روزانه حدود 10 پیام ارسال می کند.
هر پیام ارسالی باعث دو نوشتن سند می شود: یکی نوشتن در زیر مجموعه messages
چت و دیگری نوشتن در سند مادر چت برای به روز رسانی مهر زمانی lastUpdated
و سایر ابرداده ها.
توجه داشته باشید که هزینه خواندن این پیام ها در سفرهای دیگر محاسبه شده است، بنابراین مجموع های زیر فقط این هزینه نوشتن را در نظر می گیرند.
صورتحساب استفاده برای وظایف سرپرست
به عنوان مالک یا سرپرست برنامه، احتمالاً می خواهید از داده های برنامه خود گزارش ایجاد کنید. به عنوان مثال، ممکن است بخواهید تعداد پیام های ارسال شده توسط کاربران خود را روزانه شمارش کنید. شما می توانید این کار را با یک تجمع count()
از گروه مجموعه messages
انجام دهید.
برای جستارهای تجمعی مانند count()
یک سند خوانده شده برای هر دسته از حداکثر 1000 ورودی فهرست مطابق با پرس و جو از شما دریافت می شود. اجرای این تجمیع روزانه هزینه های ماهانه زیر را اضافه می کند:
کوچک
(50 هزار نصب)
برای 50000 نصب برنامه (5000 DAU): 0.0009 دلار در ماه
5000 کاربر فعال * 10 پیام جدید برای هر کاربر = 50000 سند پیام جدید در روز
50000 سند شمارش شده / 1000 مطابقت فهرست به ازای هر بار خواندن = 50 خواندن
50 مطالعه در روز * 30 روز = 1500 مطالعه در ماه
1500 مطالعه در ماه * 0.06/100000 خواندن قیمت = 0.0009 دلار در ماه
متوسط
(1 میلیون نصب)
برای 1,000,000 نصب برنامه (100,000 کاربر فعال روزانه): 0.018 دلار در ماه
100000 کاربر فعال * 10 پیام جدید برای هر کاربر = 1000000 سند پیام جدید در روز
1,000,000 سند شمارش شده / 1,000 مطابقت فهرست در هر بار خواندن = 1,000 مطالعه
1000 مطالعه در روز * 30 روز = 30000 مطالعه در ماه
30000 مطالعه در ماه * 0.06/100000 قیمت خواندن = 0.018 دلار در ماه
بزرگ
(10 میلیون نصب)
برای 10,000,000 نصب برنامه (1,000,000 کاربر فعال روزانه): 0.18 دلار
1,000,000 کاربر فعال * 10 پیام جدید برای هر کاربر = 10,000,000 سند پیام جدید در روز
10،000،000 سند شمارش شده / 1000 مطابقت شاخص در هر بار خواندن = 10،000 مطالعه
10000 مطالعه در روز * 30 روز = 300000 مطالعه در ماه
300000 مطالعه در ماه * 0.06/100000 قیمت خواندن = 0.18 دلار در ماه
مزایای شامل: خدمات بدون هزینه برای برنامه شما
در حالی که عملیات Cloud Firestore ، ذخیره سازی و پهنای باند شبکه همگی به عنوان استفاده قابل پرداخت در نظر گرفته می شوند، شما همچنین از مزایای دیگری بدون هزینه اضافی بهره مند می شوید. با مقایسه Cloud Firestore با سایر گزینه های پایگاه داده، خدمات زیر را که بدون هزینه هستند در نظر بگیرید:
- دسترسی مستقیم به مشتری: Cloud Firestore مستقیماً از کد مشتری شما با استفاده از SDK های بومی ما قابل دسترسی است. این بدان معناست که برای اتصال کلاینت های تلفن همراه خود به پایگاه داده نیازی به ساخت و اجرای سرور API ندارید.
- تعادل بار: از آنجایی که Cloud Firestore به طور خودکار برای پشتیبانی از ترافیک به پایگاه داده شما مقیاس می شود، نیازی به اجرای متعادل کننده بار ندارید.
- آپتایم سرور: پایگاههای اطلاعاتی Cloud Firestore بر روی سرورهای Google Cloud کار میکنند و بیش از 99 درصد آپتایم ماهانه را ارائه میدهند.
- احراز هویت: کاربران نامحدود را به سادگی و ایمن با Firebase Authentication احراز هویت کنید. Firebase Authentication مستقیماً با Cloud Firestore ادغام میشود، بنابراین شما نیازی به اجرای سرویس احراز هویت خود ندارید.
- اعلانهای فشاری: پیامها و اعلانها را با Cloud Messaging ارسال کنید.
- سایر محصولات Firebase: سایر محصولات Firebase را بدون هزینه ادغام کنید، از جمله A/B Testing، Analytics، Crashlytics، Performance Monitoring و Remote Config. درباره سایر محصولات Firebase و قیمت Firebase بیشتر بدانید.