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