دیدن نمونه قیمت‌گذاری Cloud Firestore

از این مثال واقعی از یک برنامه گپ پایه برای سنجش میزان استفاده و هزینه‌های Cloud Firestore خود استفاده کنید. این برآورد دقیق نیست، اما می‌تواند به شما کمک کند تا نحوه محاسبه صورت‌حساب استفاده از Cloud Firestore را بهتر درک کنید.

نمای کلی: هزینه‌ها براساس سطح استفاده

برای نشان دادن هزینه‌های معمول، یک برنامه گپ نمونه را درنظر بگیرید که در آن کاربران می‌توانند گپ‌هایی با دو یا چند شرکت‌کننده شروع کنند. کاربران می‌توانند گپ‌های فعالشان را در فهرست ببینند، پیام‌ها را بخوانند، و پیام ارسال کنند. برای این مثال، از قیمت‌گذاری برای چندمنطقه آمریکای شمالی (به‌طور خاص nam5) استفاده می‌کنیم.

فرض‌ها

فرض‌های زیر را درباره استفاده و ذخیره‌سازی داده درنظر بگیرید:

  • کاربران فعال روزانه (DAU) ۱۰٪ از کل نصب‌های برنامه هستند. می‌توانید هزینه‌های روزانه‌تان را بااستفاده از تخمین تقریبی «کاربران فعال روزانه» (DAU) برآورد کنید. این‌ها کاربرانی هستند که به‌طور فعال برنامه‌تان را در روزی مشخص باز می‌کنند و از آن استفاده می‌کنند، که معمولاً زیرمجموعه کوچکی از کل نصب‌های برنامه‌تان است. برای محاسبات زیر، کاربران فعال روزانه را ۱۰٪ از تعداد کل نصب‌های برنامه تخمین زدیم.
  • اندازه سندها نسبتاً کوچک است. برای تفکیک اندازه سند براساس نوع، جدول زیر را ببینید.
  • داده‌ها فقط به‌مدت سه ماه ذخیره می‌شود. پیام‌ها در برنامه گپ نمونه فقط برای یک دوره سه‌ماهه ذخیره می‌شوند. برای درنظر گرفتن عملیات حذف، محاسبات زیر حذف روزانه را برای هر نوشتن روزانه نشان می‌دهد.
  • این هزینه‌های تخمینی نشان‌دهنده بخش عمده‌ای از هزینه‌های برنامه نمونه است، اما نه همه آن‌ها. ما بخش عمده‌ای از هزینه‌های برنامه را با محاسبه عملیات، فضای ذخیره‌سازی کاربر و پیام، و خروج برای رایج‌ترین وظایف کاربر که در این راهنما ذکر شده است، درنظر گرفته‌ایم. بااین‌حال، بسته به ساختار برنامه و نیازهای داده‌ای آن، ممکن است لازم باشد هزینه‌های اضافی را درنظر بگیرید. از این مثال برای راهنمایی محاسباتتان استفاده کنید، اما برای توضیحات کامل‌تر درباره هزینه‌های Cloud Firestore به صفحه قیمت‌گذاری مراجعه کنید.

برای تفکیک عملیات براساس تکلیف کاربر، به بخش تفکیک: استفاده صورت‌حساب‌شده براساس تکلیف کاربر مراجعه کنید.

کوچک
(۵۰ هزار نصب)

برای ۵۰٬۰۰۰ نصب برنامه (۵٬۰۰۰ کاربر فعال روزانه): ۱۲٫۱۴ دلار در ماه

هزینه‌های خواندن/نوشتن
کل هزینه ماهانه = ۱۱٫۱۰ دلار در ماه
‫۴۰۰ هزار خواندن روزانه در مجموع =   ۵۰ هزار خواندن بدون هزینه + (۳۵۰ هزار خواندن با هزینه ۰٫۰۶ دلار/۱۰۰ هزار) =   ‫۳٫۵ * ۰٫۰۶ دلار
۰٫۲۱ دلار / روز * ۳۰ = ۶٫۳۰ دلار
 
‫۱۰۰ هزار نوشتن روزانه در مجموع =   ۲۰ هزار نوشتن رایگان + (۸۰ هزار نوشتن با قیمت ۰٫۱۸ دلار/۱۰۰ هزار) =   ‫۰٫۸ * ۰٫۱۸ دلار
‫۰٫۱۴ دلار / روز * ۳۰ = ۴٫۲۰ دلار
 
