Используйте этот реальный пример простого чат-приложения, чтобы оценить объем использования Cloud Firestore и связанные с этим затраты. Это не точная оценка, но она поможет вам лучше понять, как рассчитывается стоимость использования Cloud Firestore .
Обзор: Стоимость в зависимости от уровня использования
Для иллюстрации типичных затрат рассмотрим пример чат-приложения, где пользователи могут инициировать чаты с двумя или более участниками. Пользователи могут видеть свои активные чаты в списке, читать сообщения и отправлять сообщения. В этом примере мы используем цены для многорегиональной сети Северной Америки (в частности, nam5 ).
Предположения
Рассмотрите следующие предположения об использовании и хранении данных:
- Ежедневные активные пользователи (DAU) составляют 10% от общего числа установок приложения. Вы можете оценить свои ежедневные затраты, используя приблизительную оценку количества ежедневных активных пользователей (DAU). Это пользователи, которые активно открывают и используют ваше приложение в течение определенного дня, что обычно составляет небольшую часть от общего числа установок приложения. Для приведенных ниже расчетов мы оценили DAU как 10% от общего числа установок приложения.
- Размеры документов относительно невелики. В таблице ниже приведена разбивка размеров документов по типам.
- Данные хранятся только три месяца. Сообщения в примере приложения для чата хранятся только в течение трех месяцев. Чтобы учесть операции удаления, приведенные ниже расчеты показывают, что на каждую ежедневную запись приходится одно удаление.
- Эти оценки затрат отражают основную часть расходов приложения, но не все. Мы учли большую часть затрат приложения, рассчитав операции, хранилище пользователей и сообщений, а также исходящий трафик для наиболее часто выполняемых пользователем задач, описанных в этом руководстве. Однако вам может потребоваться учесть дополнительные расходы в зависимости от структуры вашего приложения и потребностей в данных. Используйте этот пример в качестве ориентира для ваших расчетов, но обратитесь к странице с ценами для более подробного объяснения стоимости Cloud Firestore .
Для получения подробной информации об операциях по задачам пользователя см. раздел « Подробная информация: Оплата за использование по задачам пользователя» .
Маленький
(50 тыс. установок)
Для 50 000 установок приложения (5000 ежедневно активных пользователей): 12,14 долларов США в месяц.
| Расходы на чтение/запись | |||||
|---|---|---|---|---|---|
| Общая ежемесячная стоимость = 11,10 долларов США в месяц | |||||
| 400 тысяч ежедневных прочтений. | = | 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 ежедневного исходящего трафика * 5 тыс. DAU | = | 100 МБ ежедневного исходящего трафика * 30 | = | 3 ГБ ежемесячного исходящего трафика | |||
| 3 ГБ бесплатного исходящего трафика = Бесплатно 1 | |||||||
| 15 КБ ежедневного хранилища сообщений / DAU + 3 КБ хранилища / установка 2 | = | 45 КБ хранилища / DAU * 5K DAU | = | 225 МБ ежедневного хранилища / DAU * 30 | = | Ежемесячный объем используемого хранилища: 6,75 ГБ | |
| 1 ГБ бесплатного хранилища + (5,75 * 0,18 $) = 1,04 $ в месяц | |||||||
1. 10 ГБ ежемесячного сетевого трафика предоставляются бесплатно для Cloud Firestore .
2. Поскольку мы предполагаем, что количество активных пользователей в день составляет 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 тыс. 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. Поскольку мы предполагаем, что количество активных пользователей в день составляет 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 тыс. бесплатных операций записи + (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. Поскольку мы предполагаем, что количество активных пользователей в день составляет 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 прочтений документов. Предположим, что активный пользователь открывает приложение 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 установок приложения (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, мониторинг производительности и удаленную конфигурацию. Узнайте больше о других продуктах Firebase и ценах на Firebase .