Используйте этот реальный пример базового чат-приложения, чтобы оценить использование и расходы 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 , на которое стоит обратить внимание, заключается в том, что вы платите только за то, что используете. В результате ваш счет может расти и уменьшаться в зависимости от количества ваших 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
и других метаданных.
Обратите внимание, что стоимость прочтения этих сообщений была учтена в других поездках, поэтому в приведенных ниже итоговых суммах учтена только стоимость записи.
Платное использование для задач администратора
Как владелец приложения или администратор вы, вероятно, захотите создавать отчеты на основе данных вашего приложения. Например, вы можете вести ежедневный подсчет количества сообщений, отправленных вашими пользователями. Вы можете сделать это с помощью агрегации 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 .