Download INTRODUCCION A LOS SGBD

Document related concepts

Cursor (base de datos) wikipedia , lookup

SQL wikipedia , lookup

Lenguaje de definición de datos wikipedia , lookup

Transacción (base de datos) wikipedia , lookup

Vista materializada wikipedia , lookup

Transcript
Parte Primera:
INTRODUCCION A LOS SGBD
Sistemas de Gestión de Bases de Datos
Tabla
Fila
Type Tabla
Type
Fila
text
Fila
Tabla text
Fila
Fila
Fila Fila
Type
Fila
text
Fila
Tabla
Tabla
Fila Tabla
Type
Fila
Type
Fila
text
Tabla text
Fila
Fila
Fila Fila
Type
Fila
text
Fila
Tabla
Fila
Type
Fila
Type
Fila
text
Tabla text
Fila
Fila
Fila Fila
Type
Fila
text
Fila
UPCO - Sistemas de Gestión de Bases de Datos
10
Capítulo 2
Arquitectura.
Objetivo:
Repasar ciertos conceptos base asociados al gestor para
establecer un punto inicial de conocimiento, requerido para el
seguimiento de la asignatura.
Desarrollo:
• Introducción
• Conceptos base
• Instancia vs. Subsistema
• Base de Datos
• Esquema vs. BD
• Bufferpool
• LOGs = Bitácora
• Transacción vs. Batch
• El SGBD como subsistema
• Desarrollo de aplicaciones
• Preparación de programas con SQL
11
Tema 2
Arquitectura de un SGBD
Objetivo:
– Repasar ciertos conceptos base asociados al gestor para
establecer un punto inicial de conocimiento, requerido
para el seguimiento de la asignatura.
UPCO - Sistemas de Gestión de Bases de Datos
12
Arquitectura de un SGBD
•
Desarrollo:
1.
2.
3.
4.
5.
Introducción
Conceptos base
El SGBD como subsistema
Desarrollo de aplicaciones
Preparación de programas con SQL
UPCO - Sistemas de Gestión de Bases de Datos
13
1. Introducción
–
–
–
–
–
Las diversas plataformas utilizan distinto vocabulario.
El SGBD es un subsistema integrado junto con otros
subsistemas, bajo la supervisión del SO
El desarrollo de aplicaciones contra un SGBD vía
SQL presenta diversas opciones
La preparación de programas con SQL requiere algo
más que la compilación
La Transacción es una Unidad Lógica de Trabajo
UPCO - Sistemas de Gestión de Bases de Datos
Plataformas:
-
Mainframe/Host =>DB2 => SUBSISTEMAS de BBDD.
Sistemas medios/abiertos/distribuidos =>(Linux, Unix ,Windows)
=> Oracle, DB2, SQLServer => INSTANCIA
Subsistema integrado: Subs. Comunicaciones, Transaccional, Autorizaciones e Integridad, gestion archicos, gestion
memoria intermedia.
Desarrollo aplicaciones:
SQL Estático : Se codifican sentencias SQL en el código del programa. EXEC SQL
SELECT ...
END EXEC SQL ;
SQL Dinámico: Es un interfaz estandar en el que se utilizan llamadas o métodos en los que el argumento son
las sentencias SQL.
Prepared statement ps = cx.prepareStatement( “SELECT …”);
Preparación de Programas:
Precompilacion, Compilado, Enlazado y Vinculación.
Transacción:
Uso de ULT en la planificación de las tareas.
14
2. Conceptos base (1)
•
Instancia vs. Subsistema
–
–
–
–
Elemento de más alto nivel
Dos instancias no comparten nada (salvo el
software base, que se instala una sola vez)
En una máquina puede haber varias instancias
Tipos: Datos o Administración
Instancia Datos 1
Instancia Datos 2
Instancia Admin. 1
UPCO - Sistemas de Gestión de Bases de Datos
En los sistemas Middleware y PCs se denomina Instancia, mientras que en los Mainframe hablamos de Subsistema.
Al arrancar una instancia (mediante comando) se asignan los recursos necesarios de máquina (memoria, ejecutables,
etc.)
Si se para la instancia (vía comando) se paran previamente todas sus BDs.
La instancia o subsistema es un programa que se tiene que arrancar directamente en el sistema operativo para que otras
aplicaciones puedan acceder a los datos almacenados en dicha
Una instancia o subsistema es un motor de BBDD o gestor de BBDD y por tanto es necesario arrancarlo. En ese
momento se inician varios procesos asociados a dicha instancia o subsistema que obtendrán recursos del S.O. ( CPU y
memoria)
15
2. Conceptos base (2)
•
Base de Datos
–
El nº de BD por instancia varía según el gestor:
•
•
1 BD / Instancia (Oracle)
n BD / Instancia (DB2 UDB)
Instancia Datos 1
Instancia Datos 2
Instancia Admin. 1
BD1
BD1
BD2
BD3
UPCO - Sistemas de Gestión de Bases de Datos
La BD es una asociación lógica de objetos.
En los entornos Middleware y PC (Instancia), cada BD tiene su propio Bufferpool, LOG y Catálogo o diccionario de
Datos.
En los entornos Mainframe (subsistema) estos elementos son comunes en todo el subsistema.
Iniciar instancia:
star database manager
db2start
16
2. Conceptos base (3)
•
Esquema vs. BD
–
Objetos creados por un mismo usuario
•
•
–
•
CREATE TABLE creador.tabla
CREATE INDEX creador.índice
Se confunde con BD si el gestor sólo permite 1 BD por
instancia
Bufferpool
–
•
Memoria dedicada a Datos del SGBD
LOGs = Bitácora
–
Registro de modificaciones sobre los datos y otros
eventos. Necesario para recuperación.
UPCO - Sistemas de Gestión de Bases de Datos
En los gestores en los que sólo existe más de una BD por instancia, se suele recurrir al esquema para agrupar
lógicamente los objetos.
Esquema: Permite el agrupamiento lógico de los objetos. Siendo el esquema, el nombre del usuario que ejecuta la
creación de la tabla. En una misma base de datos no se puede repetir el mismo nombre de tabla con el mismo creador o
esquema. Pero si se puede repetir el mismo nombre de tabla con diferente creador o esquema.
Bufferpool: Son las áreas de memoria gestionadas por el SGBD. Cuando se invocan datos mediante sentencias SQL,
el SGDB lleva dichos datos de disco a memoria. Estas son las áreas de memoria donde se dejan dichos datos a
disponibilidad de las transacciones o procesos.
Log’s: Es el repositorio donde se van almacenando los registros de modificaciones de los datos. Es crítico ya que
continuamente está siendo utilizado por el SGBD y este es necesario para la recuperación ante una caída o problema.
17
2. Conceptos Base (4)
•
•
Transacción vs. Batch
Transacción
•
•
Batch
Unidad lógica de
trabajo (LUW)
•
Una o Varias LUWs
•
Identifica una
operación mínima de
negocio
•
Identifica un proceso
complejo de negocio
•
Corta duración
•
Larga duración
•
Diurno
•
Nocturno
UPCO - Sistemas de Gestión de Bases de Datos
Una transacción debe cumplir los siguientes requisitos:
Atomicidad.
Consistencia
Durabilidad
18
2. Conceptos base (5)
Existe 4 tipos de usuarios:
• Usuario normal
• Programador aplicaciones.
• Usuarios avanzados.
• ADM
UPCO - Sistemas de Gestión de Bases de Datos
Existen diferentes tipos de usuarios distinguiéndose por la forma en que interactúan con el sistema. Para los cuales se
diseñan diferentes tipos de interface.
Usuario normal: Son usuarios no avanzados que interactúan con el sistema mediante el uso de programas de
aplicación escritos previamente.
Programador de aplicaciones: Son aquellos que escriben los programas de aplicación que acceden alas BD’s.
Usuarios avanzados: Interactúan con el sistema formulando consultas en un lenguaje de consulta de BD’s
ADM: Tiene el control y la gestión de los datos del SGBD, y programas que puedan acceder a ellos.
Definición y modificación del esquema de BD.
Definición de la estructura y organización física.
Concesión de autorizaciones.
Mantenimiento. (Copias de seguridad, espacio libres disco o buffer, supervisión de trabajos…etc)
19
3. El SGBD como subsistema
SG. Comunicaciones
S.O.
Batch
SG.Transaccional
Distribuído
SGBD
Transacción
UPCO - Sistemas de Gestión de Bases de Datos
El SGBD es un subsistema más. El único sistema es el Sistema operativo, y todos acaban invocando sus funciones.
Cada subsistema es especialista en un área, y determinadas funciones las realiza mejor que el SO al disponer de
información detallada. Finalmente una llamada al S.O. es la que permite ejecutar la función. Ejemplo: la paginación de
tablas.
La conexión con el gestor se establece abriendo una vía (thread). La petición proviene del S.O. si es un Batch, del S.G.
Transaccional si es una transacción, o del S.G. Comunicaciones si es externa.
El SGBD es el más profundo o lejano en la máquina, por lo que cualquier información incorporada a una tabla
relacional, que realmente no sea tal, implica más tiempo de ejecución.
Desde el S.O. se pueden lanzar programas (en general batch). Se abren “vías” con el SGBD. Si hay un gran número de
vías querrá decir que hay muchos usuarios. Se podrán realizar más transacciones pero estas tardarán más ye podrán
producirse bloqueos entre ellas, ya que los recursos y datos son compartidos.
Es necesario limitar la capacidad de procesamiento , limitando por ejemplo el número de vías.
Es posible que el SG Transaccional y el SGBD estén en máquinas diferentes. Si un SGBD necesita datos de otro
SGBD remoto entra en comunicación de manera distribuida.
20
3. El SGBD como subsistema
Usuarios
Programadores
Usuarios
avanzados
ADM
Interface de
aplicaciones
Programas de
aplicación
Herramientas
de consulta
Interface de
administración
Código objeto de los
Programas de aplicación
Compilador y
enlazador
Consultas LMD
Compilador del LMD
y organizador
Motor de evaluación
de consultas
Gestor de memoria
intermedia
Gestor de archivos
Interprete LDD
Procesador de consultas
Gestor de autorización
e integridad
Índices
ºDatos
Gestor transaccional
Gestor de almacenamiento
Diccionario
Estadísticas
UPCO - Sistemas de Gestión de Bases de Datos
Los componentes funcionales de un SGBD se pueden dividir a grandes rasgos en dos componentes:
El “Sistema Gestor de Almacenamiento” y el “Procesador de Consultas”.
El Gestor de Almacenamiento es un módulo de programa que proporciona la interfaz entre los datos del SGBD y los
programas de aplicación y las consultas lanzadas al sistema. Coordina el almacenamiento interactuando con el gestor
de archivos. Los datos se almacenan en disco usando un sistema de archivos disponible por el sistema operativo.
Traduce las diferentes instrucciones LMD a órdenes del sistema de archivos del S.O. Siendo responsable del
almacenamiento, recuperación y actualización de los datos en la BD’s.
Sus componentes son:
Gestor de autorización e integridad: Comprueba que satisfagan las restricciones de integridad y
autorizaciones de los usuarios para acceder a los datos.
Gestor de transaccional: Asegura que la base de datos quede en un estado consistente a pesar de los fallos
que puedan ocurrir y que las ejecuciones concurrentes de transacciones ocurran sin conflictos.
Gestor de archivos: Gestiona la reserva de espacio en disco y las estructuras de datos para su representación
en disco.
21
Gestor de memoria intermedia: Es responsable de traer los datos del disco a memoria principal y decidir
qué datos tratar en memoria intermedia (buffer). Es una parte crítica del SGBD ya que permite que la base de
datos maneje tamaños de datos que son mucho mayores que el tamaño de la memoria principal.
El procesador de consultas interpreta y evalúa las consultas realizadas sobre el sistema.
Sus componentes son:
Interprete del LDD: Interpreta las instrucciones del LDD y registra las definiciones en el diccionario de
datos.
Compilador del LMD: Traduce las instrucciones del LMD a un plan de ejecución con instrucciones de bajo
nivel que entiende el motor de evaluación de consultas. Una consulta puede traducirse en varios planes de
ejecución alternativos que proporcionan el mismo resultado pero con distinto coste, eligiendo la alternativa
meno costosa.
Motor de evaluación de consultas: Ejecuta las instrucciones de bajo nivel generadas por el compilador del
LMD.
22
4. Desarrollo de aplicaciones
Métodos de Programación
SQL embebido
(precompilado)
SQL estático
SQL llamable
SQL dinámico
SQL dinámico
Cobol
C
CLI (C)
C
Cobol
ODBC (C)
Java
JDBC (JAVA)
SQLJ
UPCO - Sistemas de Gestión de Bases de Datos
SQL estático:
EXEC SQL
SELECT NOMBRE, APELLIDOS
FROM CLIENTES;
SQL dinámico:
Statement sentencia1 = conexion.createStatement();
String query = "SELECT NOMBRE, APELLIDOS FROM CLIENTES";
ResultSet resultado1 = sentencia1.executeQuery(query);
23
5. Preparación de programas
Fuente
Sintaxis
Precompilación
DBRM
Fuente modificado
.BND, .Dbrmlib
SQL gestor
BIND
Plan
Paquete
Catálogo
Catálogo
Compilación
Objeto
Link-Edit
Ejecutable
.exe, .Loadlib
UPCO - Sistemas de Gestión de Bases de Datos
Al ejecutar un programa, se carga el ejecutable. En el primer acceso SQL, se abre una vía con el SGBD (desde el SG.
Transaccional si es una Transacción, o desde el SO si es un Batch) para cargar el Plan o Paquete residente en el
Catálogo del gestor. En ese momento se comprueban los Timestamp; si no son idénticos el gestor retorna un
SQLCODE negativo.
Si en una ejecución no se pasa por ninguna sentencia SQL, no se abre la vía con el SGBD.
El lenguaje en el que esta escrito el programa no reconoce las sentencias SQL, luego el compilador daría un error. Para
evitarlo es necesario realizar un proceso de precompilación para extraer del código fuente las sentencias SQL. El
precompìlador es suministrado por el SGBD que se este utilizando.
Con la precompilacion se obtiene el código fuente modificado, donde las sentencias SQL son comentadas y
modificadas con llamadas a funciones. También se genera un fichero DBMR (con extensión bnd), es un módulo que
contiene todas las sentencias SQL extraídas del fuente original. El fichero DBMR hay que darlo a conocer al gestor
mediante una operación de vinculación (BIND), este proceso dará lugar a la creación de dos ficheros. Un PLAN que
contiene el nombre del ejecutable y el plan de acceso para la resolución de las consultas y un PAQUETE con el
timestamp y los programas para la ejecución de las sentencias.
24
Con SQL estático se resuelven las sentencias antes de ejecutar el programa. En el momento de la precompilación se le
asigna un timestamp al código fuente. El timestamp del ejecutable y del paquete han de ser iguales. Si se modifica el
código fuente, al precompilarlo el timestamp se modifica. Si no se hace la operación de BIND posteriormente, el
timestamp del ejecutable y del paquete son distintos y el SGBD lanzará un error (SQLCODE -818), ya que las
modificaciones realizadas no han sido vinculadas y “refrescadas” en la base de datos.
25