Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Almacenes de clave-valor simple. Como su nombre lo indica, utilizan una clave para
acceder a un valor en específico. Los valores almacenados se manejan como Arrays de
bytes, es decir, sin ningún esquema específico asignado. Su aplicación es común en
sistemas de caché. Uno de los sistemas más conocidos en esta categoría es
memcached, el cual es el sistema de facto para la gestión de caché de datos en
aplicaciones web.
Neo4J
Un grafo se compone de dos elementos: un nodo y una relación. Cada nodo representa
una entidad (una persona, un lugar, una cosa, una categoría u otra pieza de datos), y
cada relación representa cómo se asocian dos nodos. Esta estructura de propósito
general permite modelar todo tipo de escenarios, desde un sistema de carreteras hasta
una red de dispositivos, la historia médica de una población o cualquier otra cosa
definida por las relaciones.
Una base de datos de grafos es un sistema de gestión de bases de datos en línea con
operaciones Create, Read, Update y Delete (CRUD) que trabajan en un modelo de datos
de grafos. A diferencia de otras bases de datos, las relaciones tienen prioridad en las
bases de datos de grafos. Esto significa que su aplicación no tiene que inferir conexiones
de datos usando cosas como claves externas o procesamiento fuera de banda, como
MapReduce.
El modelo de datos para una base de datos de grafos también es significativamente más
simple y más expresivo que los de bases de datos relacionales u otras bases de datos
NoSQL. Las bases de datos de grafos están diseñadas para utilizarse con sistemas
transaccionales (OLTP) y están diseñadas teniendo en cuenta la integridad
transaccional y la disponibilidad operativa.
Una base de datos de grafos está diseñada específicamente para manejar datos
altamente conectados y el aumento en el volumen y la conexión de los datos actuales
presenta una tremenda oportunidad para una ventaja competitiva sostenida. Una de las
principales ventajas de esta base de datos son las siguientes:
Es utilizada en empresas como Walmart, eBay y el Grupo adidas. Por startups como
Cobrain, Zephyr Health y Wanderu e incluso sin fines de lucro como el ICIJ y el Foro
Económico Mundial, los estudios de casos con bases de datos de grafos abundan con
diversidad y profundidad de uso.
Neo4j está disponible en una «edición comunitaria» de código abierto con licencia de
GPL3, con copia de seguridad en línea y extensiones de alta disponibilidad con licencia
bajo los términos de la Licencia Pública General de Affero. Neo también licencia Neo4j
con estas extensiones bajo términos comerciales de código cerrado.
MongoDB
Es una base de datos ágil que permite a los esquemas cambiar rápidamente cuando las
aplicaciones evolucionan, proporcionando siempre la funcionalidad que los
desarrolladores esperan de las bases de datos tradicionales, tales como índices
secundarios, un lenguaje completo de búsquedas y consistencia estricta.
MongoDB ha sido creado para brindar escalabilidad, rendimiento y gran disponibilidad,
escalando de una implantación de servidor único a grandes arquitecturas complejas de
centros multidatos mediante la inclusión de más nodos en una red de servidores. Es
muy compatible con aplicaciones web. MongoDB proporciona alto rendimiento, tanto
para lectura como para escritura, potenciando la computación en memoria. La
replicación nativa de MongoDB y la tolerancia a fallos automática ofrece gran fiabilidad
y flexibilidad operativa.
Así, se puede definir una base de datos en MongoDB como un conjunto de collections.
2. NoSQL vs SQL
El término volvió a surgir en 2009 cuando Eric Evans lo utilizo para referirse al continuo
aumento de bases de datos no relacionales. Aunque el nombre naciera en 2009, las
bases de datos NoSQL se remontan a la época de las bases de datos de red y
jerárquicas y una serie de productos no relacionales que resolvían problemas que nada
tienen que ver con los de Amazon, Youtube, Facebook, Youtube , Twitter, Netflix o
Yahoo.
Las bases de datos MultiValue fue desarrollada por TRW en 1965. En 1966 se desarrolló
en el Hospital Mass General un lenguaje de programación que incorpora una base de
datos jerárquica con almacenamiento de árbol B+. En ese mismo año, IBM IMS con
Rockwell y Caterpillar, desarrollaron una base de datos jerárquica para el programa
espacial Apolo.
A lo largo de los años, son mucha las bases de datos que han ido surgiendo, pero si
algo ha contribuido al desarrollo de los productos NoSQL fueron la serie de «papers»
publicados por Google entre 2003 y 2006 sobre cómo construir una infraestructura
escalable para el procesamiento paralelo de grandes volúmenes de datos, que origino
Hadoop (y luego Hadoop MapReduce de Yahoo); más tarde, en 2007 Amazon liberó su
servicio de base de datos NoSQL, DynamoDB, con un modelo de datos clave-valor de
alta disponibilidad.
En 2012, la cantidad de bases de datos NoSQL ha llegado a ser superior a 120 y cada
año están saliendo más y más, con el fin de ocupar su lugar en el mercado o creándose
con la necesidad de suplir unas características específicas.
Se puede decir que las bases de datos tradicionales son las bases de datos relacionales,
que usan un lenguaje estándar para su manipulación y gestión. Su éxito se basa en que
es una solución para los problemas de gestión y estructuración de la información de las
organizaciones, con un fundamento matemático muy fuerte, lenguaje estandarizado con
metodologías estructurada para el diseño de los sistemas de información y con
principios de diseño como la regla ACID (atómica consistente aislada y durable). Estas
plataformas tienen muchas herramientas desarrolladas.
Las bases de datos NoSQL son un conjunto de bases de datos que no se ajustan al
modelo de bases de datos relacionales y se caracterizan por no tener esquema, no
utilizar SQL ni permitir joins, no garantizar la propiedad ACID, escalar horizontalmente,
hacen uso amplio de la memoria principal del computador, resolver el problema de los
altos volúmenes de información y la inmensa cantidad de consultas y transacciones
diarias, en resumen, no son relacionales.
Por el contrario, tiene una serie de desventajas que según la necesidad hacen de su
utilización más o menos conveniente:
» Aunque este cambiando esta premisa, no ofrecen tanto soporte y nombre como
ofrecen bases de datos como Oracle, IBM o Microsoft. Generalmente un vendedor de
código abierto no tiene el alcance global, servicios de soporte y la credibilidad de Oracle
o IBM.
{
_id: “1”,
nombre: “Juan”,
direccion: {
ciudad: “Madrid”
}
}
{
_id: “1”,
nombre: “Juan”,
direcciones: [
{
ciudad: “Madrid”
},
{
ciudad: “Toledo”
}
]
}
» Patrón de relación uno-a-muchos con documentos referidos: Este patrón se
suele utilizar para evitar repetición en aquellos casos que un mismo documento se
desee embeber en otros varios. Un ejemplo de su aplicación es el siguiente:
{
_id: address1,
ciudad: “Madrid”
},
{
_id: address2
ciudad: “Toledo”
},
{
_id: “1”,
nombre: “Juan”,
direcciones: [address1, address2]
}
{
_id: address
ciudad: “Toledo”
},
{
_id: “1”,
nombre: “Juan”,
direcciones: address
}
El siguiente grupo de patrones está relacionado con modelos basados en estructura de
árbol:
» Patrón de modelo de estructura de árbol con referencias al nodo padre. Tal como
indica el nombre, se mantiene un atributo que hace almacena el _id del nodo padre. A
continuación, se muestra un ejemplo con documentos representando carpetas de un
sistema de ficheros.
{
_id: folder1,
nombre: “Raíz”,
parent: null
},
{
_id: folder2,
nombre: “Folder 2”,
parent: folder1
}
{
_id: folder3,
nombre: “Folder 3”,
parent: folder1
}
{
_id: folder1,
nombre: “Raíz”,
children: [folder2, folder3]
},
{
_id: folder2,
nombre: “Folder 2”,
children: []
}
{
_id: folder3,
nombre: “Folder 3”,
children: []
}
Bibliografía
Banker, K. (2012). MongoDB in action, p. 3-22, 23-28, 76-126, 241-248. Nueva York:
Manning Publications.
Chodorow, K. & Dirolf, M. (2010). MongoDB: The Definitive Guide, p. 23-64, 83-92.
California: O’Reilly.
Copeland, R. (2013). MongoDB Applied Design Patterns, p. 3-15, 37-73. California:
O’Reilly Media.
Tiwari, S. (2011). Professional NoSQL, p. 3-20, 97-135, 217-232. Indianapolis: John
Wiley & Sons, Inc.