Underc0de

Programación Web => Base de Datos => Mensaje iniciado por: Destructor.cs en Febrero 15, 2013, 01:45:53 PM

Título: Introduccion a NoSQL
Publicado por: Destructor.cs en Febrero 15, 2013, 01:45:53 PM
Las bases de datos NoSQL no pretenden reemplazar a las relacionales únicamente son otra opción de almacenamiento de datos. Cabe destacar que su arquitectura distribuida, flexibilidad en su estructura, escalabilidad y el manejo de enormes cantidades de datos son algunas de las características por las cuales se han vuelto cada vez más populares.

El término NoSQL ("not only SQL") fue utilizado por primera vez en 1998 para referirse a una base de datos (BD) de código abierto que no ofrecía una interfaz SQL pero sí utilizaba el modelo relacional y, fue en el 2009 que Eric Evans retomó el término cuando Johan Oskarsson quiso organizar un evento en San Francisco para discutir el tema de las bases de datos distribuidas de código abierto; este tipo de BD suelen no proveer garantías ACID, término que hace referencia al conjunto de características necesarias para que ciertas instrucciones se consideren como una transacción.

ACID es un acrónimo de Atomicity, Consistency, Isolation y Durability que en español es Atomicidad, Consistencia, Aislamiento y Durabilidad.

El primer concepto es la propiedad que asegura que todas las operaciones hayan sido terminadas (commit). La consistencia es cuando se asegura que solo se inicien transacciones que se puedan terminar, es decir, se pasará de un estado válido a otro válido sin "romper" con reglas o directrices que afecten la integridad de la BD.

El aislamiento es la propiedad que verifica que una operación no afecte a otras, siendo que dos transacciones ejecutadas al mismo tiempo sean completamente independientes sin afectar a alguna otra que se encuentre en ejecución.

Y por último la durabilidad se refiere a que una vez realizada la operación ésta persista y exista sin importar los fallos del sistema.

La característica más importante de NoSQL es que no impone una estructura de datos en forma de tabla y relaciones entre las mismas, es decir debemos olvidarnos de un esquema rígido y sin cambios, en este caso es más flexible ya que permite almacenar información de forma clave-valor (Cassandra, Riak, etc), documentos (CouchDB, MongoDB, BaseX, etc), mapeo de columnas o grafos (Neo4j, InfoGrid, HyperGraphDB, etc).

Actualmente las BD de tipo NoSQL han tomado mayor popularidad debido a que son utilizadas por las principales redes sociales como Facebook y Twitter por mencionar algunas, ¿y a qué se debe esto?, principalmente porque pueden manipular grandes cantidades de datos de una forma muy rápida y están preparadas para escalarse horizontalmente sin perder rendimiento alguno.

La escalabilidad es un término utilizado para referirse a la propiedad de aumentar la capacidad de trabajo o tamaño de un sistema sin que sea comprometida su funcionamiento y calidad, lo cual puede ser de manera vertical u horizontal. El primero se refiere a actualizaciones o modernización de los componentes que ya existen y el segundo, a cuando se aumenta el número de componentes; para el caso de NoSQL podemos incrementar el número de nodos.

¿Cuando se debe utilizar una base de datos NoSQL?

Aunque tenemos ventajas con NoSQL no debemos intentar reemplazar las bases de datos relacionales ya que dependiendo de las necesidades del proyecto es aquella que debemos utilizar o en algunos casos ambas; a continuación te planteo ejemplos reales para que quede más claro este punto.

Punto de venta. Para este sistema se requieren vínculos comprador-venta, costos, historiales, facturación, etc, por lo que no sería posible eliminar las relaciones y tampoco es necesario cambiar la estructura de nuestras tablas. En conclusión, NoSQL no es una opción.

Control escolar. De la misma manera que la anterior contamos relaciones alumnomaterias, maestro-grupos entre otros, por lo que NoSQL tampoco sería una opción.

Red Social. Es una aplicación de gran escala, lectura/escritura de enormes cantidades, servicio a millones de usuario, información cambiante; cabe mencionar que pueden existir relaciones usuario-usuario, siendo posible almacenar cierta información en NoSQL y otra en SQL.

Referencias: hdmagazine