В этом документе приведены сведения о ценах на Cloud Firestore.
Если вы платите не в долларах США, применяются цены, указанные в вашей валюте на странице Cloud Platform SKUs (Коды Cloud Platform).
Обзор тарифных планов
При использовании Cloud Firestore плата взимается за следующее:
- Количество документов, которые вы читаете, записываете и удаляете.
- Количество записей индекса, прочитанных для выполнения запроса. Подробнее о чтении индекса…
- Объем хранилища, используемый базой данных, включая накладные расходы на метаданные и индексы.
- Пропускная способность сети.
Объем хранилища и пропускная способность рассчитываются в гибибайтах (ГиБ), где 1 ГиБ = 230 байт. Все расходы начисляются ежедневно.
В разделах ниже подробно описано, как взимается плата за использование Cloud Firestore.
Бесплатная квота
Cloud Firestore предлагает бесплатную квоту, которая позволяет начать работу без затрат. Если вам нужна более высокая квота, включите оплату для проекта Google Cloud.
Квоты применяются ежедневно и сбрасываются около полуночи по тихоокеанскому времени.
В таблице ниже приведены бесплатные квоты.
| Бесплатный план | Квота |
|---|---|
| Хранящиеся данные | 1 ГиБ |
| Документ прочитан | 50 000 в день |
| Записи документов | 20 000 в день |
| Удаление документов | 20 000 в день |
| Передача исходящих данных | 10 ГиБ в месяц |
Для перечисленных ниже операций и функций бесплатное использование не предусмотрено. Чтобы использовать эти функции, необходимо включить платежный аккаунт:
- Удаления TTL
- Данные PITR
- Резервное копирование данных
- Операции восстановления
- Операции клонирования
Подробнее о том, как оплачиваются эти функции…
Цены в зависимости от местоположения
Чтобы посмотреть цены на чтение, запись, удаление и хранение данных для каждого местоположения Cloud Firestore, ознакомьтесь с ценами на Google Cloud.
Если вы платите не в долларах США, действуют цены, указанные в вашей валюте на странице SKU облачной платформы.
Бесплатная квота применяется только к одной базе данных на проект.
В проекте может быть только одна база данных, на которую распространяется бесплатная квота.
Чтобы создать дополнительные базы данных, необходимо перейти на другой тарифный план.
Бесплатная квота распространяется на первую созданную вами базу данных (независимо от ее идентификатора). Если вы удалите эту базу данных, следующая созданная вами база данных станет новой базой данных, имеющей право на бесплатную квоту.
Создание и удаление баз данных выполняется бесплатно. За использование всех последующих баз данных будет взиматься плата.
Чтение, запись и удаление
Плата взимается за документы и записи индекса, прочитанные для выполнения запроса. Вы платите за каждую операцию записи и удаления документа.
Плата за запись и удаление рассчитывается просто. При записи каждая операция set или update считается за одну запись.
При оплате операций чтения есть некоторые нюансы, о которых следует помнить. Подробная информация об этих нюансах приведена ниже.
Чтение записей индекса
За каждый пакет, содержащий до 1000 записей индекса, прочитанных запросом, взимается плата за одну операцию чтения, за исключением следующих случаев:
За поисковые запросы по k-ближайшим соседям взимается плата за одну операцию чтения для каждого пакета, содержащего до 100 записей векторного индекса kNN, прочитанных запросом.
Например, если следующий поисковый запрос векторного поиска с
limit: 5возвращает пять документов и считывает 1550 записей векторного индекса kNN, то вам будет выставлен счет за пять операций чтения для возвращенных документов и 16 операций чтения для записей индекса:// Requires single-field vector index const vectorQuery: VectorQuery = db.collection('cities').findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), { limit: 5, distanceMeasure: 'EUCLIDEAN' });Запросы, содержащие не более одного поля диапазона, не оплачиваются за прочитанные записи индекса.
Например, следующий запрос содержит одно поле равенства (
age) и одно поле диапазона (start_date), и за прочитанные записи индекса плата не взимается:db.collection("employees").whereEqualTo("age", 35) .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))Следующий запрос содержит два поля диапазона (
ageиstart_date), и за него взимается плата за чтение записей индекса:db.collection("employees").whereGreaterThanOrEqualTo("age", 35) .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))Поле, которое появляется в предложении order by, считается полем диапазона, если в запросе есть хотя бы одно другое поле диапазона. Поэтому следующий запрос содержит два поля диапазона (
ageиstart_date), и за него взимается плата за чтение записей индекса:db.collection("employees").whereGreaterThanOrEqualTo("age", 35) .orderBy("start_date")Поле
__name__всегда считается полем диапазона, даже если оно используется только в фильтре равенства. Поэтому следующий запрос содержит два поля диапазона (ageи__name__), и за чтение записей индекса взимается плата:db.collection("employees").whereIn("__name__", Arrays.asList("/employees/Alice", "/employees/Bob")) .orderBy("age")
Запросы агрегирования
За запросы агрегирования, такие как count(), sum() и avg(), плата взимается за записи индекса, прочитанные запросом, как описано выше. Для запросов агрегирования, которые считывают 0 записей индекса, минимальная плата составляет одно чтение документа.
Например, за операции count(), которые считывают от 0 до 1000 записей индекса, взимается плата за чтение одного документа. За операцию count(), которая считывает 1500 записей индекса, с вас будет списана плата за чтение двух документов.
Чтобы узнать больше об используемых индексах и прочитанных записях, используйте Query Explain.
Прослушивание результатов запросов
Cloud Firestore позволяет прослушивать результаты запроса и получать обновления в реальном времени при изменении результатов запроса.
Когда вы прослушиваете результаты запроса, с вас взимается плата за чтение каждый раз, когда документ в наборе результатов добавляется или обновляется. Плата за чтение также взимается, когда документ удаляется из набора результатов из-за того, что он был изменен. (При удалении документа плата за чтение не взимается.)
Оплата за слушателей в SDK для мобильных устройств и веб-приложений также зависит от того, включено ли сохранение данных в офлайн-режиме.
Если офлайн-сохранение включено и прослушиватель отключен более 30 минут (например, если пользователь находится в офлайн-режиме), с вас будет взиматься плата за прочитанные документы и записи индекса, как если бы вы отправили совершенно новый запрос.
Если офлайн-сохранение отключено, с вас будет взиматься плата за прочитанные документы и записи индекса, как если бы вы отправляли совершенно новый запрос каждый раз, когда прослушиватель отключается и повторно подключается.
Как управлять большими наборами результатов
В Cloud Firestore есть несколько функций, которые помогают управлять запросами, возвращающими большое количество результатов:
- Курсоры, которые позволяют возобновить выполнение длительного запроса.
- Токены страниц, которые помогают разбивать результаты запроса на страницы.
- Ограничения, которые определяют, сколько результатов нужно получить.
- Смещения, позволяющие пропускать фиксированное количество документов.
За использование курсоров, токенов страниц и ограничений дополнительная плата не взимается. Эти функции помогут вам сэкономить деньги, поскольку вы будете читать только те документы, которые вам действительно нужны.
Однако когда вы отправляете запрос, включающий смещение, с вас взимается плата за чтение каждого пропущенного документа. Например, если в запросе используется смещение 10 и запрос возвращает один документ, с вас взимается плата за 11 операций чтения. Поэтому по возможности используйте курсоры, а не смещения.
Запросы, не связанные с чтением документов
Запросы, не связанные с чтением документов, например запрос списка идентификаторов коллекций, оплачиваются как одно чтение документа. Если для получения полного набора результатов требуется несколько запросов (например, при использовании разбивки на страницы), плата взимается за каждый запрос.
Минимальная плата за запросы
За каждый выполненный запрос взимается минимальная плата за чтение одного документа, даже если запрос не возвращает результатов.
Cloud Firestore Security Rules
Для мобильных и веб-клиентских библиотек, если ваши Cloud Firestore Security Rules используют exists(), get() или getAfter() для чтения одного или нескольких документов из базы данных, то за дополнительные операции чтения взимается плата следующим образом:
Плата взимается за операции чтения, необходимые для оценки Cloud Firestore Security Rules.
Например, если ваши правила ссылаются на три документа, но Cloud Firestore нужно прочитать только два из них, чтобы оценить правила, с вас будет взиматься плата за два дополнительных чтения зависимых документов.
Плата взимается только за одно чтение зависимого документа, даже если правила ссылаются на него несколько раз.
Плата за оценку правил взимается только один раз за запрос.
В результате чтение нескольких документов может стоить меньше, чем чтение документов по одному, поскольку для чтения нескольких документов требуется меньше запросов.
Когда вы прослушиваете результаты запроса, с вас взимается плата за оценку правил во всех следующих случаях:
- При выполнении запроса.
- Каждый раз, когда обновляются результаты запроса.
- Каждый раз, когда устройство пользователя отключается от интернета, а затем снова подключается.
- При каждом обновлении правил.
- При каждом обновлении зависимых документов в правилах.
Размер хранилища базы данных
Плата взимается за объем данных, которые вы храните в Cloud Firestore, включая накладные расходы на хранение. Объем накладных расходов включает метаданные, автоматические индексы и составные индексы.
Для каждого документа, хранящегося в Cloud Firestore, требуются следующие метаданные:
- Идентификатор документа, включая идентификатор коллекции и название документа.
- Название и значение каждого поля. Поскольку Cloud Firestore не имеет схемы, название каждого поля в документе должно храниться вместе со значением поля.
- Все однопольные и составные индексы, которые ссылаются на документ. Каждая запись индекса содержит идентификатор коллекции, любое количество значений полей (в зависимости от определения индекса) и название документа.
Стоимость хранения рассчитывается в гибибайтах в месяц и вычисляется ежедневно. Cloud Firestore измеряет размер базы данных ежедневно. Затем эти значения усредняются, чтобы рассчитать размер хранилища базы данных за месяц. Это среднее значение умножается на цену за единицу хранилища (ГиБ-месяц).
Подробнее о том, как рассчитывается объем хранилища Cloud Firestore…
Данные PITR
Если вы включите PITR, с вас будет взиматься плата за хранение данных PITR. Для большинства клиентов общая стоимость хранения данных PiTR будет сопоставима со стоимостью хранения базы данных.
Стоимость хранения данных для восстановления на определенный момент времени рассчитывается в гибибайтах в месяц и вычисляется ежедневно. Cloud Firestore измеряет размер базы данных ежедневно. Затем на основе этих данных рассчитывается средний размер базы данных за месяц. Это среднее значение умножается на цену за единицу восстановления на определенный момент времени (ГиБ-месяц).
Например, если средний размер базы данных в течение месяца составляет 1 ГиБ и восстановление на определенный момент времени включено на весь месяц, то оплачиваемый размер данных для восстановления на определенный момент времени также составляет 1 ГиБ.
Минимальная оплата. С вас может взиматься плата за хранение данных PITR в течение одного дня, даже если вы отключите PITR в течение дня после включения.
Резервное копирование данных и операции восстановления
Если вы включите резервное копирование, с вас будет взиматься плата за хранение резервных копий базы данных. Размер резервной копии равен размеру базы данных на момент ее создания.
Стоимость хранения резервных копий рассчитывается в гибибайтах в месяц. В течение месяца также рассчитывается среднее количество дней, в течение которых хранится каждая резервная копия. Стоимость каждой резервной копии рассчитывается путем умножения размера хранилища резервной копии на долю месяца, в течение которого резервная копия хранится, умноженную на цену за единицу. Для целей выставления счетов границы дня определяются по часовому поясу America/Los_Angeles.
При выполнении операции восстановления Cloud Firestore измеряет размер резервной копии. Размер резервной копии умножается на цену за единицу операций восстановления (ГиБ).
Объяснение запроса
Использование Firestore Query Explain платное.
Если запрос объясняется с параметром по умолчанию, операции чтения индекса не выполняются. Независимо от сложности запроса, взимается плата за одну операцию чтения.
Когда запрос объясняется с помощью параметра analyze, выполняются операции индексирования и чтения, поэтому плата за запрос взимается как обычно. За анализ и объяснение дополнительная плата не взимается, вы платите только за выполнение запроса.
Пропускная способность сети
Плата взимается за пропускную способность сети, используемую вашими запросами Cloud Firestore, как показано в следующих разделах. Стоимость пропускной способности сети для запроса Cloud Firestore зависит от размера ответа на запрос, местоположения базы данных Cloud Firestore и места назначения ответа.
Cloud Firestore рассчитывает размер ответа на основе сериализованного формата сообщения. Накладные расходы протокола, например SSL, не учитываются при расчете использования пропускной способности сети. Запросы, отклоненные Cloud Firestore Security Rules, не учитываются при подсчете использования пропускной способности сети.
Чтобы узнать, какую пропускную способность сети вы использовали, вы можете экспортировать платежные данные в файл с помощью консоли Google Cloud.
Общие цены в сети
Запросы, отправленные из Google Cloud Platform (например, из приложения, запущенного в Google Compute Engine), оплачиваются следующим образом:
| Тип трафика | Цена |
|---|---|
| Передача входящих данных | Бесплатно |
| Передача данных в пределах региона | Бесплатно |
| Передача данных между регионами в одном мультирегионе | Бесплатно |
| Передача данных между регионами в США (за 1 ГиБ) | 0,01 долл.США (первые 10 ГиБ в месяц бесплатно) |
| Передача данных между регионами, за исключением трафика между регионами США | Тарифы на передачу данных из Google Cloud Platform в интернет |
Если вы платите не в долларах США, действуют цены, указанные в вашей валюте на странице SKU облачной платформы.
Для Cloud Firestore также взимается дополнительная плата за исходящий интернет-трафик в следующих случаях:
- Google Cloud запросов между регионами, не включая трафик между регионами США
- Запросы, поступающие не из Google Cloud (например, с мобильного устройства пользователя).
Ознакомьтесь с тарифами на исходящий интернет-трафик Google Cloud.
Пример расчета стоимости
Чтобы узнать, как начисляется плата за использование Cloud Firestore в реальном примере приложения, ознакомьтесь с примером расчета стоимости Cloud Firestore.
Управление расходами
Чтобы избежать непредвиденных расходов, настройте ежемесячные бюджеты и оповещения в консоли Google Cloud.
Чтобы отслеживать использование Cloud Firestore в консоли Firebase, перейдите в раздел Databases & Storage (Базы данных и хранилище) > Firestore > вкладка Usage (Использование). На этой панели можно посмотреть данные об использовании за разные периоды времени.