۱۰۰ هزار حذف روزانه در مجموع =   ۲۰ هزار حذف رایگان + (۸۰ هزار حذف با هزینه ۰٫۰۲ دلار به‌ازای هر ۱۰۰ هزار حذف) =   .8 * $0.02
۰٫۰۲ دلار / روز * ۳۰ = ۰٫۶۰ دلار
هزینه‌های ذخیره‌سازی/شبکه‌سازی
کل هزینه ماهانه = ۱٫۰۴ دلار در ماه
‫۲۰ کیلوبایت / DAU خروجی روزانه * ۵ هزار DAU =   ‫۱۰۰ مگابایت خروج روزانه * ۳۰ =   ‫۳ گیگابایت خروجی شبکه ماهانه
۳ گیگابایت خروج بدون هزینه = بدون هزینه۱
 
‫۱۵ کیلوبایت فضای ذخیره‌سازی پیام روزانه / کاربر فعال روزانه + ۳ کیلوبایت فضای ذخیره‌سازی / نصب۲ =   ‫۴۵ کیلوبایت فضای ذخیره‌سازی / کاربر فعال روزانه * ۵۰۰۰ کاربر فعال روزانه =   ‫۲۲۵ مگابایت فضای ذخیره‌سازی روزانه / کاربران فعال روزانه * ۳۰ =   مصرف فضای ذخیره‌سازی ماهانه ۶.۷۵ گیگابایت
‫۱ گیگابایت فضای ذخیره‌سازی رایگان + (۵٫۷۵ * ۰٫۱۸ دلار) = ۱٫۰۴ دلار در ماه

۱ ۱۰ گیگابایت خروجی شبکه ماهانه برای Cloud Firestore رایگان است.
۲ ازآنجایی‌که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصب‌های برنامه را تشکیل می‌دهند، این عدد نشان‌دهنده تعداد کل کاربرانی است که برنامه شما را نصب کرده‌اند.

متوسط
(۱ میلیون نصب)

برای ۱٬۰۰۰٬۰۰۰ نصب برنامه (۱۰۰٬۰۰۰ کاربر فعال روزانه): ۲۹۲٫۰۲ دلار در ماه

هزینه‌های خواندن/نوشتن
کل هزینه ماهانه = ۲۶۱٫۹۰ دلار در ماه
‫۸ میلیون خواندن روزانه در مجموع =   ۵۰ هزار خواندن بدون هزینه + (۷٫۹۵ میلیون خواندن با هزینه ۰٫۰۶ دلار/۱۰۰ هزار) =   ‫۷۹٫۵ * ۰٫۰۶ دلار
۴٫۷۷ دلار / روز * ۳۰ = ۱۴۳٫۱۰ دلار
 
۲ میلیون کل نوشتن‌های روزانه =   ۲۰ هزار نوشتن بدون هزینه + (۱٫۹۸ میلیون نوشتن با هزینه ۰٫۱۸ دلار/۱۰۰ هزار) =   ‫۱۹٫۸ * ۰٫۱۸ دلار
۳٫۵۶ دلار / روز * ۳۰ = ۱۰۶٫۸۰ دلار
 
۲ میلیون حذف روزانه در مجموع =   ۲۰ هزار حذف رایگان + (۱٫۹۸ میلیون حذف با هزینه ۰٫۰۲ دلار/۱۰۰ هزار) =   ‫۱۹٫۸ * ۰٫۰۲ دلار
۰٫۴۰ دلار / روز * ۳۰ = ۱۲٫۰۰ دلار
هزینه‌های ذخیره‌سازی/شبکه‌سازی
کل هزینه ماهانه = ۳۰٫۱۲ دلار در ماه
‫۲۰ کیلوبایت / DAU خروجی روزانه * ۱۰۰ هزار DAU =   ‫۲ گیگابایت خروجی روزانه * ۳۰ =   ‫۶۰ گیگابایت خروجی شبکه ماهانه
‫۱۰ گیگابایت خروجی بدون هزینه + (۵۰ گیگابایت خروجی * ۰٫۱۲ دلار/گیگابایت) = ۶٫۰۰ دلار در ماه
 
‫۱۵ کیلوبایت فضای ذخیره‌سازی پیام روزانه / کاربر فعال روزانه + ۳ کیلوبایت فضای ذخیره‌سازی / نصب۱ =   ‫۴۵ کیلوبایت فضای ذخیره‌سازی / DAU * ‏ ۱۰۰ هزار DAU =   ‫۴٫۵ گیگابایت فضای ذخیره‌سازی روزانه / DAU * ۳۰ =   مصرف فضای ذخیره‌سازی ماهانه ۱۳۵ گیگابایت
۱ گیگابایت فضای ذخیره‌سازی رایگان + (۱۳۴ گیگابایت * ۰٫۱۸ دلار/گیگابایت) = ۲۴٫۱۲ دلار در ماه

۱ ازآنجایی‌که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصب‌های برنامه هستند، این عدد نشان‌دهنده تعداد کل کاربرانی است که برنامه شما را نصب کرده‌اند.

