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

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

Отслеживайте использование

Чтобы отслеживать использование 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. Вы можете использовать настройки оповещений по умолчанию или изменить их, чтобы получать уведомления при достижении других пороговых значений вашего месячного бюджета.

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