См. пример цен на Cloud Firestore.

Используйте этот реальный пример простого чат-приложения, чтобы оценить использование Cloud Firestore и расходы. Это не точная оценка, но она поможет вам лучше понять, как оплачивается использование Cloud Firestore .

Обзор: затраты по уровню использования

Чтобы проиллюстрировать типичные затраты, рассмотрим пример чат-приложения, в котором пользователи могут общаться с двумя или более участниками. Пользователи могут просматривать свои активные чаты в списке, читать и отправлять сообщения. В этом примере мы используем цены для мультирегиона Северная Америка (в частности, nam5 ).

Предположения

Примите во внимание следующие предположения относительно использования и хранения данных:

  • Ежедневные активные пользователи (DAU) составляют 10% от общего числа установок приложений. Вы можете оценить свои ежедневные расходы, используя приблизительную оценку числа ежедневных активных пользователей (DAU). Это пользователи, которые активно открывают и используют ваше приложение в определённый день, что обычно составляет небольшую часть от общего числа установок приложения. Для расчётов ниже мы оценили DAU как 10% от общего числа установок приложения.
  • Размеры документов относительно невелики. В таблице ниже представлена разбивка размеров документов по типам.
  • Данные хранятся всего три месяца. Сообщения в примере чат-приложения хранятся всего три месяца. Для учёта операций удаления в расчётах ниже показано ежедневное удаление для каждой ежедневной записи.
  • Эти оценки затрат отражают большую часть затрат на пример приложения, но не все. Мы учли большую часть затрат на приложение, рассчитав операции, хранилище пользователей и сообщений, а также исходящий трафик для наиболее частых пользовательских задач, описанных в этом руководстве. Однако вам может потребоваться учесть дополнительные расходы в зависимости от структуры вашего приложения и потребностей в данных. Используйте этот пример в качестве ориентира для расчётов, но более подробную информацию о стоимости Cloud Firestore см. на странице с ценами .

Разбивку операций по задачам пользователей см. в разделе Разбивка: счетов за использование по задачам пользователей .

Маленький
(50 тыс. установок)

За 50 000 установок приложения (5 000 активных пользователей в день): 12,14 долл. США в месяц

Стоимость чтения/записи
Общая ежемесячная стоимость = 11,10 долл. США/месяц
400 тыс. прочтений в день = 50 тыс. бесплатных прочтений + (350 тыс. прочтений по цене 0,06 долл. США/100 тыс.) = 3,5 * 0,06 доллара
0,21 долл. США / день * 30 = 6,30 долл. США
100 тыс. ежедневных записей = 20 тыс. бесплатных записей + (80 тыс. записей по цене 0,18 долл. США/100 тыс.) = .8 * 0,18 доллара
0,14 долл. США / день * 30 = 4,20 долл. США
100 тыс. удалений в день = 20 тыс. бесплатных удалений + (80 тыс. удалений по цене 0,02 долл. США/100 тыс.) = .8 * 0,02 доллара
0,02 долл. США / день * 30 = 0,60 долл. США
Расходы на хранение/сеть
Общая ежемесячная стоимость = 1,04 долл. США/месяц
20 КБ / DAU ежедневного исходящего трафика * 5 тыс. DAU = 100 МБ ежедневного исходящего трафика * 30 = 3 ГБ ежемесячного сетевого трафика
3 ГБ бесплатного исходящего трафика = 1 бесплатно
15 КБ ежедневного хранилища сообщений / DAU + 3 КБ хранилища / установка 2 = 45 КБ памяти / DAU * 5 тыс. DAU = 225 МБ ежедневного хранения / DAU * 30 = 6,75 ГБ ежемесячного использования хранилища
1 ГБ бесплатного хранилища + (5,75 * 0,18 долл. США) = 1,04 долл. США в месяц

1 10 ГБ ежемесячного сетевого трафика предоставляются бесплатно для Cloud Firestore .
2 Поскольку мы предполагаем, что DAU составляют 10% от общего числа установок приложений, это число учитывает общее количество пользователей, установивших ваше приложение.

Середина
(1 млн установок)

За 1 000 000 установок приложения (100 000 активных пользователей в день): 292,02 долл. США/месяц

Стоимость чтения/записи
Общая ежемесячная стоимость = 261,90 долл. США/месяц
8 млн прочтений в день = 50 тыс. бесплатных прочтений + (7,95 млн прочтений по цене 0,06 долл. США/100 тыс.) = 79,5 * 0,06 доллара
4,77 долл. США / день * 30 = 143,10 долл. США
2 млн ежедневных записей = 20 тыс. бесплатных записей + (1,98 млн записей по цене 0,18 долл. США/100 тыс.) = 19,8 * 0,18 доллара
3,56 долл. США / день * 30 = 106,80 долл. США
Всего 2 млн удалений в день = 20 тыс. бесплатных удалений + (1,98 млн удалений по цене 0,02 долл. США/100 тыс.) = 19,8 * 0,02 доллара
0,40 долл. США / день * 30 = 12,00 долл. США
Расходы на хранение/сеть
Общая ежемесячная стоимость = 30,12 долл. США/месяц
20 КБ / DAU ежедневного исходящего трафика * 100 тыс. DAU = 2 ГБ ежедневного исходящего трафика * 30 = 60 ГБ ежемесячного сетевого трафика
10 ГБ бесплатного исходящего трафика + (50 ГБ исходящего трафика * 0,12 долл. США/ГБ) = 6,00 долл. США в месяц
15 КБ ежедневного хранилища сообщений / DAU + 3 КБ хранилища / установка 1 = 45 КБ хранилища / DAU * 100 тыс. DAU = 4,5 ГБ ежедневного хранилища / DAU * 30 = 135 ГБ ежемесячного использования хранилища
1 ГБ бесплатного хранилища + (134 ГБ * 0,18 долл. США/ГБ) = 24,12 долл. США в месяц

1 Поскольку мы предполагаем, что DAU составляют 10% от общего числа установок приложений, это число учитывает общее количество пользователей, установивших ваше приложение.

Большой
(10 млн установок)

За 10 000 000 установок приложения (1 000 000 активных пользователей в день): 2951,52 долл. США

Стоимость чтения/записи
Общая ежемесячная стоимость = Итого: 2637,90 долл. США/месяц
80 млн прочтений в день = 50 тыс. бесплатных прочтений + (79,95 млн прочтений по цене 0,06 долл. США/100 тыс.) = 799,5 * 0,06 доллара
47,97 долл. США / день * 30 = 1439,10 долл. США
20 млн ежедневных записей = 20 тыс. бесплатных записей + (19,98 млн записей по цене 0,18 долл. США/100 тыс.) = 199,8 * 0,18 доллара
35,96 долл. США / день * 30 = 1078,80 долл. США
20 млн ежедневных удалений = 20 тыс. бесплатных удалений + (19,98 млн удалений по цене 0,02 долл. США/100 тыс.) = 199,8 * 0,02 доллара
4,00 долл. США / день * 30 = 120,00 долл. США
Расходы на хранение/сеть
Общая ежемесячная стоимость = 313,62 долл. США/месяц
20 КБ / DAU ежедневного исходящего трафика * 1 млн DAU = 20 ГБ ежедневного исходящего трафика * 30 = 600 ГБ ежемесячного сетевого трафика
10 ГБ бесплатного исходящего трафика + (590 ГБ исходящего трафика * 0,12 долл. США/ГБ) = 70,80 долл. США в месяц
15 КБ ежедневного хранилища сообщений / DAU + 3 КБ хранилища / установка 1 = 45 КБ памяти / DAU * 1 млн DAU = 45 ГБ ежедневного хранилища / DAU * 30 = 1350 ГБ ежемесячного использования хранилища
(1 ГБ бесплатного хранилища) + (1349 ГБ * 0,18 долл. США/ГБ) = 242,82 долл. США в месяц

1 Поскольку мы предполагаем, что DAU составляют 10% от общего числа установок приложений, это число учитывает общее количество пользователей, установивших ваше приложение.

