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 usuarios
  • groups/{groupId} — Chats entre dos o más usuarios
    • messages/{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:

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