base de datos oracle

Anuncio
Univercidad Tegnologica Americana
“UNITA”
Carla Terán
Informática
BASE DE DATOS ORACLE
Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en
inglés de Relational Data Base Management System), desarrollado por Oracle Corporation.
Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando:
 soporte de transacciones,
 estabilidad,
 escalabilidad y
 Soporte multiplataforma.
Ha sido criticada por algunos especialistas la seguridad de la plataforma, y las políticas de
suministro de parches de seguridad, modificadas a comienzos de 2005 y que incrementan el
nivel de exposición de los usuarios. En los parches de actualización provistos durante el primer
semestre de 2005 fueron corregidas 22 vulnerabilidades públicamente conocidas, algunas de
ellas con una antigüedad de más de 2 años.
Aunque su dominio en el mercado de servidores empresariales ha sido casi total hasta hace
poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de la oferta de
otros RDBMS con licencia libre como PostgreSQL, MySql o Firebird. Las últimas versiones de
Oracle han sido certificadas para poder trabajar bajo GNU/Linux.
METODOS DE RESPALDO Y RECUPERACION
Oracle ofrece varios tipos de respaldo para la información; entre ellos no existe un método que
sea el más óptimo para todas las organizaciones, debido a que son muchos los factores que
inciden y se deben evaluar para determinar cual es el mejor procedimiento para determinado
escenario de recuperación. Cada método de respaldo cumple funciones definidas, es por ello
que se debe conocer muy bien la Base de Datos, la carga transaccional y la criticidad de la
información entre otros para determinar el tipo de respaldo que necesita cada organización.
EXPORT E IMPORT
Es uno de los más usados por los clientes de Oracle por su flexibilidad y portabilidad y solo se
puede hacer si la Base de Datos esta abierta;
RESPALDOS EN FRIO (Cold backup)
Es un método de respaldo muy restrictivo, y debe hacerse únicamente cuando la base de datos
este cerrada. Es útil en el evento de perdida total de la base de datos.
RESPALDOS EN CALIENTE (Hot Backup)
Este tipo de respaldo es especialmente utilizado en organizaciones en las cuales la base de
datos necesita estar disponible durante las veinticuatro horas y los siete dias de la semana.
Los respaldos en caliente son una consecuencia de una funcionalidad de Oracle llamada el
modo "ARCHIVE". Este modo consiste en configurar algunos parámetros de la base de datos
para que se registren todos los cambios hechos a la misma por mínimos que sean en unos
archivos llamados "REDO LOGS".
PROCESO ESTANDAR PARA LA GENERACION DE UN FULL-EXPORT
Se debe tener un comando "AT" programado para que active un archivo llamado "Backup" de
manera automática.
El archivo Backup contendrá lo siguiente
EN WINDOWS NT :
El archivo Backup es una opción de Inicio, programas y contendrá lo siguiente:
 d:\orant\bin\exp73.exe parfile = d:\orant\backup\param_fullexp.txt
 El archivo PARAM_FULLEXP.TXT contiene lo siguiente
 Backup/Backup
 full=y
 compress=y
 indexes=y
 file=d:\orant\backup\fullexpor.dmp
 log=d:\orant\backup\fullexpor.log
 rows=y
EN UNIX:



EXP USERID=Backup/Backup BUFFER=3076000 FILE=/u01/Backup/Fullexport.dmp
FULL=Y COMPRESS=Y
GRANTS=Y INDEXES=Y CONSTRAINTS=Y ROWS=Y LOG=/u01/Backup/Fullexport.log
Para lo anterior se debe crear un usuario llamado Backup en las bases de datos, y
direccionar los archivos con extensión (.dmp) a un disco con suficiente espacio.
PROCESO ESTANDAR PARA LA GENERACION DE UN Cold-Backup
Este es un respaldo de todos los archivos de la base de datos (no de sistema operativo, aunque
se podrían incluir), habiendo sido esta bajada en forma normal. Los archivos a copiar en este tipo
de respaldo son los generados en las siguientes busquedas:
 select status, enabled, bytes, name from v_$datafile;
 select * from v_$controlfile;
 select status, member from v_$logfile;
 Además se debe respaldar el archivo initsid.ora.
