Saltar al contenido

¿Cómo obtener un tamaño de documento de Firestore?

Solución:

Los cálculos utilizados para calcular el tamaño de un documento están completamente documentados aquí. Hay mucho texto allí, así que navega allí para leerlo. No vale la pena copiar todo ese texto aquí.

Si tiene que calcular manualmente el tamaño de un documento a medida que crece, mi opinión es que probablemente no esté modelando sus datos de manera escalable. Si tiene listas de datos que pueden crecer sin límites, probablemente no debería usar un campo de lista y, en su lugar, colocar esos datos en documentos en una nueva colección o subcolección. Hay algunas excepciones a esta regla, pero en términos generales, no debería tener que preocuparse por calcular el tamaño de un documento en su código de cliente.

Para usuarios de Android que quieran comparar el tamaño de un documento con el máximo de 1 MiB (1,048,576 bytes) cuota, hay una biblioteca que hice y que puede ayudarlo a calcular eso:

  • https://github.com/alexmamo/FirestoreDocument-Android/tree/master/firestore-document

De esta manera, podrá mantenerse siempre por debajo del límite. El algoritmo detrás de esta biblioteca es el que se explica en la documentación oficial sobre el Tamaño de almacenamiento.

Estaba buscando en la referencia de Firebase esperando que los metadatos tuvieran un atributo, pero no es así. Puede comprobar aquí.

Entonces, mi próximo enfoque sería calcular el peso del objeto como una aproximación. La biblioteca sizeOf parece tener una API razonable para ella.

Entonces sería algo como:

sizeof.sizeof(doc.data());

No usaría la instantánea del documento, porque contiene metadatos, como si hubiera guardados pendientes. Por otro lado, sobrestimar podría ser mejor en algunos casos.

[UPDATE] Gracias a Doug Stevenson por la maravillosa información.

Así que tenía curiosidad cuánto sería realmente la diferencia, así que con mi js torpe hice una comparación sucia, puedes ver la demostración aquí

Considerando este objeto:

 {
  "boolean": true,
  "number": 1,
  "text": "example"
  }

Y descontando el id este es el resultado:

| Method  | Bytes |
|---------|-------|
| FireDoc | 37    |
| sizeOf  | 64    |

Entonces, sizeOf library podría ser un buen predictor si queremos sobreestimar (asumiendo que los cálculos están bien y se comportarán más o menos igual para entidades más complejas). Pero como se explica en el comentario, es un estimación aproximada.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *