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

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

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

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