EN WINDOWS NT :





1. Verificar que no hayan usuarios conectados a la base de datos.
2. Entrar a Inicio, Programas y ejecutar el comando "BAJAR_BD", el cual baja la base de
datos y contiene:
d:\orant\bin\oradim73.exe -shutdown -sid ORCL -usrpwd oracle –shuttype srvc,inst shutmode n
3. Entrar a la utilidad de backup de Windows NT, escoger la unidad requerida, y los
archivos a ser respaldados, incluyendo D:orant y los directorios en donde están los
archivos con extensiones .trc, .dmp, .ctl, .dbf, .log, init*.ora.
4. Entrar a Inicio, Programas y ejecutar el comando "SUBIR_BD", el cual sube la Base
de Datos y contiene: d:\orant\bin\oradim73.exe -startup -sid ORCL -usrpwd oracle starttype srvc,inst -pfile d:\orant\database\initorcl.ora
EN UNIX
Bajar la base de datos asi:
Estando conectado a Unix verificar que no
hayan usuarios conectados a la base de datos
 svrmgrl
 connect internal
 shutdown
 exit
 ejecutar el script que genera la copia
de los archivos a ser respaldados
Subir la base de datos asi:



svrmgrl
connect internal
startup
PROCESO ESTANDAR PARA LA GENERACIÓN DE Hot-Backup
Para inicializar este modo de operación se recomienda hacer antes un backup de la base de
datos por si ocurre algún problema. Posteriormente se deben configurar en el archivo
INITsid.ORA los siguientes parámetros:
 LOG_ARCHIVE_DEST = (Directorio donde seran grabados los archivos
 Ejemplo: d:/backup/archive/arch).
 LOG_ARCHIVE_FORMAT = (Formato del nombre de los archivos
 Ejemplo: %t_%s.dbf)
 LOG_ARCHIVE_START = TRUE
 enseguida se deben ejecutar los siguientes comandos:
 Alter database mount; (Sube la instancia pero no abre la base)
 Alter database archivelog; (Coloca la base en modo Archivelog)
 Archive log start; (Activa el archive automaticamente cada vez suba la instancia)
 Alter database open; (Abre la base de datos y la deja disponible)
PROCESO ESTANDAR PARA LA RESTAURACION DE UN FULL-EXPORT
Se debe tener presente si se desea restaurar la información por tabla, usuario o la base de
datos, pues del fullexport puedo obtener los tres. Además se debe evaluar si se desea
sobreescribir la información existente al bajar el fullexport o si se baja sobre un usuario temporal
para posteriormente proceder a hacer el insert a las tablas originales. Restaurar el archivo
(Fullexport.dmp) de la cinta a un disco con suficiente capacidad.
EN WINDOWS NT :
Modificar uno de los siguientes tres archivos según el tipo de Import que se desee realizar :
 d:\orant\backup\Imp_tabla
 d:\orant\backup\Imp_user
 d:\orant\backup\Imp_full.
 Digitar el siguiente comando por inicio ejecutar o por Ms-dos (no se hace automatico por
que son muchos los escenarios que se pueden presentar y especificos según el import
deseado,debido a ello existe cierto riesgo de error).
 d:\orant\bin\imp73.exe parfile = d:\orant\backup\imp_tabla ó
 d:\orant\backup\imp_user ó d:\orant\backup\imp_full
 según el archivo que haya modificado anteriormente.
