1 - 23 - Base de Datos Nosql Persistencia Poliglota PDF
1 - 23 - Base de Datos Nosql Persistencia Poliglota PDF
1 - 23 - Base de Datos Nosql Persistencia Poliglota PDF
Caso de estudio:
MongoDB y Neo4j
La aplicación utiliza un único almacén de datos, en este En este enfoque se utilizan servicios para englobar una
enfoque se obliga al almacén a responder ante los distintos base de datos esto sustituyen la comunicación directa con
tipos de datos que son recibidos [fig1]. la base de datos. Esto permite que la aplicación no se
encargue de guardar los datos, todos los datos puedan ser
guardadas en un lugar del servicio y consultadas por todas
las aplicaciones . Las API proporcionadas por el servicio
son más útiles que una única aplicación que habla con varias
bases de datos[fig3].
4.1. Ventajas
6. Casos de Uso
Figura 8. ¿En términos de Administración de Bases de Dato, en los Un caso de uso muy común de Persistencia Polı́glota es
próximos 3 años, cuáles serán los retos para los administradores de Bases el de una plataforma de comercio electrónico (e-commerce).
de Datos ? [4] Esta plataforma tratará muchos tipos de datos (por ejemplo,
carrito de compras, inventario, pedidos completados, etc.).
[5]
5. Consideraciones
7.2. Twitter
7. Trabajos Relacionados
Figura 13. Interfaz Gráfica de Twitter
A continuación se presentan 3 ejemplos de desarrollos
de software que han optado por la persistencia polı́glota y Twitter [fig13] es un servicio de microblogging,
tienen gran éxito en la actualidad. con sede en San Francisco, California, con filiales en
San Antonio (Texas) y Boston (Massachusetts) en Estados
7.1. Wanderu Unidos. Twitter, Inc. fue creado originalmente en California,
pero está bajo la jurisdicción de Delaware desde 2007.
Wanderu [fig12] es una aplicación web que provee a los Desde que Jack Dorsey lo creó en marzo de 2006, y lo
usuarios la búsqueda de tickets para bus y tren, con trayectos lanzó en julio del mismo año, la red ha ganado popularidad
que pueden combinar múltiples compañı́as de transporte. La mundial y se estima que tiene más de 500 millones de
data de las rutas está almacenada en JSON, lo que permite usuarios, generando 65 millones de tweets al dı́a y maneja
que una Base de Datos como MongoDB sea una buena más de 800 000 peticiones de búsqueda diarias. Ha sido
solución para almacenar dichas rutas. denominado como el ”SMS de Internet”. [7]
La red permite enviar mensajes de texto plano de corta Entre las tecnologı́as de almacenamiento que utiliza
longitud, con un máximo de 140 caracteres, llamados actualmente LinkedIn tenemos [10]:
tweets, que se muestran en la página principal del usuario.
• Oracle para almacenar la mayorı́a de sus datos.
Los usuarios pueden suscribirse a los tweets de otros
• Voldemort (una Base de Datos clave-valor) en la cual
usuarios – a esto se le llama ’seguir’ y a los usuarios
almacenan los datos de los perfiles de los usuarios
abonados se les llama ’seguidores’, ’followers’ y a veces
y ası́ obtenerlos mucho más rápido.
tweeps’ (’Twitter’ + ’peeps’, seguidores novatos que aún no
han hecho muchos tweets). Por defecto, los mensajes son
públicos, pudiendo difundirse privadamente mostrándolos 8. Caso de Estudio: MongoDB y Neo4j
únicamente a unos seguidores determinados. Los usuarios
pueden twitear desde la web del servicio, con aplicaciones Hasta ahora hemos hablado de la persistencia polı́glota
oficiales externas (como para teléfonos inteligentes), o de forma general, en esta sección ahondaremos en un caso
mediante el Servicio de mensajes cortos (SMS) disponible especifico, combinar las virtudes de MongoDB y Neo4j, el
en ciertos paı́ses. Si bien el servicio es gratis, acceder a él porque y como se combinarı́an estos sistemas manejadores
vı́a SMS comporta soportar tarifas fijadas por el proveedor de base de datos.
de telefonı́a móvil. [7]
8.1. MongoDB
Entre las tecnologı́as de almacenamiento que utiliza
actualmente Twitter tenemos [8]: MongoDB[fig15] es una base de datos documental tra-
baja con archivos json, lo que permite que tenga un modelo
• MySQL para almacenar tanto tweets como usuarios. de datos flexible, provee alta disponibilidad gracias al shar-
• FlockDB (una Base de Datos orientada a grafos) en ding ó escalabilidad horizontal y puede almacenar una gran
la cual almacenan las relaciones entre los usuarios cantidad de datos y accederlos de forma rápida. [11]
(following, follower, etc). Tiene como desventaja el hecho de que realizar las consultas
• Redis para almacenar el timeline por su velocidad puede resultar ser un trabajo bastante complejo y tedioso.
para lectura y escritura.
• Cassandra se dice que se ha empezado a utilizar para
migrar lo que se tiene en MySQL y ası́ proveer una
mayor escalabilidad.
7.3. Linkedin
8.2. Neo4j
Neo4j[fig16] es una base de datos de grafos, este im-
plementa los grafos de forma nativa, a diferencia de otros
sistemas manejadores de base de datos que no solamente
están dedicados al manejo de grafos. [13]
Figura 14. Interfaz Gráfica de Linkedin Tambien provee el lenguaje de consultas Cypher, que hace
que estás sean muy sencillas.
LinkedIn [fig14] es una comunidad social orientada a las Una base de datos de grafos tiene como fortaleza la repre-
empresas, a los negocios y el empleo. Partiendo del perfil de sentación de relaciones y el recorrido de caminos.
cada usuario, que libremente revela su experiencia laboral
y sus destrezas en un verdadero currı́culum laboral, la web 8.3. MongoDB + Neo4j
pone en contacto a millones de empresas y empleados.
Fundada en diciembre de 2002 por Reid Hoffman, Allen Ya una vez vistas las ventajas que nos ofrece cada siste-
Blue, Konstantin Guericke, Eric Ly y Jean-Luc Vaillant, ma manejador de base de datos, podemos darnos cuenta de
fue lanzada en mayo de 2003. [9] que si combinamos ambos[fig17] podemos tener la capaci-
dad de almacenar gran cantidad de datos de MongoDB junto
con el poder de representar las relaciones y los caminos entre
8.4. Conectando MongoDB con Neo4j
Figura 20. Documento simple 8.6.3. Consideraciones 1: Relaciones. Las relaciones son
representadas a través de los subdocumentos dentro de
un documento, es decir, por cada subdocumento se crea-
ra un nuevo nodo y una relacion hacia el, en este
ejemplo se puede observar un documento con múltiples
subdocumentos.[fig24]
Una vez insertado, se observa como el grafo creado po-
see un nodo con tres relaciones hacia tres nodos diferentes,
representando el documento de exposiciones con su infor-
mación como quien la dicta, en donde y los temas.[fig25]
Figura 26. Documento con arreglo de subdocumentos Figura 28. Colecciones distintas referenciandose
Referencias
[1] M. F. Pramod J. Sadalage, “Nosql distilled a brief guide to the
emerging world of polyglot persistence,” 2013, [Online; accessed 20-
Figura 31. Consulta representando la propagación de una epidemia may-2017].
[2] N. Ford, “about me,” 2006, [Online; accessed 20-may-2017].
8.6.7. Aplicaciones 2. En este ultimo ejemplo, tenemos un [3] ——, “Polyglot programming,” 2006, [Online; accessed 20-may-
grafo que representa los productos de una tienda y quienes 2017].
[4] E. King, “The real world of database administrator,” 2015, [Online;
accessed 17-may-2017].
[5] J. Serra, “What is polyglot persistence?” 2015, [Online; accessed 05-
may-2017].
[6] R. Boyd, “Polyglot persistence case study: Wanderu + neo4j +
mongodb,” 2015, [Online; accessed 05-may-2017].
[7] https://es.wikipedia.org/wiki/Twitter, “Twitter,” 2017, [Online; acces-
sed 05-may-2017].
[8] Anónimo, “Which database system(s) does twitter use,” 2012, [Onli-
ne; accessed 05-may-2017].
[9] https://es.wikipedia.org/wiki/LinkedIn, “Linkedin,” 2017, [Online; ac-
cessed 05-may-2017].
[10] Anónimo, “What is linkedin’s database architecture like?” 2010,
[Online; accessed 05-may-2017].
[11] https://www.mongodb.com/what-is mongodb, “What is mongodb?”
2017, [Online; accessed 05-may-2017].
[12] https://docs.mongodb.com/v3.2/core/databases-and collections/, “Co-
lecciones en mongodb,” 2017, [Online; accessed 05-may-2017].
[13] https://neo4j.com/developer/graph database/, “What is a graph data-
base?” 2017, [Online; accessed 05-may-2017].
[14] http://ugamarkj.blogspot.com/2014/12/a-newbies-experience-with
neo4j.html, “A newbie’s experience with neo4j,” 2017, [Online;
accessed 05-may-2017].
[15] https://neo4j.com/blog/neo4j-doc-manager-polyglot-persistence mon-
godb/, “Neo4j doc manager: Polyglot persistence for mongodb and
neo4j,” 2017, [Online; accessed 05-may-2017].
[16] https://github.com/neo4j-contrib/neo4j-apoc procedures, “Apoc, awe-
some procedures,” 2017, [Online; accessed 05-may-2017].
[17] https://github.com/neo4j contrib/neo4j doc manager, “Neoj4 doc ma-
nager,” 2017, [Online; accessed 05-may-2017].