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

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

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

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

فرض‌ها

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

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

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

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

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

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

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

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

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

هزینه‌های خواندن/ نوشتن
کل هزینه ماهانه = ۲۶۱٫۹۰ دلار در ماه
۸ میلیون خواندن روزانه در مجموع =   ۵۰ هزار خواندن بدون هزینه + (۷٫۹۵ میلیون خواندن با هزینه ۰٫۰۶ دلار/۱۰۰ هزار) =   ‫۷۹٫۵ * ۰٫۰۶ دلار
۴٫۷۷ دلار / روز * ۳۰ = ۱۴۳٫۱۰ دلار
 
۲ میلیون کل نوشتن‌های روزانه =   ‫۲۰ هزار نوشتن بدون هزینه + (۱٫۹۸ میلیون نوشتن با هزینه ۰٫۱۸ دلار/۱۰۰ هزار) =   ‫۱۹٫۸ * ۰٫۱۸ دلار
‫۳٫۵۶ دلار / روز * ۳۰ = ۱۰۶٫۸۰ دلار
 
۲ میلیون حذف روزانه در مجموع =   ‫۲۰ هزار حذف رایگان + (۱٫۹۸ میلیون حذف با هزینه ۰٫۰۲ دلار/۱۰۰ هزار) =   ‫۱۹٫۸ * ۰٫۰۲ دلار
۰٫۴۰ دلار / روز * ۳۰ = ۱۲٫۰۰ دلار
هزینه‌های ذخیره‌سازی/شبکه‌سازی
کل هزینه ماهانه = ۳۰٫۱۲ دلار در ماه
‫۲۰ کیلوبایت / 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 بیشتر بدانید.