PROCESO ESTANDAR PARA LA RESTAURACION DE Cold-Backup
Bajar estos archivos es tan sencillo como copiar los archivos del medio en donde se respaldaron
a su posición original. Se debe tener en cuenta que cuando se esta en modo NOARCHIVELOG
(este se verifica haciendo un select * from sys.v_$database) se debe bajar completamente, sin
dejar ningún archivo de lado, de lo contrario la base de datos no reconocerá los archivos bajados
o los que ya estaban y presentará problemas.
IMPORT
El import se puede hacer a nivel de tabla, usuario o Full database dependiendo de los privilegios
de quien importa y de la manera como se hizo el export.
SECUENCIA DE RECUPERACION UTILIZANDO IMPORT
 Digite el comando IMP username / password PARFILE = filename o IMP PARFILE =
filename
 El username/password especifican quien hace el import, lo importante es que tenga los
privilegios suficientes.
 el tamaño del Buffer Size se estima como = rows_in_array * maximun_row_size
PROGRAMACIÓN EN PL/SQL
PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar
con otro tipo de instrucciones y elementos propios de los lenguajes de programación . Con
PL/SQL vamos a poder programar las unidades de programa de la base de datos ORACLE,
están son:

PROCEDIMIENTOS ALMACENADOS
Los procedimientos almacenados son grupos de instrucciones PL/SQL que se pueden llamar por
su nombre. Son similares a los procedimientos conocidos de los lenguajes de tercera
generación, pero a diferencia de éstos, se almacenan directamente en la base de datos.
También admiten parámetros.
Asimismo, existen funciones almacenadas. Un procedimiento almacenado PL/SQL se define
como:CREATE OR REPLACE PROCEDURE
La sintaxis de un procedimiento almacenado es la siguiente:
CREATE [OR REPLACE]
PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN
OUT] <type>,
<param2> [IN|OUT|IN OUT] <type>, ...)]
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END [<procedure_name>];
FUNCIONES
Una función es un subprograma que devuelve un valor. La sintaxis para construir funciones es la
siguiente:

CREATE [OR REPLACE]
FUNCTION <fn_name>[(<param1> IN <type>, <param2> IN <type>, ...)]
RETURN <return_type>
IS
result <return_type>;
BEGIN
return(result);
[EXCEPTION]
-- Sentencias control de excepcion
END [<fn_name>];

TRIGGERS
Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta como consecuencia de
una determinada instrucción SQL (una operación DML: INSERT, UPDATE o DELETE) sobre
dicha tabla.
La sintaxis para crear un trigger es la siguiente:
CREATE [OR REPLACE] TRIGGER <nombre_trigger>
{BEFORE|AFTER}
{DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]
[OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}
ON <nombre_tabla>
[FOR EACH ROW [WHEN (<condicion>)]]
DECLARE
-- variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END <nombre_trigger>;

SCRIPTS
Dentro de la seccion DECLARE de un bloque anónimo podemos declarar funciones y
procedimientos almacenados y ejecutarlos desde el bloque de ejecución del script.
Este tipo de subprogramas son menos conocidos que los procedimientos almacenados,
funciones y triggers, pero son enormemente útiles.
El siguiente ejemplo declara y ejecuta utiliza una funcion (fn_multiplica_x2).
DECLARE
idx NUMBER;
FUNCTION fn_multiplica_x2(num NUMBER)
RETURN NUMBER
IS
result NUMBER;
BEGIN
result := num *2;
return result;
END fn_multiplica_x2;
BEGIN
FOR idx IN 1..10
LOOP
dbms_output.put_line
('Llamada a la funcion ... '||TO_CHAR(fn_multiplica_x2(idx)));
END LOOP;
END;




