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

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

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

В следующей таблице приведены сводные данные о бесплатных квотах:

Бесплатный уровень Квота
Сохраненные данные 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 байт
Ограничения на траектории движения поля
  • Названия полей необходимо разделять одной точкой ( . ).
  • Может передаваться в виде строки сегментов, разделенных точками ( . ), где каждый сегмент представляет собой либо простое имя поля, либо имя поля в кавычках (определено ниже).
Простое имя поля — это такое имя, для которого выполняются все следующие условия:
  • Содержит только символы 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

Индексы

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

Лимит Подробности
Максимальное количество составных индексов для базы данных
Максимальное количество конфигураций с одним полем для базы данных
  • Код ошибки 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 также применяется к каждой операции.

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

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