scieee Open visual document viewer

Microservicio REST basado en Apache Spark para cruce-SQL de Fuentes de Datos Cassandra

Aguilar-Jiménez, Juan Antonio

Abstract

En este trabajo Fin de Grado (TFG) se ha desarrollado una herramienta genérica, siguiendo una arquitectura de Microservicio REST, para implementar operaciones de cruce (join) en fuentes de datos Cassandra de gran volumen con Apache Spark. Además, la herramienta se ha aplicado a un caso de uso de la Web Semántica, con el que se ha conseguido evaluar consultas SPARQL en un repositorio de datos Apache Cassandra que almacena una ontología OWL materializada. Apache Cassandra es una base de datos NoSQL (Not only SQL) distribuida orientada a columna, cuyo lenguaje de consultas, por razones de rendimiento y de la propia arquitectura de la base de datos, no permite hacer operaciones de tipo join entre tablas. La herramienta genérica desarrollada en este TFG cubre esta carencia de forma escalable gracias al uso de Apache Spark. Además, se ha conseguido desacoplar la lógica necesaria para realizar dichos cruces para el Caso de uso Específico. Esto permite aplicar dicha herramienta genérica a otros casos de uso futuros. Como producto final, se ha desarrollado un interfaz Web que permite ejecutar consultas SPARQL sobre una ontología con información sobre diferentes disciplinas artísticas. Las consultas son modificables por el usuario, pudiendo éste generar cualquier consulta nueva sobre el conocimiento almacenado.

