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

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

Контролируйте свое использование

Чтобы отслеживать использование Cloud Firestore , откройте вкладку « Использование Cloud Firestore в консоли Firebase . Используйте панель управления для отслеживания использования за разные периоды времени.

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

Создавая проект Firebase, вы также создаёте проект Google Cloud . Страницы «Квоты API Cloud Firestore и «Квоты App Engine в консоли 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

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


{
  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 также применяется к каждой операции.

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

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

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

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

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

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

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

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

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

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