حدود و میزان استفاده

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

پایش مصرف

برای نظارت بر استفاده از Cloud Firestore از کنسول Firebase، به برگه پایگاه‌های داده و فضای ذخیره‌سازی > Firestore > استفاده بروید. از این داشبورد برای سنجش میزان استفاده‌تان در دوره‌های زمانی مختلف استفاده کنید.

استفاده دقیق در کنسول Google Cloud

وقتی پروژه Firebase ایجاد می‌کنید، پروژه Google Cloud هم ایجاد می‌کنید. صفحه‌های Cloud Firestore سهمیه‌های API و App Engine سهمیه‌ها در کنسول Google Cloud، اطلاعات سهمیه و استفاده از Cloud Firestore را ردیابی می‌کنند.

سهمیه رایگان

Cloud Firestore سهمیه رایگانی ارائه می‌دهد که به شما امکان می‌دهد بدون هزینه شروع کنید. اگر به سهمیه بیشتری نیاز دارید، باید صورت‌حساب را برای پروژه Google Cloud فعال کنید.

سهمیه‌ها به‌صورت روزانه اعمال می‌شوند و حدود نیمه‌شب به‌وقت اقیانوس آرام بازنشانی می‌شوند.

جدول زیر مقادیر سهمیه رایگان را خلاصه می‌کند:

سطح رایگان سهمیه
داده‌های ذخیره‌شده ‫۱ گیبی‌بایت
سند می‌خواند ۵۰٬۰۰۰ در روز
نوشتن سند ۲۰٬۰۰۰ در روز
حذف سند ۲۰٬۰۰۰ در روز
انتقال داده‌های خروجی ‫۱۰ گیبی‌بایت در ماه

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

  • حذف‌های TTL
  • داده‌های PITR
  • پشتیبان‌گیری داده‌ها
  • بازیابی عملیات
  • عملیات همسانه‌سازی

برای اطلاعات بیشتر درباره نحوه صدور صورت‌حساب برای این ویژگی‌ها، قیمت‌گذاری فضای ذخیره‌سازی را ببینید.

حدود استاندارد

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

پایگاه‌های داده

حد جزئیات
حداکثر تعداد پایگاه‌های داده در هر پروژه

100

می‌توانید با پشتیبانی تماس بگیرید تا درخواست کنید این حد افزایش یابد.

حداکثر تعداد پایگاه‌های داده کلیدهای رمزگذاری مدیریت‌شده توسط مشتری (CMEK) در هر پروژه

0

به‌طور پیش‌فرض، سهمیه ۰ است زیرا این ویژگی در فهرست مجاز قرار دارد. با تکمیل کردن فرم درخواست دسترسی CMEK می‌توانید درخواست افزایش سهمیه کنید.

مجموعه‌ها، اسناد، و فیلدها

حد جزئیات
محدودیت‌های شناسه‌های مجموعه
  • باید نویسه‌های UTF-8 معتبر باشد
  • نباید طولانی‌تر از ۱۵۰۰ بایت باشد
  • نمی‌تواند حاوی کج‌خط (/) باشد
  • نمی‌تواند فقط شامل یک نقطه (.) یا دو نقطه (..) باشد
  • با عبارت باقاعده __.*__ مطابقت ندارد
حداکثر عمق زیرمجموعه‌ها 100
محدودیت‌های شناسه‌های سند
  • باید نویسه‌های UTF-8 معتبر باشد
  • نباید طولانی‌تر از ۱۵۰۰ بایت باشد
  • نمی‌تواند حاوی کج‌خط (/) باشد
  • نمی‌تواند فقط شامل یک نقطه (.) یا دو نقطه (..) باشد
  • با عبارت باقاعده __.*__ مطابقت ندارد
  • اگر موجودیت‌های Datastore را به پایگاه داده Firestore وارد کنید، شناسه‌های موجودیت عددی به‌صورت __id[0-9]+__ نمایش داده می‌شوند
حداکثر اندازه برای نام سند ‫۶ کیبی‌بایت
حداکثر اندازه سند ‫۱ مبی‌بایت (۱٬۰۴۸٬۵۷۶ بایت)
محدودیت‌های نام فیلدها
  • باید نویسه‌های UTF-8 معتبر باشد
  • با عبارت باقاعده __.*__ مطابقت ندارد
