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 y 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 las 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 gastos de 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 GRATIS + (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 GRATIS + (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 GRATIS + (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 GRATIS = GRATIS1
 
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 GRATIS + (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 suponemos que los DAU corresponden al 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 GRATIS + (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 GRATIS + (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 GRATIS + (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 GRATIS + (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 GRATIS + (134 GB * $ 0.18 por GB) = $ 24.12 por mes

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.

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 GRATIS + (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 GRATIS + (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 GRATIS + (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 GRATIS + (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 GRATIS) + (1,349 GB * $ 0.18 por GB) = $ 242.82 por mes

1 Debido a que suponemos que los DAU corresponden al 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 usuarios
  • groups/{groupId}: Chats entre 2 o más usuarios
    • messages/{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: