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

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

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

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

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

Когда вы создаете проект Firebase, вы также создаете проект Google Cloud. Страницы «Квоты Cloud Firestore API» и «Квоты App Engine» в консоли Google Cloud отслеживают использование Cloud Firestore и информацию о квотах.

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

Cloud Firestore предлагает бесплатную квоту, которая позволяет вам бесплатно начать работу с базой данных (default) . Сумма бесплатной квоты указана ниже. Если вам нужно больше квоты, вам необходимо включить оплату для вашего проекта Google Cloud .

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

Только база данных (default) соответствует требованиям бесплатной квоты.

Бесплатный уровень Квота
Сохраненные данные 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 секунд.

Индексы

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

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

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

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

40 000

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

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

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

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

7,5 КиБ

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

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

8 МБ

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

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

    1500 байт

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

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

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

    Одна конфигурация уровня поля может содержать несколько конфигураций для одного и того же поля. Например, освобождение от индексации одного поля и политика 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
    Максимальный размер набора правил Наборы правил должны подчиняться двум ограничениям по размеру:
    • ограничение в 256 КБ на размер источника текста набора правил, опубликованного из консоли Firebase или из ин��ерфейса командной строки с помощью firebase deploy .
    • ограничение размера скомпилированного набора правил в 250 КБ, которое возникает, когда Firebase обрабатывает источник и делает его активным на серверной стороне.

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

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

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

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

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

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