U3 – ACTIVIDAD AUTOAPRENDIZAJE
Nro. 2
Investigación e implementación de gestores de base de datos que utilizan NoSQL.
- Integrantes:
o Manuel Augusto Ovando Crespo
o Dante Ariel Vargas Garcia
- Materia:
o Bases de datos 3
1. Descripción general del gestor NoSQL elegido
Firebase Firestore es una base de datos NoSQL de documentos, escalable y
flexible, desarrollada por Google. Firestore es parte del conjunto de herramientas
de Firebase, una plataforma para desarrollar aplicaciones móviles y web.
Firestore está diseñada para facilitar el almacenamiento y la sincronización en
tiempo real de datos entre aplicaciones cliente y servidores, siendo ideal para
aplicaciones móviles y web que requieren operaciones rápidas, escalabilidad y
manejo de grandes volúmenes de datos. Firestore es completamente
administrado, lo que significa que no requiere que el usuario se ocupe de la
infraestructura o mantenimiento de la base de datos.
Firestore ofrece características como:
- Sincronización en tiempo real: Los datos se actualizan en tiempo real
en todos los dispositivos conectados.
- Escalabilidad: Puede manejar una gran cantidad de datos y peticiones
de manera eficiente.
- Flexible: Permite la estructuración de datos en colecciones y
documentos, lo que lo hace muy adecuado para aplicaciones que no
requieren una estructura rígida de esquemas.
2. Modelo de datos que utiliza
Firestore utiliza un modelo de documento-colección en su arquitectura. A
diferencia de los sistemas de bases de datos relacionales, Firestore no utiliza
tablas ni filas, sino que los datos se organizan en:
- Colecciones: Un conjunto de documentos.
- Documentos: Un conjunto de pares clave-valor. Los documentos son las
unidades de almacenamiento en Firestore y pueden contener otros
documentos o colecciones anidadas.
Los documentos pueden tener cualquier tipo de dato, incluidos cadenas,
números, mapas, arrays, e incluso referencias a otros documentos. Además,
Firestore permite que los documentos sean jerárquicos, lo que significa que
puedes anidar colecciones dentro de otros documentos.
3. Lenguaje de consulta (Si lo tiene)
Firestore no utiliza un lenguaje de consulta tradicional como SQL, pero ofrece
su propio sistema de consultas. Se utiliza un API de consultas en el que puedes
aplicar filtros, ordenamientos y límites a las colecciones de documentos.
Algunas de las operaciones comunes incluyen:
- get(): Obtener datos de un documento o colección.
- where(): Filtrar los documentos basados en un campo específico.
- orderBy(): Ordenar los documentos por un campo.
- limit(): Limitar el número de documentos devueltos.
4. Ventajas y desventajas frente a los sistemas relacionales
Ventajas de Firestore frente a sistemas relacionales:
1. Escalabilidad: Firestore está diseñado para manejar aplicaciones que
crecen rápidamente y puede escalar horizontalmente, a diferencia de las
bases de datos SQL que pueden tener dificultades con grandes cantidades
de datos o alta concurrencia.
2. Modelo flexible: No requiere un esquema fijo, lo que permite agregar o
modificar campos sin afectar la estructura general de la base de datos, lo
que facilita el desarrollo iterativo.
3. Sincronización en tiempo real: Firestore ofrece actualización
instantánea de los datos en todos los dispositivos conectados a la base de
datos, algo que los sistemas relacionales no ofrecen de manera nativa.
4. Bajo mantenimiento: Al ser un servicio completamente administrado
por Google, Firestore se encarga de la infraestructura, las copias de
seguridad, las actualizaciones y el monitoreo, lo que reduce la carga
administrativa.
5. Desarrollo ágil: Firestore está diseñado para ser fácil de integrar con las
aplicaciones móviles y web modernas, proporcionando SDKs y
herramientas que aceleran el proceso de desarrollo.
Desventajas de Firestore frente a sistemas relacionales:
1. Limitaciones de consultas: Aunque Firestore es muy potente, las
consultas más complejas como las uniones (JOINs) no son tan fáciles de
implementar como en bases de datos SQL. Firestore no soporta
operaciones de joins de manera directa, lo que puede ser un
inconveniente para aplicaciones que dependen de relaciones complejas
entre tablas.
2. Consistencia eventual: Firestore es eventualmente consistente, lo que
significa que, en algunas circunstancias, puede haber una latencia
temporal en la actualización de los datos en los clientes conectados.
3. Costo: Aunque Firestore es un servicio gestionado, los costos pueden
aumentar significativamente dependiendo del volumen de
almacenamiento, las lecturas y escrituras realizadas, y la cantidad de
datos transferidos.
5. Casos de usos reales
Varias empresas y aplicaciones utilizan Firestore debido a sus características
como la escalabilidad y la sincronización en tiempo real. Algunos ejemplos
incluyen:
1. The New York Times: Utiliza Firestore para gestionar la información de
los usuarios y la sincronización en tiempo real de la experiencia de
usuario en su aplicación móvil.
2. Ally Bank: Utiliza Firestore como parte de su infraestructura de backend
para gestionar la información financiera de los usuarios y sus
transacciones en tiempo real.
3. Duolingo: La popular aplicación de aprendizaje de idiomas emplea
Firestore para almacenar datos de usuarios y su progreso en tiempo real.
4. Spotify: Utiliza Firestore para gestionar ciertas operaciones en tiempo
real de sus aplicaciones móviles.
6. Cuadro comparativo con otros gestores NoSQL
7. Requisitos e instrucciones de instalación
Requisitos:
1. Cuenta de Firebase: Necesitas tener una cuenta de Google y crear un
proyecto en Firebase desde la consola de Firebase ([Link]).
2. SDK de Firebase: Necesitas instalar el SDK de Firebase para tu
plataforma (Android, iOS, Web).
3. Conexión a Internet: Firestore es un servicio en la nube, por lo que se
requiere acceso a Internet para poder interactuar con él.
Instrucciones de instalación:
Para web:
1. En primer lugar, agrega Firebase a tu aplicación web siguiendo estos
pasos:
o Crea un proyecto en la consola de Firebase.
o Copia el fragmento de configuración de Firebase y agrégalo a tu
código HTML.
2. Instala el SDK de Firebase mediante npm (si usas [Link]):
o Inicializa Firebase en tu código: