Чтобы оценить использование и расходы на 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 тыс. бесплатных операций записи + (80 тыс. операций записи по цене 0,18 долл. США за 100 тыс.) | = | 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,00 долл.США в месяц | |||||||
| 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 000 000 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 и ценах на них…