Pero además PL/SQL nos permite realizar programas sobre las siguientes herramientas de
ORACLE:
Oracle Forms
Oracle Reports
Oracle Graphics
Oracle Aplication Server
USUARIOS Y PRIBILEGIOS
CREACIÓN DE USUARIOS
Una de las más básicas tareas de un administrador de base de datos es identificar los usuarios.
Cada usuario que conecta en la base de datos debe de tener una cuenta. En las cuentas
compartidas son difíciles de aplicar una auditoria.
Para crear un usuario utilizamos la sentencia CREATE USER. Cuando creas una cuenta como
mínimo tienes que asignar un único nombre (username) y una contraseña para poder
autenticarse.
Para cambiar alguno de los atributos que se le ha añadido al usuario creado se utiliza la
sentencia ALTER USER.
AUTENTICACIÓN ORACLE
Cuando uno se conecta con una instancia de una base de datos la cuenta de usuario debe de
estar autenticada. ORACLE provee tres métodos de autenticación para nuestra cuenta de
usuario.
AUTENTICACIÓN MEDIANTE PASSWORD
Cuando un usuario conecta con una base de datos verifica que este usuario y la contraseña
introducida almacenada en la base de datos, sea correcta. Las contraseñas se guardan
encriptadas en la base de datos (en el data dictionary).
SQL> CREATE USER carla IDENTIFIED BY tititus;
En este caso tititus es la contraseña de david que será guardada encriptada en la base de datos.
AUTENTICACIÓN EXTERNA
Cuando un usuario conecta con la base de datos se verifica que el nombre de usuario es el
mismo que el nombre de usuario del sistema operativo para permitir la validación.
No se almacenan las cuentas en la base de datos de ninguna forma. Estas cuentas están
siempre referidas con OPS$ .A partir de la versión 10g puedes configurar
OS_AUTHENT_PREFIX en el spfile
SQL> CREATE USER ops$carla IDENTIFIED BY tititus;
Mediante IDENTIFIED EXTERNALLY decimos a la base de datos que nuestra cuenta es externa
y tiene que ser validada con el sistema operativo.
AUTENTICACIÓN GLOBAL
Cuando un usuario se conecta con la base de datos se verifica globalmente cuando la
información pasa por una opción avanzada de seguridad ( ADVANCED SECURITY OPTION )
para la autenticación tal como Kerberos, RADIUS ....
Para las cuentas globales no se almacena tampoco nada en la base de datos.
SQL> CREATE USER carla IDENTIFIED GLOBALLY AS’CN=alumnus,OU=campos’ ……;
Mediante IDENTIFIED GLOBALLY decimos a la base de datos que nuestra cuenta se autentica
globalmente, mediante otra opción de seguridad avanzada.
ASIGNACIÓN DE UN USUARIO A UN TABLESPACE ( DEFAULT TABLESPACE )
Mediante esta sentencia asignamos un usuario a un tablespace, este será su tablespace por
defecto cuando creamos un usuario.
SQL> CREATE USER carla IDENTIFIED BY tititus DEFAULT TABLESPACE usesrS;
Mediante esta sentencia, en caso de tener creado ya el usuario le asignamos un tablespace.
SQL> ALTER USER carla DEFAULT TABLESPACE usesrS;
La base de datos toma un tablespace por defecto, en caso de querer cambiar este tablespace
utilizamos la siguiente sentencia
SQL> ALTER DATABASE DEFAULT TABLESPACE usesrS;
ASIGNACIÓN DE UN USUARIO A UN TABLESPACE TEMPORAL
Un tablespace temporal se utiliza para almacenar “segmentos” temporales que son creados
durante operaciones como ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX.A
veces a los usuarios se les asocia un tablespace temporal para realizar este tipo de operaciones,
cuando estas operaciones finalizan este segmento temporal que se ha creado exclusivamente
para la operación desaparece.
SQL> CREATE USER carla IDENTIFIED BY tititus DEFAULT TABLESPACE usesrs
TEMPORARY TABLESPACE temp;
Mediante TEMPORARY TABLESPACE asignamos como tablespace temporal temp al usuario
david.
En caso de que el usuario esté creado si queremos asignarle un tablespace temporal utilizamos
ALTER USER
SQL> ALTER USER carla DEFAULT TABLESPACE temp;
ASIGNACIÓN DE UN PERFIL A UN USUARIO
Al igual que podemos asignar un tablespace a un usuario, también podemos asignarle un perfil
(profile). El principal perfil ( profile ) por defecto se denomina default.
Si el usuario no está lo podemos crear de la siguiente forma:
SQL> CREATE USER carla IDENTIFIED BY tititus;
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE users
PROFILE resource profile;
En caso de que el usuario ya esté creado al igual que en los anteriores casos utilizamos la
sentencia ALTER USER.
SQL> ALTER USER carla PROFILE resource profile;
BORRADO DE UN USUARIO
Para borrar un usuario utilizamos la sentencia DROP USER, podemos opcionalmente incluir la
opción CASCADE, se utiliza para borrar recursivamente los objetos del usuario que se pretende
borrar.
SQL> DROP USER carla CASCADE
OTORGANDO PRIVILEGIOS (GRANTING)
A un usuario podemos otorgarle una serie de privilegios. Un privilegio permite a un usuario
acceder a ciertos objetos o realizar ciertas acciones:.
- Privilegios sobre Objetos ( Object privileges ) a permisos sobre vistas, tablas, secuencias,
procedimientos, paquetes.
- Privilegios del Sistema ( System privileges ) a permisos sobre “niveles de la base de datos”
como pueden ser conexión a la base de datos, creación de usuarios, limitar cuentas.
- Privilegios sobre Roles ( Role privileges ) a muchos permisos son otorgados mediante roles
agrupando un conjunto de privilegios.
Para otorgar privilegios utilizamos la sentencia GRANT, para quitar un privilegio o permiso a un
usuario utilizamos la sentencia REVOKE
EJEMPLOS
Privilegio sobre una tabla:
SQL> GRANT ALL ON tabla_aLumnos TO carla;
Siendo tabla_alumnos una tabla de nuestra base de datos y david un usuario de esta, hemos
asignado mediante GRANT ALL,todos los permisos al usuario david sobre esta tabla.
GRANT ALL= permisos SELECT, INSERT, UPDATE, DELETE
Si queremos asignar sólo uno de estos permisos utilizamos la misma sentencia pero con el
permiso que queramos otorgar.
SQL> GRANT SELECT ON tabla_alumnos TO carla
SQL> GRANT SELECT, INSERT ON tabla_alumnos TO carla
PRIVILEGIO SOBRE UNA VISTA:
Para el caso de las vistas podemos a un usuario otorgar permisos SELECT, INSERT, UPDATE,
DELETE, DEBUG, REFERENCES.
Siendo vista_alumnos una vista de nuestra base de datos y david un usuario de esta:
Otorgamos al usuario david todos los permisos sobre la vista vista_alumnos.
SQL> GRANT ALL ON vista_alumnos TO carla
Otorgamos al usuario david algunos permisos sobre la vista_alumnos
SQL> GRANT SELECT ON vista_alumnos TO carla
SQL> GRANT SELECT, INSERT ON tabla_alumnos TO carla
Privilegio sobre una secuencia:
Con las secuencias pasa lo mismo que con los anteriores objetos vistos, para otorgar permisos
se utiliza GRANT. Los permisos que podemos otorgar a una secuencia es SELECT o ALTER.
Privilegio sobre un paquete,función o procedimiento
Los permisos que podemos otorgar a las funciones, paquetes o procedimientos almacenados en
nuestra base de datos son los siguientes: EXECUTE, DEBUG.
QUITANDO PRIVILEGIOS
Si queremos quitar un privilegio a uno de estos objetos haremos lo mismo que con GRANT pero
utilizando la sentencia REVOKE.
SQL> REVOKE ALL ON tabla_usuarios FROM carla
HERRAMIENTAS ESPECIALES
Oracle ofrece la gama más completa e integrada de herramientas para el desarrollo de
aplicaciones, desarrollo de base de datos e inteligencia de negocio, compatibles con cualquier
enfoque de desarrollo, plataforma tecnológica o sistema operativo.
Oracle también ofrece diversas herramientas JDeveloper y Eclipse gratuitas que facilitan el
desarrollo de aplicaciones web y bases de datos, además de facilitar a los desarrolladores .NET
la implantación de aplicaciones basadas en tecnología Oracle y servicios web en la plataforma
Windows.
SQLForms: es la herramienta de Oracle que permite, de un modo sencillo y eficiente, diseñar
pantallas para el ingreso, modificaciones, bajas y consultas de registros. El usuario podrá, una
vez definida la forma, trabajar con ella sin necesidad de generar códigos, dado que Oracle trae
incorporado un conjunto de procedimientos y funciones asociados a las teclas de funciones,
como por ejemplo la tecla [F7], que se usa para iniciar una consulta.
La herramienta fundamental de SQL es la sentencia SELECT, que permite seleccionar registros
desde las tablas de la Base de Datos, devolviendo aquellos que cumplan las condiciones
establecidas y pudiendo presentar el resultado en el orden deseado.
Para ver el gráfico seleccione la opción "Descargar" del menú superior
SQL (Structured Query Languague = Lenguaje de Consulta estructurado).
La orden FROM identifica la lista de tablas a consultar. Si alguna de las tablas a consultar no es
propiedad del usuario, debe especificarse el nombre del propietario antes que el nombre de la
tabla en la forma nombre_propietario.nombre_tabla.
La orden WHERE decide los registros a seleccionar según las condiciones establecidas,
limitando el número de registros que se muestran.
La orden ORDER BY indica el orden en que aparece el resultado de la consulta.
BASES DE DATOS DISTRIBUIDAS
Una base de datos distribuida (BDD) es un conjunto de múltiples bases de datos lógicamente
relacionadas las cuales se encuentran distribuidas entre diferentes sitios interconectados por una
red de comunicaciones, los cuales tienen la capacidad de procesamiento autónomo lo cual indica
que puede realizar operaciones locales o distribuidas. Un sistema de Bases de Datos Distribuida
(SBDD) es un sistema en el cual múltiples sitios de bases de datos están ligados por un sistema
de comunicaciones de tal forma que, un usuario en cualquier sitio puede acceder los datos en
cualquier parte de la red exactamente como si los datos estuvieran siendo accedidos de forma
local.
En un sistema distribuido de bases de datos se almacenan en varias computadoras. Los
principales factores que distinguen un SBDD de un sistema centralizado son los siguientes:
 Hay múltiples computadores, llamados sitios o nodos.
 Estos sitios deben de estar comunicados por medio de algún tipo de red de
