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

از این راهنما برای درک محدودیت‌های 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 سهمیه رایگانی را ارائه می دهد که به شما امکان می دهد بدون هزینه با پایگاه داده (default) خود شروع کنید. مقادیر سهمیه رایگان در زیر ذکر شده است. اگر به سهمیه بیشتری نیاز دارید، باید صورتحساب پروژه Google Cloud خود را فعال کنید .

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

فقط پایگاه داده (default) برای سهمیه رایگان واجد شرایط است.

ردیف آزاد سهمیه
داده های ذخیره شده 1 گیگابایت
سند خوانده می شود 50000 در روز
سند می نویسد 20000 در روز
سند حذف می شود 20000 در روز
انتقال داده های خروجی 10 گیگابایت در ماه

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

  • استفاده از پایگاه های داده نامگذاری شده (غیر پیش فرض).
  • TTL حذف می کند
  • داده های PITR
  • پشتیبان گیری از داده ها
  • عملیات بازیابی

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

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

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

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

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

100

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

مجموعه ها، اسناد و زمینه ها

محدود کنید جزئیات
محدودیت در شناسه های مجموعه
  • باید نویسه های UTF-8 معتبر باشد
  • نباید بیشتر از 1500 بایت باشد
  • نمی تواند حاوی اسلش رو به جلو ( / ) باشد
  • نمی تواند صرفاً از یک دوره ( . ) یا دو دوره ( .. ) تشکیل شود.
  • نمی تواند با عبارت منظم __.*__ مطابقت داشته باشد
حداکثر عمق زیر مجموعه ها 100
محدودیت در شناسه اسناد
  • باید نویسه های UTF-8 معتبر باشد
  • نباید بیشتر از 1500 بایت باشد
  • نمی تواند حاوی اسلش رو به جلو ( / ) باشد
  • نمی تواند صرفاً از یک دوره ( . ) یا دو دوره ( .. ) تشکیل شود.
  • نمی تواند با عبارت منظم __.*__ مطابقت داشته باشد
  • اگر موجودیت‌های Datastore را به پایگاه داده Firestore وارد کنید، شناسه‌های موجودیت عددی به صورت __id[0-9]+__ نمایش داده می‌شوند.
حداکثر اندازه برای نام سند 6 کیلو بایت
حداکثر اندازه برای یک سند 1 مگابایت (1,048,576 بایت)
محدودیت در نام فیلدها
  • باید نویسه های UTF-8 معتبر باشد
  • نمی تواند با عبارت منظم __.*__ مطابقت داشته باشد
حداکثر اندازه نام یک فیلد 1500 بایت
محدودیت در مسیرهای میدانی
  • باید نام فیلدها را با یک نقطه جدا کرد ( . )
  • ممکن است به‌عنوان رشته‌ای از بخش‌ها با نقطه مشخص ( . ) ارسال شود که در آن هر بخش یا یک نام فیلد ساده یا یک نام فیلد نقل‌شده است (تعریف شده در زیر).
یک نام فیلد ساده، نامی است که در آن همه موارد زیر درست است:
  • فقط شامل نویسه‌های az ، AZ ، 0-9 و زیرخط ( _ ) است.
  • با 0-9 شروع نمی شود
نام فیلد نقل قول شده با کاراکتر backtick ( ` ) شروع و به پایان می رسد. به عنوان مثال، foo.`x&y` به فیلد x&y اشاره دارد که در زیر فیلد foo قرار گرفته است. برای ساختن نام فیلد با کاراکتر بکتیک، از کاراکتر بکتیک با کاراکتر بکتیک ( \ ) فرار کنید. برای راحتی، می‌توانید با عبور دادن مسیر فیلد به‌عنوان یک شی FieldPath از نام‌های فیلد نقل‌قول شده اجتناب کنید ( به عنوان مثال، به FieldPath جاوا اسکریپت مراجعه کنید ).
حداکثر اندازه یک مسیر میدان 1500 بایت
حداکثر اندازه یک مقدار فیلد 1 مگابایت - 89 بایت (1,048,487 بایت)
حداکثر عمق فیلدها در نقشه یا آرایه

20

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


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

می نویسد و معامله می کند

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

محدود کنید جزئیات
حداکثر اندازه درخواست API 10 مگابایت
محدودیت زمانی برای معامله 270 ثانیه، با زمان انقضا 60 ثانیه بیکار
حداکثر تعداد تبدیل های فیلد که می توان روی یک سند در یک عملیات Commit یا در یک تراکنش انجام داد 500

شاخص ها

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

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

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

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

40000

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

  • تعداد ورودی های فهرست تک فیلدی
  • تعداد ورودی های شاخص ترکیبی

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

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

7.5 کیلو بایت

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

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

8 مگابایت

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

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

    1500 بایت

    مقادیر فیلد بیش از 1500 بایت کوتاه شده است. پرس و جوهایی که شامل مقادیر فیلد کوتاه شده هستند ممکن است نتایج متناقضی را ارائه دهند.

    زمان برای زندگی (TTL)

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

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

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

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

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

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

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

      برای مثال، تصور کنید یک درخواست نوشتن دسته‌ای با 3 عملیات نوشتن ایجاد می‌کنید و قوانین امنیتی شما از 2 تماس دسترسی به سند برای تأیید اعتبار هر نوشتن استفاده می‌کنند. در این حالت، هر نوشتن از 2 تماس از 10 تماس دسترسی خود استفاده می کند و درخواست نوشتن دسته ای از 6 تماس از 20 تماس دسترسی خود استفاده می کند.

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

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

    حداکثر عمق بیانیه match تو در تو 10
    حداکثر طول مسیر، در بخش‌های مسیر، در مجموعه‌ای از عبارات match تودرتو مجاز است 100
    حداکثر تعداد متغیرهای ثبت مسیر در مجموعه ای از عبارات match تودرتو مجاز است 20
    حداکثر عمق فراخوانی تابع 20
    حداکثر تعداد آرگومان های تابع 7
    حداکثر تعداد اتصالات متغیر let در هر تابع 10
    حداکثر تعداد فراخوانی های تابع بازگشتی یا چرخه ای 0 (مجاز نیست)
    حداکثر تعداد عبارات ارزیابی شده در هر درخواست 1000
    حداکثر اندازه یک مجموعه قوانین مجموعه قوانین باید از دو محدودیت اندازه تبعیت کند:
    • محدودیت 256 کیلوبایتی در اندازه منبع متن قوانین که از کنسول Firebase یا از CLI با استفاده از firebase deploy منتشر شده است.
    • یک محدودیت 250 کیلوبایتی در اندازه مجموعه قوانین کامپایل شده که زمانی حاصل می شود که Firebase منبع را پردازش کرده و آن را در back-end فعال می کند.

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

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

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

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

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

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