scieee Science in your language
[sp] (orig)

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

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.

Read accessible full text

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

Author: Aguilar-Jiménez, Juan Antonio
Year: 2018
Source: https://riuma.uma.es/xmlui/bitstream/10630/17059/1/Juanantonioaguilarjim%c3%a9nezMemoria.pdf
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