comunicaciones para transmitir datos y órdenes entre los sitios.
Tipos de arquitecturas/implementaciones
En un sistema de bases de datos distribuidas, existen varios factores que deben tomar en
consideración que definen la arquitectura del sistema:
1. Distribución: Los componentes del sistema están localizados en la misma computadora
o no.
2. Heterogeneidad: Un sistema es heterogéneo cuando existen en él componentes que se
ejecutan en diversos sistemas operativos, de diferentes fuentes, etc.
3. Autonomía: Se puede presentar en diferentes niveles, los cuales se describen a
continuación:
 Autonomía de diseño: Habilidad de un componente del para decidir cuestiones
relacionadas a su propio diseño.
 Autonomía de comunicación: Habilidad de un componente del para decidir como y
cuando comunicarse con otros SMBD.
 Autonomía de ejecución: Habilidad de un componente del para ejecutar operaciones
locales como quiera.
Multi Base de Datos Distribuida
Cuando una base de datos distribuida es muy homogénea se dice que es multi base de datos
distribuida.
Base de Datos Federada
Cuando una base de datos distribuida tiene mucha autonomía local se dice que es federada.
Objetivos de Implementación
Al implementar una base de datos distribuida se tienen ciertos objetivos comunes:
 Transparencia de ubicación. Permite a los usuarios tener acceso a los datos sin que
