Aprendizajes Utilizando Firebase
Firebase es una plataforma back-end–as-a-service y ofrece distintos servicios como análisis, autenticación, base de datos, notificaciones y funciones de nube. El proyecto sobre el que cuento la experiencia tiene una aplicación web y una App móvil para Android e iOS, y contratamos el plan Blaze de Firebase (no el gratuito).
El objetivo de este artículo es contar nuestra experiencia con la base de datos (FireStore Database) , sus beneficios, los problemas que tuvimos y lo que aprendimos.
En nuestra empresa, pasamos mucho tiempo discutiendo cómo debería estructurarse, pensando en las relaciones y las entidades. Para los que venimos de un mundo relacional, tenemos problemas aquí (ya que todo se trata del esquema y la normalización de datos), mientras que en Firebase la desnormalización está perfectamente bien.
Firestore database es una base de datos NoSQL basada en documentos y colecciones.
Estamos acostumbrados a pensar de una manera relacional porque durante mucho tiempo, la única opción para el almacenamiento de datos ha sido las bases de datos relacionales. Sin embargo, has escuchado el término NoSQL, bases que gracias a su manera de manejar datos para resolver diferentes problemas (por ejemplo, búsquedas, aplicaciones web a gran escala, redes sociales, etc) vienen llamando nuestra atención.
Cómo Estructurar Tus Datos
En base a lo que aprendimos con bases de datos relacionales, sabemos que debemos evitar duplicar datos, pero en el caso de Firebase es algo que nos permite ahorrar mucho tiempo al reducir las consultas, los datos desnormalizados son algo muy común aquí.
Pensar antes de estructurar, las consultas que necesitarás realizar ya que con Firestore podremos hacer consultas eficientes dentro de una colección o subcolección, pero no entre colecciones.
Estructuras Poco Profundas (Y así ahorrar dinero)
Cuando los datos están menos anidados, es más fácil y rápido recuperarlos sin tener que navegar a través de múltiples niveles de subcolecciones o documentos anidados. ¿Y por qué ahorraríamos dinero? Porque en Firestore las operaciones de lectura, escritura y borrado tienen un costo asociado. Estructuras de datos profundamente anidadas pueden llevar a un mayor número de lecturas y escrituras si necesitas acceder a información específica dentro de estos documentos anidados y eso haría que pagues más de lo que probablemente deberías.
Firebase Cloud Functions
Las cloud functions son Serverless, lo que significa que no necesitamos servidores ni administrarlos. El sistema escala automáticamente el número de instancias de función según la demanda. Si bien al utilizar Firebase, la mayor parte de la lógica de la aplicación está en el cliente, es posible que quieras mover una parte del código al back-end y aquí es donde utilizamos las cloud functions, que te permite en respuesta a ciertos eventos desencadenados por las diferentes funciones de Firebase y solicitudes HTTPS ejecutar automáticamente el código de back-end.
Destaco también que en este proyecto utilizamos los servicios de autenticación, storage y notificaciones push así como el hosting.