Ejemplo de facturación
Usa este ejemplo real de una aplicación de chat básica para calcular el uso y los costes de Firestore en modo nativo. No es una estimación exacta, pero puede ayudarte a entender mejor cómo se factura el uso de Firestore en modo nativo.
Resumen: costes por nivel de uso
Para ilustrar los costes típicos, vamos a usar como ejemplo una aplicación de chat en la que los usuarios pueden iniciar conversaciones con dos o más participantes. Los usuarios pueden ver sus conversaciones activas en una lista, leer mensajes y enviar mensajes. En este ejemplo, vamos a usar los precios de la multirregión de Norteamérica (concretamente, nam5
).
Suposiciones
Ten en cuenta las siguientes suposiciones sobre el uso y el almacenamiento de datos:
- Los usuarios activos al día (UADs) representan el 10% del total de descargas de la aplicación. Puedes estimar tus costes diarios con una estimación aproximada de tus usuarios activos diarios (UAD). Se trata de los usuarios que abren y usan tu aplicación de forma activa en un día concreto, que suele ser un pequeño subconjunto del total de instalaciones de tu aplicación. Para los cálculos que se muestran a continuación, hemos estimado que los usuarios activos diarios representan el 10% del número total de instalaciones de la aplicación.
- Los tamaños de los documentos son relativamente pequeños. Consulta la tabla de abajo para ver el desglose del tamaño de los documentos por tipo.
- Los datos solo se almacenan durante tres meses. Los mensajes de la aplicación de chat de ejemplo solo se almacenan durante un periodo de tres meses. Para tener en cuenta las operaciones de eliminación, los cálculos que se muestran a continuación reflejan una eliminación diaria por cada escritura diaria.
- Estas estimaciones de costes reflejan la mayor parte de los costes de la aplicación de ejemplo, pero no todos. Hemos tenido en cuenta la mayor parte de los costes de una aplicación calculando las operaciones, el almacenamiento de usuarios y mensajes, y la salida de los usuarios que realizan las tareas más frecuentes descritas en esta guía. Sin embargo, es posible que tengas que tener en cuenta costes adicionales en función de la estructura de tu aplicación y de tus necesidades de datos. Usa este ejemplo como guía para tus cálculos, pero consulta la página de precios para obtener explicaciones más detalladas sobre los costes de Firestore en modo nativo.
Para ver un desglose de las operaciones por tarea de usuario, consulta la sección Desglose: uso facturado por tarea de usuario.
Pequeña
(50.000 descargas)
Por 50.000 descargas de la aplicación (5000 usuarios activos diarios): 12,14 USD al mes
Costes de lectura y escritura | |||||
---|---|---|---|---|---|
Coste mensual total = 11,10 USD al mes | |||||
400.000 lecturas diarias en total | = | 50.000 lecturas sin coste + (350.000 lecturas a 0,06 USD por cada 100.000) | = | 3,5 * 0,06 USD | |
0,21 USD/día * 30 = 6,30 USD | |||||
100.000 escrituras diarias en total | = | 20.000 escrituras sin coste + (80.000 escrituras a 0,18 USD por cada 100.000) | = | 0,8 * 0,18 $ | |
0,14 USD/día * 30 = 4,20 USD | |||||
100.000 eliminaciones diarias en total | = | 20.000 eliminaciones sin coste + (80.000 eliminaciones a 0,02 USD por 100.000) | = | 0,8 * 0,02 USD | |
0,02 USD/día * 30 = 0,60 USD |
Costes de almacenamiento y redes | |||||||
---|---|---|---|---|---|---|---|
Coste mensual total = 1,04 USD al mes | |||||||
20 KB/UAD de salida diaria * 5000 UAD | = | 100 MB de salida al día × 30 | = | 3 GB de salida de red al mes | |||
3 GB de salida sin coste económico = Sin coste económico1 | |||||||
15 KB de almacenamiento de mensajes al día/UAD + 3 KB de almacenamiento/instalación2 | = | 45 KB de almacenamiento por UAD * 5000 UADs | = | 225 MB de almacenamiento diario/UAD * 30 | = | Uso de almacenamiento mensual de 6,75 GB | |
1 GB de almacenamiento sin coste + (5,75 * 0,18 USD) = 1,04 USD al mes |
1 10 GB de salida de red al mes sin coste para Firestore en modo nativo.
2 Como partimos de la hipótesis de que los usuarios activos diarios representan el 10% del total de descargas de la aplicación, este número representa el número total de usuarios que han descargado tu aplicación.
Media
(1 M de descargas)
Por 1.000.000 de descargas de la aplicación (100.000 usuarios activos diarios): 292,02 USD al mes
Costes de lectura y escritura | |||||
---|---|---|---|---|---|
Coste total mensual = 261,90 USD al mes | |||||
8 millones de lecturas diarias en total | = | 50.000 lecturas sin coste + (7,95 M de lecturas a 0,06 USD por cada 100.000) | = | 79,5 × 0,06 USD | |
4,77 USD/día * 30 = 143,10 USD | |||||
2 millones de escrituras diarias en total | = | 20.000 operaciones de escritura sin coste económico + (1.980.000 operaciones de escritura a 0,18 USD por 100.000) | = | 19,8 * 0,18 $ | |
3,56 USD/día * 30 = 106,80 USD | |||||
2 millones de eliminaciones diarias en total | = | 20.000 eliminaciones sin coste + (1.980.000 eliminaciones a 0,02 USD/100.000) | = | 19,8 * 0,02 USD | |
0,40 USD/día * 30 = 12,00 USD |
Costes de almacenamiento y redes | |||||||
---|---|---|---|---|---|---|---|
Coste mensual total = 30,12 USD al mes | |||||||
20 KB/UAD de salida diaria * 100.000 UADs | = | 2 GB de salida al día * 30 | = | 60 GB de salida de red al mes | |||
10 GB de salida sin coste + (50 GB de salida * 0,12 USD/GB) = 6,00 USD al mes | |||||||
15 KB de almacenamiento de mensajes al día por UAD + 3 KB de almacenamiento por instalación1 | = | 45 KB de almacenamiento por UAD * 100.000 UAD | = | 4,5 GB de almacenamiento diario/DAU * 30 | = | Uso de almacenamiento mensual de 135 GB | |
1 GB de almacenamiento sin coste + (134 GB * 0,18 USD/GB) = 24,12 USD al mes |
1 Como partimos de la base de que los usuarios activos diarios representan el 10% del total de descargas de la aplicación, este número representa el total de usuarios que han descargado tu aplicación.
Grande
(10 M de descargas)
Por 10.000.000 de descargas de la aplicación (1.000.000 de usuarios activos diarios): 2951,52 USD
Costes de lectura y escritura | |||||
---|---|---|---|---|---|
Coste mensual total: 2637,90 USD al mes | |||||
80 millones de lecturas diarias en total | = | 50.000 lecturas sin coste + (79,95 millones de lecturas a 0,06 USD por cada 100.000) | = | 799,5 × 0,06 USD | |
47,97 USD/día × 30 = 1439,10 USD | |||||
20 M de escrituras diarias totales | = | 20.000 operaciones de escritura sin coste económico + (19,98 M de operaciones de escritura a 0,18 USD por 100.000) | = | 199,8 * 0,18 USD | |
35,96 USD/día * 30 = 1078,80 USD | |||||
20 millones de eliminaciones diarias en total | = | 20.000 eliminaciones sin coste + (19,98 M de eliminaciones a 0,02 USD/100.000) | = | 199,8 * 0,02 USD | |
4 USD/día * 30 = 120 USD |
Costes de almacenamiento y redes | |||||||
---|---|---|---|---|---|---|---|
Coste mensual total = 313,62 USD al mes | |||||||
20 KB/UAD de salida diaria * 1 M de UAD | = | 20 GB de salida al día * 30 | = | 600 GB de salida de red al mes | |||
10 GB de salida sin coste + (590 GB de salida * 0,12 USD/GB) = 70,80 USD al mes | |||||||
15 KB de almacenamiento de mensajes al día por UAD + 3 KB de almacenamiento por instalación1 | = | 45 KB de almacenamiento/UAD * 1 millón de UAD | = | 45 GB de almacenamiento diario/DAU * 30 | = | Uso mensual de almacenamiento de 1350 GB | |
(1 GB de almacenamiento sin coste) + (1349 GB * 0,18 USD/GB) = 242,82 USD al mes |
1 Como partimos de la base de que los usuarios activos diarios representan el 10% del total de descargas de la aplicación, este número representa el total de usuarios que han descargado tu aplicación.
Una de las ventajas del modelo de facturación de Firestore en el modo nativo que merece la pena tener en cuenta es que solo pagas por lo que usas. Por lo tanto, tu factura puede aumentar y disminuir en función del número de usuarios activos diarios.
Desglose: uso facturado por tarea de usuario
En nuestra aplicación de chat de ejemplo, la estructura de datos es la siguiente:
users/{userId}
: registros de usuariosgroups/{groupId}
— Chats entre dos o más usuariosmessages/{messageId}
: cada mensaje de un chat.
Almacenamiento de datos
Para calcular los costes de almacenamiento de los datos de la aplicación, aplica las siguientes suposiciones sobre los tamaños de los documentos:
Colección | Tamaño del documento (en tránsito) | Tamaño del documento (en disco)* |
---|---|---|
users | 1 KB | 3 KB |
grupos | 0,5 KB | 1,5 KB |
mensajes | 0,25 KB | 0,75 KB |
*Este cálculo del tamaño incluye los índices de los campos de mensaje, pero supone que la indexación está inhabilitada para el contenido del mensaje.
La aplicación también solo almacena mensajes que tengan hasta tres meses de antigüedad para reducir los costes de almacenamiento.
Para obtener más información sobre cómo calcular los costes de almacenamiento, consulta la sección Cálculos del tamaño de almacenamiento.
Operaciones
Los usuarios suelen completar las siguientes tareas habituales en la aplicación:
- Ver la lista de conversaciones: los usuarios abren la pantalla de inicio de la aplicación y ven una lista de conversaciones (de grupo y directas) ordenadas por el mensaje más reciente.
- Leer mensajes de un chat: los usuarios seleccionan chats en la pantalla de inicio y leen los mensajes recientes de los chats.
- Enviar un mensaje a una conversación: los usuarios envían mensajes a conversaciones (de grupo o directas).
El total de operaciones estimadas de la aplicación de ejemplo en Firestore en modo nativo para las tres tareas típicas de los usuarios es el siguiente:
- Lecturas: (5 * 10) + (30) = 80 lecturas por usuario y día
- Escrituras: (10 * 2) = 20 escrituras por usuario y día
- Salida de red: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB por usuario y día
- Almacenamiento: (20 * 0,75 KB) = 15 KB por usuario y día
Uso total por tarea de usuario
Selecciona cada tarea de usuario para ver una descripción completa y un desglose de las operaciones, el almacenamiento y los costes de red de la aplicación.
Ver la lista de conversaciones
La pantalla de inicio de la aplicación carga las 25 conversaciones más recientes, lo que supone un coste de 25 lecturas de documentos. Supongamos que un usuario activo abre la aplicación 5 veces al día, lo que supone un total de 125 lecturas por usuario cada día. Sin embargo, las consultas más eficientes, como la del siguiente ejemplo, pueden reducir esta carga.
En el ejemplo siguiente, limitamos la consulta a las conversaciones nuevas mediante una marca de tiempo de cada obtención correcta, almacenada por la aplicación:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
Supongamos que hay una media de 10 conversaciones actualizadas cada vez que el usuario comprueba la aplicación. Esta consulta solo incurre en 10 lecturas de documentos.
Leer mensajes en un chat
Los usuarios hacen clic en las conversaciones desde la pantalla de inicio para ver los mensajes recientes. En la carga inicial, se cargan los 50 mensajes más recientes.
Supongamos que el usuario típico realiza esta acción 5 veces al día (una vez cada vez que abre la pantalla de inicio), lo que supone un total de 250 lecturas por usuario al día. También podemos limitar nuestra consulta a los mensajes nuevos desde la última hora de obtención:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
Supongamos que un usuario recibe unos 30 mensajes al día en todas las conversaciones. Como has limitado la consulta para obtener mensajes nuevos, esto se traduce en solo 30 mensajes recuperados al día.
Enviar un mensaje a un chat
Los usuarios pueden enviar mensajes a otros participantes una vez que estén en un chat. Supongamos que un usuario activo envía unos 10 mensajes al día.
Cada mensaje enviado provocará dos escrituras de documentos: una escritura en la subcolección messages
de la conversación y otra en el documento superior de la conversación para actualizar la marca de tiempo lastUpdated
y otros metadatos.
Ten en cuenta que el coste de leer estos mensajes se ha tenido en cuenta en los otros recorridos, por lo que los totales que se muestran a continuación solo consideran este coste de escritura.
Uso facturado de las tareas de administrador
Como propietario o administrador de una aplicación, probablemente quieras generar informes a partir de los datos de tu aplicación. Por ejemplo, puede que quieras llevar un recuento diario del número de mensajes que envían tus usuarios. Puedes hacerlo con una agregación count()
del grupo de colección messages
.
En el caso de las consultas de agregación, como count()
,se te cobrará una operación de lectura de documento por cada lote de hasta 1000 entradas de índice que coincidan con la consulta. Si ejecutas esta agregación diaria, se añadirán los siguientes cargos mensuales:
Pequeña
(50.000 descargas)
Por 50.000 descargas de aplicaciones (5000 usuarios activos diarios): 0,0009 USD al mes
5000 usuarios activos * 10 mensajes nuevos por usuario = 50.000 documentos de mensajes nuevos al día
50.000 documentos contabilizados / 1000 coincidencias de índice por cargo de lectura = 50 lecturas
50 lecturas al día × 30 días = 1500 lecturas al mes
1500 lecturas al mes * 0,06 USD/100.000 lecturas = 0,0009 USD al mes
Media
(1 M de descargas)
Por 1.000.000 de descargas de la aplicación (100.000 usuarios activos diarios): 0,018 USD al mes
100.000 usuarios activos * 10 mensajes nuevos por usuario = 1.000.000 de documentos de mensajes nuevos al día
1.000.000 de documentos contabilizados / 1000 coincidencias de índice por cargo de lectura = 1000 lecturas
1000 lecturas al día × 30 días = 30.000 lecturas al mes
30.000 lecturas al mes * 0,06 USD/100.000 lecturas = 0,018 USD al mes
Grande
(10 M de descargas)
Por 10.000.000 de descargas de aplicaciones (1.000.000 de usuarios activos diarios): 0,18 USD
1.000.000 de usuarios activos * 10 mensajes nuevos por usuario = 10.000.000 de documentos de mensajes nuevos al día
10.000.000 de documentos contabilizados / 1000 coincidencias de índice por cargo de lectura = 10.000 lecturas
10.000 lecturas al día × 30 días = 300.000 lecturas al mes
300.000 lecturas al mes * 0,06 USD/100.000 lecturas = 0,18 USD al mes