بزرگ
(۱۰ میلیون نصب)

برای ۱۰٬۰۰۰٬۰۰۰ نصب برنامه (۱٬۰۰۰٬۰۰۰ کاربر فعال روزانه): ۲۹۵۱٫۵۲ دلار

هزینه‌های خواندن/نوشتن
کل هزینه ماهانه = کل: ۲۶۳۷٫۹۰ دلار در ماه
‫۸۰ میلیون خواندن روزانه در مجموع =   ۵۰ هزار خواندن بدون هزینه + (۷۹٫۹۵ میلیون خواندن با هزینه ۰٫۰۶ دلار/۱۰۰ هزار) =   ‫۷۹۹٫۵ * ۰٫۰۶ دلار
۴۷٫۹۷ دلار / روز * ۳۰ = ۱۴۳۹٫۱۰ دلار
 
‫۲۰ میلیون کل نوشتن‌های روزانه =   ‫۲۰ هزار نوشتن رایگان + (۱۹٫۹۸ میلیون نوشتن با هزینه ۱۸ سنت برای هر ۱۰۰ هزار نوشتن) =   ‫۱۹۹٫۸ * ۰٫۱۸ دلار
۳۵٫۹۶ دلار / روز * ۳۰ = ۱۰۷۸٫۸۰ دلار
 
۲۰ میلیون حذف روزانه در مجموع =   ‫۲۰ هزار حذف بدون هزینه + (۱۹٫۹۸ میلیون حذف با هزینه ۰٫۰۲ دلار/۱۰۰ هزار) =   ‫۱۹۹٫۸ * ۰٫۰۲ دلار
۴٫۰۰ دلار / روز * ۳۰ = ۱۲۰٫۰۰ دلار
هزینه‌های ذخیره‌سازی/شبکه‌سازی
کل هزینه ماهانه = ۳۱۳٫۶۲ دلار در ماه
‫۲۰ کیلوبایت / DAU خروجی روزانه * ۱ میلیون DAU =   ‫۲۰ گیگابایت خروجی روزانه * ۳۰ =   ‫۶۰۰ گیگابایت خروجی شبکه ماهانه
‫۱۰ گیگابایت خروجی بدون هزینه + (۵۹۰ گیگابایت خروجی * ۰٫۱۲ دلار/گیگابایت) = ۷۰٫۸۰ دلار در ماه
 
‫۱۵ کیلوبایت فضای ذخیره‌سازی پیام روزانه / کاربر فعال روزانه + ۳ کیلوبایت فضای ذخیره‌سازی / نصب۱ =   ‫۴۵ کیلوبایت فضای ذخیره‌سازی / DAU * ‏۱ میلیون DAU =   ‫۴۵ گیگابایت فضای ذخیره‌سازی روزانه / DAU * ۳۰ =   مصرف فضای ذخیره‌سازی ماهانه ۱۳۵۰ گیگابایت
(۱ گیگابایت فضای ذخیره‌سازی رایگان) + (۱۳۴۹ گیگابایت * ۰٫۱۸ دلار/گیگابایت) = ۲۴۲٫۸۲ دلار در ماه

۱ ازآنجایی‌که فرض ما این است که کاربران فعال روزانه ۱۰٪ از کل نصب‌های برنامه هستند، این عدد نشان‌دهنده تعداد کل کاربرانی است که برنامه شما را نصب کرده‌اند.

یکی از مزایای مدل صورت‌حساب Cloud Firestore که ارزش توجه دارد این است که فقط برای آنچه استفاده می‌کنید هزینه پرداخت می‌کنید. درنتیجه، صورت‌حساب شما ممکن است با تعداد کاربران فعال روزانه شما افزایش یا کاهش یابد.

تفکیک: استفاده صورت‌حساب‌شده براساس تکلیف کاربر

برای برنامه گپ نمونه ما، ساختار داده‌ها به‌صورت زیر است:

  • users/{userId} — سوابق کاربر
  • groups/{groupId} — گپ‌های بین ۲ کاربر یا بیشتر
    • messages/{messageId} — هر پیام در گپ.

فضای ذخیره‌سازی داده

برای محاسبه هزینه‌های ذخیره‌سازی برای ذخیره داده‌های برنامه، فرض‌های زیر را درباره اندازه‌های سند اعمال کنید:

مجموعه اندازه سند (در انتقال) اندازه سند (روی دیسک)*
کاربران ‫۱ کیلوبایت ۳ کیلوبایت
گروه‌ها ‫۰٫۵ کیلوبایت ‫۱٫۵ کیلوبایت
پیام‌ها ۰٫۲۵ کیلوبایت ۰٫۷۵ کیلوبایت

