NoSQL
Bases de Datos SQL (Relacionales)
- Difíciles de escalar.
- Difícil fragmentar por servicios o áreas geográficas.
- Un pequeño error en un fichero puede arruinar toda la base de datos
- Un error en una SQL puede borrar todas las tablas o corromper un repositorio.
Bases de datos NoSQL
- Su objetivo es garantizar la escalabilidad, asegurando que los datos se almacenan en un formato que se puede compartir -o fragmentar - entre varios servidores.
Tipos
- Documentos indexados (MongoDB)
- Graph Databases (Neo4j)
- Almacenamiento por columnas (Cassandra)
- Series temporales, que indexan los datos por sellos temporales (Influx DB).
- Hibrida
Características
- Sin importar como almacenen los datos, no soportan relaciones.
- NoSQL permite acceder rápidamente a muchos datos.
- SQL es excelente para procesamiento de datos.
- NoSQL renuncia a los principios ACID (atomicidad, consistencia, aislamiento y durabilidad) de la bases de datos tradicionales
- Como las bases de datos SQL utilizan una estructura, los cambios son difíciles. Las bases de datos NoSQL simplemente toman los datos y los almacenan, sin ninguna estructura.
- Consultar datos en NoSQL es más costoso.
Beneficios de NoSQL
- Escalado. las bases de datos se fragmentan particionando los datos entre varios servidores. La caída de un máquina no implica la caída de toda la red. Al crecer la base de datos se pueden ir añadiendo servidores
- Disponibilidad. Como los datos son un simple fichero, se pueden copiar de otros servidores en la red en caso de que uno falle.
Inconvenientes de NoSQL
- No proveen gestión de transacciones o codificación real. Son excelentes para almacenar datos que no cambian o que cambian muy poco en cada transacción
- Son difíciles para los nuevos usuarios
- Como puede tener muchos datos duplicados, la base de datos se hace muy grande.
- Muchas aplicaciones requieren los tipos de restricciones, consistencia y salvaguarda que dan las bases de datos SOL. En estos casos, no se puede utilizar NoSQL.
- Implementar una base de datos NoSQL es complicado y es difícil encontrar proveedores y administradores adecuados.
- Comprender el modelo NoSQL es difícil para los desarrolladores acostumbrados a programar para sistemas SQL. toda la lógica de relaciones, transacciones y restricciones se debe realizar en la aplicación, ya que la base de datos NoSQL no la provee.
- Como las NoSal no son consistentes, los roll backs son imposibles si algo va mal. Más aún, algunas partes de la base de datos puedendevolver información inconsistente.
Recomendación
La regla de oro es usar bases de datos SQL por defecto. Solo se deberá usar NoSQL si se tienen muy buenas razones para hacerlo.