domingo, 4 de mayo de 2014

Bases de datos NoSQL

NoSQL ("not only SQL”) es una categoría general de sistemas de gestión de bases de datos que difiere de modelo relacionales clásicos (RDBMS) en:
  • No tienen esquemas de información fijas
  • no permiten JOINs
  • no intentan garantizar ACID
  • escalan horizontalmente
El término fue acuñado en 1998 por Carlo Strozzi y resucitado en 2009 por Eric Evans que sugiere mejor referirse a esta familia de BBDD de nueva generación como “Big Data”
Tanto las bases de datos NoSQL como las relacionales son tipos de Almacenamiento Estructurado.
La principal diferencia radica en cómo guardan los datos (por ejemplo, almacenamiento de un recibo):
  • En una RDBMS tendríamos que partir la información en diferentes tablas y luego usar un lenguaje de programación en la parte servidora para transformar estos datos en objetos de la vida real.
  • En NoSQL, simplemente guardas el recibo: NoSQL es libre de schemas, tú no diseñas tus tablas y su estructura por adelantado.
Sin embargo NoSQL no es la panacea: Si tus datos son relacionales, quedarte con tu RDBMS sería la opción correcta
Las Bases de datos NOSQL se basas en el Teorema de Brewer: "es imposible para un sistema computacional distribuido ofrecer simultáneamente las siguientes tres garantías":
  • Consistencia – todos los nodos ven los mismos datos al mismo tiempo
  • Disponibilidad (Availability) – garantiza que cada petición recibe una respuesta acerca de si tuvo éxito o no
  • Tolerancia a la partición (Partition) – el sistema continua funcionando a pesar de la pérdida de mensajes
RDBMS vs. NoSQL
Las bases de datos relacionales tradicionales nos permiten definir la estructura de un esquema que demanda reglas rígidas y garantizan ACID (Atomicity, Consistency, Isolation, Durability)
Las aplicaciones web modernas presentan desafíos muy distintos a las que presentan los sistemas empresariales tradicionales (e.j. sistemas bancarios):
  • Datos a escala web
  • Alta frecuencia de lecturas y escrituras
  • Cambios de esquema de datos frecuentes
  • Las aplicaciones sociales (no bancarias) no necesitan el mismo nivel de ACID 
Algunas de las opciones de NoSQL actualmente disponibles son: Cassandra, MongoDB, Jackrabbit , CouchDB, BigTable y Dynamo
¿Por qué necesitamos NoSQL?
Las BBDD relacionales ofrecen bajo rendimiento ante ciertas aplicaciones intensivas de datos como pueden ser:
  • Indexación de un gran número de documentos
  • Servir páginas en sites de mucho tráfico
  • Envío de datos de streaming
Las RDBMS están optimizadas para pequeñas pero frecuentes transacciones de lectura/escritura o largas transacciones con pocos acceso de escritura.
NoSQL puede dar servicio a grandes cargas de lectura/escritura:
  • Digg mantiene 3 TB de "green badges" (marcadores que indican las historias votadas por otros en una red social)   
  • Facebook que tiene que realizar búsqueda en bandejas de mensajes de más de 50 TB
¿Quién usa NoSQL?

Monika Valle.

No hay comentarios:

Publicar un comentario