Используйте этот реальный пример базового приложения для чата, чтобы оценить использование и затраты Cloud Firestore . Это не точная оценка, но она может помочь вам лучше понять, как оплачивается использование Cloud Firestore .
Обзор: Затраты по уровню использования
Чтобы проиллюстрировать типичные затраты, рассмотрим пример приложения чата, в котором пользователи могут инициировать чаты с двумя или более участниками. Пользователи могут видеть свои активные чаты в списке, читать и отправлять сообщения. В этом примере мы используем цены для нескольких регионов Северной Америки (в частности, nam5
).
Предположения
Рассмотрим следующие предположения об использовании и хранении данных:
- Ежедневно активные пользователи (DAU) составляют 10 % от общего числа установок приложения. Вы можете оценить свои ежедневные расходы, используя приблизительную оценку количества активных пользователей в день (DAU). Это пользователи, которые активно открывают и используют ваше приложение в определенный день, что обычно составляет небольшую часть от общего числа установок приложения. Для приведенных ниже расчетов мы оценили DAU как 10 % от общего количества установок приложения.
- Размеры документов относительно небольшие. В таблице ниже представлена разбивка размеров документов по типам.
- Данные хранятся всего три месяца. Сообщения в примере приложения чата хранятся только в течение трех месяцев. Чтобы учесть операции удаления, приведенные ниже расчеты показывают ежедневное удаление для каждой ежедневной записи.
- Эти оценки затрат отражают основную часть затрат примера приложения, но не все из них. Мы учли большую часть затрат на приложение, рассчитав операции, хранилище пользователей и сообщений, а также исходящие данные для наиболее частых пользовательских задач, описанных в этом руководстве. Однако вам может потребоваться принять во внимание дополнительные расходы в зависимости от структуры вашего приложения и потребностей в данных. Используйте этот пример для своих расчетов, но более подробное объяснение затрат на Cloud Firestore можно найти на странице цен .
Разбивку операций по пользовательским задачам см. в разделе «Разбивка: оплачиваемое использование по пользовательским задачам» .
Маленький
(50 тысяч установок)
За 50 000 установок приложения (5 000 активных пользователей в день): 12,14 доллара США в месяц.
Затраты на чтение/запись | |||||
---|---|---|---|---|---|
Общая ежемесячная стоимость = 11,10 долларов США в месяц. | |||||
400 тыс. ежедневного чтения | = | 50 000 бесплатных операций чтения + (350 000 операций чтения по цене 0,06 доллара США/100 000 долларов США) | = | 3,5 * 0,06 доллара США | |
0,21 доллара США в день * 30 = 6,30 доллара США. | |||||
Всего 100 тыс. записей в день | = | 20 000 бесплатных операций записи + (80 000 операций записи по цене 0,18 доллара США/100 000 долларов США) | = | .8 * 0,18 доллара США | |
0,14 доллара США в день * 30 = 4,20 доллара США. | |||||
Всего 100 тысяч ежедневных удалений | = | 20 000 бесплатных удалений + (80 000 удалений по цене 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 000 бесплатных операций записи + (1,98 000 операций записи по цене 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 тыс. 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 000 операций записи по цене 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,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}
— чаты между двумя или более пользователями.-
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 документов / 1 000 совпадений индекса за одно чтение = 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 подсчитанных документов / 1 000 совпадений индекса на одну плату за чтение = 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 .