Использование и лимиты

В этом руководстве рассказывается о лимитах Cloud Firestore. Полное и подробное описание цен на Cloud Firestore, включая важные нюансы, вы найдете в статье Цены на Cloud Firestore.

Как отслеживать использование API

Чтобы отслеживать использование Cloud Firestore в консоли Firebase, перейдите в раздел Databases & Storage (Базы данных и хранилище) > Firestore > Usage (Использование). На этой панели можно посмотреть данные об использовании за разные периоды времени.

Подробные сведения об использовании в консоли Google Cloud

При создании проекта Firebase вы также создаете проект Google Cloud. На страницах Cloud Firestore API Quotas (Квоты API) и App Engine Quotas (Квоты) в консоли Google Cloud отслеживается использование Cloud Firestore и информация о квотах.

Бесплатная квота

Cloud Firestore предлагает бесплатную квоту, которая позволяет начать работу без затрат. Если вам нужно увеличить квоту, включите оплату для проекта Google Cloud.

Квоты применяются ежедневно и сбрасываются около полуночи по тихоокеанскому времени.

В таблице ниже приведены бесплатные квоты.

Бесплатный план Квота
Хранящиеся данные 1 ГиБ
Чтение документа 50 000 в день
Записи документов 20 000 в день
Удаление документов 20 000 в день
Передача исходящих данных 10 ГиБ в месяц

Для перечисленных ниже операций и функций бесплатное использование не предусмотрено. Чтобы использовать эти функции, необходимо включить платежные функции:

  • Удаления TTL
  • Данные PITR
  • Резервное копирование данных
  • Операции восстановления
  • Операции клонирования

Подробнее о том, как оплачиваются эти функции…

Стандартные ограничения

В таблицах ниже приведены ограничения, действующие для Cloud Firestore. Если не указано иное, это жесткие ограничения.

Базы данных

Ограничение Сведения
Максимальное количество баз данных в проекте

100

Чтобы увеличить лимит, обратитесь в службу поддержки.

Максимальное количество баз данных с ключами шифрования, управляемыми клиентом (CMEK), на проект

0

По умолчанию квота равна 0, поскольку эта функция доступна только пользователям из белого списка. Чтобы запросить увеличение квоты, заполните форму запроса доступа к CMEK.

Коллекции, документы и поля

Ограничение Сведения
Ограничения на идентификаторы коллекций
  • Должны быть допустимыми символами UTF-8.
  • Максимальный размер – 1500 байт.
  • Не может содержать косую черту (/).
  • Не может состоять только из одной (.) или двух (..) точек.
  • Не соответствует регулярному выражению __.*__.
Максимальная глубина подколлекций 100
Ограничения для идентификаторов документов
  • Должны быть допустимыми символами UTF-8.
  • Максимальный размер – 1500 байт.
  • Не может содержать косую черту (/).
  • Не может состоять только из одной (.) или двух (..) точек.
  • Не соответствует регулярному выражению __.*__.
  • Если вы импортируете объекты Datastore в базу данных Firestore, числовые идентификаторы объектов будут представлены как __id[0-9]+__.
Максимальный размер названия документа 6 КиБ
Максимальный размер документа 1 МиБ (1 048 576 байт)
Ограничения на названия полей
  • Должны быть допустимыми символами UTF-8.
  • Не соответствует регулярному выражению __.*__.
Максимальный размер названия поля 1500 байт
Ограничения на пути к полям
  • Названия полей должны быть разделены точкой (.).
  • Может передаваться как строка сегментов, разделенных точками (.), где каждый сегмент является либо простым именем поля, либо именем поля в кавычках (определено ниже).
Простое название поля соответствует следующим требованиям:
  • Содержит только символы a-z, A-Z, 0-9 и символ подчеркивания (_).
  • Не начинается с 0-9
