Download Programa Analítico - Departamento de Electrónica

Document related concepts

Base de datos distribuida wikipedia , lookup

NoSQL wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

MongoDB wikipedia , lookup

MySQL Cluster wikipedia , lookup

Transcript
Plan 95 Adecuado
ASIGNATURA:
BASES DE DATOS
CODIGO:
95-0412
DEPARTAMENTO:
ELECTRÓNICA
CLASE:
ELECTIVA DE
ESPECIALIDAD
ÁREA:
CONTROL
HORAS SEM.:
4 HS.
HORAS / AÑO:
64 HS.
Visión:
Observando la constante evolución de los sistemas embebidos y portátiles, cuya potencia de
procesamiento ha alcanzado lo requerido para ejecutar sistemas operativos de propósito general en
hardware de uso específico en electrónica digital, resulta necesario introducir conceptos avanzados de
almacenamiento y tratamiento de datos que formalicen conocimientos y favorezcan la consistencia,
interconexión y normalización de las estructuras de datos, tanto desde un punto de vista teórico como la
implementación de probadas buenas prácticas.
Objetivos:
Que los alumnos
Conozcan los fundamentos del almacenamiento y persistencia de datos.
Adquieran conceptos y metodologías relacionados con el diseño y modelado de datos.
Adquieran entrenamiento y experiencia en el uso de lenguajes de definición y manipulación de datos.
Integren y afirmen los conocimientos adquiridos aplicando soluciones de almacenamiento de datos al
contenido de asignaturas previas.
Programa sintético:
•
•
•
•
•
•
Conceptos básicos y arquitectura de bases de datos.
Modelo conceptual y semántico de bases de datos.
Estructuración y manipulación de datos.
Normalización y optimización del modelo de datos, modelo de objetos.
Motores de bases de datos, persistencia, concurrencia, integridad, seguridad.
Integración en sistemas embebidos.
Programa analítico:
Unidad 1: Concepto de base de datos
Modelo de datos relacional. Identificadores y relaciones. Tipos de relación.
Unidad 2: Lenguaje y modelo semántico de consultas
Modelo Semántico. Análisis de Datos. Almacenamiento de datos. Concepto de tabla, columna, fila y campo.
Tipos de datos, clasificación y tamaño. Lenguaje SQL, sintaxis. Estandarización e implementaciones. Valor
nulo. Lógica de tres valores.
Unidad 3: Diseño del modelo de datos
Modelado de arquitectura de datos. Modelo Entidad-Relación. Identificadores y atributos. Definición de
claves. Tipos de claves. Redundancia y consistencia. Normalización. Concepto Cliente-Servidor.
Unidad 4: Manipulación de datos
Consultas de lectura y escritura de datos. Actualización y eliminación en cascada. Vinculación de tablas y
campos. Tipos de vinculación. Sentencias de búsqueda y agrupamiento. Orden y paginación. Funciones
escalares y de agregación. Modelo de objetos. Mapeo objeto-relacional.
Unidad 5: Motores de bases de datos
Motores de bases de datos. Ampliación del modelo cliente-servidor. Motores embebibles en dispositivos
electrónicos. Clientes embebibles en microcontroladores y dispositivos móviles. Sistemas distribuidos.
Concurrencia de conexiones. Bloqueo de entidades. Seguridad y autorización unívoca de conexiones.
Conexión remota.
Unidad 6: Optimización
Cálculo de costo de consultas. Indexado. Escritura demorada. Transacciones. Desnormalización.
Replicación. Clustering.
Unidad 7: Bases de Datos No Relacionales
Concepto de meta-datos. Almacenamiento sin esquema predefinido. Almacenamiento de datos en forma
clave/valor. Árboles binarios. Bases de datos jerárquicas. Formato de objetos JSON y XML. Ventajas y
desventajas frente al modelo relacional.
Estrategias Metodológicas:
La asignatura tendrá un fuerte componente práctico, calculando alrededor de un 70% para realización
tanto de prácticas de clase como ejercitación remota, con el 30% restante para exposición teórica y
afirmación de conceptos. La teoría será impartida por parte del docente y se complementará con la lectura
de la bibliografía recomendada de la materia, así como de artículos de actualidad técnico-científica.
La práctica constará de trabajos prácticos vinculados con cada unidad temática. Todos ellos contarán con
una sección a realizar en clase, vinculada con los conocimientos teóricos impartidos, y otra que deberá ser
realizada para la semana siguiente. El contenido de los trabajos prácticos apuntará principalmente a la
implementación de las herramientas y algoritmos necesarios para la realización del proyecto integrador.
En caso de requerirse algoritmos para procesar los datos, se ofrecerán ejemplos y prácticas en C y Python
para exponer a los alumnos a nuevos lenguajes de programación y comparar la performance entre ellos.
Evaluación:
La asignatura se evaluará mediante:
* Una instancia de evaluación parcial
* Elaboración de trabajos prácticos vinculados con cada unidad temática
* Defensa pública individual de un proyecto integrador.
La asignatura no propone régimen de promoción.
El proyecto integrador consistirá de la implementación de un sistema local o distribuido que utilice bases
de datos relacionales para persistencia e integridad de la información. El campo de acción del proyecto
puede ser elegido por el alumno, vinculado a sus propias necesidades laborales o inquietudes técnicas, o
propuesto por el docente.
Software
Todo el contenido de la materia se basará en software de código abierto. No será necesario disponer de
ninguna licencia comercial ni educativa. El software es fácilmente instalable en las distribuciones
GNU/Linux utilizadas en Informática I, Informática II y Técnicas Digitales III.
Hardware propuesto
La asignatura favorecerá la diversidad de soluciones de hardware y fomentará la capacidad de los alumnos
en la interconexión e integración de las mismas.
Las condiciones mínimas del hardware a utilizar serán:
- Que pueda ejecutar GNU/Linux o un sistema operativo de propósito general.
- Que posea conexión de red, o pueda expandirse para obtener la misma.
Aunque la totalidad del contenido puede desarrollarse en un entorno de PC, la asignatura se focalizará en
soluciones de hardware embebido. Para eso se recomiendan las siguientes soluciones existentes:
http://www.raspberrypi.org/
http://www.beagleboard.org/
http://www.pandaboard.org/
Ejemplo de Ejercicio Propuesto:
En el siguiente ejercicio propuesto, el alumno será capaz de diseñar la solución completa, desde los
esquemas de base de datos operando en los servidores, hasta su utilización en cada controlador embebido.
Se cuenta con un sistema de servidores que recolectan, sumarizan e informan mediciones realizadas por
sensores distribuidos geográficamente y lógicamente separados entre sí.
Los sensores son conectados a un controlador embebido con posibilidad de conexión a base de datos. Ya
que la capacidad de procesamiento del controlador sobrepasa lo requerido para efectuar cada medición,
su versatilidad admite conectar varios sensores a un sólo controlador, permitiendo así disponer de un sólo
circuito de medición donde la disposición geográfica así lo permita.
Dado el volumen de la información a procesar, el esquema de servidores cuenta con dos servicios de bases
de datos:
* Servidor de Configuración: almacena información de identificación de los controladores existentes
vinculados al sistema de medición, y su configuración asociada.
* Servidor de Procesamiento: recibe los valores obtenidos por cada uno de los circuitos de medición.
La distribución física de estos servidores de base de datos es transparente, pueden estar funcionando en el
mismo hardware, o pueden ser dos servers separados en dos centros de datos distintos. Los controladores
serán capaces de manejar cualquier distribución posible.
Inicialmente, cada circuito controlador contiene información básica en su base de datos local, y sólo cuenta
con su propio identificador y los datos necesarios para conectarse al servidor de configuración. Al
inicializarse, el cada controlador se conecta al mismo para obtener los siguientes datos:
* Rango de identificadores para cada uno de los sensores conectados.
* Datos actualizados de conexión de servidores de configuración y procesamiento.
* Período de actualización del servidor de procesamiento.
* Período de actualización del servidor de configuración.
* Estados deseados para el controlador y sensores.
El controlador se inicializará con los datos provistos por el servidor de configuración, asignará a cada uno
de los sensores conectados un identificador del rango obtenido, y comenzará su rutina de medición
específica. Almacenará todos los valores medidos hasta que se cumpla el período de actualización del
servidor de procesamiento, y procederá entonces a volcar esos datos al mismo, incluyendo por cada
entrada:
* Identificador del Sensor que realizó la medición
* Identificador del Controlador
* Estado de la medición (exitoso o erróneo)
* Unix Timestamp de la medición
* Valor medido
El controlador deberá asegurarse que el volcado de todos los datos haya sido exitoso, eliminará cualquier
valor almacenado localmente y reiniciará el ciclo de mediciones.
Como el sistema intenta ser lo más distribuido posible, puede ser necesario alterar, temporal o
permanentemente, el acceso a los servidores de configuración y procesamiento. Se intenta evitar el
inconveniente de tener que dirigirse a cada controlador conectado para reconfigurarlo, dado que por
su naturaleza distribuida puede llegar a ser bastante engorroso y costoso.
Por ello, cada controlador utilizará el período de actualización del servidor de configuración para
conectarse al mismo y actualizar sus opciones locales de configuración, incluyendo los datos de conexión y
los períodos de actualización. El controlador, preferentemente sin reiniciarse, comenzará a utilizar estos
nuevos valores a partir del siguiente ciclo de mediciones.
También, dado que analizando las mediciones obtenidas podemos saber si algún sensor está funcionando
incorrectamente, es deseable poder ignorar los mismos. Mediante la actualización de configuración
podremos enviarle estados al controlador, pudiendo indicarle que ignore las mediciones de algún
sensor en particular o, en el peor de los casos, que entre en una rutina de apagado para esperar una
revisión técnica manual.
La distribución del sistema intenta maximizar el uptime de sensores, controladores y servidores,
minimizando el riesgo de pérdida de mediciones; y asume que el costo de una conexión permanente a la
red para cada controlador es demasiado elevado y puede resolverse satisfactoriamente con una
implementación de períodos de actualización en los que los datos son enviados y recibidos en bloques.
Bibliografía:
An Introduction to Database Systems. Date, C. J. 8ºEd. Addison-Wesley. 2003. (*)
Fundamental of Database Systems. Elmasri, R - Navathe, S. 6ºEd. Addison- Wesley. 2010 (*)
Database Modelling and Design: The Fundamental Principles. Teorey, Toby. 3º Ed. Morgan Kaufmann.
2011.
A First Course in Database Systems. Ullman, J. - Widom, J. 3ºEd. Prentice-Hall. 2007. (*)
Head First SQL. Beighley, L. 1ºEd. O’Reilly. 2007
Using SQLite. Kreibich, J. A. 1ºEd. O’Reilly. 2011.
MySQL in a Nutshell. Dyer, R. 2ºEd. O’Reilly. 2008.
Beginning Databases with PostgreSQL. Matthew N - Stones, R. O’Reilly. 2006.
Programming Python. Lutz, M. 4ºEd. O’Reilly. 2011.
Python Essential Reference. Beazley, D. 4ºEd. O’Reilly. 2009.
(*) Disponible en biblioteca.
Correlativas:
Para cursar:
Cursada: Informática II
Aprobada: Informática I
Para rendir:
Aprobada: Informática II