modelos de bases de datos relacionales y nosql para...
TRANSCRIPT
Reporte TécnicoGEMISTD201502TR201507
Modelos de Bases de Datos Relacionales yNoSQL para pruebas de Rendimiento
Giovanni Daián Róttoli, Marcelo LopezNocera & MaríaFlorencia PolloCattaneo
Grupo de Estudio de Metodologías para Ingeniería en SoftwareUniversidad Tecnológica Nacional – FRBA
Argentina
Ingeniería en Sistemas de InformaciónUniversidad Tecnológica Nacional – FRCU
Argentina
2015
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Índice1. INTRODUCCIÓN....................................................................................................3
2. CASOS DE PRUEBA...............................................................................................3Caso de Prueba 1......................................................................................................3Caso de Prueba 2......................................................................................................3Caso de Prueba 3......................................................................................................3
3. MODELOS RELACIONALES..............................................................................4
4. MODELOS DOCUMENTALES............................................................................6
5. MODELOS COLUMNARES..................................................................................8
6. MODELOS CLAVE-VALOR................................................................................11
Hoja 2 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
1. Introducción
Este documento tiene como objetivo presentar los modelos de datos tanto relacionalescomo NoSQL utilizados en procesos de experimentación para la comparación yanálisis de la eficiencia de bases de datos NoSQL al trabajar con estructuras de datosrelacionales.
2. Casos de Prueba
Fueron diseñados tres (3) casos de pruebas haciendo hincapié en las relacionales entreentidades de datos, a fin de realizar posteriores consultas que involucren operacionesJoin entre la mayoría de estas entidades. Esto permitiría evaluar el comportamiento delas bases de datos NoSQL al trabajar sobre estructuras con normalización de datos.
Caso de Prueba 1
El primer caso de estudio consiste en un conjunto de Facturas de compra dedeterminados Productos, y las relaciones de Amistad entre las Personas quecompraron dichos Productos.Para este primer escenario, se plantea la ejecución de una consulta para determinar losamigos de aquellas personas que han comprado un determinado producto antes de unafecha determinada.
Caso de Prueba 2
Posteriormente, se diseña un segundo caso de estudio, planteado en el áreahospitalaria, para persistir internaciones de pacientes, un médico encargado delmismo, cual fue la cama y habitación que se le asigna y el encargado de enfermeríadesignado a dicha habitación.La consulta planteada en esta oportunidad es aquella para determinar los enfermeros acargo de las habitaciones en las que se encuentran internados pacientes con doctores acargo que poseen determinada especialidad, antes de una fecha determinada.
Caso de Prueba 3
El tercer y último caso de estudio plantea un escenario de registro de alumnos, lainscripción de los mismos a determinadas carreras, y la designación de profesores amaterias de dichas carreras, siendo la consulta la determinación de los alumnosinscriptos a las carreras con materias dictadas por profesores designados bajodeterminado tipo de designación, y que posean un título determinado.
Hoja 3 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
A continuación, en las secciones conseguentes, se muestran los modelos relacionalesy NoSQL para resolver estos casos de estudio planteados.
3. Modelos Relacionales
Para el caso de pruebas se plantea un modelo de entidades plasmado en la figura 1,consistente en 5 entidades, y relaciones entre ellas.
Se puede apreciar en la mencionada figura que la entidad “Factura” posee unarelación con la entidad “Persona”, indicando quien fue el Cliente que realizó lacompra. A su vez, una Factura está compuesta por determinadas lineas de factura, quemuestran cual producto fue comprado mediante una relación con la entidad Producto.
Cada factura además, posee como dato la fecha de realización de dicha operación.A su vez, el modelo cuenta con una relación de Amistad, asociada a dos (2)
entidades Persona.
Fig. 1. Diagrama de entidades para el caso de pruebas Nro. 1
El Caso de Pruebas Nro. 2, fue modelado utilizando siete (7) entidades de datos,como se observa en la Figura 2. En primer lugar, se cuenta con la entidad“Internación”, asociada a un “Paciente” determinado y a un “Doctor” asignado adicha internación, poseyendo este último a su vez, una determindaa especialidad.
Por otro lado, cada internación es asignada a una cama en una habitacióndeterminada, teniendo esta última un enfermero a cargo.
Hoja 4 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Fig. 2. Diagrama de entidades para el caso de pruebas Nro. 2
Por último, el tercer Caso de Prueba fue modelado de manera relacional utilizandosiete (7) entidades, apreciables en la figura 3. En primer lugar se modela la“Inscripción” de un “Alumno” determinado a una “Carrera” determinada. EstaCarrera a su vez posee “Materias” asociadas a las cuales se le “Designan”“Profesores”. Cada “Designación” es de un tipo determinado (Titular, Ayudante dePrimera, Ayudante de Segunda, etc).
Fig. 3. Diagrama de entidades para el caso de pruebas Nro. 3
Hoja 5 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
4. Modelos Documentales
Los modelos documentales que se plantean a continuación se diseñaron en funciónde las consultas mencionadas en la sección 2 del presente documento.
Como se observa en el Texto 1, se plantean dos Colecciones de Documentos parael caso de Pruebas Nro 1. Una para almacenar documentos correspondientes a cadaProducto, y otra para almacenar información de cada Persona. A su vez, cada personatiene documentos anidados correspondientes a cada Factura, y que a su vez posee otrodocumento anidado por cada Línea de Factura, referenciando cada una de ellas a unproducto determinado.
A su vez, cada persona posee una lista de referencias a otras personas con las quemantienen relaciones de Amistad.
Producto {'_id','nombre','precio'
}
Persona {'_id','nombre','facturas' : [{
'fecha','lineas' : [{
'cantidad''unidad''producto':#ref(Producto)
}]}],'amigos': [ #ref(Persona) ]
}
Texto 1.Modelo Documental para el Caso de Pruebas 1 [PseudoJson]
Para el Caso de Pruebas Nro. 2 se plantean cuatro (4) colecciones de documentos,que se pueden apreciar en el Texto 2.
Dos de estas colecciones normalizan los datos de los doctores, los pacientes,mientras que por otro lado, una colección se dedica a almacenar documentos por cadainternación, manteniendo referencias al paciente y al médico asociado en cada caso, ya la cama correspondiente a dicha internación.
Por otro último, una colección de documentos se encarga de mantener informaciónde las habitaciones, las camas que esta posee y el encargado de la misma.
Hoja 6 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Doctor {'_id','nombre','especialidad'
}
Paciente {'_id','nombre','nacimiento'
}
Internación {'_id','ingreso','alta','paciente': #ref(Paciente),'doctor': #ref (Doctor),'cama'
}
Habitación {'_id','encargado' : {
'id','nombre'
},'camas':[{
'id','internaciones' : [#ref(Internación)]
}]}
Texto 2.Modelo Documental para el Caso de Pruebas 2 [PseudoJson]
El tercer caso de prueba fue diseñado como una única colección de documentos“Alumno” que posee información de cada uno de ellos y un documento anidado coninformación sobre las Inscripciones, los cuales a su vez anidan documentos coninformación sobre las Carreras y estos a su vez con las Materias. Estos documentosMateria anidan dentro de si Designaciones de Profesores.
Esta estructura se puede apreciar en el Texto 3.
Hoja 7 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Alumno {'legajo','nombre','fechaNac','inscripciones' : [ {
'desde','hasta','Carrera' : [ {
'nombre','cantidadSemestres','materias': [ {
'nombre','semestre','designaciones':[ {
'desde','hasta','tipo','profesor': {
'legajo','nombre','titulo'
}}]
}]}]
}]}
Texto 3.Modelo Documental para el Caso de Pruebas 3 [PseudoJson]
5. Modelos Columnares
Al igual que los modelos documentales, los modelos columnares se diseñaron enfunción de las consultas por cada caso de estudio. Estos diseños son sencillos, sinexplotar todas las características del motor de base de datos.
Los modelos estan representados como “clave” “Conjunto de columnas”, siendo→aquello marcado con el símbolo #, valores incrementales y únicos por cada registro.
Para el Caso de Pruebas 1, se modelaron 4 tablas como se muestran en el Texto 4.En la primera de ellas se guarda la información relevante sobre las personas, mientrasque en la segunda se guarda información sobre los productos. Estas dos tablas no sonútiles para la consulta.
Posteriormente, las dos tablas siguientes, guardan información sobre cada una delas compras guardando información sobre el cliente en cuestión y el productomediante números utilizados posteriormente para una referenciación mediante elcódigo del cliente, y sobre la lista de amigos de cada uno de los clientes.
Hoja 8 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Clave: 'Cliente:' + #Id_plienteColumnas:
Nombre
Clave: 'Producto:' + #Id_productoColumnas:
Nombre
Clave: 'Factura:' + #Id_compraColumnas:
#Id_cliente
Fecha
#Id_producto
Precio
Cantidad
Unidad
Clave: 'Amigos_de:' + #Id_personaColumnas:
List<#Id_persona>
Texto 4.Modelo Columnar para el Caso de Pruebas 1
El Caso de Pruebas Número 2 fue modelado según se muestra en el Texto 5,utilizando 4 tablas, siendo dos de ellas solo para mantener la información sobre elDoctor y el Paciente. Además, se utiliza una tabla para mantener registro de lasinternaciones, con columnas que guardan datos para posterior referenciación sobre lahabitación, el paciente y el doctor encargado. Una tabla dedicada a guardarinformación sobre las habitaciones, posee una lista de camas y un encargado.
El Caso de Pruebas 3 fue modelado con solo dos tablas, como se observa en elTexto 6, siendo una de ellas para mantener información de las inscripciones dealumnos a las carreras, y otra para mantener información de las designaciones dedocentes a las manterias.
Hoja 9 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Clave: 'Internación:' + #id_internaciónColumnas:
Ingreso
Alta
Cama
#id_habitación
#id_paciente
#id_doctorClave: 'Habitación:' + #id_habitaciónColumnas:
Camas = List<int>
EncargadoClave: 'Doctor:' + #id_doctorColumnas:
Nombre
EspecialidadClave: 'Paciente:' + #id_pacienteColumnas:
Nombre
Nacimiento
Texto 5.Modelo Columnar para el Caso de Pruebas 2Clave: 'Inscripcion:' + #id_inscripcionColumnas:
Legajo
Nombre
Carrera
Desde
Hasta
CantidadSemestresClave: 'Designacion:' + #id_designacionColumnas:
Materia
Carrera
Legajo
Nombre
TituloProfesor
Tipo
Desde
Hasta
Texto 6.Modelo Columnar para el Caso de Pruebas 3
Hoja 10 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
6. Modelos ClaveValor
Estos modelos estan representados de forma “clave” > conjunto de valores,siendo aquellos marcados con el símbolo #, valores únicos e incrementales, y loscorchetes simbolizan una lista de los elementos contenidos en su interior.
El caso de prueba número 1 fue diseñado según se muestra en el texto 7. En el diseño se aprecia un par para mantener información de cada producto, otro
para mantener información de cada persona, otro para mantener información sobre lafecha de realización de una factura y el cliente en cuestión, otra para mantener lacantidad de cada producto comprado en cada factura, otro par para mantener una listade facturas que compraron un deteterminado producto, y otro par clavevalor paramantener la lista de amigos de una persona.
Clave: 'Producto:' + #id_productoValor: {'nombre','precio'}
Clave: 'Persona:' + #id_personaValor: {'nombre'}
Clave: 'Factura:' + #id_facturaValor: {'fecha', #id_persona}
Clave: 'Linea:' + #id_factura + ':' + #id_productoValor: {'cantidad'}
Clave: 'Compras_de:' + #id_productoValor: [ #id_factura]
Clave: 'Amigos_de:' + #id_personaValor: [ #id_persona]
Texto 7.Modelo ClaveValor para el Caso de Pruebas 1
El modelo correspondiente al Caso de Pruebas 2 consiste en un conjunto de paresclavevalor para: mantener la información de los doctores, guardar información sobrelos pacientes, listar los doctores que corresponden a determinada especialidad, listarlas internaciones supervisadas por un determinado doctor, almacenar informaciónsobre cada internación en cuestión, determinar a que habitación pertenece cada cama,y mantener registro de los encargados de cada habitación.
Esto se detalla en el Texto 8.
Hoja 11 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Clave: 'Doctor:' + #id_doctorValor: {'nombre'}
Clave: 'Paciente:' + #id_pacienteValor: {'nombre', 'nacimiento'}
Clave: 'Especialidad:' + 'nombre'Valor: [ #id_doctor ]
Clave: 'Internaciones_de_doctor:' + '#id_doctor'Valor: [ #id_internación ]
Clave: 'Internación:' + #id_internaciónValor: {'ingreso','alta',#id_paciente,#id_doctor, #id_cama}
Clave: 'Cama:' + '#id_cama'Valor: { #id_habitación }
Clave: 'Habitación:' + '#id_habitación'Valor: { 'encargado' }
Texto 8.Modelo ClaveValor para el Caso de Pruebas 2
Por último, para el modelo Clave – Valor para el Caso de Pruebas tercero, secuenta con pares que almacenan la lista de profesores con determinado título,información referente a cada profesor, lista designaciones de un determinadoprofesor, datos de la designación en particular, incluyendo referencia a la materiadesignada, datos de las materias, datos sobre las carreras, lista de inscripciones a unadeterminada carrera, información sobre las inscripciones, y por último datos de losalumnos.
Todo esto se detalla en el texto 9.
Hoja 12 de 13
Modelos de Bases de Datos Relacionales y NoSQL para pruebas de Rendimiento
Clave: 'Titulo:' + 'nombreTitulo'Valor: [#id_profesor]
Clave: 'Profesor:' + #id_profesorValor: {'legajo', 'nombre'}
Clave: 'Designacion_de:' + #id_profesorValor: [#id_designacion]
Clave: 'Designacion:' + #id_designacionValor: ['desde', 'hasta', 'tipo', #id_materia]
Clave: 'Materia:' + #id_materiaValor: {'nombre', 'semestre', #id_carrera}
Clave: 'Carrera:' + #id_carreraValor: {'nombre', 'cantidadSemestres'}
Clave: 'InscripcionesA:' + #id_carreraValor: [#id_inscripcion]
Clave: 'Inscripcion:' + #id_inscripcionValor: {'desde', 'hasta', #id_alumno}
Clave: 'Alumno:' + #id_alumnoValor: {'legajo', 'nombre', 'fechaNac'}
Texto 9.Modelo ClaveValor para el Caso de Pruebas 3
Hoja 13 de 13