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.
- 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?
- No lo usan para todo, sólo para algunas partes de sus sistemas empresariales:
- Ubuntu DesktopCouch (CouchDB)
- Adobe y Mozilla (Hbase)
Monika Valle.
No hay comentarios:
Publicar un comentario