Full text

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA G ado en Ingenie ía de Compu ado es Mic ose icio REST basado en Apache Spa k pa a c uce-SQL de Fuen es de Da os Cassand a REST Mic ose ice based on Apache Spa k o SQL-Join o Cassand a's Da a Sou ces Realizado po Juan An onio Aguila Jiménez Tu o izado po Ma ía del Ma Roldán Ga cía - An onio J. Neb o U baneja Depa amen o Lenguajes y Ciencias de la Compu ación UNIVERSIDAD DE MÁLAGA MÁLAGA, Junio 2018 Fecha de ensa: El Sec e a io del T ibunal Resumen: En es e abajo Fin de G ado (TFG) se ha desa ollado una he amien a gené ica, siguiendo una a qui ec u a de Mic ose icio REST, pa a implemen a ope aciones de c uce (join) en uen es de da os Cassand a de g an olumen con Apache Spa k. Además, la he amien a se ha aplicado a un caso de uso de la Web Semán ica, con el que se ha conseguido e alua consul as SPARQL en un eposi o io de da os Apache Cassand a que almacena una on ología OWL ma e ializada. Apache Cassand a es una base de da os NoSQL (No only SQL) dis ibuida o ien ada a columna, cuyo lenguaje de consul as, po azones de endimien o y de la p opia a qui ec u a de la base de da os, no pe mi e hace ope aciones de ipo join en e ablas. La he amien a gené ica desa ollada en es e TFG cub e es a ca encia de o ma escalable g acias al uso de Apache Spa k. Además, se ha conseguido desacopla la lógica necesa ia pa a ealiza dichos c uces pa a el Caso de uso Especí ico. Es o pe mi e aplica dicha he amien a gené ica a o os casos de uso u u os. Como p oduc o inal, se ha desa ollado un in e az Web que pe mi e ejecu a consul as SPARQL sob e una on ología con in o mación sob e di e en es disciplinas a ís icas. Las consul as son modi icables po el usua io, pudiendo és e gene a cualquie consul a nue a sob e el conocimien o almacenado. Palab as cla es: Cassand a, Spa k, Web Semán ica, SPARQL, Mic ose icio, REST, API, Big Da a, Join, Py hon, Node, Angula , Apollo, Daphne. Abs ac : In his End-o -Deg ee p ojec (TFG) a gene ic ool has been de eloped, ollowing a REST Mic ose ice a chi ec u e, o implemen join ope a ions in la ge olume Cassand a da a sou ces wi h Apache Spa k. Besides, he ool has been applied o a Seman ic Web use case, wi h which i has been possible o e alua e SPARQL que ies in an Apache Cassand a da a eposi o y ha s o es a ma e ialized OWL on ology. Apache Cassand a is a dis ibu ed column-o ien ed NoSQL (No only SQL) da abase, whose que y language, o pe o mance easons and he da abase a chi ec u e i sel , does no allow join- ype ope a ions be ween ables. The gene ic ool de eloped in his TFG co e s his lack in a scalable way hanks o he use o Apache Spa k. The e o e, i has been possible o decouple he logic necessa y o make such c ossings o he speci ic Use Case. This allows applying his gene ic ool o o he u u e use cases. As a esul , a Web in e ace has been de eloped ha allows execu ing SPARQL que ies abou an on ology wi h in o ma ion conce ning di e en a is ic disciplines. The que ies can be modi ied by he use , who can gene a e any new que y ega ds he s o ed knowledge. Keywo ds: Cassand a, Spa k, Seman ic Web, SPARQL, Mic ose ice, REST, API, Big Da a, Join, Py hon, Node, Angula , Apollo, Daphne. Dedico es e abajo a mis amigas Sa a y Mónica po escucha me y se i me de apoyo. Y po supues o a mis pad es, F ancisco y An onia, po que no se ía posible sin lo que ellos han luchado pa a que mis he manos y yo pudié amos p og esa . Ag adecimien os Quie o ag adece al g upo de in es igación Khaos del Depa amen o de Lenguajes y Ciencias de la Compu ación de la Uni e sidad de Málaga, y en especial a mis u o es, Ma ía del Ma Roldán y An onio Neb o, que o man pa e del mismo, po la opo unidad que me han dado. Índice gene al 1. Ind oducción 1 1.1. Obje i os ..................................... 2 1.2. Ace ca de cómo lee es a memo ia . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3. Desc ipción de Con enidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Si uación Ac ual 5 2.1. Basesdeda osNoSQL.............................. 5 2.2. Álgeb aRelacional ................................ 6 2.2.1. Ope acionesbásicas............................ 7 2.2.2. Ope aciones de i adas . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.3. Tipos de SQL Join ............................ 9 2.3. ApacheCassand a ................................ 10 2.4. ApacheSpa k................................... 11 2.5. Conec o Spa k-Cassand a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3. Caso de Uso: Tecnologías de la Web Semán ica 15 3.1. An eceden es del Caso de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.1. Rep esen ación del Conocimien o . . . . . . . . . . . . . . . . . . . . 15 3.1.2. On ologías de la Web Semán ica . . . . . . . . . . . . . . . . . . . . . 16 3.1.3. OWL.................................... 16 3.1.4. Logica de Desc ipciones y Bases de Conocimien o . . . . . . . . . . . 16 3.1.5. SPARQL.................................. 18 3.1.6. Razonado es Semán icos . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.7. Ma e alización de on ologías sob e bases de da os NoSQL o ien adas acolumna................................. 19 3.2. Caso de Uso: Consul as sob e una On ología Ma e ializada . . . . . . . . . . 20 3.2.1. Con ex o.................................. 20 3.2.2. Plan eamien o............................... 21 4. Desa ollo del p oyec o 23 4.1. Me odología.................................... 23 4.2. Análisis ...................................... 24 4.2.1. Análisis de equisi os . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2.2. Ba e ía de Tes Iniciales . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.3. Diseño....................................... 27 4.3.1. Apollo ................................... 29 4.3.2. Daphne .................................. 30 4.3.3. FlujodeT abajo ............................. 30 4.4. Implemen ación.................................. 31 4.5. P uebas ...................................... 32 i pode ex ae conocimien o de una on ología ma e ializada en una base de da os o ien ada a columna median e consul as SPARQL P o ocol and RDF Que y Language (SPARQL) (3.1.7). 1.1. Obje i os El obje i o p incipal de es e p oyec o es pode ealiza ope aciones ipo join de inidas en el álgeb a elacional, sin penaliza el endimien o al analiza g andes olúmenes de da os almacenados en una base de da os NoSQL, escalable y dis ibuida, como es Apache Cas- sand a (2.3). Po es e mo i o se u iliza Apache Spa k (2.4) cuyas ca ac e ís icas in ínsecas, pe mi en pa aleliza p ocesos de analí ica de da os usando o denado es en clus e (incluso en la nube), escalando ho izon almen e pa a no c ea cuellos de bo ella que impidan la u ilidad p ác ica del análisis. En de ini i a, he amien as den o del ecosis ema del big da a y a la al u a de los eque imien os écnicos de es e ipo de e os compu acionales. 1.2. Ace ca de cómo lee es a memo ia Los ac ónimos es án sub ayados, de o ma que en la e sión digi al se puede segui el hipe enlace pa a e lo, y en la copia en papel indica que hay que i al apéndice de ac ónimos pa a localiza lo. Al igual que se pueden segui las e e encias c uzadas, que se deno an con el núme o de la sección, subsección, e c. en e (pa én esis). Las palab as en neg i a deno an un é mino, cuya de inición es á en el apa ado de é minos al inal de la memo ia. Los é minos anglosajones es án esc i os en cu si a, menos los nomb es p opios (p.ej.: aplicaciones, módulos, biblio ecas, e c.). Las e e encias an o de la Wo ld Wide Web (WWW) como bibliog á icas es án pues as en e [co che es]. Las igu as i án con le a cu si a y en e co che es, se deno a á con el p e ijo ig., ([ ig. < igu a>]). 1.3. Desc ipción de Con enidos In oducción (1) Se e ie e a és e mismo capí ulo, donde se in oduce al p oblema que se p e ende soluciona en es e TFG: Mo i ación, Obje i os y una sección con un pequeño esumen del con enido de cada capí ulo. Si uación Ac ual (2). En es e capí ulo se e isa la si uación p e ia al TFG. Nos aden a emos en el s a e-o - he-a de las ecnologías de bases de da os NoSQL y su inculación con el big da a. Analiza emos el álgeb a elacional, haciendo hincapié en la uncionalidad no implemen ada en la base de da os Cassand a (2.3). Dicha un- cionalidad se supli á usando écnicas escalables. Ha emos un eco ido sob e Apache Cassand a (2.3), ambién sob e las ca ac e ís icas de Spa k (2.4), amewo k que ha 2 sido escogido pa a ealiza es e TFG y que nos a a pe mi i el c uce de da os en- e las dis in as “ ablas” de Cassand a (2.3), apoyándonos pa a ello en el Conec o Spa k-Cassand a (2.5). Tecnologías de la Web Semán ica (3). Aquí nos aden amos en el Caso de Uso y en qué ecnologías se u ilizan ac ualmen e en la Web Semán ica (3.1), cómo se ep esen a el conocimien o de o ma e icaz (3.1.1), qué es una On ología de la Web Semán ica, qué lenguajes se u ilizan pa a ep esen a el conocimien o y qué es un azonado semán ico. También ha emos una in oducción sob e el lenguaje de consul a SPARQL (3.1.5), y de cómo una On ología Ma e ializada puede inc emen a el endimien o an e on ologías muy g andes. Desa ollo del p oyec o (4). Es e capí ulo de alla las ases ejecu adas en la eali- zación de es e TFG. Se ha seguido una me odología ágil, con ciclos i e a i os, desde el diseño a las p uebas. Pa iendo de la idea inicial ya mencionada, implemen a emos una he amien a que pueda ealiza joins, a la mane a de las bases de da os S uc- u ed Que y Language (SQL), pe o sin penaliza el endimien o. Con es e comienzo, i e a modi icando el p o o ipo has a con e i lo en una pieza so wa e pa a aplica la al Caso de Uso de la Web Semán ica (6), con el obje i o inal de que pueda se u ili- zada como mic ose icio común a aquellas aplicaciones y expe imen os del g upo de in es igación que equie an c uza da os en e uen es de da os Cassand a. Mic ose icio Apollo (5). En es e capí ulo se desc iben las especi icaciones de la pieza so wa e que es el núcleo undamen al de es e TFG, que es capaz de ecibi una se ie de consul as en un o ma o que hemos denominado Apollo Que y, basado en Ja asc ip Objec No a ion [39] (JSON), y de aduci dichas consul as a ins uc- ciones sob e Spa k de o ma adecuada (2.4) pa a ealiza las consul as. En esumen, ex ae los da os desde Cassand a y hace los c uces de da os necesa ios pa a ob ene la in o mación de acue do a la consul a. Aplicación al Caso de Uso (6). Desc ipción de cómo se u ilizado el mic ose icio p opues o pa a acopla lo a un ejemplo eal cuyas necesidades, en cuan o a c uce de da os, quedan cubie as po la he amien a desa ollada. Pa a acopla la he amien a géne ica Apollo, se desc ibe el desa ollo de o o mic ose icio que aduci á las consul as SPARQL en el o ma o especi icado pa a se in e p e adas po Apollo (5). Además, se ha desa ollado un clien e a modo de ejemplo de consumo. Conclusiones y abajos u u os (7). Conclusiones ace ca de la consecución de los obje i os plan eados en el TFG, así como una e lexión sob e mejo as y abajos u u os. Tecnologías u ilizadas (A). Apéndice con una b e e desc ipción de las ecnologías u ilizadas. 3 4 2 Si uación Ac ual We may say mos ap ly ha he Analy ical Engine wea es algeb aical pa e ns jus as he Jacqua d loom wea es lowe s and lea es. Ada By on En plena explosión de las ecnologías de la in o mación aplicadas a la Web, y de nue os pa adigmas de almacenamien o, las bases de da os NoSQL es án siendo cada ez más usadas, siendo obje o de I+D po pa e de en idades de p ime ni el. Una ca ac e ís ica que ha dispa ado es a endencia es su ca ác e schemaless, lo que implica que son más lexibles a la ho a de almacena in o mación no es uc u ada o semi- es uc u ada. O a ca ac e ís ica impo an e de muchas de ellas es que son dis ibuidas y escalan bien ho izon almen e. Debido a la ingen e can idad de da os que se gene a hoy en día, g an pa e desde la Web y especialmen e desde la llamada Web 2.0, con g an can idad de da os: blogs, edes sociales, linked da a, In e ne de las Cosas, Ciudades In eligen es, come cio elec ónico, analí ica Web, aplicaciones co po a i as, logs de pla a o mas en la nube, e c. Pa a ello, se necesi an es uc u as capaces de ecoge es a in o mación, o un esumen en su caso, con la posibilidad de escala en unción del amaño y de la apidez con que se gene an dichos da os. 2.1. Bases de da os NoSQL Las bases de da os NoSQL ambién se les denomina ipo: Basically A ailable, So s a e and E en ual Consis ency (BASE) como con apa ida al ac ónimo pa a denomina a las bases de da os elacionales: A omici y, Consis ency, Isola ion and Du abili y (ACID), que deno a la lexibilidad de la iloso ía NoSQL en e a la Relacional. Exis en mul i ud de bases de da os NoSQL, y pueden se clasi icadas po a ios c i e ios, uno de ellos se ía el o ma o de la in o mación que almacenan, siendo las más demandadas las que alcanzan un mayo g ado de especialización en es e sen ido. Po ejemplo, exis en bases de da os NoSQL o ien adas al o ma o cla e- alo (p.ej.: Redis), son en de ini i a g andes ablas hash que pe mi en ecupe a in o mación de o ma ápida a pesa de su eno me amaño. En cambio o as, es án o ien adas a documen o (p.ej: Mongo DB, Elas icsea ch), es deci , no se gua da un alo simple, sino que el alo gua dado es odo un documen o, da os semi-esc uc u ados en o ma o JSON (p.ej. MongoDB), o cualquie ipo de documen o ya sea en ex o plano, eX ensible Ma kup Language (XML) o Hype Tex Ma kup Language (HTML) (p.ej. Elas icsea ch). La in o mación almacenada es en muchos casos de ipo W i e Once Read Many (WORM), indexada pa a búsquedas. También exis en o ien adas a g a os 5 (p.ej: Neo4J, A angoDB), en las cuales se da más impo ancia a la elación en e los da os y donde se pueden aplica écnicas de análisis de g a os. En el caso de la base de da os Apache Cassand a, se habla de es uc u as de da os o ien adas a columna (2.3), en el que dicha columna es á o mada po un conjun o inde e minado de pa es cla e/ alo . En las bases de da os NoSQL hay ambién a ios ipos en cuan o a su clasi icación según el Teo ema CAP de B ewe , cues ión a ene en cuen a a la ho a de elegi una en unción del caso de uso conc e o [ ig. 2.1]. Consis ency CAP A ailabili y Pa i ion Tole ance CP AP CA MongoDB O acle MySQL SQL Se e Cassand a Dynamo CouchDB Redis MemcacheDB Figu a 2.1: Clasi icación de Bases de Da os NoSQL según Teo ema CAP de B ewe . O a ca ac e ís ica que suele di e encia a las bases de da os NoSQL y las bases de da os elacionales, es que no implemen an ope aciones ipo join1, ca ac e ís ica undamen al como mo i ación pa a es e TFG. 2.2. Álgeb a Relacional El álgeb a es la pa e de las ma emá icas que se enca ga de gene aliza las ope aciones a i mé icas en e elaciones, que se de inen como conjun os de uplas. En el caso de las bases de da os SQL2, el álgeb a elacional se aplica de iniendo las dis in as ope aciones “a i mé icas” en e ablas compues as po ilas. El álgeb a elacional cons a de ope aciones una ias o bina ias, que ienen como en ada elaciones, ob eniendo como esul ado o a elación. Se con emplan a ias ope aciones: unas básicas y o as de i adas a pa i de las an e io es. [44] [Cod72] 1con ipo join, además de odos los ipos de SQL join podemos ambién inclui las ope aciones del álgeb a elacional: Unión, In e sección y Res a 2las bases de da os elacionales ambién se de inen como SQL po que sopo an es e mé odo de consul a. 6 2.2.1. Ope aciones básicas 1. P oyección (Π), es una ope ación una ia donde se c ea una nue a abla a pa i de solo algunas columnas de la abla o iginal Z=ΠR1,R2,...,Rn(R)donde Z end ía los a ibu os R1..Rnde cada upla de la elación R. 2. Selección (σ) , es una ope ación una ia, donde se c ea una nue a elación a pa i de solo algunas uplas de la elación o iginal. Es deci , los da os de la elación o iginal son il ados po un c i e io P.σP(R) 3. Renomb a (ρ), es una ope ación una ia donde se enomb a un a ibu o con nomb e b, de una elación R, con el nomb e a. Po lo demás, la elación esul ado es igual a la elación R.Z=Ra/b 4. P oduc o Ca esiano (×)de dos elaciones [ ig. 2.2]. Cada upla de la p ime a elación Rse combina con cada upla de la segunda elación S, o mando nue as uplas po la combinación de ambas. El núme o de uplas de la elación esul ado Z, se á el p oduc o del núme o de uplas de Rpo el núme o de uplas de S.Z=R×S 5. Unión (∪)[ ig. 2.3], ope ación bina ia. En la unión de RySse añaden a la ela- ción esul ado Zlas uplas de las dos elaciones o iginales, cuyos a ibu os deben se conco dan es en núme o. Z=R∪S 6. Res a (−)[ ig. 2.5], ope ación bina ia que selecciona las uplas de la p ime a elación que no es én p esen es en la segunda. Z=R−S CARTESIAN PRODUCT Z = R x S R SZ Figu a 2.2: P oduc o Ca esiano. UNION Z = R R S �S Z Figu a 2.3: Union. 7 R S Z INTERSECTION Z = R �S Figu a 2.4: In e sección. 2.2.2. Ope aciones de i adas 1. In e sección (∩)[ ig. 2.4], ope ación bina ia que dadas dos elaciones RyS, la elación esul an e Zcon end á las uplas de Rque ambién es én en S. Puede exp esa se como ope ación de i ada. Z=R∩S=R−(R−S)[ ig. 2.4] 2. Unión Na u al (./), P oduc o Na u al o Join es una ope ación bina ia que dadas dos elaciones RyS, combina uplas seleccionadas de ambas elaciones po un c i e io θ, de o ma que la elación esul ado p oyec a odas las columnas de las dos elaciones. Se a a de una ope ación de i ada de o as básicas. Z=σθ(R×S) En las bases de da os SQL se con emplan di e en es ipos de “uniones na u ales” o joins (2.2.3) [ ig. 2.6]. SUBTRACTION Z = R - S R S Z Figu a 2.5: Res a. NATURAL JOIN Z = R R S Z S Figu a 2.6: Unión Na u al. 8 2.2.3. Tipos de SQL Join En la igu a [ ig. 2.7] se pueden e ep esen adas median e diag amas de Venn, las di e en es posibilidades que las bases de da os elacionales implemen an de la Unión Na u al en e dos ablas. En cada una de ellas puede e se el esquema simple de como se ía una consul a SQL. Algunas de ellas son p imi i as y las o as pueden exp esa se como una modi icación de las ope aciones p imi i as (p.ej.: ope ación de selección σP). SELECT * FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL A - B A B SELECT * FROM A LEFT JOIN B ON A.key = B.key LEFT JOIN A B SELECT * FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL B - A A B SELECT * FROM A INNER JOIN B ON A.key = B.key INNER JOIN A B SELECT * FROM A RIGHT JOIN B ON A.key = B.key RIGHT JOIN A B SELECT * FROM A FULL JOIN B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL XOR JOIN A B SELECT * FROM A FULL JOIN B ON A.key = B.key FULL JOIN A B SELECT * FROM A CROSS JOIN B CROSS JOIN A B Figu a 2.7: Tipos de SQL join. C oss Join. Se a a del p oduc o ca esiano de dos ablas A×B(2.2.1), donde cada ila de la abla Ase elaciona con cada una de las ilas de la abla B. De o ma que Anm ×Bpq =Z, donde Z end ía n∗p ilas y m+qcolumnas. No es ablece ningún c i e io de compa ación, el c i e io se ía “ odas con odas”. Inne Join.Inne Join o Unión Na u al de dos ablas A ./ B se co esponde con la Unión Na u al del álgeb a elacional (2.2.2), de i ada de o as básicas (2.2.1). σθ(A×B) Le Join. O o ipo de join es la ope ación Le Join en e dos ablas, ambién denominada Le Ou e Join,A d|><| B. Es una ex ensión de la ope ación Inne Join, donde ambién se añadi ían al esul ado las ilas de Aque no cumplan el c i e io θ, siendo las columnas de Bde alo nulo en es as úl imas. Righ Join. La ope ación ALe Join BóA |><|d Bes equi alen e a B d|><| A. Aunque, po cla idad de las consul as, es con enien e usa la como Righ Join. 9 Full Join.AFull Join BóA d|><|d B, la consul a equi alen e en SQL puede e se en [ ig. 2.7], ambién pod ía exp esa se como A d|><| B∪A |><|d Bsin que se epi an las ilas de la in e seción3. A–B. Se pod ía de ini como la ope ación de selecciona las ilas de Aque no “casan” con Bdado un c i e io θ. Hay que dis ingui la de la es a del álgeb a elacional (2.2.1), que es una ope ación pu amen e de conjun os y sin es ablece un c i e io θ. También pod ía exp esa se como la es a algeb aica. (A d|><| B)−(A ./ B) B – A. De o ma equi alen e a A−B, pod ía exp esa se como (A |><|d B)−(A ./ B). Exclusi e OR Join. La ope ación Exclusi e OR o Disyunción Exclusi a (4), se puede descompone en (A−B)∪(B−A). El esul ado end á las ilas de Ay de B que no pe enezcan a la in e sección de AyB. 2.3. Apache Cassand a Apache Cassand a es una base de da os NoSQL, de ipo cla e- alo , o ien ada a colum- na: los da os siemp e se acceden po la cla e, y el alo es á compues o po un núme o de columnas inde e minado [ ig. 2.8]. En una misma “ abla”4podemos ene ilas con di e en e núme o de columnas, en un g an núme o como lími e. Es a ca ac e ís ica, unida a su a - qui ec u a en clus e , hace a la base de da os Cassand a idónea pa a su uso den o del ecosis ema big da a5. El lenguaje de consul a es el CQL, sus i uyendo al SQL de las bases de da os elacionales. Es bas an e pa ecido, pe mi e: p oyección, selección, enomb a columnas y ag egaciones. Pe o, al con a io que SQL, no pe mi e consul a ablas elacionadas unas con o as debido a la p opia a qui ec u a de la base de da os Cassand a y a la p opia iloso ía de las bases de da os NoSQL6. La base de da os Cassand a p esen a una a qui ec u a dis ibuida (1), que escala ho i- zon almen e g acias a la es uc u a en clus e . Cada nodo con iene una pa e de los da os denominada pa ición, y puede eplica los da os de o os nodos pa a implemen a la ole- ancia a allos. Exis e un nodo p ima io, que es con el que comunican los clien es. Cuando un clien e inse a un da o, el nodo p ima io aplica una unción hash que decide a que pa ición pe enece, comunicando con el nodo que ges iona dicha pa ición o, si és e es á “caído”, con los que man ienen una éplica de dicha pa ición. El núme o de nodos que man ienen una 3en el álgeb a elacional, basada en la eo ía de conjun os, no hab ía epe iciones, pe o en las bases de da os elacionales, dependiendo de la implemen ación SQL, pod ían da se duplicados, po lo que hab ía que ene lo en cuen a. Dichas implemen aciones suelen inclui el modi icado DISTINCT pa a las p oyecciones, que indica que la abla esul ado no con end á duplicados. También en algunas, ope aciones como la unión iene dos posibilidades: Union, sin duplicados, y Union All, con duplicados. 4denominada colum amily an es de la e sión 3, a pa i de aquí, ecibe el nomb e de able. El nomb e supe -column amily se ía el equi alen e a una is a en bases de da os SQL. Desde la e sión 3 se enomb a a iew. 5has a 231 celdas po pa ición en la e sión 3.3 [14] 6modelos de da os deno malizados, con da os epe idos en de imen o de la consis encia, da os almace- nados en el o ma o que se quie e sean consul ados, e c. 10 Row Key Key_a Val_a Key_b Val_b Key_c Val_c Column Keys Column Values Figu a 2.8: Esquema de las es uc u as cla e- alo en Cassand a. pa ición, se modela al de ini el keyspace, que es un ni el o ganiza i o supe io al de abla y se ía equi alen e al concep o de schema en las bases de da os elacionales. A la ho a de de ini un keyspace, se decide qué ac o de eplicación (pa áme o eplica ion_ ac o ) a a ene . Aunque los da os se eplican en el momen o de la inse ción, exis e un p o ocolo denominado gossip (o umo , en cas ellano) po el cual, cada cie o iempo, los nodos que con ienen éplicas compa an los códigos Cyclic Redundancy Check (CRC) de sus da os con los de los nodos eplicados, in e cambiando los que no es án ac ualizados pa a man ene la consis encia7. En la de inición de una abla, se especi ica la p ima y key. Tiene dos pa es: a la p ime a, o mada po uno o a ios campos, se le denomina pa i ion key, que es la que de e mina á en que nodo se g aban los da os (pa ición). La segunda pa e (opcional) se denomina clus e ing key, y de ini á el o den de la upla den o de la pa ición, en caso de se especi icada [ ig. 2.9]. 2.4. Apache Spa k Es un amewo k so wa e de código abie o, o iginalmen e desa ollado po la Uni e - sidad de Be keley en Cali o nia y ac ualmen e man enido po la Fundación Apache. Es á especializado en el p ocesamien o pa alelo de g andes olúmenes de da os. P esen a una a qui ec u a en clus e . Es á op imizado pa a elocidad, siendo mucho más ápido que MapReduce, aunque és e úl imo es á diseñado pa a mayo olumen de da os. Sopo a Ap- plica ion P og amming In e aces (APIs) pa a a ios lenguajes: Scala, Py hon, Ja a y R. Además iene biblio ecas de al o ni el; como po ejemplo Spa k SQL, que se u iliza pa a conec a con di e sos mo o es de bases de da os, en e las cuales es á Apache Cassand a8. 7pese a que Cassand a es a ía encuad ado en el é ice A-P según el Teo ema CAP de B ewe , g acias a es e p o ocolo se a enúa en g an medida la al a de consis encia, po lo que pod ía deci se que es E en ualmen e Consis en e, al y como se e ie e en el é mino BASE, aunque algunos nodos no hayan es ado disponibles du an e el p oceso de inse ción. Pa a la lec u a, igualmen e, si un nodo no es á online, según el ac o de eplicación p e-es ablecido, se pod á se i el da o de una de las éplicas. 8g acias a Spa k-Cassand a Connec o (A) 11 A is Pain e Sculp o Cubis Mul i alen ed Sculp u e Pain ing A wo k Pho o Ci y Image Museum picasso gue nica einaSofia mad id A Galle y "Pablo" michelAngelo dona ello b onzeDa id odin heThinke odinMuseum "Augus e" elP ado lasMeninas ype :c ea es sc sc sc eq sc sc :pain s ype :fi s Name ype ype :exhibi s eq :loca edIn ype eq :exhibi edIn :lodca edIn :c ea es :exhibi s :fi s Name :exhibi edIn TBOX ABOX eq Figu a 3.1: Bases de Conocimien o: TBOX y ABOX. Una Base de Conocimien o es una implemen ación de una DL, que es á o mada po dos es uc u as denominadas Te minological Box (TBox) y Asse ional Box (ABox). La TBox con iene odas las elaciones en e las clases que pe mi i á in e i conocimien o usando un azonado semán ico; mien as que la ABox iene la in o mación de los indi iduos: a qué clase pe enecen y cómo se elacionan unos con o os de o ma que, aplicando eglas de la TBox, podemos ag ega nue as elaciones en e los indi iduos de la ABox. En [ ig. 3.1] podemos e un ejemplo de la Base de Conocimien o sob e la que hemos implemen ado el caso de uso (3.2). 3.1.5. SPARQL Es un lenguaje es anda izado pa a consul a de da os en documen os RDF aunque, como pasa con SQL, exis en di e sas implemen aciones en unción del mo o de almacenamien o y ecupe ación de documen os. Las consul as ienen una cabece a donde se indican los a- lo es que se án e o nados po la consul a, mien as que el c ue po p esen a una cláusula WHERE que se es uc u a en un conjun o o denado de “ iple as”, y cuya o ma básica se ía: suje o-p edicado-obje o. Es as iple as, p esen an una o ma simila a la no ación RDF, con la di e encia de que podemos in oduci a iables, que se deno an po un iden i icado p ecedido de un símbolo de in e ogación (?). Cuando se ejecu a una consul a SPARQL, se compa an las iple as con los nodos RDF de o ma que se busca la coincidencia de los 18 PREFIX dc e ms : <h p :// pu l . o g /dc/ e ms /> PREFIX d s : < h p :// www .w3. o g /2000/01/ d - schema #> PREFIX dbp : < h p :// dbpedia . o g/ on ology /> SELECT ? musico ? nomb eMusico ? echaNacimien o ? echaFallecimien o WHERE { ? musico dc e ms : subjec <h p :// dbpedia . o g / esou ce / Ca ego y : Spanish_musicians >; d s : label ? nomb eMusico ; dbp: bi hDa e ? echaNacimien o ; dbp: dea hDa e ? echaFallecimien o . FILTER (LANG(?nomb eMusico) = "es") } Código 3.2: Ejemplo de consul a SPARQL li e ales, y las a iables se ins ancian con cualquie alo con el que “casen”, según de ina la clausula WHERE. En [Cód. 3.2] podemos e un ejemplo de consul a SPARQL sob e la DBpedia, donde se consul an los músicos españoles (nomb e, echa de nacimien o y echa de allecimien o) de los egis os almacenados en la base de da os. En [18] podemos encon a un SPARQL endpoin donde se pueden ejecu a es e ipo de consul as. 3.1.6. Razonado es Semán icos Un azonado es un algo i mo que a pa i de las eglas semán icas de una on ología, es capaz de in e i conocimien o nue o: nue os indi iduos de clases o subclases (he encia), nue os oles, o incluso nue as eglas, de o ma que aplicando un azonado de o ma i e a i a ob enemos un conocimien o inc emen al. Los Razonado es OWL son aquellos que pueden en ende el o ma o OWL. En el caso de las bases de conocimien o el azonamien o se ealiza sob e la TBox y el conocimien o in e ido se almacena en la ABox (3.1.4). 3.1.7. Ma e alización de on ologías sob e bases de da os NoSQL o ien adas a columna En los úl imos iempos son muchas las implemen aciones de almacenamien o RDF en bases de da os NoSQL [KKTC12]. Pe o no así con sopo e de azonamien o OWL. En [RARGAM17] an más allá, implemen ando un modelo de almacenamien o OWL/RDF o ien ado a columna y un p o o ipo de he amien a g á ica pa a almacena dicha on ología ya azonada2, has a no ob ene conocimien o nue o (ma e ialización). Al e i a el azonamien o en memo ia, se puede a aca el p oblema de la consul a de da os de on ologías muy g andes con una a qui ec u a al amen e escalable. Además, pe mi e la adición de conocimien o de mane a inc emen al, eniendo así una uen e de conocimien o dinámico ac ualizada. 2u ilizando pa a ello un azonado basado en MapReduce [23]. 19 3.2. Caso de Uso: Consul as sob e una On ología Ma e- ializada 3.2.1. Con ex o Tenemos una On ología Ma e ializada sob e una base de da os NoSQL; es deci , en el o ma o ya comen ado (3.1.7); que ep esen a una base de conocimien o sob e a is as, almacenada en un keyspace de Cassand a, con los elemen os TBox y ABox dispe sos en a ias ablas (3.1.4). Nos in e esa conc e amen e la ABox una ez azonada (3.1.7), implemen ada de la siguien e o ma: La abla c 110: con iene los indi iduos de cada clase. La es uc u a de c 110 se com- pone de un alo cla e como pa i ion key, que ep esen a la clase, y de los alo es columna, que son las ins ancias de dicha clase. THING es la clase pad e a la que pe e- necen odos los indi iduos del dominio y NOTHING su con apa ida, la clase acía. ABox →c 110 key column1 column2 column3 column4 column5 column6 column7 column8 column9 NOTHING null null null null null null null null null #sculp u e #b onzeDa id null null null null null null null null #a Galle y #elP ado null null null null null null null null #pain e #picasso #michelAngelo null null null null null null null #pho o null null null null null null null null null #a wo k #b onzeDa id #lasMeninas null null null null null null null #sculp o # odin #michelAngelo #dona ello null null null null null null #a is # odin #picasso #michelAngelo #dona ello null null null null null THING #michelAngelo #lasMeninas # heThinke #mad id #gue nica #museo odin #picasso # einaSo ia #dona ello #museum # einaSo ia null null null null null null null null #cubis null null null null null null null null null #image null null null null null null null null null #pain wo k #lasMeninas null null null null null null null null #mul i alen ed null null null null null null null null null #ci y #mad id null null null null null null null null La abla c 111: con iene las elaciones en e las ins ancias. Donde key es la pa i ion key ynum es la clus e ing key, ambas o man la p ima y key. El alo de la cla e ep esen a al p edicado de la iple a semán ica. Así como, los alo es con el mismo núme o de columna y el mismo alo en la cla e key, es án elacionados semán ica- men e. De es a o ma, los alo es de ilas con alo 1en el campo num co esponden con el suje o, y los alo es cuya ila p esen a alo 2en el campo num co esponden con el obje o. ABox →c 111 key num column1 column2 #exhibi s 1 #elP ado null #exhibi s 2 #lasMeninas null # i s name 1 # odin #picasso # i s name 2 #augus e #pablo #loca edIn 1 # einaSo ia null #loca edIn 2 #mad id null #pain s 1 #picasso null #pain s 2 #gue nica null #c ea es 1 # odin #dona ello #c ea es 2 # heThinke #b onzeDa id #exhibi edIn 1 #gue nica # heThinke #exhibi edIn 2 # einaSo ia #museo odin 20 3.2.2. Plan eamien o Ambas ablas pueden ene an as columnas como sea necesa io. Po ejemplo pod íamos que e sabe qué museos hay en Mad id, pa a ello, necesi amos: 1. Consul a las ilas de la abla c 110 con cla e #museum, es deci , las in ancias de la clase museo. 2. Consul a las ilas de la abla c 111 con cla e #loca edIn y alo en alguna de las columnas de da os #mad id3 3. Po úl imo hace un inne join con los esul ados de los pun os an e io es, usando como c i e io de c uce, la columna con la ins ancia museo. Como ya se ha comen ado an e io men e, Apache Cassand a no pe mi e esol e el c uce de da os plan eado, po azones de a qui ec u a de la p opia base de da os, pe o pa a es e modelo de da os es necesa io, es po eso que acudimos a una he amien a como Apache Spa k, po su ca ac e ans e sal y escalable. Pa a ello, se u iliza á una he amien a lo más gené ica posible que pueda ealiza c uces de da os y que se pueda aplica al mayo núme o de casos de uso di e en es, pe o a la ez, an especializada que no ealice ninguna o o ipo de ope aciones, es po ello que se elige una a qui ec u a de mic ose icio, y con una in e az ipo Rep esen a ional S a e T ans e REST (REST) que ga an iza la mayo accesibilidad po pa e de las posibles pla a o mas so wa e que se deseen u iliza como clien e, middlewa e, e c. 3exp esado en una consul a ipo SQL, supond ía iguala el alo a odas las columnas, con el consiguien e e o que supone que el núme o de columnas sea inde inido. Más adelan e e emos como se ha esuel o (5.1.1). 21 22 4 Desa ollo del p oyec o E e y hing should be made as simple as possible, bu no simple . Albe Eins ein Desde un p ime momen o se pensó usa me odologías ágiles pa a el desa ollo de es e p oyec o, las cuales uncionan bien con equipos pequeños/medianos, no malmen e. Se ba a- ja on algunas de ellas, como p.ej.: Lean,Sc um,Ex eme P og amming, Desa ollo en Espi al o TDD. Como ninguna de ellas encaja ía exac amen e con la dinámica de es e abajo al se un TFG indi idual, se ha op ado po una me odología híb ida de és as, cogiendo lo más p ác ico de cada una. 4.1. Me odología Como ya se ha comen ado, la me odología se ha basado en las me odologías ágiles más u ilizadas, que ienen como común denominado el desa ollo del p oyec o en ciclos co os e i e a i os, es ableciendo, en nues o caso, una en ana de iempo de una semana, ya que se de inie on euniones semanales con los u o es de es e TFG1. En cada i e ación se han lle ado a cabo una se ie de a eas: Análisis de nue as uncionalidades. Diseño de una ba e ía de es , o modi icación de la an e io , pa a comp oba que e ec i amen e se inco po an dichas uncionalidades. Implemen ación del código de mejo a. E aluación de es y comp obación de la ce canía al obje i o. En caso de no habe alcanzado el obje i o, epe i odo el p oceso comple o. En la e aluación de los esul ados, se comp ueba si se ha conseguido el esul ado obje i o: una he amien a que se adecúe al caso de uso (3.2) que cub a las necesidades de c uce de da os de los usua ios inales de la he amien a desa ollada pa a que puedan in eg a la en sus p opias aplicaciones. Pa a supe isa el p oceso comple o, se cuen a con los u o es del TFG, que a su ez son miemb os del g upo de in es igación Khaos; que en e minología Sc um se ían los P oduc Owne s. Además, como desa ollado p incipal y único, el au o del TFG. 1p.ej.: en el caso de Sc um dicha en ana de iempo se denomina sp in s y es de dos semanas de du ación. 23 4.2. Análisis En es a p ime a e apa, se pa e de los an eceden es del caso de uso (3.2), en la que enemos la ABox de una on ología ma e ializada en una pa ición de Cassand a, compues a po las ablas c 110 yc 111, de o ma que necesi amos hace consul as de es ipos, que exp esadas de o ma algeb aica se ían: 1. ΠA1,..,An(σP(c 110 ./ c 111)) 2. ΠA1,..,An(σP(c 111 ./ c 111)) 3. ΠA1,..,An(σP(c 111 ./ c 110)) También en algunos casos hab á que ealiza ope aciones pa a enomb a campos. Tan o las ope aciones de selección σ, de p oyección Π, como de enomb ado de campos ρ(2.2) es posible ealiza las con el lenguaje de consul a CQL, pe o no así la ope ación na u al join, al no se una ca ac e ís ica de Apache Cassand a (2.3). 4.2.1. Análisis de equisi os En la eunión p elimina pa a la ealización del TFG, el enca go que se aco dó ue pode ealiza ope aciones ipo join sob e la ABox de una on ología ma e ializada, cuya es uc u a se explica en el a ículo [RARGAM17] ealizado po a ios miemb os del g upo de in es igación Khaos, g upo donde se abaja en a ios p oyec os, con di e sas ecnologías y u ilizando a ios lenguajes, es ando en e ellos: Ja a,Py hon yScala. La idea de desa olla una aplicación en Apache Spa k (2.4) su gió de la expe iencia en o os p oyec os de in es igación, de los que des aca como una pla a o ma de análisis de p opósi o gene al al amen e escalable y lexible, además de o as muchas ca ac e ís icas: 1. Código Abie o man enido po la Apache Founda ion. 2. Va ios lenguajes sopo ados. 3. P oyec o madu o. 4. G an comunidad de usua ios. 5. Buena documen ación en línea. 6. U ilidades en In e ne de licencia lib e y con código abie o. 7. Spa kSQL: un módulo de Apache Spa k pa a abaja con da os es uc u ados, y con una sin áxis que ecue da a SQL. Se decidió en onces ealiza una ba e ía de es pa a e i ica si e a ac ible aplica Spa k pa a esol e el p oblema. Se acue da ealiza euniones semanales e i iendo el p og eso2. 2pa a hace i e aciones ápidas se decide que sean semanales, eniendo en cuen a que no hay un equipo como al que coo dina . 24 4.2.2. Ba e ía de Tes Iniciales Es a ba e ía de es se p opuso en a ias euniones con los P oduc Owne s, con el obje i o de analiza la iabilidad de la solución a desa olla . A medida que se iban consiguiendo los p opues os en la i e ación an e io , se p oponían nue os a modo de sp in semanal: 1. P ime a I e ación Ejemplo 1: Ca ga da os en ablas de Cassand a. •C ea una abla con la es uc u a de da os a ca ga . •Gua da da os desde un iche o CSV en la abla c eada. Es e ejemplo no iene que usa Spa k necesa iamen e, los da os pueden ca ga se median e cualquie medio, dado que el p oduc o inal no iene en p incipio po qué ca ga da os. Ejemplo 2: Cap u a da os en un RDD en Spa k y hace alguna ans o mación. •Localiza la abla ca gada en el Ejemplo 1. •Ca ga el con enido de la abla en un RDD. •Hace un ejemplo de ag upación de da os sob e el RDD del pun o an e io (p.ej.: un con eo de algún da o de e minado). Ejemplo 3: Hace una ope ación Join sob e un RDD y gua da los da os de nue o en Cassand a. •Hace una Union de dos RDD. •Hace una cálculo sob e el nue o RDD. •C uza lo (join) con o o RDD ob eniendo un RDD esul ado. •C ea una abla des ino con la misma es uc u a que el RDD esul ado. •Gua da los da os en la abla de Cassand a c eada pa a al in. 2. Segunda I e ación Da ase Join 013. Ejemplo en Scala de la unión de dos da ase s desde Cassand a po una columna común. •Recupe a desde Cassand a dos da ase s de sendas ablas con una columna común. •Unión Na u al de dos da ase s igualando los da os de las columnas en común (inne join). Da ase Join 02. Ejemplo en Scala de como uni dos conjun os de da os y g aba el esul ado en Cassand a, en una abla no p e-exis en e. •Recupe a desde Cassand a dos da ase s de sendas ablas con una columna común. 3En es e caso, usamos la es uc u a de da os de al o ni el de Spa k, solo disponible a pa i de la e sión 2.0, y cuya es uc u a es abula , asemejándose así a las ope aciones de las bases de da os elacionales 25 •Uni los dos da ase s po una columna en común. •C ea una abla con una es uc u a conco dan e con el da ase esul ado. •Sal a los da os c uzados en la nue a abla. Da ase Join 03. Realiza un ejemplo simila al an e io , pe o es a ez usando la biblio eca pa a Py hon: pyspa k, w appe pa a la in e az PySpa k (módulo de Spa k). De o ma que las ope aciones se ealicen en un sc ip independien e, sin depende de la he amien a Spa k Shell. •Recupe a desde Cassand a dos ablas en sendos da ase s. •Unión Na u al il ando po una columna común. •Gua da el esul ado de nue o en Cassand a. •T ans o ma el esul ado en un o ma o de in a cambio de da os, que sea se ializable, como p.ej. JSON. En o no de desa ollo Se ha c eado un eposi o io en Gi hub con los pasos conc e os a modo de guía, que pueda se usado po cualquie desa ollado que quie a eplica los ejemplos [10]. El p ime paso pa a pode desa olla los es , es la pues a a pun o de un en o no de desa ollo adecuado con el que pode abaja . Se necesi a mon a sob e el sis ema ope a i o, en es e caso Ubun u (A), el mo o de bases de da os de Cassand a, Apache Spa k y el Conec o Spa k-Cassand a (2.5). Además, hay que ins ala las dependencias [11]. Pa a los ejemplos se usa á an o Scala como Py hon, así como biblio ecas y u ilidades. Desa ollo de los ejemplos. Pa a lle a a cabo es a p ime a i e ación de p uebas, y que pudie an e se esul ados angibles, se ha ca gado una se ie de da os de p ueba en a ias ablas, siendo el modelo muy simila a cualquie modelo de da os de una base de da os elacional. Conc e amen e en el Ejemplo 1 de la ba e ía de es , es en el que hemos ealizado es a a ea, con dos sc ip s en Py hon (sin u iliza Spa k). Se ha u ilizado un he amien a llamada Mocka oo [34] pa a gene a da os ic icios y pode abaja con ellos en los ejemplos4. Se ha lle ado a cabo median e dos sc ip s en código Py hon: •Ejemplo 1 ◦mock_da a: Da os de ejemplo de pe sonas, con da os ic icios5. ◦mock_ca s: Da os ic icios de coches cuyo dueño es a ep esen ado po un egis o del conjun o mock_da a6. 4es una he amien a con un modelo de negocio eemium, donde en la pa e g a ui a hay una limi ación de 2K egis os. En es e TFG se han usado algunos conjun os de da os de 4K egis os, gene ando dos conjun os de da os con dicha he amien a y uniéndolos. 5h p://bi .ly/py-upload-da a 6h p://bi .ly/py-upload-ca s 26 Hay a ias o mas de ejecu a código en Spa k, una de ellas usando Spa k Shell, que es una he amien a de línea de comandos, donde se an ing esando comandos en len- guaje Scala, siendo és os in e p e ados uno a uno. En p incipio usamos es a ía pa a amilia iza nos con los comandos, la con igu ación del en o no, la ca ga de un RDD e i p obando ans o maciones y acciones. Du an e el desa ollo de la ba e ía de es , se ha c eado un eposi o io de Gi hub con una desc ipción de allada de dichos ejemplos, de cuyas en adas se pone la e e encia: •Ejemplo 2 [7]. •Ejemplo 3 [8]. O a ía pa a la ejecución de sc ip s en Spa k, es usando la he amien a spa k-submi , compilando la aplicación en Scala median e, po ejemplo, sb ([11]). Po es a ía, además de los ejemplos 2 y 3, podemos ejecu a los siguien es ejemplos de la ba e ía de es iniciales: •Da ase Join 01 [4]. •Da ase Join 02 [5]. Po úl imo, hemos explo ado el uso de la biblio eca pyspa k pa a Py hon, ya que podemos in eg a el código de análisis de da os en cualquie p og ama Py hon. Es a opción es la que nos ace ca mejo a los obje i os del TFG. Es a ía se ha desa ollado en el úl imo es de la ba e ía. •Da ase Join 03 [6]. Conclusiones de los es . Una ez concluidos los es , se llega a la conclusión de que se han alcanzado los obje i os iniciales pa a pode elabo a una he amien a basada en las ecnologías explo adas. En el es inal se han ejecu ado ope aciones pa ecidas a lo que se quie e consegui , usando un sc ip en Py hon, que puede se in eg ado en una aplicación que siga la a qui ec u a p opues a po es e abajo. Es deci , se concluye que se puede desa olla un mic ose icio ipo REST que in e ac úe con Spa k y Cassand a, usando la in e az de al o ni el de Spa k, llamada Da ase , pa a llega a cumpli los obje i os del TFG. De es a o ma podemos desacopla la pla a o ma, y el lenguaje con el que se desa olla, de la pla a o ma en la que se desa olle la aplicación inal (aplicación, middlewa e, e c.). 4.3. Diseño La e apa de diseño se ha comple ado con la suma de odas las e apas de diseño den o del p oceso i e a i o: análisis, diseño e implemen ación. Se ha di idido en dos subsis emas, cada uno de ellos con un p opósi o di e enciado: 27 34 5 Mic ose icio Apollo Hous on, T anquili y Base he e. The Eagle has landed. Neil A ms ong Es e capí ulo es á dedicado exclusi amen e a uno de los en egables de es e TFG, y aunque de él se ha comen ado en capí ulos an e io es, aquí se ecogen de o ma ag upada los aspec os más écnicos. Como ya se ha comen ado, Apollo in eg a una API ipo REST pa a desacopla la imple- men ación del clien e, que puede es a implemen ada en cualquie pla a o ma, y cualquie lenguaje, siemp e que pueda in e comunica se u ilizando el p o ocolo HTTP, usando e bos GET y POST, y u ilizando JSON como o ma o de in e cambio de da os, an o en la llamada como en la in e p e ación de la espues a. // Apollo endpoin :/ abou { " api_name ":" Apollo ", "au ho _email":"juanan onioaguila @gmail.com", "au ho _name":" Juan A . Aguila - Jimenez ", "documen a ion":"h p:// jasse 75.gi hub.io/apollo", "license":"Apache 2.0", "p ojec _ eposi o y":" h ps :// gi hub . com/ jasse 75/apollo.gi hub", " e sion":1.0 } Código 5.1: Respues a JSON: Ace ca de Apollo API 5.1. In e az La in e az es á desc i a an o en la documen ación [2], donde podemos e una guía de uso pa a el desa ollado , como a a és del lenguaje de desc ipción API Bluep in en un iche o en el CD-ROM que acompaña a es a memo ia, disponible ambién online [12]. Se añaden a pa i de aquí algunos pun os que cabe des aca . 5.1.1. Ge Table /ge - able endpoin 35 Es una unción p imi i a de la he amien a, ya que las ope aciones de join y de union ne- cesi an de las acciones a bajo ni el de es a ope ación. Pe mi e ealiza es de las ope aciones básicas del álgeb a elacional (2.2): P oyección, Selección y Renomb ado. // Apollo endpoin :/ge - able { " keyspace ":" examples ", " ablename ":" mock_da a " , " selec " :[{"id":"key"}," i s _name "," las _name "," email " ,"age",{" language ":" mo he _ ongue "}], " calcula ed ":{ "age":" ound ( mon hs_be ween ( cu en _da e () ,bi h_da e )/12,0)" }, " il e " :" email like " % elo % "", " so by " :[ {" gende " :"asc"}, {" i s _name ":" asc"} ], "o ien _ esul s":" eco ds" } Código 5.2: Ejemplo de llamada: Ge Table, Apollo API En [Código 5.2] enemos un ejemplo de cómo consul a egis os con una p oyección de de e minadas columnas y enomb ándolas en el esul ado. También se u iliza un campo calculado en el que se usa una exp esión de Spa k SQL pa a calcula la edad en unción de la echa de nacimien o. Hay ambién una decla ación de o denación po los campos gende y i s _name. Además, se ealiza una selección de ilas ( il o) en unción de una subcadena de la columna email1, conc e amen e se seleccionan odos los egis os donde el email con enga la cadena elo. En [Código 5.3] podemos e el esul ado. S acked . O a opción cla e en la ope ación ge able, puede e se en [Código 5.4] y que pe mi e pi o a de una es uc u a o ien ada a columna, a una o ien ada a ilas. Dicha opción, es especialmen e impo an e pa a el caso de uso (3.2), ya que en él se maneja una es uc u a de da os donde una cla e es á inculada con un núme o inde e minado de columnas; es deci , un p edicado semán ico puede ene inde inidos suje os e inde inidos p edicados. En dicha es uc u a, se ía muy complejo hace un join al desconoce se el núme o exac o de columnas. Po an o, se ans o ma a una es uc u a con un núme o a iable de ilas y ijo de columnas, en la cual no se necesi a conoce el núme o exac o de ilas en el momen o de hace los c uces de da os, dada la na u aleza in ínseca de la ope ación join (2.2.3). Es po ello que se hace la ci ada ans o mación, de column-o ien ed a ow-o ien ed. Pa a pode hace esa ans o mación, se añade el campo owid, iden i icando así los alo es de la ‘misma ila’. Adicionalmen e, podemos necesi a añadi un campo a la clus e ing key pa a iden i ica alo es elacionados, p.e. num, que se ía ambién, po an o, pa e de la p ima y key. 1usando los da os de ejemplo de inidos en la documen ación [10] 36 // Response 200 OK. ... "da a ":[ { "age":31.0, " email ":" upelon@google .pl ", " i s _name ":" Ronna ", "key":887, " las _name ":" Rupel ", "mo he _ ongue":" Ko ean " }, { "age":48.0, " email ":" c obelow 3d@who . in ", " i s _name ":"Conway", "key":121, " las _name ":"Robelow", "mo he _ ongue":" Tsonga " }, { "age":57.0, " email ":" ncolg a elo@np . o g ", " i s _name ":" No by ", "key":780, " las _name ":" Colg a e ", "mo he _ ongue":" Tajik " } ], ... Código 5.3: Ejemplo de esul ados: Ge Table, Apollo API // Apollo endpoin :/ abou // -- S acked op ion ... "s acked":{ "au o ": alse, " s a egy ":" double - alue " , " s ack_p_key ":[" key"], " s ack_c_key ":[" num"], " s ack_pai ":" owid ", "s ack_column":" alue ", " il e _ ield":" num", " il e _le _ alue":1, " il e _ igh _ alue":2 } ... Código 5.4: Ge Table, Apollo API, opción s acked. 37 Ejemplo de da os: key num column1 column2 column3 i s Name 1 Picasso Rodin Velazquez i s Name 2 Pablo Augus e Diego Fields explained: •au o, si es alse,s ack_p_key es obliga o io, además s ack_c_key se necesi a ía solamen e pa a "s a egy": "single- alue". •s a egy, dos posibilidades: ◦single- alue: se hace la ans o mación de las columnas de da os a ilas, y pa a iden i ica alo es elacionados en una misma ila de la abla o iginal, se añade un campo owid con un alo único, p.e. UUID. key owid num alue i s Name 544ca336-2d9c-36bb-8433-17371498d2 e 1 Picasso i s Name 544ca336-2d9c-36bb-8433-17371498d2 e 2 Pablo i s Name 1c25492-21b1-314a-8218-75da2d4e8 bd 1 Rodin i s Name 1c25492-21b1-314a-8218-75da2d4e8 bd 2 Augus e i s Name 1c25492-21b1-314a-8218-1608134e5815 1 Velazquez i s Name 1c25492-21b1-314a-8218-1608134e5815 2 Diego ◦double- alue: pa a asocia los dos alo es de da os que o man un pa . A ca- da alo de la misma columna se le asocia un código UUID pa a iden i ica lo uní ocamen e, y se cogen dos conjun os de da os: el de la izquie da, il ando la clus e ing key po el alo il e _le _ alue; el de la de echa, il ando po el alo il e _ igh _ alue; se hace un join de los dos conjun os de da os, omando como c i e io de compa ación la pa i ion key más el campo owid. key owid alue1 alue2 i s Name 544ca336-2d9c-36bb-8433-17371498d2 e Picasso Pablo i s Name 1c25492-21b1-314a-8218-75da2d4e8 bd Rodin Augus e i s Name 1c25492-21b1-314a-8218-1608134e5815 Velazquez Diego •s ack_p_key es la lis a de campos que o man pa e de la pa i ion key. •s ack_c_key, lis a de campos de la clus e ing key, que jun o a la pa i ion key o man la p ima y key de la abla. •s ack_pai es el nomb e que se le da a un campo au ogene ado, po de ec o owid, que iden i ica alo es ubicados en la misma columna con la misma cla e de la abla o iginal. Se á ambién pa e de la clus e ing key de la abla. • il e _le _ alue y il e _ igh _ alue, pa áme os de con igu ación nece- sa ios en un escena io de es a egia double- alue donde se u ilizan pa a hace la ans o mación de columnas de da os a ilas. 38 // Apollo endpoin :/ c ea e - able { " keyspace ":"examples_bis", " ablename ":" new_ able_ 2", "columns":[ { " db_ ield ":"key_1", "db_ ype":"In ege ", "pa i ion_key":" ue " }, { " db_ ield ":"key_2", "db_ ype":"In ege ", "pa i ion_key":" ue " }, { " db_ ield ":" i s _name ", "db_ ype":" Tex ", " p ima y_key ":" ue " }, { " db_ ield ":" las _name ", "db_ ype":" Tex ", " p ima y_key ":" ue " }, { " db_ ield ":" age ", "db_ ype":"In ege " } ] } Código 5.5: Ejemplo de llamada: C ea e Table, Apollo API 5.1.2. C ea e Table /c ea e- able endpoin Aunque no es indispensable pa a es e TFG, en el que las ablas de da os a analiza son p e-exis en es. Sin emba go, in e esa pode c ea nue as ablas donde gua da esul ados ob enidos de o as ope aciones y así pode usa los como base en pos e io es análisis. En [Código 5.5] podemos e un ejemplo de c eación de una abla, donde enemos una pa i ion key compues a po dos campos, que jun o a o os dos campos o man la p ima y key2. 5.1.3. Join /join endpoin Es a ope ación, quizás la que da sen ido a es e p oyec o ya que suple la ca encia de Cassand a pa a c uce de da os, implemen a la Unión Na u al del álgeb a elacional (2.2). 2en Apache Cassand a (2.3) el p ime campo co esponde a la pa i ion key, es deci , en qué nodo se almacena á el da o, pudiendo se una pa i ion key compues a po a ios campos. El es o de campos de inidos como p ima y key componen la clus e ing key que de ine cómo se o denan los egis os den o de la pa ición 39 // Apollo endpoin :/join { // join in e no " join_a " :{ " able_a":{ " keyspace ":" examples ", " ablename ":" mock_da a ", " join_key ":[" id_people "], " selec " :[{"id":" id_people "},{" i s _name ":" name "}," las _name "," email " ,"gende "," d inke "] }, " able_b":{ " keyspace ":" examples ", " ablename ":" mock_ca s ", " join_key ":[" id_owne "], " selec " :["ca _id"] }, " join_key ":[" id_people ","ca _id"], " join - ype ":" inne " // de aul }, " able_b":{ " keyspace ":" examples ", " ablename ":"ca s_owned_by_d inke s", " join_key ":["id",{"ca _id":"ca _id_2"}], " selec " :[" ca _make "," ca _model "] }, " selec " :[" id_people "," name","ca _id"," ca _make "], "join - ype":" inne " // de aul } Código 5.6: Join,Apollo API Es un ope ado bina io donde los ope andos pueden ene una es uc u a ecu si a, de o ma que desencadena á an as ope aciones como ni eles de ecu sión se de inan. Los ope andos pueden se de dos ipos, una abla o la desc ipción de una ope ación. Es a desc ipción admi e una Unión Na u al (join) o la Unión de conjun os del álgeb a elacional (2.2). De o ma que exis en nue e posibilidades: Join able_a ./ able_b able_a ./ join_b able_a ./ union_b join_a ./ able_b join_a ./ join_b join_a ./ union_b union_a ./ able_b union_a ./ join_b union_a ./ union_b En el ejemplo, en [Código 5.6] podemos e un join ‘mul iple’, donde la desc ipción más ex e na iene como pa áme os join_a y able_b, lo que signi ica que se ha á el join in e no, 40 en el que se desc iben dos nue as ablas, y el esul ado se c uza á con able_b pa a gene a el esul ado inal. 5.1.4. Union /union endpoin Es a ope ación implemen a la unión desc i a po el álgeb a elacional (2.2), donde dados dos conjun os de da os, el conjun o de da os esul ado con iene las ilas de ambos [ ig. 2.3]. La ope ación se desc ibe con un obje o JSON, que cons a de dos ope ado es. Cada uno de ellos puede se una ope ado ecu si o que equie a de la ejecución de o as ope aciones básicas. Unión able_a ∪ able_b able_a ∪join_b able_a ∪union_b join_a ∪ able_b join_a ∪join_b join_a ∪union_b union_a ∪ able_b union_a ∪join_b union_a ∪union_b Además ambién admi e pa áme os pa a modi ica el esul ado o pa a indica cuál es la join_key. Más in o mación puede e se en la documen ación en linea ([2]). 5.2. De alles de Implemen ación 5.2.1. in e az bow Es e módulo del p oyec o es el que implemen a la in e az REST. Llamado así po el dios Apollo de la mi ología g iega, conocido ambién como “el a que o” o “el cazado ”. Es á implemen ado sob e Flask, un amewo k de Py hon que nos pe mi e de ini los endpoin s, bien sea GET o POST, en los que se ecoge un documen o JSON con los pa áme- os de la llamada. Una ez pa seados dichos pa áme os, se in oca a una se ie de unciones in e nas y de biblio ecas p opias que abajan an o con los da os como con las in e aces sob e Spa k o con a Cassand a en algunos casos. 5.2.2. biblio eca admix Se ha denominado así po se una mezcla de uncionalidades, en e las cuales es á la de ob ene in o mación sob e las p opias es uc u as de Cassand a ( ablas, keyspaces, e c.), como pa a in oca las unciones del d i e de Cassand a (2.3), o pa a c ea nue as ablas. La documen ación sob e es a biblio eca puede consul a se online [3]. 41 5.2.3. biblio eca qui e Es e es el co e del p oyec o. Pe mi e in e ac ua con Apache Spa k, haciendo posible la compu ación de los da os desde Cassand a. El nomb e de qui e , del é mino que signi ica en cas ellano “ca caj”, además de o as acepciones, que es el ins umen o donde se gua dan las lechas; haciendo una e e encia, una ez más al dios Apolo, “el a que o”. En (5.7) puede e se un ozo de código que ealiza una unción especialmen e in e esan e: la pa e en la que se ans o ma un Da aF ame de Spa k en un RDD pa a pode ans o ma , a su ez, las columnas de da os en ilas. Usado en la implemen ación de la opción s acked de ge _ able y que es cla e pa a ealiza la unión na u al en e conjun os de da os con un núme o de columnas inde e minado (5.1.1). Pos e io men e se uel e a con e i en Da aF ame pa a pode hace join a al o ni el, con una sin axis mucho más cla a. La documen ación sob e es a biblio eca puede consul a se online [3]. 42 de _map_s ack ( h_ ow , s ack_p_key , p ima y_key ): """ Con e s one ow ’s column in o new ows , keeping o iginal keys in all ows , and adds new unique iden i ie in o de o iden i y ela ed columns """ columns = {} # uuid seed s ack_p_key_ alue = {} # common elemen s o idx , key in enume a e ( p ima y_key ): i key in s ack_p_key : s ack_p_key_ alue [ key ] = h_ ow [ idx ] columns [ key ] = _ im_s ( h_ ow [ idx ]) # s ack elemen s e u n [ Row( ** columns , # qui e _pai is a hash alue o elemen s (columns ) o he same key and column posi ion # om he o iginal da ase , so i mus be pa o he key o join associa ed elemen s # o he p e ious da ase ’s key plus column index qui e _pai _=s (uuid3(NAMESPACE_URL , ’ {} _{} ’. o ma (s (s ack_p_key_ alue), indx ))) , # di e en column alues qui e _column_= al ) o indx , al in enume a e ( h_ ow [ len( p ima y_key ) :]) # i e a es o e da a columns ] ... # s ack main pa dd = da ase . dd . la Map ( lambda ow: _map_s ack ( ow , s ack_p_key , p ima y_key ) ) # enames in e nal names o de ini i e names d _s acked = _ ename_column ( _ ename_column( spa k . c ea eDa aF ame ( dd) , _pai , s ack_pai ), _column , s ack_column ) ... Código 5.7: Implemen ación de con e sión de ilas a columnas: s ack 43 Figu a 6.5: Daphne Caso de Uso - Tes 03 - Apollo Que y. { "_apollo_que y":{ " selec " :[ "_m" ], " able_a":{ " _ bles " :[ "_m" ], " selec " :[ { " column " :"_m" } ], " il e " :"key = " h p :// khaos . uma. es / On ologies / a is s . owl# museum " and column is no null ", " join_key ":[ "_m" ], "o ien _ esul s":" eco ds", " keyspace ":" dbowl 2", " ablename ":"c 110", "s acked":{ "au o ": ue, " s a egy ":" single - alue " , " s ack_p_key ":[ "key" ], " s ack_pai ":" owid ", "s ack_column":" column " } }, " able_b":{ " _ bles " :[ "_m" ], 50 " selec " :[ "column2", { "column1":" _m" } ], " il e " :"key = " h p :// khaos . uma. es / On ologies / a is s . owl# loca edIn " and column1is no null and column 2= " h p:// khaos . uma. es / On ologies / a is s . owl # mad id "", " join_key ":[ "_m" ], "o ien _ esul s":" eco ds", " keyspace ":" dbowl 2", " ablename ":"c 111", "s acked":{ "au o ": alse, " s a egy ":" double - alue " , " s ack_p_key ":[ "key" ], " s ack_c_key ":[ "num" ], " s ack_pai ":" owid ", "s ack_column":" column ", " il e _ ield":" num", " il e _le _ alue":1, " il e _ igh _ alue":2 } }, "join_a":{}, "join_b":{}, "o ien _ esul s":" eco ds", " _ iples ":[ { "subjec ":"?m", " p edica e ":"h p:// khaos . uma .es/ On ologies / a is . owl/ ype ", "objec ":"h p:// khaos . uma .es/ On ologies / a is s . owl# museum " }, { "subjec ":"?m", " p edica e ":"h p:// khaos . uma. es/ On ologies / a is s . owl# loca edIn ", "objec ":"h p:// khaos . uma .es/ On ologies / a is s . owl# mad id " } ], " join_key ":[] }, " _que yType ":"selec ", "_apollo_u l":"h p:// localhos :5000/ join " } Código 6.6: Consul a Apollo Que y - Caso de Uso - Tes 01 El subsis ema es uno de los p oduc os en egables de es e TFG, podemos encon a lo en $CD-ROM$/daphne/daphne-ms , disponible ambién online [12] 6.2.2. Clien e daphne-web En [ ig. 6.1] enemos como en idad gené ica “App”, que ep esen a cualquie clien e o middlewa e que u ilice al sis ema Apollo pa a c uza da os desde Cassand a. También se ha desa ollado una implemen ación de un clien e Web que pe mi e ejecu a los ejemplos 51 Figu a 6.6: Daphne Caso de Uso - Tes 01 - Clien e Web Resul ados. de la ba e ía de es (6.1) desde una in e az g á ica. Hemos denominado daphne-web a la aplicación pa a dis ingui la del mic ose icio daphne-ms (6.2.1). Es á implemen ada usando Angula , amewo k Ja asc ip de g an p oduc i idad. La implemen ación ealizada explo a a ios pun os ue es de es e amewo k, que pe mi e in e ac ua con APIs ipo REST (A). En pa icula desde daphne-web se in oca an o a daphne-ms como a Apollo median e sendos Se icios de Angula , des inados a in e ac ua con se icios emo os. En dicha implemen ación, se ha u ilizado el pa ón de diseño Obse - able, donde los se icios son obse ados po los componen es que consumen los da os de las espues as de los Se icios. En las igu as: [ ig. 6.6],[ ig. 6.7] y[ ig. 6.8] podemos e el pan allazo de la ejecución cada unos de los es de la ba e ía de es p opues a, lanzados desde daphne-web. El subsis ema es uno de los p oduc os en egables de es e TFG, podemos encon a lo en $CD-ROM$/daphne/daphne-web, disponible ambién online [12] 52 Figu a 6.7: Daphne Caso de Uso - Tes 02 - Clien e Web Resul ados. Figu a 6.8: Daphne Caso de Uso - Tes 03 - Clien e Web Resul ados. 53 54 7 Conclusiones y abajos u u os I you pu you mind o i , you could accomplish any hing. D . Emme B own El obje i o p incipal de es e TFG de pode ealiza ope aciones ipo join pa a c uce de uen es de da os desde Apache Cassand a (2.3) u ilizando écnicas escalables, se ha cumplido. Pa a ello se ha u ilizado una pla a o ma so wa e ho izon almen e escalable como es Apache Spa k (2.4). Más allá de es e obje i o, se ha conseguido c ea una he amien a gené ica, sin conocimien o p e io del modelo de da os al que debe a aca , de o ma que no se con amina la lógica implemen ada con la aplicación a un caso de uso conc e o. También se ha conseguido aplica a un caso de uso conc e o (3.2), de un p oblema eal en el que se necesi a un ipo de he amien a como és a y que ue la base pa a la idea del TFG. Se ha ealizado una adap ación de la he amien a gené ica, Apollo (5), al caso de uso, que pe mi e ejecu a consul as SPARQL. Adap ación hecha u ilizando o a he amien a especí ica: daphne-ms (6.2.1), que nos pe mi e ans o ma las consul as SPARQL a consul as en o ma o Apollo Que y (5). Además, se ha implemen ado una aplicación Web, accesible desde un na egado , que p o ee de una in e az g á ica y que comunica con ambos mic ose icios, an o el especí ico como el gené ico, pa a ob ene los esul ados del c uce de da os desde la base de da os Apache Cassand a. 7.1. En egables Los p oduc os en egables de es e TFG, podemos encon a los en el CD-ROM que acom- paña es a memo ia, y ambién online [12]. Halla emos los eposi o ios Gi , po lo que se puede accede a odo el código uen e, así como al his ó ico de e siones du an e el p oceso de desa ollo. $CD-ROM$/apollo $CD-ROM$/daphne/daphne-ms $CD-ROM$/daphne/daphne-web $CD-ROM$/dbowl1 1en es a ca pe a podemos encon a la base de da os del caso de uso de la Web semán ica y un sc ip pa a c ea an o la es uc u a de da os como los da os pa a pode ep oduci los ejemplos. 55 7.2. T abajos Fu u os En el desa ollo de es e TFG se han sen ado las bases, se ha desa ollado una he a- mien a escalable, pe o más allá de las p uebas uncionales y de la p ueba en un en o no de desa ollo con un único nodo pa a cada pla a o ma: Apache Spa k y Cassand a, no se han ealizado p uebas con g andes olúmenes de da os ni se ha hecho una p ueba de es és sob e un clus e . Se ía ambién in e esan e, ealiza p uebas de endimien o en un en o no de p oducción con a ios nodos po clus e , dando luga a posibles mejo as. En cuan o a la on ología ma e ializada (3.1.7) sob e la que se ha implemen ado el caso de uso (3.2), es una on ología ela i amen e pequeña u ilizada más a modo didác ico (3.1). Po ejemplo, hay una on ología desa ollada pa a acili a la e aluación a modo de benchma k [1], y se ía in e esan e pode hace p uebas con la e sión ma e ializada de dicha on ología en una base de da os Cassand a. Dicha ma e ialización excede del ámbi o de es e TFG y equie e de o as pe sonas pa a pode ealiza lo. Po ello, y po cues iones de iempo debido a que las ases deben es a aco adas a un calenda io y a un núme o de c édi os conc e o, no se ha ealizado a lo la go del desa ollo de es e p oyec o. 56 Apendice A Apéndice – Tecnologías u ilizadas I I ha e seen u he , i is by s anding upon he shoulde s o gian s Isaac New on A lo la go de es e abajo, se han u ilizado múl iples he amien as, pla a o mas, lenguajes y amewo ks de desa ollo en odas sus ases: an o pa a el es udio p e io, como pa a el p oceso de desa ollo p opiamen e dicho, incluso como subsis emas in eg ados en la p opia solución. Casi odas ellas de código abie o [41] o licencia g a ui a. De las es an es, se ha usado la pa e no come cial den o de un licenciamien o sha ewa e o den o de un modelo de negocio eemium. Edi o es de código •Sublime Tex , es un edi o de ex o diseñado especialmen e pa a código, capaz de esal a la sin axis de mul i ud de lenguajes an o de p og amación como de ma cado o codi icados en di e en es o ma os. Es ex ensible a a és de plugins esc i os en Py hon. Licencia sha ewa e pa a demo po iempo ilimi ado. Se ha u ilizado pa a edi a el código Py hon y Node Js de es e abajo [32]. •Visual S udio Code, edi o de Mic oso , bajo licencia MIT. Se ha u ilizado pa a el código Angula . Edi o es de ex o •Sha eLa ex, edi o online de La ex, con licencia eemium que pe mi e una cuen a pe sonal de uso g a ui o. Se ha u ilizado pa a elabo a la memo ia. Edi o es de g á icos ec o iales •Inkscape, edi o de g á icos en ec o ial (SVG, PDF), que expo a ambíen a imágenes en o ma o PNG. Licencia GNU GPL. Se ha u ilizado pa a algunas igu as de la memo ia de es e TFG. •Lib eo ice D aw, edi o de la sui e o imá ica de licencia g a ui a. Se ha u ilizado jun o con inkscape, pa a compone algunos de los g á icos de la memo ia y de la p esen ación. •d aw.io, edi o ec o ial online con mul i ud de plan illas pa a ipos de g á icos es ánda . Se ha usado pa a los diag amas UML an o de la memo ia como de la p esen ación. Lenguajes/En o nos de p og amación a •Scala, es un lenguaje uncional que ejecu a sob e la Ja a Vi ual Machine (JVM), se ha usado pa a las p ime as p uebas de análisis de es e TFG. •Py hon, además de un lenguaje in e p e ado de p og amación de p opósi o ge- ne al, es ambién como se conoce al in é p e e del lenguaje. Se ha usado pa a desa olla an o la he amien a p incipal del p oyec o Apollo (5), como pa a hace es de diseño y p uebas. •Node Js, un en o no de ejecución de Ja aSc ip o ien ado a e en os asínc onos. Se u iliza pa a sc ip s de se ido po su escalabilidad. Se ha usado pa a la he- amien a daphne-ms (6.2.1). •Ja ac ip , usado di ec amen e con Node Js, e indi ec amen e con Angula , ya que Typesc ip “ anspila” a Ja asc ip . Lenguajes de ma cado •HTML, es el lenguaje base pa a la Web. Se ha u ilizado embebido en el desa ollo de daphne-web (6.2.2), pa a cons ui las is as de los componen es de Angula y la página de inicio. •Ma kdown, es un lenguaje lige o de ma cado, que pe mi e o ma ea ex os usando una no ación muy simple. Se ha u ilizado pa a la documen ación online, ya que pla a o mas como Gi hub, pe mi en es e ipo de ma cado; pa a después, usando Gi hub Pages, ans o ma de o ma au omá ica a HTML [2] [10]. También es pa e del lenguaje de desc ipción de APIs API Bluep in pa a, p ecisamen e, gene a la pa e de documen ación. Lenguajes de Es ilo •Cascading S yle Shee (CSS), es un lenguaje de es ilos pa a p esen ación de do- cumen os HTML. U ilizado en daphne-web Lenguajes de in e cambio de da os •YAML Ain’ Ma kup Language [20] (YAML), es un lenguaje de ma cado, que se suele u iliza an o pa a se ialización, como pa a iche os de con igu ación, desc ipción de APIs. En es e abajo se ha usado pa a con igu ación en Apollo (5) y Daphne (6). •JSON, es una no ación pa a desc ipción de obje os Ja asc ip , aunque hoy en día se usa en mul i ud de en o nos ya que se ha ins au ado como es ánda de ac o pa a el in e cambio y se ialización de in o mación, sus i uyendo en muchos casos a no aciones más o males, como es el XML. En es e abajo se a u ilizado p o usamen e, an o como o ma o de llamada/ espues a de Apollo (5) y Daphne (6), como in e namen e en Daphne, como pa a iche os de con igu ación. Lenguajes de desc ipción de APIs b •Bluep in API, es un lenguaje de desc ipción de APIs, que pe mi e an o docu- men a como diseña las p uebas pa a que puedan se ejecu adas po so wa e de alidación de APIs con a la p opia API, como p.ej.: D edd [33]. Se ha usado en es e TFG an o como documen ación como pa a desc ipción de la API pa a p uebas au omá icas. Lenguajes de consul a •CQL, lenguaje de consul as de Apache Cassand a. Se ha u ilizado an o en la ase de análisis y diseño como pa a ealiza p uebas pos e io es. •SPARQL, lenguaje de consul a pa a documen os RDF. Se ha u ilizado en el clien e daphne-web (6.2.2), de o ma que se puede consul a la base de da os Cassand a, ya que daphne-ms ans o ma de es e lenguaje al o ma o de consul a de Apollo (5). Biblio ecas y d i e s •cassand a-d i e , biblio eca que pe mi e consul a y ges iona la base de da os Cassand a desde código Py hon de o ma p og amá ica. •Spa k-Cassand a Connec o [16], es una biblio eca de código abie o, bajo licencia Apache, que pe mi e in e ac ua con Cassand a, lanzado consul as con a la base de da os y ca gando en las es uc u as de da os de Spa k, como son los RDDs y Da ase s (Da aF ames en PySpa k) •Flask-Co s, es una biblio eca de unciones que pe mi e implemen a el s anda d C oss-O igin Resou ce Sha ing (CORS); los na egado es, po mo i os de segu i- dad, impiden que las aplicaciones accedan a ecu sos localizados en o o dominio di e en e si no se especi ican una se ie de encabezados HTTP pa a pode hace uso de dichos ecu sos “c uzados”. En el caso de es e abajo se ha u ilizado po que an o Apollo (5) como Daphne (6) pueden es a disponibles en di e en e dominio, o IP, o en el caso del en o no de desa ollo en di e en e pue o, po lo que equie e de es a implemen ación, que en el caso de Flask se puede hace con la ayuda de es a biblio eca. •pandas, biblio eca Py hon pa a el análisis y manipulación de da os en o ma de abla. Es una biblio eca basada en es uc u as de da os Numpy, abaja en me- mo ia y es muy lexible: puede indexa , il a , c uza da os en e ablas, ag upa da os, expo a a a ios o ma os, y un la go e cé e a de ca ac e ís icas [36]. En es e abajo se ha usado en Apollo (5) pa a ans o ma a o ma o JSON los da os desde Cassand a o desde Spa k, man eniendo la es uc u a abula . •pyspa k, biblio eca de unciones pa a Py hon, que ac úa como capa de acceso a Apache Spa k. Se ha usado en Apollo pa a in e ac ua con Spa k. •PyYAML, biblio eca de unciones pa a Py hon que pe mi e manipula da os en no ación YAML. c j Ac ónimos ABox Asse ional Box. 18–20, 24 ACID A omici y, Consis ency, Isola ion and Du abili y. 5 API Applica ion P og amming In e ace. c, d, 11, b, e, 31, 32, h, 35, 48, 52 BASE Basically A ailable, So s a e and E en ual Consis ency. 5, 11 CORS C oss-O igin Resou ce Sha ing. c CQL Cassand a Que y Language [26]. c, 1, 10, 24, n CRC Cyclic Redundancy Check. 11 CSS Cascading S yle Shee . b CSV Comma-Sepa a ed Values. i DL Lógica de Desc ipciones. 16, 18 DRY Don’ Rein en You sel . g GNU GPL GNU No Unix Gene al Public License. e HTML Hype Tex Ma kup Language. 5, 15, b HTTP Hype Tex T ans e P o ocol [13]. c, 29, g, 35 JAR Ja a ARchi e. 13 JSON Ja asc ip Objec No a ion [39]. i, c, d, 3, 5, 26, b, 29–31, g, 35, 41, 45, 46, 48 JVM Ja a Vi ual Machine. d, b NoSQL No Only SQL 2.1. 1, 2, 5, 6, 10, 19, 20 OWL Web On ology Language [40]. 1, 16, 19 RDD Resilien Dis ibu ed Da ase . c, 12, 13, 25, 27, 42 RDF Resou ce Desc ip ion F amewo k. i, c, 15, 16, 18, 19, 45 REST Rep esen a ional S a e T ans e REST. 21, 27, 29, 35, 41, 52 SPARQL SPARQL P o ocol and RDF Que y Language. c, d, 2, 3, 16, 18, 19, 30, 31, 45, 48, 55 SQL S uc u ed Que y Language. 3, 6, 8–10, 18, 21, 24, 29 TBox Te minological Box. 18–20 k TFG T abajo Fin de G ado. c, 1–3, 6, 23, 24, a, 27, e, 35, 39, 51, 53, 55, 56 URI Uni o m Resou ce Iden i ica o . 32, h W3C Wo ld Wide Web Conso ium. 15 WORM W i e Once Read Many. 5 WWW Wo ld Wide Web. 2, 15 XML eX ensible Ma kup Language. i, 5, 15, 16, b YAML YAML Ain’ Ma kup Language [20]. i, c, b l Re e encias [1] Swa p ojec s - he lehigh uni e si y benchma k (lubm). [h p://swa .cse.lehigh. edu/p ojec s/lubm/ — accedido: 2018-04-19]. [2] Juan A. Aguila -Jiménez. Apollo documen a ion. [h ps://jasse 75.gi hub.io/ apollo/ — accedido: 2018-04-04]. [3] Juan A. Aguila -Jiménez. Apollo eposi o y. [h ps://gi hub.com/jasse 75/apollo — accedido: 2018-04-04]. [4] Juan A. Aguila -Jiménez. Da ase join 01 example. [h ps://jasse 75.gi hub.io/ Spa k-Cassand a-No es/Examples/da ase -join-01.h ml — accedido: 2018-03-22]. [5] Juan A. Aguila -Jiménez. Da ase join 02 example. [h ps://jasse 75.gi hub.io/ Spa k-Cassand a-No es/Examples/da ase -join-02.h ml — accedido: 2018-03-22]. [6] Juan A. Aguila -Jiménez. Da ase join 03 example. [h ps://jasse 75.gi hub.io/ Spa k-Cassand a-No es/Examples/da ase -join-03.h ml — accedido: 2018-03-24]. [7] Juan A. Aguila -Jiménez. Mock da a. [h ps://jasse 75.gi hub.io/ Spa k-Cassand a-No es/Examples/mock-example.h ml — accedido: 2018-03-22]. [8] Juan A. Aguila -Jiménez. Mock da a sa e. [h ps://jasse 75.gi hub.io/ Spa k-Cassand a-No es/Examples/mock-example-sa e.h ml — accedido: 2018-03- 22]. [9] Juan A. Aguila -Jiménez. Open go e nmen como ac o de la inno ación. [h ps: //www.linkedin.com/pulse/open-go e men -como- ac o -de-la-inno aci%C3% B3n-juan-an onio-aguila / — accedido: 2018-03-17]. [10] Juan A. Aguila -Jiménez. Se ing up he en i onmen . [h ps://jasse 75.gi hub. io/Spa k-Cassand a-No es/ — accedido: 2018-03-26]. [11] Juan A. Aguila -Jiménez. Se ing up he en i onmen . [h ps://jasse 75.gi hub. io/Spa k-Cassand a-No es/En i onmen .h ml — accedido: 2018-03-21]. [12] Juan A. Aguila -Jiménez. TFG CD-ROM. [h p://bi .ly/ g-cd om — accedido: 2018-06-10]]. [13] Dan Connolly. Hype ex ans e p o ocol – h p/1.1. [h ps://www.w3.o g/ P o ocols/ c2616/ c2616.h ml — accedido: 2018-03-16]. [14] Da as ax. Cql limi s. [h ps://docs.da as ax.com/en/cql/3.3/cql/cql_ e e ence/ e Limi s.h ml — accedido: 2018-03-18]. [15] Da as ax. Da as ax academy. [h ps://academy.da as ax.com/ — accedido: 2018- 03-13]. m [16] Da as ax. Spa k-cassand a connec o . [h ps://gi hub.com/da as ax/ spa k-cassand a-connec o — accedido: 2018-03-18]. [17] dbpedia.o g. DBpedia. [h p://wiki.dbpedia.o g/ — accedido: 2018-04-03]]. [18] dbpedia.o g. Vi uoso SPARQL Que y Edi o . [h p://wiki.dbpedia.o g/ — acce- dido: 2018-04-03]]. [19] G upo de In es igación Khaos. Uni e sidad de Málaga. G upo de In es igación Khaos. [h p://khaos.uma.es/es — accedido: 2018-03-10]. [20] Cla k C. E ans. YAML Ain’ Ma kup Language. [h p://yaml.o g/ — accedido: 2018-03-12]. [21] Apache So wa e Founda ion. Apache Cassand a. [h p://cassand a.apache.o g/ — accedido: 2018-03-10]. [22] Apache So wa e Founda ion. Apache cassand a documen a ion. [h p://cassand a. apache.o g/doc/la es / — accedido: 2018-03-13]. [23] Apache So wa e Founda ion. Apache hadoop: Map educe. [h p://hadoop.apache. o g/docs/s able/hadoop-map educe-clien /hadoop-map educe-clien -co e/ MapReduceTu o ial.h ml#Pu pose — accedido: 2018-03-13]. [24] Apache So wa e Founda ion. Spa k p og amming guide. [h ps://spa k.apache. o g/docs/2.2.0/ dd-p og amming-guide.h ml# dd-ope a ions — accedido: 2018- 03-18]. [25] Apache So wa e Founda ion. Spa k sql, da a ames and da ase s guide. [h ps:// spa k.apache.o g/docs/la es /sql-p og amming-guide.h ml — accedido: 2018- 03-13]. [26] Apache So wa e Founda ion. The Cassand a Que y Language CQL. [h p:// cassand a.apache.o g/doc/la es /cql/ — accedido: 2018-03-10]. [27] Ma in Fowle . Schemaless da a s uc u es. [h ps://ma in owle .com/a icles/ schemaless — accedido: 2018-03-17]. [28] Google. Angula docs. [h ps://angula .io/docs — accedido: 2018-03-13]. [29] S ack Exchange Inc. Ask ubun u. [h ps://askubun u.com/ — accedido: 2018-03-13]. [30] S ack Exchange Inc. Ask ubun u. [h p:// lask.pocoo.o g/ — accedido: 2018-03-13]. [31] Ma ía Jesús Lama ca Lapuen e. Hipe ex o – on ologías. [h p://www.hipe ex o. in o/documen os/on ologias.h m — accedido: 2018-04-13]. [32] Sublime HQ P y L d. Sublime ex edi o . [h ps://www.sublime ex .com/ — acce- dido: 2018-03-18]. n [33] Ad ián Ma ellanes. Como cons ui un API de la que us pa- d es se sien an o gullosos. [h ps://speake deck.com/ama ellanes/ como-cons ui -un-api-del-que- us-pad es-se-sien an-o gullosos — ac- cedido: 2018-03-13]. [34] Mocka oo. Random da a gene a o . [h ps://mocka oo.com/ — accedido: 2018-03-22]. [35] Mozilla. Con ol de acceso h p (co s). [h ps://de elope .mozilla.o g/es/docs/ Web/HTTP/Access_con ol_CORS — accedido: 2018-03-24]. [36] pandas. Py hon da a analysis lib a y. [h ps://pandas.pyda a.o g/ — accedido: 2018-03-18]. [37] p oyec osagiles.o g. Ejecución de la i e ación (sp in ). [h ps://p oyec osagiles. o g/ejecucion-i e acion-sp in / — accedido: 2018-03-21]. [38] uben a. Nosql: clasi icación de las bases de da os según el eo ema cap. [h ps://www.genbe ade .com/bases-de-da os/ nosql-clasi icacion-de-las-bases-de-da os-segun-el- eo ema-cap — ac- cedido: 2018-03-17]. [39] Ed T. B ay. RFC 8259: Ja asc ip Objec No a ion. [h ps://www. c-edi o .o g/ in o/ c8259 — accedido: 2018-03-12]. [40] W3C. Si io Web del W3C — Web On ology Language. [h ps://www.w3.o g/OWL/ — accedido: 2018-03-10]. [41] Wikipedia. Código Abie o — Wikipedia, The F ee Encyclopedia. [h ps://es. wikipedia.o g/wiki/C%C3%B3digo_abie o — accedido: 2018-03-12]. [42] Wikipedia. F eemium — Wikipedia, The F ee Encyclopedia. [h ps://es.wikipedia. o g/wiki/F eemium — accedido: 2018-03-12]. [43] Wikipedia. NoSQL — Wikipedia, The F ee Encyclopedia. [h ps://es.wikipedia. o g/wiki/NoSQL — accedido: 2018-03-10]. [44] Wikipedia. Álgeb a Relacional — Wikipedia, The F ee Encyclopedia. [h ps://es. wikipedia.o g/wiki/%C3%81lgeb a_ elacional — accedido: 2018-03-20]. ñ o Bibliog a ía [BLHL01] Tim Be ne s-Lee, James Hendle , and O a Lassila. The seman ic web. Scien- i ic Ame ican, 284(5):34–43, May 2001. [CNBG+16] José A. Co de o, An onio J. Neb o, C is óbal Ba ba-González, Juan J. Du- illo, José Ga cía-Nie o, Ismael Na as-Delgado, and José F. Aldana-Mon es. Dynamic Mul i-Objec i e Op imiza ion wi h jMe al and Spa k: A Case S udy. In Panos M. Pa dalos, Pie o Conca, Gio anni Giu ida, and Giusep- pe Nicosia, edi o s, Machine Lea ning, Op imiza ion, and Big Da a, pages 106–117. Sp inge In e na ional Publishing, 2016. [Cod72] E. F. Codd. Rela ional comple eness o da a base sublanguages. In Da abase Sys ems, pages 65–98. P en ice-Hall, 1972. [DSS93] Randall Da is, Howa d E. Sh obe, and Pe e Szolo i s. Wha is a knowledge ep esen a ion? AI Magazine, 14(1):17–33, 1993. [KKTC12] Vaibha Khadilka , Mu a Kan a cioglu, Bha ani Thu aisingham, and Paolo Cas agna. Jena-hbase: A dis ibu ed, scalable and e icien d iple s o e. Technical epo , 2012. [LM14] Jesús Luque Muñoz. Un azonado OWL sob e una base de da os NoSQL., Diciemb e 2014. [RARGAM17] Liudmila Reyes-Ál a ez, Ma ía del Ma Roldán-Ga cía, and José F. Aldana- Mon es. A ool o ma e ializing owl on ologies in a column-o ien ed da a- base. 2017. p