tenga conocimiento de la ubicación de éstos. Se puede conseguir este nivel de
transparencia al utilizar los administradores de transacciones distribuidas, los cuales son
capaces de determinar la localización de los datos y de emitir acciones a los
calendarizadores apropiados, lo cual puede ejecutarse cuando los administradores de
transacciones distribuidas poseen acceso a los directorios de localizaciones de los datos.
 Transparencia de duplicación. Para que la transparencia de duplicación sea posible, los
administradores de transacciones deben traducir las solicitudes de procesamiento de
transacción en acciones para el administrador de datos. Para las lecturas el administrador





de transacciones selecciona uno de los nodos que almacena los datos y ejecuta la lectura.
Para optimizar el proceso, el administrador de transacciones necesita información sobre el
rendimiento de varios nodos respecto al sitio de consulta, así podrá seleccionar el nodo de
mejor rendimiento. La actualización y escritura de datos duplicados suelen ser más
complicadas, ya que el manejador de transacciones debe emitir una acción de escritura
para cada uno de los calendarizadores que almacena una copia de los datos.
Transparencia de concurrencia. Cuando varias transacciones se ejecuten al mismo
tiempo, los resultados de las transacciones no deberán afectarse. La trasparencia de
concurrencia se logra si los resultados de todas las transacciones concurrentes son
consistentes de manera lógica con los resultados que se habrían obtenido si las
transacciones se hubieran ejecutado una por una, en cualquier orden secuencial.
Transparencia de fallas. Significa que a pesar de fallas las transacciones sean
procesadas de un modo correcto. Frente a una falla, las transacciones deben ser atómicas,
significa que se procesen todas o ninguna de ellas. Para este tipo de problemas es
importante tener resguardo de la base de datos, y así poder restaurarla cuando sea
conveniente. El sistema debe detectar cuándo falla una localidad y tomar las medidas
necesarias para recuperarse del fallo. El sistema no debe seguir utilizando la localidad que
falló. Por último, cuando se recupere o repare esta localidad, debe contarse con
mecanismos para reintegrarla al sistema con el mínimo de complicaciones.
Localidad del procesamiento. Los datos se deben distribuir lo más cerca posible de las
aplicaciones que los usan para maximizar la localidad del procesamiento, este principio
responde a minimizar el acceso remoto a los datos. Diseñar una distribución que maximice
localidad del procesamiento puede hacerse añadiendo la cantidad de referencias locales y
remotas correspondientes a cada fragmentación candidata y asignar la fragmentación
eligiendo la mejor solución. Independencia de configuración. La independencia de
configuración permite añadir o reemplazar hardware sin tener que cambiar componentes
de software existentes en el sistema de base de datos distribuida.
Particionamiento de la Base de Datos. La base de datos se distribuye de modo que no
haya solapamiento o duplicación de los datos mantenidos en las diferentes localidades,
como no hay duplicaciones de los datos, se evitan los costos asociados con el
almacenamiento y mantenimiento de datos redundantes. Si un mismo segmento de datos
se usa en más de una localidad se ve limitada la disponibilidad de los datos. La fiabilidad
también puede verse limitada cuando se produce un fallo en el sistema de cálculo de una
localidad se afecta la disponibilidad de los datos de esa localidad no estén disponible para
los usuarios en cualquier parte del sistema.
Fragmentación de datos. Consiste en subdividir las relaciones y distribuirlas entre los
sitios de la red, tiene como objetivo buscar formas alternativas de dividir una las instancias
(tablas) de relaciones en otras más pequeñas. La fragmentación se puede realizar por
tuplas individuales (fragmentación horizontal), por atributos individuales fragmentación
vertical) o una combinación de ambas (fragmentación híbrida). El principal problema de la
fragmentación radica en encontrar la unidad apropiada de distribución. Una relación no es
una buena unidad por muchas razones. Normalmente las vistas de una relación están
formadas por subconjuntos de relaciones. Además, las aplicaciones acceden localmente a
subconjuntos de relaciones. Por ello, es necesario considerar a los subconjuntos de
relaciones como unidad de distribución. Al descomponer de una relación en fragmentos,
tratados cada uno de ellos como una unidad de distribución, permite el proceso
concurrente de las transacciones. El conjunto de estas relaciones, provocará la ejecución
paralela de una consulta al ser dividida en una serie de subconsultas que operará sobre los
fragmentos. Cuando las vistas definidas sobre una relación son consideradas como unidad
de distribución que se ubican en diferentes sitios de la red, podemos optar por dos
alternativas diferentes: La relación no estará replicada y se almacena en un único sitio, o
existe réplica en todos o algunos de los sitios en los cuales reside la aplicación. Las
consecuencias de esta estrategia son la generación de un volumen de accesos remotos
que pueden ser innecesarios con un mal manejo de estas replicas. Además, las réplicas
innecesarias pueden causar problemas en la ejecución de las actualizaciones y puede no
ser deseable si el espacio de almacenamiento está limitado. Los inconvenientes de la
fragmentación están dados en que si las pueden estar definidas por fragmentos
mutuamente exclusivos y al recuperar los datos de dos fragmentos situados en sitios
diferentes es necesario trasmitir los datos de un sitio a otro y realizar sobre ellos la
operación de unión (Join), lo cual puede ser costoso. El control semántico cuando los
atributos implicados en una dependencia una relación se descompone en diferentes
fragmentos y estos se ubican en sitios diferentes puede ser muy costos porque es
necesario hacer búsquedas en un gran número de sitios.
Ventajas y Desventajas
Ventajas
 Refleja una estructura organizacional - los fragmentos de la base de datos se ubican en
