См. пример ценообразования Cloud Firestore

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

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

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

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

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

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

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

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

Для 50 000 установок приложения (5 000 активных пользователей в день): 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 тыс. бесплатных удалений + (80 тыс. удалений по цене 0,02 долл. США/100 тыс.) знак равно 0,8 * 0,02 доллара США
0,02 доллара США в день * 30 = 0,60 доллара США
Затраты на хранение/сеть
Общая ежемесячная стоимость = 1,04 доллара США в месяц.
20 КБ / DAU ежедневного исходящего трафика * 5 000 DAU знак равно 100 МБ ежедневного исходящего трафика * 30 знак равно 3 ГБ исходящего сетевого трафика в месяц
3 ГБ бесплатного исходящего трафика = бесплатно 1
15 КБ ежедневного хранилища сообщений / DAU + 3 КБ хранилища / установка 2 знак равно 45 КБ хранилища / DAU * 5 000 DAU знак равно 225 МБ ежедневного хранилища / DAU * 30 знак равно Ежемесячное использование хранилища 6,75 ГБ
1 ГБ бесплатного хранилища + (5,75 * 0,18 USD) = 1,04 USD в месяц

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 тыс. бесплатных удалений + (1,98 млн удалений по цене 0,02 долл. США/100 тыс.) знак равно 19,8 * 0,02 доллара США
0,40 доллара США в день * 30 = 12,00 долларов США
Затраты на хранение/сеть
Общая ежемесячная стоимость = 30,12 долларов США в месяц.
20 КБ / DAU ежедневного исходящего трафика * 100 000 DAU знак равно 2 ГБ ежедневного исходящего трафика * 30 знак равно Ежемесячно 60 ГБ исходящего сетевого трафика
10 ГБ бесплатного исходящего трафика + (50 ГБ исходящего трафика * 0,12 долл. США за ГБ) = 6,00 долл. США в месяц
15 КБ ежедневного хранилища сообщений / DAU + 3 КБ хранилища / установка 1 знак равно 45 КБ хранилища / DAU * 100 000 DAU знак равно 4,5 ГБ ежедневного хранилища / DAU * 30 знак равно Ежемесячное использование хранилища 135 ГБ
1 ГБ бесплатного хранилища + (134 ГБ * 0,18 USD/ГБ) = 24,12 USD в месяц

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

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

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

Стоимость чтения/записи
Общая ежемесячная стоимость = Итого: 2637,90 долларов США в месяц.
80 миллионов чтений в день знак равно 50 000 бесплатных чтений + (79,95 млн чтений по цене 0,06 долл. США/100 000) знак равно 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 тыс. бесплатных удалений + (19,98 млн удалений по цене 0,02 долл. США/100 тыс.) знак равно 199,8 * 0,02 доллара США
4 доллара США в день * 30 = 120 долларов США.
Затраты на хранение/сеть
Общая ежемесячная стоимость = 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 USD/ГБ) = 242,82 USD в месяц

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

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

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

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

  • 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 и других метаданных.

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

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

Хотя операции, хранилище и пропускная способность сети 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.