В этом документе описываются детали ценообразования Cloud Firestore .
Если вы платите в валюте, отличной от долларов США, применяются цены, указанные в вашей валюте в артикулах Cloud Platform .
Обзор цен
При использовании Cloud Firestore с вас взимается плата за следующее:
- Количество документов, которые вы читаете, пишете и удаляете .
- Количество записей индекса, прочитанных для выполнения запроса . Подробнее см. в разделе «Чтение индекса» .
- Объем хранилища, который использует ваша база данных , включая накладные расходы на метаданные и индексы.
- Объем используемой вами пропускной способности сети .
Использование хранилища и пропускной способности рассчитывается в гибибайтах (ГиБ), где 1 ГиБ = 2,30 байта. Плата взимается ежедневно.
В следующих разделах представлена подробная информация о порядке оплаты использования Cloud Firestore .
Бесплатная квота
Cloud Firestore предлагает бесплатную квоту, которая позволит вам начать работу без каких-либо затрат. Если вам нужна дополнительная квота, необходимо включить биллинг для вашего проекта Google Cloud .
Квоты применяются ежедневно и обнуляются около полуночи по тихоокеанскому времени.
В следующей таблице приведены объемы бесплатных квот:
Бесплатный уровень | Квота |
---|---|
Сохраненные данные | 1 ГиБ |
Документ гласит: | 50 000 в день |
Документ пишет | 20 000 в день |
Удаление документов | 20 000 в день |
Исходящая передача данных | 10 ГиБ в месяц |
Следующие операции и функции не включают бесплатное использование. Для использования этих функций необходимо включить биллинг:
- TTL удаляет
- Данные ПИТР
- Резервное копирование данных
- Восстановление операций
- Операции клонирования
Дополнительную информацию о порядке выставления счетов за эти функции см. в разделе Цены на хранилище .
Цены по местоположению
Чтобы узнать цены на чтение, запись, удаление и хранение для каждого расположения Cloud Firestore , ознакомьтесь с ценами Google Cloud .
Если вы платите в валюте, отличной от долларов США, применяются цены, указанные в вашей валюте в артикулах 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 позволяет прослушивать результаты запроса и получать обновления в режиме реального времени при изменении результатов запроса.
При прослушивании результатов запроса с вас взимается плата за чтение каждый раз, когда документ добавляется или обновляется в наборе результатов. Плата за чтение также взимается при удалении документа из набора результатов в связи с его изменением. (В отличие от этого, при удалении документа плата за чтение не взимается.)
Тарификация прослушивателей в мобильных и веб-SDKS также зависит от того, включено ли сохранение в автономном режиме :
Если включено сохранение данных в автономном режиме и прослушиватель отключен более чем на 30 минут (например, если пользователь переходит в автономный режим), с вас будет взиматься плата за прочитанные документы и записи индекса, как если бы вы выполнили совершенно новый запрос.
Если сохранение данных в автономном режиме отключено, с вас будет взиматься плата за документы и записи индекса, прочитанные так, как будто вы отправили совершенно новый запрос, каждый раз, когда прослушиватель отключается и снова подключается.
Управление большими наборами результатов
Cloud Firestore имеет несколько функций, которые помогут вам управлять запросами, возвращающими большое количество результатов:
- Курсоры , позволяющие возобновить длительный запрос.
- Токены страниц , которые помогают вам разбивать результаты запроса на страницы.
- Ограничения , которые определяют количество извлекаемых результатов.
- Смещения , позволяющие пропускать фиксированное количество документов.
Использование курсоров, токенов страниц и лимитов не влечет за собой дополнительных расходов. Более того, эти функции могут помочь вам сэкономить деньги, поскольку вы будете читать только те документы, которые вам действительно нужны.
Однако при отправке запроса со смещением с вас будет взиматься плата за одно чтение за каждый пропущенный документ. Например, если в запросе используется смещение 10 и он возвращает 1 документ, с вас будет взиматься плата за 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 измеряет размер базы данных ежедневно. За месяц эти точки выборки усредняются для расчета размера хранилища базы данных. Это среднее значение умножается на стоимость единицы PITR (ГиБ/месяц).
Например, если средний размер вашей базы данных в течение месяца составляет 1 ГиБ и PITR включен в течение всего месяца, то оплачиваемый размер данных PITR также составит 1 ГиБ.
Минимальная сумма к оплате: с вас может взиматься плата за хранение PITR в размере стоимости одного дня, даже если вы отключите PITR в течение дня после включения.
Резервное копирование данных и операции восстановления
Если вы включите резервное копирование , с вас будет взиматься плата за хранение резервных копий базы данных. Размер хранилища для резервной копии равен размеру хранилища базы данных на момент создания резервной копии.
Стоимость хранения резервных копий указана в ГиБ/месяц. Также рассчитывается среднее количество дней хранения каждой резервной копии за месяц. Стоимость каждой резервной копии рассчитывается путём умножения объёма хранилища резервной копии на долю месяца, в котором она хранится, и на цену за единицу. Для целей выставления счетов границы дня определяются часовым поясом Америка/Лос-Анджелес.
При выполнении операции восстановления Cloud Firestore измеряет размер резервной копии для этой операции. Размер резервной копии умножается на стоимость единицы операции восстановления (ГиБ).
Запрос Объяснить
Использование Firestore Query Explain влечет за собой расходы.
При объяснении запроса с опцией по умолчанию операции чтения индекса не выполняются. Независимо от сложности запроса, взимается плата за одну операцию чтения.
При объяснении запроса с помощью опции анализа выполняются операции индексирования и чтения, поэтому плата за запрос взимается как обычно. Дополнительная плата за объяснение и анализ не взимается, взимается только обычная плата за выполнение запроса.
Пропускная способность сети
С вас взимается плата за пропускную способность сети, используемую вашими запросами Cloud Firestore , как показано в следующих разделах. Стоимость пропускной способности сети для запроса Cloud Firestore зависит от размера ответа на запрос, расположения вашей базы данных Cloud Firestore и места назначения ответа.
Cloud Firestore рассчитывает размер ответа на основе формата сериализованного сообщения. Накладные расходы протокола, такие как накладные расходы SSL, не учитываются при расчете использования пропускной способности сети. Запросы, отклоненные вашими Cloud Firestore Security Rules не учитываются при расчете использования пропускной способности сети.
Чтобы узнать, какой объем пропускной способности сети вы использовали, вы можете использовать консоль Google Cloud для экспорта своих платежных данных в файл .
Общесетевое ценообразование
За запросы, поступающие из Google Cloud Platform (например, из приложения, работающего на Google Compute Engine), взимается следующая плата:
Тип трафика | Цена |
---|---|
Входящая передача данных | Бесплатно |
Передача данных внутри региона | Бесплатно |
Передача данных между регионами в пределах одного мультирегиона | Бесплатно |
Передача данных между регионами в пределах США (за ГиБ) | 0,01 долл. США (первые 10 ГиБ в месяц бесплатно) |
Передача данных между регионами, не включая трафик между регионами США. | Скорость исходящей интернет-передачи данных Google Cloud Platform |
Если вы платите в валюте, отличной от долларов США, применяются цены, указанные в вашей валюте в артикулах Cloud Platform .
Cloud Firestore также облагается дополнительной платой за выход в Интернет в следующих случаях:
- Запросы Google Cloud между регионами, не включая трафик между регионами США
- Запросы извне Google Cloud (например, с мобильного устройства пользователя)
Ознакомьтесь со скоростями выхода в Интернет Google Cloud .
Посмотреть пример ценообразования
Чтобы увидеть, как начисляются расходы на выставление счетов Cloud Firestore на примере реального приложения, см. пример выставления счетов Cloud Firestore .
Управлять расходами
Чтобы избежать непредвиденных расходов, настройте ежемесячные бюджеты и оповещения с помощью платежной консоли Google Cloud .
Чтобы отслеживать использование Cloud Firestore , откройте вкладку « Использование Cloud Firestore в консоли Firebase. Используйте панель управления для отслеживания использования за различные периоды времени.