BASE DE DATOS
description
Transcript of BASE DE DATOS
ADMINISTRACIÓN DE BASE DE DATOS
FACILITA EL
PARTICIONAMIENTO:
Proporciona utilidades para
implementar aplicaciones de
gran tamaño y escalables ya
que controlar las tablas y los
índices con un nivel de
granularidad inferior al que
sería posible con la versión
básica de Enterprise Edition.
REAL APPLICATION
CLUSTERS: Mejora la
escalabilidad y disponibilidad
de una base de datos, ya que
permite que múltiples
instancias del software de
Oracle accedan a una única
base de datos.
PAQUETES DE ORACLE
NTERPRISE MANAGER:
Son programas
complementarios que
proporcionan a los
administradores un juego de
herramientas para una gestión
de cambios, un ajuste, un
control y un diagnóstico
avanzados de los entornos de
Oracle.
SEGURIDAD AVANZADA:
Proporciona seguridad de red
de servidor a servidor y de
cliente a servidor mediante el
cifrado y la comprobación de
la integridad de datos, y
soporta servicios de
autenticación de usuario
mejorados con servicios de
seguridad de terceros.
AD
MIN
IST
RA
CIÓ
N
DE
B
AS
E D
E D
AT
OS
Oracle Server: Existen varios archivos,
procesos y estructuras de memoria en
Oracle Server, no obstante, cuando se
procesa una sentencia SQL no se utilizan
todos.
Instancia Oracle: Una instancia Oracle
es la combinación de los procesos en
segundo plano y las estructuras de
memoria
Base de datos Oracle: Una base de datos
Oracle está formada por archivos del
sistema operativo, también llamados
archivos de base de datos.
Otros archivos clave: Los archivos que
no son de base de datos se utilizan para
configurar la instancia, autenticar los
usuarios con privilegios y recuperar la
base de datos en caso de que se produzca
un fallo de disco.
.
Procesos de usuario y de servidor: Los
procesos de usuario y de servidor son los
procesos principales implicados en la
ejecución de una sentencia SQL.
Otros procesos: Existen otros muchos
procesos que se utilizan en otras
opciones, como Gestión de Colas
Avanzada, Real Application Clusters,
Servidor Compartido, Replicación
Avanzada, etc
Administración de Base de
Datos
Oracle Server.
Definición: Es un sistema de gestión de bases de datos que proporciona un
enfoque abierto, global e integrado de la gestión de información que se
encuentra formado por una instancia Oracle y una base de datos Oracle
Oracle Server es la clave para la gestión de la información.
Regla General: Oracle Server debe gestionar grandes cantidades de datos en
un entorno para varios usuarios de forma fiable, de modo que muchos
usuarios puedan acceder de forma simultánea a los mismos datos. Al mismo
tiempo, es necesario que el rendimiento obtenido sea excelente.
Nota: Oracle Server debe impedir el acceso no autorizado y proporcionar
soluciones eficaces para la recuperación en caso de fallo
Instancia Oracle
Es un medio de acceso a una
base de datos Oracle por la
que siempre abre una única
base de datos.
Administración de Base de
Datos
Sesiones : Una sesión es una
conexión específica de un
usuario a Oracle Server. La
sesión se inicia cuando Oracle
Server valida al usuario, y
finaliza cuando el usuario se
desconecta o cuando se
produce una terminación
anormal.
Conexión: Una conexión no es más que
una ruta de comunicación entre un proceso
de usuario y Oracle Server.
PASOS:
• Se establece la ruta de comunicación
mediante los mecanismos de
comunicación entre procesos
disponibles en el sistema operativo del
host.
• En esta configuración, conocida como
cliente-servidor, el software de red se
utiliza para establecer la comunicación
entre el usuario y Oracle Server.
• En una conexión de tres capas, el
equipo del usuario se comunica a
través de la red con un servidor de
aplicaciones o de red, que se conecta a
través de una red a la máquina que
ejecuta la instancia Oracle.
Administración de Base de
Datos
Base de Datos Oracle
Objetivo: Es el de almacenar y recuperar la información relacionada.
Una base de datos Oracle tiene una estructura lógica y una física.
La estructura física de la base de datos es el juego de archivos del sistema
operativo en la base de datos.
Una base de datos Oracle consta de tres tipos de archivos
.
Los archivos redo log que contienen un
registro de los cambios efectuados en la base
de datos para activar la recuperación de los
datos en caso de fallos
Los archivos de datos que contienen los datos
reales de la base de datos
Los archivos de control que contienen la
información necesaria para mantener y
verificar la integridad de la base de datos
Otras Estructuras de Archivos Clave :Oracle Server también utiliza
otros archivos que no forman parte de la base de datos:
El archivo de parámetros define las características de una instancia
Oracle. Por ejemplo, contiene los parámetros que especifican el
tamaño de las estructuras de la memoria en el SGA.
El archivo de contraseñas autentica los usuarios con privilegios
para iniciar y cerrar una instancia Oracle.
Los archivos redo log archivados son copias offline de los archivos
redo log online que pueden ser necesarios para recuperarse de los
fallos del medio físico.
Estructura de la memoria
La estructura de la memoria de Oracle está formada por dos áreas de memoria
llamadas:
1. SGA (Área Global del Sistema): Asignada al iniciar la instancia y
componente fundamental de una instancia Oracle
Área Global del Sistema
El área SGA está formada por varias estructuras de la memoria:
Conjunto Compartido
Caché de Buffers de Base de Datos Buffer de Redo
Log
Otras estructuras (por ejemplo, gestión de bloqueos
y bloqueos internos, datos estadísticos)
El área SGA también se llama
área global compartida. Se
utiliza para almacenar
información de base de datos
que comparten los procesos de
base de datos. Contiene datos e
información de control para
Oracle Server y se asigna en la
memoria virtual de la
computadora donde reside
Oracle.
Para ver las asignaciones de memoria
SGA, se puede utilizar la siguiente
sentencia:
SGA Dinámica :
A partir de Oracle9i, el área SGA dinámica implementa una
infraestructura que permite modificar la configuración del SGA sin
cerrar la instancia. Asimismo, esto permite modificar el tamaño de la
caché de buffers de base de datos, del conjunto compartido y del
conjunto grande sin cerrar la instancia
Especificación del Tamaño del SGA: Los parámetros que afectan al tamaño del
área SGA en mayor medida son:
DB_CACHE_SI
ZE: Tamaño de la
caché de bloques
estándar. El valor
por defecto es de
48 MB para UNIX
y 52 MB para NT.
LOG_BUFFE
R: Número de
bytes asignados
al buffer de redo
log
SHARED_POOL_SIZE:
Tamaño en bytes del área
dedicada a SQL
compartido y a PL/SQL.
El valor por defecto es 16
MB. Si se trata de 64 bits,
el tamaño por defecto es
de 64 MB.
LARGE_POOL_SIZE:
Tamaño del conjunto
grande. El valor por defecto
es cero (excepto si el
parámetro
PARALLEL_AUTOMATIC
_TUNING de init.ora se
define en TRUE, en cuyo
caso se calcula
automáticamente el valor
por defecto.)
JAVA_POOL_SIZE: Tamaño
del conjunto Java. El valor por
defecto es 24 MB. Por lo tanto, el
tamaño del área SGA no puede
superar el especificado en
SGA_MAX_SIZE menos los
valores de DB_CACHE_SIZE,
LOG_BUFFER,
SHARED_POOL_SIZE,
LARGE_POOL_SIZE y
JAVA_POOL_SIZE
Área Global del Sistema
Esta área es dinámica, su tamaño definido por el parámetro
SGA_MAX_SIZE, asignada y con seguimiento en gránulos por
componentes del SGA
Unidad de Asignación
Un gránulo es una unidad de asignación de memoria virtual contigua.
El tamaño de un gránulo depende del tamaño del SGA total estimado
cuyo cálculo se basa en el valor del parámetro SGA_MAX_SIZE.
• 4 MB si el tamaño del SGA estimado es < 128 MB
• 16 MB, en caso contrario
Los componentes (caché de buffers de base de datos, conjunto
compartido y conjunto grande) pueden aumentar o disminuir de
tamaño en función de los límites del gránulo.
Al iniciar la instancia, Oracle Server asigna las entradas de gránulos,
una por cada gránulo que soporta el número de bytes de
SGA_MAX_SIZE de espacio de dirección. Mientras continúa el
inicio, cada componente adquiere los gránulos que necesita. La
configuración de SGA mínima es de tres gránulos (un gránulo para el
área SGA fija [incluye los buffers de redo], un gránulo para la caché
de buffers de base de datos y un gránulo para el conjunto
compartido).
Área Global del Sistema
Esta área es dinámica, su tamaño definido por el parámetro
SGA_MAX_SIZE, asignada y con seguimiento en gránulos por
componentes del SGA
Unidad de Asignación
Un gránulo es una unidad de asignación de memoria virtual contigua.
El tamaño de un gránulo depende del tamaño del SGA total estimado
cuyo cálculo se basa en el valor del parámetro SGA_MAX_SIZE.
• 4 MB si el tamaño del SGA estimado es < 128 MB
• 16 MB, en caso contrario
Los componentes (caché de buffers de base de datos, conjunto
compartido y conjunto grande) pueden aumentar o disminuir de
tamaño en función de los límites del gránulo.
Al iniciar la instancia, Oracle Server asigna las entradas de gránulos,
una por cada gránulo que soporta el número de bytes de
SGA_MAX_SIZE de espacio de dirección. Mientras continúa el
inicio, cada componente adquiere los gránulos que necesita. La
configuración de SGA mínima es de tres gránulos (un gránulo para el
área SGA fija [incluye los buffers de redo], un gránulo para la caché
de buffers de base de datos y un gránulo para el conjunto
compartido).
Shared pool - Conjunto compartido
Se utiliza para almacenar:
– Las últimas sentencias SQL ejecutadas
– Las últimas definiciones de datos utilizadas
Se encuentra formado por dos estructuras de memoria clave relacionadas con
el rendimiento:
– Caché de Biblioteca
– Caché del Diccionario de Datos
Y su Tamaño está definido por el parámetro SHARED_POOL_SIZE. El
entorno de conjunto compartido contiene estructuras tanto fijas como
variables. Las estructuras fijas mantienen relativamente el mismo tamaño,
mientras que las estructuras variables aumentan y disminuyen en función de
los requisitos del usuario y del programa. El tamaño real de las estructuras
fijas y variables se basa en un parámetro de inicialización y el
funcionamiento de un algoritmo interno de Oracle.
Especificación del Tamaño del Conjunto
Compartido
El conjunto compartido se utiliza para objetos que se pueden compartir de
forma global, como planes de ejecución SQL reutilizables, paquetes PL/SQL,
procedimientos, funciones e información de cursor, su tamaño se debe ajustar
a las necesidades tanto de las áreas fijas como variables.
Library cache - Caché de Biblioteca
Permite almacenar información acerca de las sentencias SQL y PL/SQL
utilizadas más recientemente, también permite compartir las sentencias
utilizadas con mayor frecuencia, esto se lo realiza por medio de un
algoritmo LRU (utilizado menos recientemente)
Está formado por dos estructuras:
– Área de SQL compartido
– Área de PL/SQL compartido
SQL compartido: Almacena y comparte el plan de ejecución y el
árbol de análisis para las sentencias SQL que se ejecutan en la
base de datos. La segunda vez que se ejecuta una sentencia SQL
idéntica, ésta se puede beneficiar de la información de análisis
disponible en el SQL compartido para acelerar la ejecución. Para
garantizar que las sentencias SQL utilizan un área SQL
compartida siempre que sea posible, el texto, el esquema y las
variables ligadas deben ser idénticos.
• PL/SQL compartido: Almacena y comparte las sentencias
PL/SQL ejecutadas más recientemente. Los procedimientos
(funciones, paquetes y disparadores) y las unidades de programa
analizados y compilados se almacenan en esta área.
Data Diccionary cache - Caché del Diccionario de Datos
La caché del diccionario de datos también se llama caché del diccionario o
caché de filas. La información acerca de la base de datos (datos de cuenta de
usuario, nombres de archivos de datos, nombres de segmento, ubicaciones de
extensiones, descripciones de tablas y privilegios de usuario) se almacena en
las tablas del diccionario de datos. Cuando el servidor necesita esta
información, se leen las tablas del diccionario de datos y los datos devueltos se
almacenan en la caché del diccionario de datos.
Especificación del Tamaño del Diccionario de Datos
El tamaño total depende del tamaño del conjunto compartido y lo gestiona de
forma interna la base de datos. Si la caché del diccionario de datos es
demasiado pequeña, la base de datos tiene que consultar las tablas del
diccionario de datos repetidas veces para obtener la información que necesita
el servidor. Estas consultas se denominan llamadas recursivas y son más lentas
que las consultas directas de la caché del diccionario de datos, puesto que las
consultas directas no utilizan SQL.
Database buffer cache - Caché de Buffers de Base de Datos.
En este espacio de memoria se almacena copias de bloques de datos que se
han recuperado de archivos de datos lo que permite grandes mejoras de
rendimiento al obtener y actualizar datos, esto lo realiza gestionado un
algoritmo LRU, el tamaño del bloque primario está determinado por
DB_BLOCK_SIZE.
Database buffer cache - Caché de Buffers de Base de Datos.
Está formado por subcachés independientes:
Universidad ISRAEL 2010-2011
– DB_CACHE_SIZE
– DB_KEEP_CACHE_SIZE
– DB_RECYCLE_CACHE_SIZE
Se puede cambiar de tamaño de forma dinámica, par ello se debe utilizar la
iguiente instrucción: ALTER SYSTEM SET DB_CACHE_SIZE = 96M;
También se puede definir DB_CACHE_ADVICE con el fin de recoger
estadísticas para predecir el comportamiento de los distintos tamaños de caché,
para ver las estadísticas de este espacio de memoria se puede utilizar la vista
V$DB_CACHE_ADVICE
Especificación del Tamaño de la Caché de Buffers de Base de Datos
El tamaño de cada buffer de la caché de buffers de base de datos equivale al
tamaño de un bloque Oracle, y lo especifica el parámetro DB_BLOCK_SIZE:
Determina el tamaño del bloque primario, que se usa para el table space
SYSTEM. Hay tres parámetros que definen los tamaños de las cachés de buffers
de base de datos:
DB_CACHE_SIZE: Sólo especifica el tamaño de la caché de buffers
por defecto; siempre está presente y no se puede definir en cero
DB_KEEP_CACHE_SIZE: Establece el tamaño de la caché de
buffers KEEP, que se utiliza para retener en memoria bloques que
probablemente se van a reutilizar
DB_RECYCLE_CACHE_SIZE: Determina el tamaño de la caché de
buffers de reciclado, que se utiliza para eliminar de la memoria
bloques que probablemente no se van a reutilizar
Asesor de Caché de Buffers: La función Asesor de Caché de Buffers activa y
desactiva la recopilación de estadísticas para predecir el comportamiento de los
distintos tamaños de caché.
Redo log buffer - Buffer de Redo Log: En este espacio se registra todos los
cambios realizados en los bloques de datos de la base de datos, su finalidad
principal es la recuperación, los cambios registrados dentro de éste se llaman
registros de redo, los registros de redo contienen información que permite
reconstruir o rehacer cambios, el tamaño está definido por LOG_BUFFER
Especificación del Tamaño del Buffer de Redo Log: El tamaño del buffer de
redo log está definido por el parámetro de inicialización LOG_BUFFER.
Large pool - Conjunto Grande Es un área opcional de memoria en el SGA
que permite liberar al conjunto compartido
de su carga, se utiliza para:
– Memoria de sesión (UGA) para el servidor
compartido
– Procesos de servidor de E/S
– Operaciones de copia de seguridad y
recuperación o RMAN
– Buffers de mensajes de ejecución en
paralelo: PARALLEL_ AUTOMATIC_TUNING
se define como TRUE
Conjunto Java : Requisitos de análisis de servicios para comandos Java, es
necesario si se instala y se utiliza Java, su tamaño está definido por el parámetro
JAVA_POOL_SIZE.
Estructura de la memoria
2. PGA (Área Global de Programas): Asignada al iniciar el proceso de
servidor
Área Global de Programas : El PGA se asigna cuando se crea un proceso y se
libera cuando éste se termina. A diferencia del SGA, que comparten varios
procesos, el PGA es un área que sólo utiliza un proceso.
Por regla general, la memoria PGA incluye los siguientes componentes:
• Procesos de servidor: Se conectan a la
instancia Oracle y se inician cuando un usuario
establece una sesión.
Área SQL privada: Contiene datos, como
información ligada y estructuras de memoria
de tiempo de ejecución. Cada sesión que emite
una sentencia SQL tiene un área SQL privada.
Cada usuario que ejecuta la misma sentencia
SQL tiene su propia área SQL privada que
utiliza una única área de SQL compartido. Por
tanto, muchas áreas SQL privadas se pueden
asociar a la misma área de SQL compartido.
El área SQL privada de un cursor se divide en dos áreas:
Área persistente: Contiene información ligada y sólo
se libera cuando se cierra el cursor.
Área de tiempo de ejecución: Creada como primer
paso de una solicitud de ejecución.
Procesos de Usuario : Programa que solicita interacción con Oracle Server,
donde se debe establecer primero una conexión y que no interactúa
directamente con Oracle Server.
Cualquier usuario de base de datos que necesite solicitar información a la base
de datos debe establecer primero una conexión con Oracle Server
La conexión se solicita con una herramienta de interfaz de base de datos, como
SQL*Plus, e iniciando el proceso de usuario.
El proceso de usuario no interactúa directamente con Oracle Server. En su
lugar, genera llamadas mediante la UPI (Interfaz de Programa de Usuario),
que crea una sesión e inicia un proceso de servidor.
El proceso de usuario no interactúa directamente con Oracle Server. En su
lugar, genera llamadas mediante la UPI (Interfaz de Programa de Usuario),
que crea una sesión e inicia un proceso de servidor.
DBWn (Escritor de Base de Datos)
El proceso de servidor registra los cambios que
hay que deshacer y los bloques de datos en la
caché de buffers de base de datos. El proceso
DBWn escribe los buffers sucios desde la caché
de buffers de base de datos en los archivos de
datos. Esto asegura que hay un número suficiente
de buffers libres (buffers que se pueden
sobrescribir cuando los procesos de servidor
necesiten leer bloques en los archivos de datos)
disponibles en la caché de buffers de base de
datos. De esta manera, se mejora el rendimiento
de la base de datos porque los procesos de
servidor sólo realizan cambios en la caché de
buffers de base de datos.
DBWn aplaza la escritura en los archivos de datos hasta que se produce uno de
los siguientes eventos:
• Punto de control normal o incremental.
• El número de buffers sucios alcanza un valor umbral.
• Un proceso explora un número determinado de bloques
cuando realiza una exploración en busca de buffers libres
y no puede encontrar ninguno.
• Se produce un timeout.
• Se produce una solicitud de sondeo en un entorno RAC
(Real Application Clusters).
• Se coloca un tablespace normal o temporal offline
• Se coloca un tablespace en modo de sólo lectura
• Borrado o truncamiento de una tabla
• ALTER TABLESPACE nombre del tablespace BEGIN
BACKUP
LGWR (Escritura de Logs)
LGWR realiza escrituras secuenciales desde el buffer de redo log al archivo redo
log en las siguientes situaciones:
• Cuando se valida una transacción.
• Cuando el buffer de redo log se encuentra a un tercio de su capacidad.
• Cuando existe más de un megabyte de cambios en el buffer de redo log.
• Antes de que DBWn escriba los bloques modificados de la caché de buffers de
base de datos en los archivos de datos.
• Cada tres segundos.
Puesto que es necesario rehacer los cambios para la recuperación, LGWR sólo
confirmará la operación de validación (COMMIT) una vez que se haya escrito el
redo en el disco.
LGWR también puede llamar al proceso DBWn para escribir en los archivos de
datos.
SMON (Monitor del Sistema)
Recuperación de instancias
Aplica los cambios pendientes en los
archivos redo log online.
Abre la base de datos para que
acceda el usuario.
Deshace las transacciones no
validadas.
Fusiona el espacio libre
Libera los segmentos temporales
PMON (Monitor de Procesos)
Hace una limpieza cuando los procesos
han fallado:
• Haciendo un rollback en las
transacciones
• Liberando los bloqueos
• Liberando otros recursos
• Reiniciando distribuidores interrumpidos
El proceso en segundo plano PMON realiza una limpieza después de los
procesos fallidos de la siguiente forma:
• Realizando rollback en la transacción actual del usuario
• Liberando todos los bloqueos de tablas o filas actuales
• Liberando otros recursos que están reservados en ese momento por el usuario
• Reiniciando distribuidores interrumpidos
CKPT (Punto de Control)
Los puntos de control se inician por los
siguientes motivos:
• Para garantizar que los bloques de datos
modificados en la memoria se escriben en el
disco con frecuencia, de forma que no se
pierdan en caso de que se produzca el fallo
de un sistema o de una base de datos.
• Para reducir el tiempo necesario de
recuperación de una instancia. Para la
recuperación, sólo es necesario procesar las
entradas del archivo redo log online
posteriores al último punto de control.
• Para garantizar que todos los datos validados se han escrito en los
archivos de datos durante el cierre.
La información de punto de control que escribe el proceso CKPT
incluye la posición del punto de control, el número de cambio del
sistema, la ubicación en el archivo redo log online desde la que iniciar
la recuperación, la información sobre logs, etc.
Nota: CKPT no escribe bloques de datos en el disco ni bloques de redo
en los archivos redo log online.
ARCn (Archiver)
Es un proceso en segundo plano opcional, no obstante, es crucial para
recuperar una base de datos después de la pérdida de un disco. Cuando se
llena un archivo redo log online, Oracle Server comienza a escribir en el
siguiente.
Archivado de los Archivos Redo Log Online: Una de las decisiones
importantes que debe tomar un DBA es si debe configurar la base de datos
para que funcione en modo ARCHIVELOGo en modo NOARCHIVELOG.
Modo NOARCHIVELOG: En este modo, los archivos redo log online se
sobrescriben cada vez que se produce un cambio de log.
Estructura Lógica.
Existe la siguiente jerarquía de estructuras
lógicas:
• Una base de datos Oracle contiene como
mínimo un tablespace.
• Un tablespace contiene uno o más
segmentos.
• Cada segmento está formado por
extensiones.
• Una extensión está formada por bloques
lógicos.
• Un bloque es la unidad más pequeña para
las operaciones de lectura y escritura.
Tablespaces: Los datos de una base de datos Oracle se almacenan en
tablespaces.
Un tablespace sólo puede pertenecer a una base de datos a la vez.
Cada tablespace está formado por uno o más archivos del sistema
operativo, que reciben el nombre de archivos de datos, puede tener
uno o más segmentos.
Se pueden poner en línea mientras se está ejecutando la base de datos.
Excepto en el caso del tablespace SYSTEMo un tablespace con un
segmento de deshacer activo, los tablespaces se pueden poner offline
y dejar que la base de datos se siga ejecutando.
Archivos de Datos (Estructura No Lógica): Se trata de estructuras físicas que
se ajustan al sistema operativo en el que se ejecuta Oracle Server.
Un archivo de datos sólo puede pertenecer a un tablespace.
El administrador de la base de datos puede cambiar el tamaño de un
archivo de datos una vez creado, o bien puede especificar que un
archivo debería aumentar dinámicamente a medida que aumentan los
objetos en el tablespace.
Segmentos: Un segmento es el espacio asignado a una estructura de
almacenamiento lógica específica dentro de un tablespace.
Un tablespace puede estar formado por uno o más segmentos.
Un segmento no puede abarcar tablespaces; sin embargo, un
segmento puede abarcar múltiples archivos de datos que pertenezcan
al mismo tablespace.
Cada segmento está formado por una o más extensiones.
Extensiones: El espacio se asigna a un segmento mediante extensiones.
Una o más extensiones componen un segmento.
Cuando se crea un segmento, éste está formado, como mínimo, por
una extensión.
Una extensión es un juego de bloques Oracle contiguos, no puede
abarcar archivos de datos y, por tanto, debe existir en un archivo de
datos.
Bloques de Datos: Oracle Server gestiona el espacio de almacenamiento de
los archivos de datos en unidades llamadas bloques Oracle o bloques de
datos.
Los bloques de datos Oracle son las unidades de almacenamiento
más pequeñas que Oracle Server puede asignar, leer o escribir.
Un bloque de datos se corresponde con uno o más bloques del
sistema operativo asignados desde un archivo de datos existente.
El tamaño de bloque de datos estándar de cada base de datos
Oracle lo especifica el parámetro de inicialización
DB_BLOCK_SIZEcuando se crea la base de datos.
El tamaño del bloque de datos debería ser múltiplo del tamaño del
bloque del sistema operativo para evitar operaciones de E/S
innecesarias.
FUENTE: FOLLETO DE LA UNIVERSIDAD ISRAEL. Administración de Base de Datos .
Arquitectura BD . Capitulo 1. Págs. 2 - 32