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

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

میزان استفاده خود را زیر نظر داشته باشید

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

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

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

سهمیه رایگان

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

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

جدول زیر خلاصه‌ای از مبالغ سهمیه رایگان را نشان می‌دهد:

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

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

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

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

محدودیت‌های استاندارد

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

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

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

۱۰۰

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

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

0

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

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

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

۲۰

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


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

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

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

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

شاخص‌ها

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

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

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

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

۴۰،۰۰۰

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

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

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

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

۷.۵ کیلوبایت

برای دیدن نحوه محاسبه اندازه ورودی شاخص Cloud Firestore ، به اندازه ورودی شاخص مراجعه کنید.

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

۸ مگابایت

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

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

    ۱۵۰۰ بایت

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

    زمان زنده ماندن (TTL)

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

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

    صادرات/واردات

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

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

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

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

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

    تجاوز از هر یک از این محدودیت‌ها منجر به خطای عدم اجازه دسترسی می‌شود.

    برخی از فراخوانی‌های دسترسی به سند ممکن است در حافظه پنهان ذخیره شوند و فراخوانی‌های ذخیره شده در حافظه پنهان جزو محدودیت‌ها محسوب نمی‌شوند.

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

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

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

    بودجه ماهانه تعیین کنید

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

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

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