Modelo no relacional, ¿cuándo usarlo?
Clase 13 de 32 • Curso de Firebase para Web 2017
Existen distintas bases de datos no relacionales, cada una basada en un paradigma, ya sea basadas en documentos, clave/valor, grafos, orientadas a objetos, etc.
Ofrecen características interesantes como su flexibilidad, escalabilidad horizontal, y bajo costo de ejecución.
Las bases de datos no relacionales han presentado soluciones para grandes compañías como facebook y twitter a la hora de manejar grandes volúmenes de información en tiempo real.
Principalmente, el modelo no relacional permite hacer consultas y registros en tiempo real sacrificando coherencia en los datos. Pensemos en twitter y su alcance global, dónde es importante replicar un tweet en cada rincón del mundo, lo que significa modificaciones en una base de datos gigantesca y horizontal (no es tan compleja pero su contenido es extenso), probablemente no será tan importante que haya algunos segundos de diferencia entre el momento en que ha sido publicado un mensaje en Madrid y el momento en que pueda ser visto en Sidney. Una base de datos no relacional sería mejor en este caso.
Ahora pensemos en que estamos a cargo de una compañía bancaria donde lo más importante es la coherencia de la información, o sea tener exactamente los mismos datos en todos los rincones del mundo. Sería un problema si hacemos una compra por $1000 en Madrid y después de algunos segundos la información sea registrada en Sidney, podríamos hacer uso de los mismos $1000 en otra transacción durante este tiempo de retraso. Definitivamente deberíamos usar una base de datos relacional para este caso.
Pensemos ahora en proyectos más cercanos, como construir un market place, donde necesitamos tener usuarios, productos, compras, proveedores y algunos datos más. En este caso podríamos usar cualquiera de los dos modelos, ya que no estaríamos manejando volúmenes de millones como Twitter o Facebook. En esta escala tendremos ventajas y desventajas en cada uno de los modelos. Si decidimos usar una no relacional, la flexibilidad será mucho mayor, hacer modificaciones en la estructura de datos es menos complejo.
Cabe destacar que una buena implementación de bases de datos relacionales implican un amplio conocimiento en SQL, teoría de conjuntos y muy buenas habilidades en el diseño de la estructura de datos.
Aunque el modelo no-relacional es bastante flexible, escalable y rápido, debemos evaluar cuándo usarlo. Hay consideraciones que debemos tomar antes de elegir la base de datos de Firebase, Mongo, Cassandra, etc.
Podemos usar el modelo no relacional siempre que consideremos lo siguiente:
- La coherencia de los datos No es crítica (sólo en casos específicos lo es, la mayoría de veces no)
- No hay estándares sobre cómo estructurar la información en el modelo no relacional.
- Hacer Business Intelligence sobre el modelo no relacional es más complicado.
- Se requieren un conocimiento sólido en programación.
- Cada base de datos tiene sus peculiaridades y métodos (Firebase, Mongo, etc).
Recordemos que no existe una herramienta mágica o definitiva cuando se trata de tecnología. Ambos modelos tienen sus ventajas y desventajas. Lo mejor que podemos hacer es aprender a usar ambos para poder usar el adecuado cuando sea necesario.