Преимущество биллинговой модели Cloud Firestore , которое стоит рассмотреть, заключается в том, что вы платите только за то, что используете. В результате ваш счёт может расти или уменьшаться в зависимости от количества активных пользователей в день.

Разбивка: выставленный счет за использование по задачам пользователя

Для нашего примера чат-приложения структура данных выглядит следующим образом:

  • users/{userId} — Записи пользователей
  • groups/{groupId} — Чаты между 2 или более пользователями
    • messages/{messageId} — Каждое сообщение в чате.

Хранение данных

Чтобы рассчитать затраты на хранение данных приложения, примените следующие предположения о размерах документов:

Коллекция Размер документа (при транспортировке) Размер документа (на диске)*
пользователи 1КБ 3КБ
группы 0,5 КБ 1,5 КБ
сообщения 0,25 КБ 0,75 КБ

*Этот расчет размера включает индексы для полей сообщений, но предполагает, что индексация для содержимого сообщения отключена.

Кроме того, приложение сохраняет только сообщения старше трех месяцев, что позволяет снизить затраты на хранение.

Дополнительную информацию о расчете стоимости хранения см. в разделе Понимание расчетов размера хранилища .

Операции

Пользователи обычно выполняют в приложении следующие распространенные задачи:

  • Просмотр списка чатов: пользователи открывают главный экран приложения и видят список чатов (групповых и личных), упорядоченных по последнему опубликованному сообщению.
  • Чтение сообщений в чате: пользователи выбирают чаты на главном экране и читают последние сообщения из чатов.
  • Отправить сообщение в чат: пользователи отправляют сообщения в чаты (групповые или прямые).

Общее расчетное количество операций примера приложения в Cloud Firestore для трех типичных пользовательских задач выглядит следующим образом:

  • Чтений: (5 * 10) + (30) = 80 чтений / пользователь / день
  • Записи: (10 * 2) = 20 записей / пользователь / день
  • Сетевой исходящий трафик : (50 * 0,25 КБ) + (30 * 0,25 КБ) = 20 КБ / пользователь / день
  • Хранилище : (20 * 0,75 КБ) = 15 КБ / пользователь / день

Общее использование по пользовательской задаче

Выберите каждую пользовательскую задачу, чтобы увидеть полное описание и детализацию затрат на операции, хранение и сетевые подключения в приложении.

Посмотреть список чатов

На главном экране приложения загружаются 25 последних чатов, что приводит к оплате за 25 прочтений документов. Предположим, что активный пользователь открывает приложение 5 раз в день, что в сумме составляет 125 прочтений на пользователя в день. Однако более эффективные запросы, подобные приведенному в следующем примере, могут снизить эту нагрузку.

В примере ниже мы ограничиваем запрос новыми чатами, используя временную метку каждой успешной выборки, сохраненную приложением:

db.collection('groups')
  .where('participants', 'array-contains', 'user123')
  .where('lastUpdated', '>', lastFetchTimestamp)
  .orderBy('lastUpdated', 'desc')
  .limit(25)

Предположим, что при каждом посещении приложения пользователем обновляется в среднем 10 чатов. Этот запрос включает всего 10 прочтений документов.

Читать сообщения в чате

Чтобы просмотреть последние сообщения, пользователи открывают цепочки чатов на главном экране, загружая при этом 50 последних сообщений в первоначальную загрузку.

Предположим, что типичный пользователь выполняет это действие 5 раз в день (по одному разу при каждом открытии главного экрана), что в сумме составляет 250 прочтений на пользователя в день. Мы также можем ограничить наш запрос новыми сообщениями с момента последней выборки:

db.collection('groups')
  .doc('group234')
  .collection('messages')
  .where('sentTime', '>', lastFetchTimestamp)
  .orderBy('sentTime', 'desc')
  .limit(50)

Предположим, что пользователь получает около 30 сообщений в день во всех чатах. Поскольку вы ограничили запрос на получение новых сообщений, это означает всего 30 полученных сообщений в день.

Отправить сообщение в чат

