Использование и ограничения

Используйте это руководство, чтобы понять ограничения 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 .

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

Firestore допускает только одну бесплатную базу данных на проект.

Бесплатный уровень Квота
Сохраненные данные 1 ГиБ
Документ гласит: 50 000 в день
Документ пишет 20 000 в день
Документ удаляется 20 000 в день
Исходящая передача данных 10 ГиБ в месяц

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

  • TTL удаляет
  • Данные ПИТР
  • Резервное копирование данных
  • Восстановление операций

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

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

В следующих таблицах показаны ограничения, которые применяются к 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
Имя поля в кавычках начинается и заканчивается символом обратной кавычки ( ` ). Например, foo.`x&y` ссылается на поле x&y , вложенное в поле foo . Чтобы создать имя поля с символом обратной кавычки, экранируйте символ обратной косой черты ( \ ). Для удобства вы можете избежать кавычек в именах полей, передав путь к полю как объект FieldPath ( например, см. JavaScript FieldPath ).
Максимальный размер пути поля 1500 байт
Максимальный размер значения поля 1 МБ - 89 байт (1 048 487 байт)
Максимальная глубина полей на карте или массиве

20

Поля Map и array добавляют один уровень к общей глубине объекта. Например, следующий объект имеет общую глубину в три уровня:


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

Записи и транзакции

В дополнение к этим ограничениям вам также следует ознакомиться с лучшими практиками проектирования с учетом масштаба .

Предел Подробности
Максимальный размер запроса API 10 МБ
Срок выполнения транзакции 270 секунд, с 60-секундным временем простоя
Максимальное количество преобразований полей, которые можно выполнить для одного документа в операции Commit или в транзакции 500

Индексы

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

Предел Подробности
Максимальное количество составных индексов для базы данных
Максимальное количество конфигураций одного поля для базы данных

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

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

40,000

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

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

Чтобы увидеть, как 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 обрабатывает исходный код и делает его активным на бэкэнде.

    Управляйте расходами

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

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

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

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

    Узнайте больше о настройке бюджетов и оповещений о бюджете .