حداکثر اندازه نام فیلد ‫۱۵۰۰ بایت
محدودیت‌های مسیرهای فیلد
  • نام فیلدها باید با یک نقطه (.) از هم جدا شود
  • می‌تواند به‌عنوان رشته‌ای از بخش‌ها که با نقطه از هم جدا شده‌اند (.) منتقل شود، که در آن هر بخش یا نام فیلد ساده است یا نام فیلد نقل‌قول‌شده (در زیر تعریف شده است).
نام فیلد ساده نامی است که همه موارد زیر درباره آن صادق باشد:
  • فقط حاوی نویسه‌های a-z، A-Z، 0-9، و زیرخط (_) باشد
  • با 0-9 شروع نمی‌شود
نام فیلد نقل‌قول‌شده با نویسه نقل‌قول وارونه (`) شروع و تمام می‌شود. برای مثال، foo.`x&y` به فیلد x&y که در فیلد foo تودرتو شده است اشاره دارد. برای ساختن نام فیلد با نویسه تیک وارو، نویسه تیک وارو را با نویسه واکج‌خط (\) گریز دهید. برای راحتی کار، می‌توانید با ارسال مسیر فیلد به‌عنوان شیء FieldPath، از نام‌های فیلد نقل‌شده اجتناب کنید (برای مثال، JavaScript FieldPath را ببینید).
حداکثر اندازه مسیر فیلد ‫۱۵۰۰ بایت
حداکثر اندازه مقدار فیلد ‫۱ مبی‌بایت - ۸۹ بایت (۱٬۰۴۸٬۴۸۷ بایت)
حداکثر عمق فیلدها در نقشه یا آرایه

20

فیلدهای نقشه و آرایه یک سطح به عمق کلی شیء اضافه می‌کنند. برای مثال، شیء زیر درمجموع سه سطح عمق دارد:


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

نوشتن‌ها و تراکنش‌ها

علاوه‌بر این محدودیت‌ها، باید روال‌های مطلوب برای طراحی در مقیاس را نیز ببینید.

حد جزئیات
حداکثر اندازه درخواست میانای برنامه‌سازی کاربردی ‫۱۰ مبی‌بایت
محدودیت زمانی برای تراکنش ۲۷۰ ثانیه، با زمان انقضای ۶۰ ثانیه‌ای برای حالت غیرفعال
حداکثر تعداد تبدیل‌های فیلد که می‌توان در یک سند در عملیات Commit یا در تراکنش انجام داد 500

نمایه‌ها

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

حد جزئیات
حداکثر تعداد نمایه‌های ترکیبی برای پایگاه داده
حداکثر تعداد پیکربندی‌های تک‌فیلدی برای پایگاه داده

یک پیکربندی سطح فیلد می‌تواند حاوی چندین پیکربندی برای یک فیلد باشد. برای مثال، یک معافیت نمایه‌سازی تک‌فیلدی و یک خط‌مشی TTL در همان فیلد به‌عنوان یک پیکربندی فیلد در محدودیت حساب می‌شوند.

حداکثر تعداد ورودی‌های نمایه برای هر سند

‫۴۰٬۰۰۰

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

  • تعداد ورودی‌های نمایه تک‌فیلدی
  • تعداد ورودی‌های نمایه ترکیبی

برای دیدن اینکه Cloud Firestore چگونه یک سند و مجموعه‌ای از نمایه‌ها را به ورودی‌های نمایه تبدیل می‌کند، این نمونه شمارش ورودی نمایه را ببینید.

حداکثر تعداد فیلدها در نمایه ترکیبی 100
حداکثر اندازه ورودی نمایه

‫۷٫۵ کیبی‌بایت

برای دیدن نحوه محاسبه اندازه ورودی نمایه توسط Cloud Firestore، اندازه ورودی نمایه را ببینید.

حداکثر مجموع اندازه‌های ورودی‌های نمایه سند

‫۸ مبی‌بایت

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

  • مجموع اندازه ورودی‌های نمایه تک‌فیلدی سند
  • مجموع اندازه ورودی‌های نمایه ترکیبی سند
  • حداکثر اندازه مقدار فیلد نمایه‌شده

    ‫۱۵۰۰ بایت

    مقادیر فیلد بیشتر از ۱۵۰۰ بایت کوتاه می‌شوند. پُرسمان‌های شامل مقادیر فیلد کوتاه ممکن است نتایج متناقضی برگردانند.

    طول عمر (TTL)

    حد جزئیات
    حداکثر تعداد پیکربندی‌های تک‌فیلدی برای پایگاه داده

    یک پیکربندی سطح فیلد می‌تواند حاوی چندین پیکربندی برای یک فیلد باشد. برای مثال، یک معافیت نمایه‌سازی تک‌فیلدی و یک خط‌مشی TTL در همان فیلد به‌عنوان یک پیکربندی فیلد در محدودیت حساب می‌شوند.

    صادر/وارد کردن

    محدودیت‌های زیر برای عملیات وارد کردن و صادر کردن مدیریت‌شده اعمال می‌شود:

    حد جزئیات
    حداکثر تعداد کل درخواست‌های صادر کردن و وارد کردن مجاز برای یک پروژه در هر دقیقه 20
    حداکثر تعداد صادر کردن و وارد کردن هم‌زمان ۵۰
    حداکثر تعداد فیلترهای شناسه مجموعه برای درخواست‌های صادر و وارد کردن 100

    قوانین امنیتی

    حد جزئیات
    حداکثر تعداد تماس‌های exists()، get()، و getAfter() در هر درخواست
    • ۱۰ برای درخواست‌های تک‌سندی و درخواست‌های پُرسمان.
    • ۲۰ برای خواندن چندسندی، تراکنش‌ها، و نوشتن دسته‌ای. محدودیت قبلی ۱۰ برای هر عملیات نیز اعمال می‌شود.

      برای مثال، فرض کنید درخواست نوشتن دسته‌ای با ۳ عملیات نوشتن ایجاد می‌کنید و قوانین امنیتی شما از ۲ تماس دسترسی به سند برای اعتبارسنجی هر نوشتن استفاده می‌کند. در این حالت، هر نوشتن از ۲ تماس دسترسی از ۱۰ تماس دسترسی خود استفاده می‌کند و درخواست نوشتن دسته‌ای از ۶ تماس دسترسی از ۲۰ تماس دسترسی خود استفاده می‌کند.

    فراتر رفتن از هریک از این حدود منجر به خطای «اجازه رد شد» می‌شود.

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

    حداکثر عمق عبارت match تودرتو 10
    حداکثر طول مسیر، در بخش‌های مسیر، مجاز در مجموعه‌ای از عبارت‌های تودرتوی match 100
    حداکثر تعداد متغیرهای ضبط مسیر مجاز در مجموعه‌ای از عبارت‌های تودرتوی match 20
    حداکثر عمق فراخوانی تابع 20
    حداکثر تعداد متغیرهای مستقل تابع 7
    حداکثر تعداد let اتصال متغیر در هر تابع 10
    حداکثر تعداد فراخوانی‌های تابع بازگشتی یا چرخه‌ای 0 (مجاز نیست)
    حداکثر تعداد عبارت‌های ارزیابی‌شده در هر درخواست ۱۰۰۰
    حداکثر اندازه مجموعه قوانین مجموعه قوانین باید از دو محدودیت اندازه پیروی کنند:
    • محدودیت ۲۵۶ کیلوبایتی برای اندازه منبع نوشتاری مجموعه قوانین منتشرشده از کنسول Firebase یا از CLI بااستفاده از firebase deploy.
    • محدودیت ۲۵۰ کیلوبایتی برای اندازه مجموعه قوانین کامپایل‌شده که وقتی Firebase منبع را پردازش می‌کند و آن را در پس‌زمینه فعال می‌کند، ایجاد می‌شود.

    مدیریت کردن هزینه‌ها

    برای کمک به جلوگیری از هزینه‌های غیرمنتظره در صورت‌حسابتان، بودجه‌ها و هشدارهای ماهانه تنظیم کنید.

    تنظیم بودجه ماهانه

    برای ردگیری هزینه‌های Cloud Firestore، بودجه ماهانه‌ای در کنسول Google Cloud ایجاد کنید. بودجه‌ها استفاده شما را محدود نمی‌کنند، اما می‌توانید هشدارهایی تنظیم کنید تا وقتی به هزینه‌های برنامه‌ریزی‌شده‌تان برای ماه نزدیک می‌شوید یا از آن‌ها فراتر می‌روید، به شما اطلاع داده شود.

    برای تنظیم بودجه، به بخش صورت‌حساب در کنسول Google Cloud بروید و بودجه‌ای برای حساب Cloud Billing خود ایجاد کنید. می‌توانید از تنظیمات هشدار پیش‌فرض استفاده کنید یا هشدارها را اصلاح کنید تا اعلان‌ها را در درصدهای مختلفی از بودجه ماهانه‌تان ارسال کند.

    درباره تنظیم بودجه و هشدارهای بودجه بیشتر بدانید.