*این محاسبه اندازه شامل نمایه‌های فیلدهای پیام می‌شود، اما فرض می‌کند نمایه‌سازی برای محتوای پیام غیرفعال است.

این برنامه همچنین فقط پیام‌هایی را که حداکثر سه ماه از تاریخ انتشار آن‌ها می‌گذرد ذخیره می‌کند تا هزینه‌های ذخیره‌سازی را کاهش دهد.

برای اطلاعات بیشتر درباره محاسبه هزینه‌های فضای ذخیره‌سازی، به آشنایی با محاسبات اندازه فضای ذخیره‌سازی مراجعه کنید.

عملیات

کاربران معمولاً تکالیف رایج زیر را در برنامه تکمیل می‌کنند:

  • دیدن فهرست گپ‌ها: کاربران صفحه اصلی برنامه را باز می‌کنند و فهرستی از گپ‌ها (گروهی و مستقیم) را می‌بینند که براساس جدیدترین پیام پست‌شده مرتب شده‌اند.
  • خواندن پیام‌ها در گپ: کاربران گپ‌ها را از صفحه اصلی انتخاب می‌کنند و پیام‌های اخیر گپ‌ها را می‌خوانند.
  • ارسال پیام به گپ: کاربران به گپ‌ها (گروهی یا مستقیم) پیام ارسال می‌کنند.

مجموع عملیات تخمینی برنامه نمونه در Cloud Firestore برای سه تکلیف کاربر معمولی به‌صورت زیر است:

  • خواندن‌ها: (۵ * ۱۰) + (۳۰) = ۸۰ خواندن / کاربر / روز
  • نوشتن‌ها: (۱۰ * ۲) = ۲۰ نوشتن / کاربر / روز
  • خروجی شبکه: (۵۰ * ۰٫۲۵ کیلوبایت) + (۳۰ * ۰٫۲۵ کیلوبایت) = ۲۰ کیلوبایت / کاربر / روز
  • فضای ذخیره‌سازی: (۲۰ * ۰٫۷۵ کیلوبایت) = ۱۵ کیلوبایت / کاربر / روز

کل استفاده براساس تکلیف کاربر

هر تکلیف کاربر را انتخاب کنید تا شرح کامل و تفکیک عملیات، فضای ذخیره‌سازی، و هزینه‌های شبکه‌سازی در برنامه را ببینید.

دیدن فهرست گپ‌ها

صفحه اصلی برنامه ۲۵ گپ اخیر را بار می‌کند و هزینه ۲۵ سند خوانده‌شده را متحمل می‌شود. فرض کنید که یک کاربر فعال برنامه را ۵ بار در روز باز می‌کند، که در مجموع ۱۲۵ خواندن برای هر کاربر در روز می‌شود. بااین‌حال، پُرسمان‌های کارآمدتر، مانند پُرسمان موجود در مثال زیر، می‌تواند این بار را کاهش دهد.

در مثال زیر، پُرسمان را به گپ‌های جدید محدود می‌کنیم و از مُهر زمان هر واکشی موفق که توسط برنامه ذخیره شده است استفاده می‌کنیم:

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 مستقیماً از کد کارخواه شما بااستفاده از کیت‌های توسعه نرم‌افزار بومی ما قابل‌دسترسی است. این یعنی برای متصل کردن کارخواه‌های تلفن همراه به پایگاه داده، نیازی به ساختن و اجرای سرور میانای برنامه‌سازی کاربردی ندارید.
  • توازن بار: ازآنجایی‌که Cloud Firestore به‌طور خودکار مقیاس‌بندی می‌شود تا از ترافیک به پایگاه داده شما پشتیبانی کند، نیازی به اجرای توازن بار ندارید.
  • زمان فعال بودن سرور: Cloud Firestore پایگاه داده در Google Cloud سرور کار می‌کنند، و بیش‌از ۹۹٪ زمان فعال بودن ماهانه را ارائه می‌دهند.
  • اصالت‌سنجی: اصالت‌سنجی کاربران نامحدود به‌سادگی و به‌طور ایمن با Firebase Authentication. Firebase Authentication مستقیماً با Cloud Firestore ادغام می‌شود تا لازم نباشد سرویس اصالت‌سنجی خودتان را اجرا کنید.
  • اعلان‌های لحظه‌ای: ارسال پیام و اعلان با Cloud Messaging.
  • دیگر محصولات Firebase: دیگر محصولات Firebase را بدون هزینه ادغام کنید، ازجمله «آزمایش A/B»،‏ Analytics،‏ Crashlytics، و «پایشگر کارایی». درباره دیگر محصولات Firebase و قیمت‌گذاری Firebase بیشتر بدانید.