Пример расчета стоимости Cloud Firestore

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

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

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

Допущения

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

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

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

Небольшое
(50 тыс. установок)

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

Расходы на чтение и запись
Общая стоимость в месяц = 11,10 долл.США
400 000 операций чтения в день =   50 000 бесплатных операций чтения + (350 000 операций чтения по цене 0,06 доллара США за 100 000) =   3,5 * 0,06 долл. США
0,21 долл.США/день * 30 = 6,30 долл.США
 
100 000 записей в день =   20 000 бесплатных операций записи + (80 000 операций записи по цене 0,18 долл.США за 100 000) =   0,8 * 0,18 долл. США
0,14 долл.США/день * 30 = 4,20 долл.США
 
100 000 в день =   20 000 бесплатных удалений + (80 000 удалений по цене 0,02 долл.США за 100 000) =   0,8 * 0,02 долл. США
0,02 долл.США/день * 30 = 0,60 долл.США
Расходы на хранение и сеть
Общая стоимость в месяц = 1,04 долл.США
20 КБ/DAU исходящего трафика в день * 5000 DAU =   100 МБ исходящего трафика в день * 30 =   3 ГБ исходящего сетевого трафика в месяц.
3 ГБ бесплатного исходящего трафика = бесплатно1
 
15 КБ на хранение сообщений в день / DAU + 3 КБ на хранение / установка2 =   45 КБ хранилища / DAU * 5000 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 000 бесплатных операций чтения + (7,95 млн операций чтения по цене 0,06 долл. США за 100 000) =   79,5 * 0,06 долл. США
4,77 долл.США/день * 30 = 143,10 долл.США
 
2 млн записей в день =   20 000 бесплатных записей + (1,98 млн записей по 0,18 долл. США за 100 000) =   19,8 * 0,18 долл. США
3,56 долл.США/день * 30 = 106,80 долл.США
 
2 млн удалений в день =   20 000 бесплатных удалений + (1,98 млн удалений по цене 0,02 долл. США за 100 000) =   19,8 * 0,02 долл. США
0,40 долл.США/день * 30 = 12,00 долл.США
Расходы на хранение и сеть
Общая стоимость в месяц: 30,12 доллара США.
20 КБ/DAU ежедневного исходящего трафика * 100 000 DAU =   2 ГБ исходящего трафика в день * 30 =   60 ГБ исходящего трафика в месяц.
10 ГБ бесплатного исходящего трафика + (50 ГБ исходящего трафика * 0,12 доллара США/ГБ) = 6 долларов США в месяц
 
15 КБ на хранение сообщений за день / DAU + 3 КБ на хранение / установка1 =   45 КБ хранилища / DAU * 100 000 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 000 бесплатных операций записи + (19,98 млн операций записи по цене 0,18 долл. США за 100 000) =   199,8 * 0,18 долл. США
35,96 долл.США/день * 30 = 1078,80 долл.США
 
20 миллионов удалений в день =   20 000 бесплатных удалений + (19,98 млн удалений по 0,02 долл. США за 100 000) =   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} – чаты между двумя или более пользователями.
    • 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 документов. Предположим, что активный пользователь открывает приложение пять раз в день, то есть каждый день на одного пользователя приходится 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 установок приложения (5000 активных пользователей в день): 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 документов / 1000 совпадений в индексе на одну операцию чтения = 1000 операций чтения.

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 и Performance Monitoring. Подробнее о других продуктах Firebase и ценах на них…