Пользователи могут отправлять сообщения другим участникам чата. Предположим, что активный пользователь отправляет около 10 сообщений в день.

Каждое отправленное сообщение вызовет две записи документа: одну запись в подколлекцию messages чата и одну запись в родительский документ чата для обновления метки времени lastUpdated и других метаданных.

Обратите внимание, что стоимость прочтения этих сообщений была учтена в других поездках, поэтому приведенные ниже итоги учитывают только стоимость записи.

Использование с оплатой за выполнение задач администратора

Как владелец или администратор приложения, вы, вероятно, хотите создавать отчёты на основе данных своего приложения. Например, вам может понадобиться вести ежедневный подсчёт количества сообщений, отправленных пользователями. Это можно сделать с помощью агрегации count() для группы сбора messages .

Для запросов агрегации, таких как count() , взимается плата за одно чтение документа за каждый пакет из до 1000 записей индекса, соответствующих запросу. Ежедневное выполнение агрегации влечет за собой следующие ежемесячные расходы:

Маленький
(50 тыс. установок)

За 50 000 установок приложения (5 000 DAU): 0,0009 долл. США в месяц

5000 активных пользователей * 10 новых сообщений на пользователя = 50 000 новых сообщений в день

50 000 подсчитанных документов / 1000 совпадений индекса за одно чтение = 50 прочтений

50 прочтений в день * 30 дней = 1500 прочтений в месяц

1500 прочтений в месяц * цена 0,06/100 000 прочтений = 0,0009 долл. США в месяц

Середина
(1 млн установок)

За 1 000 000 установок приложения (100 000 активных пользователей в день): 0,018 долл. США в месяц

100 000 активных пользователей * 10 новых сообщений на пользователя = 1 000 000 новых сообщений в день

1 000 000 подсчитанных документов / 1 000 совпадений индекса за одно чтение = 1 000 прочтений

1000 прочтений в день * 30 дней = 30 000 прочтений в месяц

30 000 прочтений в месяц * цена 0,06/100 000 прочтений = 0,018 долл. США в месяц

Большой
(10 млн установок)

За 10 000 000 установок приложения (1 000 000 активных пользователей в день): 0,18 долл. США

1 000 000 активных пользователей * 10 новых сообщений на пользователя = 10 000 000 новых сообщений в день

10 000 000 подсчитанных документов / 1000 совпадений индекса за одно чтение = 10 000 прочтений

10 000 прочтений в день * 30 дней = 300 000 прочтений в месяц

300 000 прочтений в месяц * цена 0,06/100 000 прочтений = 0,18 доллара в месяц

Включенные преимущества: бесплатные услуги для вашего приложения

Хотя операции, хранилище и пропускная способность Cloud Firestore считаются платными, вы также получаете ряд других преимуществ без дополнительных затрат. При сравнении Cloud Firestore с другими вариантами баз данных обратите внимание на следующие бесплатные услуги:

  • Прямой клиентский доступ: доступ Cloud Firestore осуществляется напрямую из вашего клиентского кода с помощью наших собственных SDK. Это означает, что вам не нужно создавать и запускать API-сервер для подключения мобильных клиентов к базе данных.
  • Балансировка нагрузки: поскольку Cloud Firestore автоматически масштабируется для поддержки трафика в вашей базе данных, вам не нужно запускать балансировщик нагрузки.
  • Время безотказной работы сервера: Базы данных Cloud Firestore работают на серверах Google Cloud , обеспечивая более 99% ежемесячного времени безотказной работы .
  • Аутентификация: простая и безопасная аутентификация неограниченного количества пользователей с помощью Firebase Authentication . Firebase Authentication напрямую интегрируется с Cloud Firestore поэтому вам не нужно запускать собственную службу аутентификации.
  • Push-уведомления: отправляйте сообщения и уведомления с помощью Cloud Messaging .
  • Другие продукты Firebase: интегрируйте другие продукты Firebase бесплатно, включая A/B-тестирование, аналитику, Crashlytics, мониторинг производительности и удалённую настройку. Узнайте больше о других продуктах Firebase и ценах на Firebase .