В этом документе приведены сведения о ценах на Cloud Firestore.
Если вы платите не в долларах США, применяются цены, указанные в вашей валюте на странице Cloud Platform SKUs.
Обзор тарифных планов
При использовании Cloud Firestore вы платите за следующее:
- Количество документов, которые вы читаете, записываете и удаляете.
- Количество записей индекса, прочитанных для выполнения запроса. Подробнее о чтении индекса…
- Объем хранилища, используемый базой данных, включая накладные расходы на метаданные и индексы.
- Пропускная способность сети.
Объем хранилища и пропускная способность рассчитываются в гибибайтах (ГиБ), где 1 ГиБ = 230 байт. Все расходы начисляются ежедневно.
В разделах ниже подробно описано, как взимается плата за использование Cloud Firestore.
Бесплатная квота
Cloud Firestore предлагает бесплатную квоту, которая позволяет начать работу без затрат. Если вам нужно увеличить квоту, включите оплату для проекта Google Cloud.
Квоты применяются ежедневно и сбрасываются около полуночи по тихоокеанскому времени.
В таблице ниже приведены бесплатные квоты.
| Бесплатный план | Квота |
|---|---|
| Хранящиеся данные | 1 ГиБ |
| Чтение документа | 50 000 в день |
| Записи документов | 20 000 в день |
| Удаление документов | 20 000 в день |
| Передача исходящих данных | 10 ГиБ в месяц |
Для перечисленных ниже операций и функций бесплатное использование не предусмотрено. Чтобы использовать эти функции, необходимо включить платежные функции:
- Удаления TTL
- Данные PITR
- Резервное копирование данных
- Операции восстановления
- Операции клонирования
Подробнее о том, как оплачиваются эти функции…
Цены в зависимости от местоположения
Чтобы посмотреть цены на чтение, запись, удаление и хранение данных для каждого местоположения Cloud Firestore, ознакомьтесь с ценами на Google Cloud.
Если вы платите не в долларах США, действуют цены, указанные в вашей валюте на странице Cloud Platform SKUs (Коды продуктов Cloud Platform).
Бесплатная квота применяется только к одной базе данных на проект.
В проекте может быть только одна база данных, на которую распространяется бесплатная квота.
Чтобы создать дополнительные базы данных, необходимо перейти на другой тарифный план.
Бесплатная квота распространяется на первую созданную базу данных (независимо от ее идентификатора). Если вы удалите эту базу данных, то следующая созданная вами база данных станет новой базой данных, на которую распространяется бесплатная квота.
Создание и удаление баз данных не требует дополнительных расходов. За использование всех последующих баз данных будет взиматься плата.
Чтение, запись и удаление
Плата взимается за документы и записи индекса, прочитанные для выполнения запроса. Плата взимается за каждую операцию записи и удаления документа.
Плата за запись и удаление взимается по простой схеме. При записи каждая операция set или update считается за одну запись.
При оплате операций чтения есть некоторые нюансы, о которых следует помнить. Подробная информация об этих нюансах приведена ниже.
Чтение записей индекса
За каждый пакет, содержащий до 1000 записей индекса, прочитанных запросом, взимается плата за одну операцию чтения, за исключением следующих случаев:
При выполнении поисковых запросов по k-ближайшим соседям с вас взимается плата за одну операцию чтения для каждого пакета, содержащего до 100 записей векторного индекса kNN, прочитанных запросом.
Например, если следующий поисковый запрос векторного поиска с
limit: 5возвращает 5 документов и считывает 1550 записей векторного индекса kNN, вам будет выставлен счет за 5 операций чтения для возвращенных документов и 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 в интернет |
Если вы платите не в долларах США, действуют цены, указанные в вашей валюте на странице Cloud Platform SKUs (Коды продуктов Cloud Platform).
Для Cloud Firestore также действуют дополнительные тарифы на исходящий интернет-трафик:
- Google Cloud запросов между регионами, не включая трафик между регионами США
- Запросы, поступающие не из Google Cloud (например, с мобильного устройства пользователя).
Ознакомьтесь с тарифами на исходящий интернет-трафик Google Cloud.
Пример расчета стоимости
Чтобы узнать, как начисляется плата за использование Cloud Firestore в реальном примере приложения, ознакомьтесь с примером расчета стоимости использования Cloud Firestore.
Управление расходами
Чтобы избежать непредвиденных расходов, настройте ежемесячные бюджеты и оповещения в консоли Google Cloud.
Чтобы отслеживать использование Cloud Firestore в консоли Firebase, перейдите в раздел Databases & Storage (Базы данных и хранилище) > Firestore > Usage (Использование). На этой панели можно посмотреть данные об использовании за разные периоды времени.