En esta entrada vamos a explicaros en qué consisten cada una de las bases de datos de Firebase y cómo podemos agregarlas a una aplicación Android.
¿Qué es Firebase?
Entre los diferentes servicios que ofrece Google a los desarrolladores de aplicaciones, encontramos Firebase; se trata de una plataforma SaS (Software as Service, software como servicio), que tiene diferentes funcionalidades:
- Características para desarrollar aplicaciones, entre las que encontramos las bases de datos sobre las que os vamos a hablar en estada entrada.
- Firebase Analytics.
- Recursos para el crecimiento.
- Y la herramienta para monetización de al app, AdMob.
Todas las herramientas que ofrecen estas características tienen en común su facilidad de uso, para poder desarrollar aplicaciones para móviles o webs de manera relativamente sencilla. Cuenta con un formato gratuito y otros con planes de pago.
Tipos de bases de Datos en Firebase
Antes de usar Firebase como base de datos, debemos tener en cuenta que la plataforma nos ofrece dos tipos distintos de base de datos, por un lado tenemos Realtime Database y por otro Cloud Firestore, que es más reciente y la que actualmente se recomienda utilizar, si bien es cierto que dependiendo del proyecto, pueda resultar más interesante utilizar la primera o, incluso podemos encontrarnos con la necesidad de emplear ambas en un mismo proyecto.
En cualquier caso, tanto si usamos Realtime Database como nos decantamos por Cloud , estaremos tratando con una base de datos no relacional, es decir, emplea lenguaje NoSQL, aunque con una estructura diferente.
Ambas se rigen por le princpio mobile-first (diseñar la aplicación en principio para dispositivos móviles). Admiten almacenamiento local de datos para Android e iOS. Y en el caso de Cloud Firestore, también admite almacenamiento local para aplicaciones web.
Veamos las principales características de cada una de estas bases de datos por separado.
Realtime Database
Como su propio nombre indica, con Realtime Database podremos crear una base de datos con firebase que funcione en tiempo real, es decir, que será capaz de sincronizarse cada vez que se produzca un cambio en los datos de cualquier cliente.
Los datos se estructuran de manera similar a cómo se organiza la información un fichero JSON en forma de árbol, en el que cada nodo puede tener un valor o contener nodos hijo, que a su vez pueden contener valores u otros nodos hijos (el máximo está en 32 niveles de anidación). Por lo tanto, estamos ante un modelo de datos jerarquizado.
Dado que las consultas son profundas, se recomienda evitar anidar datos en la medida de lo posible en Realtime Database, porque los resultados que devuelven son todo el sub-árbol de los nodos seleccionados, lo que implica permisos en cascada.
Admiten definir reglas de validación para asegurar la coherencia los datos, aunque estas reglas no se aplican en cascada.
Los datos se almacenan en un único servidor regional, lo que por un lado tiene el efecto positivo de tener una menor latencia, pero por el lado negativo, tiene una disponibilidad más limitada.
En caso de que la base de datos supere las cien mil conexiones simultáneas o más de mil lecturas/escrituras por segundo, hace necesario que se particiones en varias bases de datos.
Cloud Firestore
Si vamos a crear una base de datos en Firebase utilizando Cloud Firestore, nos vamos encontrar con una base de datos basada en documentos similares a JSON, tal y como ocurre con Realtime Database, pero con diferencias significativas, que hacen que su uso, tal como comentábamos, esté más recomendado.
Así, Cloud Firestore permite estructuras más complejas con sub-colecciones, a cuyos documentos se puede acceder por referencia, de manera que aunque borremos uno de ellos, estas sub-colecciones seguirán estando accesibles. Además, las consultas pueden filtrarse y ordenarse para que se devuelva solo una sub-colección en un documento y no todo el sub-árbol.
Las transacciones se siguen repitiendo hasta completarse. La validación de datos es automática, si bien permite establecer reglas para otorgar permisos sin que estas se otorguen en cascada.
En esta base de datos, estos se almacenan en varios centros de datos, con el objetivo de que en caso de que un de estos centros falle o se desconecta, los datos puedan seguir siendo accesibles. Además, se garantiza la consistencia entre los datos de todos los centros.
Finalmente, escala automáticamente hasta un tope de un millón de conexiones simultáneas o diez mil lecturas/escrituras por segundo.
¿De qué manera puedo crear un proyecto de Firebase?
Existen dos maneras de crear un proyecto de Firebase; en ambas formas usaremos Android Studio para hacerlo, por un lado de manera manual y por otro usando el asistente de la plataforma.
Añadiendo Firebase a Android manualmente
El primer paso para añadir Firebase de manera manual a Android es ir a la consola de Firebase (necesitaremos una cuenta de Google para poder usarla) y pulsar en «Crear un proyecto». Tendremos entonces que completar tres pasos: dar nombre al proyecto, dejara habilitado o no Google Analytics y configurar la cuenta donde se alojarán las analíticas (podemos seleccionar una que ya tengamos creada o crear una nueva).
El siguiente paso tras crear el proyecto es seleccionar el icono de Android para añadir Firebase a la aplicación. Nos aparecerá un formulario en el que deberemos rellenar la información correspondiente a la aplicación. Una vez cumplimentado esta formulario, podremos descargar un fichero google-services.json, que tendremos que mover a la carpeta «/app» del proyecto.
En el último paso tendremos que añadir las dependencias de Firebase a Gradle. Será necesario que modifiquemos el fichero build.gradel como el módulo principal.
En el proyecto añadiremos una:
Y en el módulo dos líneas, una es una dependencia y la otra debe ir al final del fichero:
Finalmente, hay que sincronizar los cambios pulsando en el «Sync Now».
Usando el asistente de Firebase en Android Studio
Para añadir Firebase en Android Studio, podemos recurrir al asistente; para ello, con el programa abierto, entramos en «Tools» y pinchamos en «Firebase» en el desplegable. Nos aparecerá una lista donde escoger el servicio que vayamos a usar, en este caso sería Realtime Database, pulsamos en el enlace que aparece y se abrirá una nueva pantalla, en la que tendremos que pulsar en el botón «Connect to Firebase». Iremos a una página de Firebase en la que se nos solicitarán los permisos necesarios para seguir adelante.
A continuación, en Android Studio nos aparecerá una pantalla para crear un nuevo proyecto en Firebase o para seleccionar uno ya existente. Finalmente, solo nos quedará añadir las dependencias para modificar la configuración de Gradle y sincronizar el proyecto.
Agrega Firebase a tu aplicación Android
Ya hemos visto cómo podemos agregar Firebase a nuestra aplicación de Android, tanto de manera manual a través de la consola de Firebase, como utilizando el asistente de Android Studio, ahora veremos unos pasos más para terminar de configurar la base de datos.
Integra las bibliotecas de Firebase
Tendremos que integrar las bibliotecas de Firebase en nuestro proyecto, aunque cabe la posibilidad que este paso ya lo hayamos completado al agregar Firebase a la aplicación. En cualquier caso, tendremos que agregar reglas al archivo build.gradle en el nivel build.gradle, añadiendo el complemento de servicios de Google:
A continuación, en el módulo de archivo Gradle («app/build.gradle») agregamos la línea de aplicación del complemento en la parte inferior del archivo, de manera que se habilite el complemento de Gradle:
Finalmente, agregamos las dependencias para el SDK de Firebase, utilizando las bibliotecas disponibles para los diferentes productos de Firebase.
Configura datos
El siguiente paso será configurar los datos para usar la base de datos. Desde la consola de Firebase, pulsamos en Databse y elegimos la base de datos que queremos usar y escogemos las reglas de seguridad, ya se el modo locked (bloqueado) o test (de prueba).
Ahora, dependiendo de la base de datos que vayamos a usar en Firebase, tendremos que seguir unos pasos u otros:
- Cloud Firestore (almacena datos en documentos, que se almacenan en colecciones).
- Realtime Database (crea nodos padres, de los que pueden salir nodos hijos, en un archivo tipo JSON).
Asigna el modelo a la estructura de datos
Si estamos usando Realtime Database, una vez hayamos configurado varios datos, podremos asignar un modelo a la estructura de la base de datos, para lo que crearemos una clase modelo. Por ejemplo:
En el caso de Firestore, también debemos crear una clase para la información que vayamos a tratar.
En ambos casos necesitamos tener un constructor vacío y asegurarnos que el alcance de las variables y campos son públicos y que coinciden con los de las estructura de datos.
Conecta tu aplicación a Firebase
Finalmente, solo quedará ejecutar la aplicación para comprobar que los registros que queremos insertar, se van añadiendo sin problemas.
Escribe aquí tu comentario