Ejemplo de facturación
Usa este ejemplo real de una app de chat básica para calcular el uso y los costos de Firestore. La estimación no es exacta, pero puedes emplearla para comprender mejor cómo se factura el uso de Firestore.
Descripción general: Costos por nivel de uso
Para ilustrar los costos habituales, usaremos una app de chat de ejemplo que permite a los usuarios chatear con dos o más personas. Los usuarios pueden ver sus chats activos en una lista, así como leer y enviar mensajes. En este ejemplo, usamos los precios de la multirregión de Norteamérica (específicamente, nam5
).
Supuestos
Ten en cuenta estos supuestos relativos al uso y el almacenamiento de datos:
- Los usuarios activos por día (DAU) representan el 10% de las instalaciones totales de la app. Puedes calcular los costos diarios a partir de la estimación de los DAU. Estos son usuarios que abren y usan la app de manera activa en un día específico; suelen representar un pequeño subconjunto de las instalaciones totales de la app. En los siguientes cálculos, estimamos los DAU como un 10% del total de instalaciones de la app.
- El tamaño de los documentos es relativamente pequeño. Consulta la siguiente tabla para ver un desglose de los tamaños de los documentos por tipo.
- Los datos solo se almacenan por tres meses. En la app de chat del ejemplo, los mensajes solo se almacenan por un período de tres meses. Para considerar las operaciones de eliminación, los siguientes cálculos muestran una de estas operaciones por cada escritura diaria.
- Las estimaciones de costos reflejan la mayor parte de los costos asociados a la app de ejemplo, no todos. Consideramos la mayor parte de los costos de una app calculando las operaciones, el almacenamiento de usuarios y mensajes, y la salida de las tareas más frecuentes de los usuarios que se indican en esta guía. Sin embargo, es posible que debas considerar costos adicionales en función de la estructura y las necesidades de datos de tu app. Usa este ejemplo para orientar tus cálculos, pero también consulta la página de precios a fin de obtener más detalles sobres los costos de Firestore.
Consulta la sección Desglose: Uso facturado por tarea de usuario para ver un desglose de las operaciones.
Pequeña
(50,000 instalaciones)
Por 50,000 instalaciones de la app (5,000 usuarios activos por día): $ 12.14 por mes
Costos de lecturas y escrituras | |||||
---|---|---|---|---|---|
Costo total mensual = $ 11.10 | |||||
Total de 400,000 lecturas diarias | = | 50,000 lecturas sin costo + (350,000 lecturas a $0.06 por 100,000) | = | 3.5 * $ 0.06 | |
$ 0.21 por día * 30 = $ 6.30 | |||||
Total de 100,000 escrituras diarias | = | 20,000 escrituras sin costo + (80,000 escrituras a $0.18 por 100,000) | = | 0.8 * $ 0.18 | |
$ 0.14 por día * 30 = $ 4.20 | |||||
Total de 100,000 eliminaciones diarias | = | 20,000 eliminaciones sin costo + (80,000 eliminaciones a $0.02 por 100,000) | = | 0.8 * $ 0.02 | |
$ 0.02 por día * 30 = $ 0.60 |
Costos de almacenamiento y red | |||||||
---|---|---|---|---|---|---|---|
Costo total mensual = $ 1.04 por mes | |||||||
20 KB por DAU de salida diaria * 5,000 DAU | = | 100 MB de salida diaria * 30 | = | 3 GB de salida de red mensual | |||
3 GB de salida sin costo = sin costo1 | |||||||
15 KB de almacenamiento diario de mensajes por DAU + 3 KB de almacenamiento por instalación2 | = | 45 KB de almacenamiento por DAU * 5,000 DAU | = | 225 MB de almacenamiento diario por DAU * 30 | = | 6.75 GB de uso de almacenamiento mensual | |
1 GB de almacenamiento sin costo + (5.75 * $0.18) = $1.04 por mes |
1 Existe un límite de 10 GB de salida de red mensual sin costo para Firestore.
2 Debido a que presuponemos que los DAU representan el 10% del total de las instalaciones
de la app, esta cantidad
equivale al total de usuarios que instalaron la app.
Media
(1 millón de instalaciones)
Por 1,000,000 de instalaciones de la app (100,000 usuarios activos por día): $ 292.02 por mes
Costos de lecturas y escrituras | |||||
---|---|---|---|---|---|
Costo total mensual = $ 261.90 | |||||
Total de 8,000,000 de lecturas diarias | = | 50,000 lecturas sin costo + (7,950,000 lecturas a $0.06 por 100,000) | = | 79.5 * $ 0.06 | |
$ 4.77 por día * 30 = $ 143.10 | |||||
Total de 2,000,000 de escrituras diarias | = | 20,000 escrituras sin costo + (1,980,000 escrituras a $0.18 por 100,000) | = | 19.8 * $ 0.18 | |
$3.56 por día * 30 = $106.80 | |||||
Total de 2,000,000 de eliminaciones diarias | = | 20,000 eliminaciones sin costo + (1,980,000 eliminaciones a $0.02 por 100,000) | = | 19.8 * $ 0.02 | |
$ 0.40 por día * 30 = $ 12.00 |
Costos de almacenamiento y red | |||||||
---|---|---|---|---|---|---|---|
Costo total mensual = $ 30.12 | |||||||
20 KB por DAU de salida diaria * 100,000 DAU | = | 2 GB de salida diaria * 30 | = | 60 GB de salida de red mensual | |||
10 GB de salida sin costo + (50 GB de salida * $0.12 por GB) = $6.00 por mes | |||||||
15 KB de almacenamiento diario de mensajes por DAU + 3 KB de almacenamiento por instalación1 | = | 45 KB de almacenamiento por DAU * 100,000 DAU | = | 4.5 GB de almacenamiento diario por DAU * 30 | = | 135 GB de uso de almacenamiento mensual | |
1 GB de almacenamiento sin costo + (134 GB * $0.18 por GB) = $24.12 por mes |
1 Debido a que presuponemos que los DAU representan el 10% del total de las instalaciones de la app, esta cantidad equivale al total de usuarios que instalaron la app.
Grande
(10 millones de instalaciones)
Por 10,000,000 de instalaciones de la app (1,000,000 de usuarios activos por día): $ 2,951.52
Costos de lecturas y escrituras | |||||
---|---|---|---|---|---|
Costo total mensual = Total: $ 2,637.90 | |||||
Total de 80,000,000 de lecturas diarias | = | 50,000 lecturas sin costo + (79,950,000 lecturas a $0.06 por 100,000) | = | 799.5 * $ 0.06 | |
$ 47.97 por día * 30 = $ 1,439.10 | |||||
Total de 20,000,000 de escrituras diarias | = | 20,000 escrituras sin costo + (19,980,000 escrituras a $0.18 por 100,000) | = | 199.8 * $ 0.18 | |
$ 35.96 por día * 30 = $ 1,078.80 | |||||
Total de 20,000,000 de eliminaciones diarias | = | 20,000 eliminaciones sin costo + (19,980,000 eliminaciones a $0.02 por 100,000) | = | 199.8 * $ 0.02 | |
$ 4.00 por día * 30 = $ 120.00 |
Costos de almacenamiento y red | |||||||
---|---|---|---|---|---|---|---|
Costo total mensual = $ 313.62 | |||||||
20 KB por DAU de salida diaria * 1,000,000 de DAU | = | 20 GB de salida diaria * 30 | = | 600 GB de salida de red mensual | |||
10 GB de salida sin costo + (590 GB de salida * $0.12 por GB) = $70.80 por mes | |||||||
15 KB de almacenamiento diario de mensajes por DAU + 3 KB de almacenamiento por instalación1 | = | 45 KB de almacenamiento por DAU * 1,000,000 de DAU | = | 45 GB de almacenamiento diario por DAU * 30 | = | 1,350 GB de uso de almacenamiento mensual | |
(1 GB de almacenamiento sin costo) + (1,349 GB * $0.18 por GB) = $242.82 por mes |
1 Debido a que presuponemos que los DAU representan el 10% del total de las instalaciones de la app, esta cantidad equivale al total de usuarios que instalaron la app.
Un beneficio importante del modelo de facturación de Firestore es que solo pagas por lo que usas. Por lo tanto, es posible que el valor de tu factura aumente o disminuya en función del recuento de DAU.
Desglose: Uso facturado por tarea de usuario
A continuación se muestra la estructura de datos de nuestra app de chat de ejemplo:
users/{userId}
: Registros de usuariosgroups/{groupId}
: Chats entre 2 o más usuariosmessages/{messageId}
: Cada mensaje de un chat.
Almacenamiento de datos
Para calcular los costos de almacenamiento de los datos de la app, ten en cuenta estos supuestos relativos al tamaño de los documentos:
Colección | Tamaño del documento (en tránsito) | Tamaño del documento (en disco)* |
---|---|---|
usuarios | 1 KB | 3 KB |
grupos | 0.5 KB | 1.5 KB |
mensajes | 0.25 KB | 0.75 KB |
* Este cálculo incluye los índices de los campos de mensaje, pero en él se presupone que la indexación está inhabilitada para este tipo de contenido.
Para reducir los costos de almacenamiento, la app solo almacena mensajes de hasta tres meses de antigüedad.
Si quieres obtener más información sobre los costos de almacenamiento, consulta Comprende los cálculos del tamaño de almacenamiento.
Operaciones
Los usuarios suelen realizar las siguientes tareas comunes en la app:
- Ver la lista de chats: Los usuarios abren la pantalla principal de la app y ven una lista de chats (directos y grupales) ordenada por la fecha de publicación del mensaje más reciente.
- Leer los mensajes de un chat: Los usuarios seleccionan los chats de la pantalla principal y leen los mensajes recientes.
- Enviar un mensaje a un chat: Los usuarios envían mensajes a los chats (directos o grupales).
A continuación, se indica el total de las operaciones estimadas de la app en Firestore para las tres tareas que suelen realizan los usuarios:
- Lecturas: (5 * 10) + (30) = 80 lecturas diarias por usuario
- Escrituras: (10 * 2) = 20 escrituras diarias por usuario
- Salida de red: (50 * 0.25 KB) + (30 * 0.25 KB) = 20 KB diarios por usuario
- Almacenamiento: (20 * 0.75 KB) = 15 KB diarios por usuario
Uso total por tarea de usuario
Selecciona cada tarea de usuario para ver una descripción y un desglose completo de los costos de operaciones, almacenamiento y red en la app.
Ver la lista de chats
En la pantalla principal de la app, se cargan los 25 chats más recientes y, por tanto, se aplican cargos por 25 lecturas de documentos. Es posible presuponer que un usuario activo abre la app 5 veces al día, lo que equivale a un total de 125 lecturas diarias. Sin embargo, las consultas más eficientes, como la de este ejemplo, pueden reducir esa carga.
En el ejemplo, limitamos la consulta a chats nuevos y usamos una marca de tiempo por cada recuperación exitosa almacenada en la app:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
Supongamos que tenemos un promedio de 10 chats actualizados cada vez que un usuario consulta la app. Esta consulta solo genera 10 lecturas de documentos.
Leer los mensajes de un chat
En la pantalla principal, los usuarios pueden hacer clic en los chats a fin de ver los mensajes recientes, que serán los 50 más actuales en la carga inicial.
Es posible presuponer que un usuario común realiza esta acción 5 veces por día (es decir, 1 vez por cada oportunidad en que abre la pantalla principal), lo que generará un total de 250 lecturas diarias por usuario. También podemos limitar nuestra consulta a mensajes nuevos a partir de la última fecha de recuperación, como se muestra a continuación:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
Supongamos que un usuario recibe aproximadamente 30 mensajes diarios de todos los chats. Debido a que limitaste la consulta a la búsqueda de mensajes nuevos, solo se recuperarán 30 mensajes al día.
Enviar un mensaje a un chat
Los usuarios pueden enviar mensajes a otros participantes cuando están en un chat. Es posible presuponer que un usuario activo envía aproximadamente 10 mensajes diarios.
Cada mensaje enviado generará dos escrituras de documento: una en la subcolección messages
del chat y otra en el documento principal del chat a fin de actualizar la marca de tiempo lastUpdated
y otros metadatos.
Ten en cuenta que se contabilizó el costo de lectura de los mensajes en los otros procesos, por lo que los totales que aparecen a continuación solo consideran este costo de escritura:
Uso facturado por tareas de administrador
Como propietario o administrador de una app, te recomendamos generar informes
a partir de sus datos. Por ejemplo, es posible que desees mantener un recuento diario de la
cantidad de mensajes que envían tus usuarios. Puedes lograr esto con una agregación
count()
del grupo de colecciones
messages
.
Para las consultas de agregación como count()
, se te cobra una lectura de documento
por cada lote de hasta 1,000 entradas de índice que coincidan con la consulta. Si ejecutas esta
agregación diaria, se agregan los siguientes cargos mensuales:
Pequeña
(50,000 instalaciones)
Por 50,000 instalaciones de la app (5,000 DAU): USD 0.0009 por mes
5,000 usuarios activos × 10 mensajes nuevos por usuario = 50,000 documentos de mensajes nuevos por día
50,000 documentos contados/1,000 coincidencias de índice por cargo de lectura = 50 lecturas
50 lecturas por día × 30 días = 1,500 lecturas por mes
1,500 lecturas por mes × 0.06/100,000 del precio de las lecturas = USD 0.0009 por mes
Media
(1 millón de instalaciones)
Por 1,000,000 de instalaciones de la app (100,000 usuarios activos por día): USD 0.018 por mes
100,000 usuarios activos × 10 mensajes nuevos por usuario = 1,000,000 de documentos de mensajes nuevos por día
1,000,000 de documentos contados/1,000 coincidencias de índice por cargo de lectura = 1,000 lecturas
1,000 lecturas por día × 30 días = 30,000 lecturas por mes
30,000 lecturas por mes × 0.06/100,000 del precio de las lecturas = USD 0.018 por mes
Grande
(10 millones de instalaciones)
Por 10,000,000 de instalaciones de la app (1,000,000 de usuarios activos por día): USD 0.18
1,000,000 de usuarios activos × 10 mensajes nuevos por usuario = 10,000,000 de documentos de mensajes nuevos por día
10,000,000 de documentos contabilizados/1,000 coincidencias de índice por cargo de lectura = 10,000 lecturas
10,000 lecturas por día × 30 días = 300,000 lecturas por mes
300,000 lecturas al mes × 0.06/100,000 del precio de las lecturas = USD 0.18 por mes