los departamentos a los que tienen relación.
 Autonomía local - un departamento puede controlar los datos que le pertenecen.
 Disponibilidad - un fallo en una parte del sistema solo afectará a un fragmento, en lugar
de a toda la base de datos.
 Rendimiento - los datos generalmente se ubican cerca del sitio con mayor demanda,
también los sistemas trabajan en paralelo, lo cual permite balancear la carga en los
servidores.
 Economía - es más barato crear una red de muchas computadoras pequeñas, que tener
una sola computadora muy poderosa.
 Modularidad - se pueden modificar, agregar o quitar sistemas de la base de datos
distribuida sin afectar a los demás sistemas (módulos).
Desventajas
 Complejidad - Se debe asegurar que la base de datos sea transparente, se debe lidiar
con varios sistemas diferentes que puden presentar dificultades únicas. El diseño de la
base de datos se tiene que trabajar tomando en cuenta su naturaleza distribuida, por lo
cual no podemos pensar en hacer joins que afecten varios sistemas.
 Economía - la complejidad y la infraestructura necesaria implica que se necesitará una
mayor mano de obra.
 Seguridad - se debe trabajar en la seguridad de la infraestructura así como cada uno de
los sistemas.
 Integridad - Se vuelve difícil mantener la integridad, aplicar las reglas de integridad a
través de la red puede ser muy caro en términos de transmisión de datos.
 Falta de experiencia - las bases de datos distribuidas son un campo relativamente nuevo
y poco común por lo cual no existe mucho personal con experiencia o conocimientos
adecuados.
 Carencia de estándares - aún no existen herramientas o metodologías que ayuden a los
usuarios a convertir un DBMS centralizado en un DBMS distribuido.
 Diseño de la base de datos se vuelve más complejo - además de las dificultades que
generalmente se encuentran al diseñar una base de datos, el diseño de una base de
datos distribuida debe considerar la fragmentación, replicación y ubicación de los
fragmentos en sitios específicos.
Descargar