Название поля в кавычках начинается и заканчивается символом обратного апострофа (`). Например, foo.`x&y` относится к полю x&y, вложенному в поле foo. Чтобы создать название поля с обратным апострофом, экранируйте его с помощью обратной косой черты (\). Чтобы не использовать названия полей в кавычках, можно передать путь к полю как объект FieldPath (например, FieldPath в JavaScript).
Максимальный размер пути к полю 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

Индексы

Для индексов по одному полю и составных индексов действуют следующие ограничения:

Ограничение Сведения
Максимальное количество составных индексов для базы данных
Максимальное количество конфигураций с одним полем для базы данных
  • 200, если вы не включили платежные функции для проекта Google Cloud.

    Если вам нужна более высокая квота, включите оплату для проекта Google Cloud.

  • 1000, если вы включите платежные функции для проекта Google Cloud.

Одна конфигурация на уровне поля может содержать несколько конфигураций для одного и того же поля. Например, исключение из индексирования одного поля и правило TTL для того же поля считаются одной конфигурацией поля.

Максимальное количество записей индекса для каждого документа

40 000

Количество записей в индексе для документа рассчитывается следующим образом:

  • Количество записей в индексе по одному полю
  • Количество записей в составном индексе

Чтобы узнать, как Cloud Firestore преобразует документ и набор индексов в записи в индексе, ознакомьтесь с этим примером подсчета записей в индексе.

Максимальное количество полей в составном индексе 100
Максимальный размер записи в индексе

7,5 КиБ

Чтобы узнать, как Cloud Firestore рассчитывает размер записи индекса, ознакомьтесь с разделом Размер записи индекса.

Максимальная сумма размеров записей индекса документа

8 МиБ

Общий размер документа складывается из следующих значений:

  • Сумма размеров записей в индексе для одного поля документа
  • Сумма размеров записей составного индекса документа
  • Максимальный размер значения индексированного поля

    1500 байт

    Значения полей, превышающие 1500 байт, усекаются. Запросы, содержащие усеченные значения полей, могут возвращать противоречивые результаты.

    Время жизни (TTL)

    Ограничение Сведения
    Максимальное количество конфигураций с одним полем для базы данных
    • 200, если вы не включили платежные функции для проекта Google Cloud.

      Если вам нужна более высокая квота, включите оплату для проекта Google Cloud.

    • 1000, если вы включите платежные функции для проекта Google Cloud.

    Одна конфигурация на уровне поля может содержать несколько конфигураций для одного и того же поля. Например, исключение из индексирования одного поля и правило TTL для того же поля считаются одной конфигурацией поля.

    Экспорт/импорт

    Для управляемых операций импорта и экспорта действуют следующие ограничения:

    Ограничение Сведения
    Максимальное общее количество запросов на экспорт и импорт для проекта в минуту 20
    Максимальное количество одновременных операций экспорта и импорта 50
    Максимальное количество фильтров по идентификатору коллекции для запросов на экспорт и импорт 100

    Правила безопасности

    Ограничение Сведения
    Максимальное количество вызовов exists(), get() и getAfter() на запрос
    • 10 для запросов с одним документом и запросов с поисковым запросом.
    • 20 для чтения нескольких документов, транзакций и пакетной записи. Прежнее ограничение (10) также применяется к каждой операции.

      Например, вы создаете пакетный запрос на запись с тремя операциями записи, а правила безопасности используют два вызова доступа к документам для проверки каждой записи. В этом случае каждая запись использует 2 из 10 вызовов доступа, а пакетный запрос на запись – 6 из 20 вызовов доступа.

    При превышении любого из этих ограничений возникает ошибка "Доступ запрещен".

    Некоторые вызовы доступа к документам могут кэшироваться и не учитываться в лимитах.

    Максимальная глубина вложенности оператора match 10
    Максимальная длина пути (в сегментах), допустимая в наборе вложенных операторов match. 100
    Максимальное количество переменных для захвата пути в наборе вложенных операторов match 20
    Максимальная глубина вызова функции 20
    Максимальное количество аргументов функции 7
    Максимальное количество привязок переменных let на функцию 10
    Максимальное количество рекурсивных или циклических вызовов функций 0 (не разрешено)
    Максимальное количество выражений, оцениваемых за один запрос 1000
    Максимальный размер набора правил Для наборов правил действуют два ограничения по размеру:
    • Ограничение на размер текстового источника набора правил, опубликованного из консоли Firebase или из CLI с помощью firebase deploy, составляет 256 КБ.
    • 250 КБ – ограничение на размер скомпилированного набора правил, который получается, когда Firebase обрабатывает исходный код и активирует его на сервере.

    Управление расходами

    Чтобы избежать непредвиденных расходов, настройте ежемесячные бюджеты и оповещения.

    Установите месячный бюджет

    Чтобы отслеживать расходы на Cloud Firestore, создайте месячный бюджет в консоли Google Cloud. Бюджеты не ограничивают использование, но вы можете настроить оповещения, чтобы получать уведомления, когда вы приближаетесь к запланированным расходам за месяц или превышаете их.

    Чтобы задать бюджет, перейдите в раздел Оплата в консоли Google Cloud и создайте бюджет для аккаунта Cloud Billing. Вы можете использовать настройки оповещений по умолчанию или изменить их, чтобы получать уведомления при достижении других пороговых значений вашего месячного бюджета.

    Подробнее о том, как настроить бюджеты и оповещения о них…