martes, 7 de junio de 2011

3.1 administración de transacciones y manejo de concurrencia

 Administración de transacciones
Definición de transacciones
Una transacción en un Sistema de Gestión de Bases de Datos (SGBD), es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica.
Protocolo de bloqueo en dos fases
 El protocolo de bloqueo en dos fases fuerza a las transacciones cuando todas las operaciones de adquisición de bloqueos (bloquear_lectura, bloquear_escritura) preceden a la primera operación de desbloqueo (desbloquear). Dicho de otro modo, primero hay que adquirir todos los bloqueos, y después se pueden liberar.

recupera3.1 administracion de transacciones y manejo de concurrencia

 Administracion de transacciones
Definición de transacciones
Una transacción en un Sistema de Gestión de Bases de Datos (SGBD), es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica.
Protocolo de bloqueo en dos fases
 El protocolo de bloqueo en dos fases fuerza a las transacciones cuando todas las operaciones de adquisición de bloqueos (bloquear_lectura, bloquear_escritura) preceden a la primera operación de desbloqueo (desbloquear). Dicho de otro modo, primero hay que adquirir todos los bloqueos, y después se pueden liberar.

recuperacion de informacion mediante transacciones
  La Recuperación de Transacción es el proceso de borrar los efectos indeseados de transacciones específicas de la base de datos.

Manejo de concurrencia

Definición de concurrencia
 La Concurrencia en las base de datos es de     suprema importancia en los sistemas de información, ya que evita errores en elmomento de ejecutar las diferentes transacciones
Técnicas de bloqueo 
Las técnicas más empleadas para controlar el acceso concurrente de las transacciones se basan en el concepto de bloquear elementos de datos. Un bloqueo corresponde a una variable asociada al
gránulo que describe las operaciones que se pueden realizar sobre él.

Seriabilidad con el bloqueo en dos frases
Cuando se utiliza el protocolo de bloqueo en dos fases, puede demostrarse que la ejecución será serializable
cion de informacion mediante transacciones
  La Recuperación de Transacción es el proceso de borrar los efectos indeseados de transacciones específicas de la base de datos.

Manejo de concurrencia

Definición de concurrencia
 La Concurrencia en las base de datos es de     suprema importancia en los sistemas de información, ya que evita errores en elmomento de ejecutar las diferentes transacciones
Técnicas de bloqueo 
Las técnicas más empleadas para controlar el acceso concurrente de las transacciones se basan en el concepto de bloquear elementos de datos. Un bloqueo corresponde a una variable asociada al
gránulo que describe las operaciones que se pueden realizar sobre él.

Seriabilidad con el bloqueo en dos frases
Cuando se utiliza el protocolo de bloqueo en dos fases, puede demostrarse que la ejecución será serializable

lunes, 6 de junio de 2011

Practica 18:

Respaldo de datos
El acceso a bases de datos de archivo (archive database access) de Adaptive Server Enterprise (ASE) brinda al administrador de la base de datos la capacidad de validar o recuperar selectivamente datos a partir de una copia de respaldo (o dump) de una base de datos, haciendo que la copia de respaldo aparezca como si fuera una base de datos tradicional de solo lectura; a éste tipo de base de datos se le llama "base de datos de archivo" o "archive database".
Al contrario de las bases de datos tradicionales, una base de datos de archivo usa la copia de respaldo misma de la base de datos como almacenamiento principal en disco, requiriendo un mínimo de espacio tradicional para el almacenamiento de páginas nuevas o modificadas resultantes de la recuperación de la copia de respaldo de la base de datos.
Una copia de respaldo contiene las imágenes de muchas (si no de todas) las páginas de la base de datos; en consecuencia, una base de datos de archivo puede ser restaurada sin tener que usar el Backup Server para transferir páginas de la copia de respaldo hacia el almacenamiento tradicional en disco, por lo que el cargue es significativamente más rápido que el de una base de datos tradicional.


practica 17

https://docs.google.com/document/d/1O5M9RSl-qhCXOtLwLJn1-n8zhgrmQ2K8fj55kNqstYI/edit?hl=es

practica 16

https://docs.google.com/document/d/1SNgnLJKEMzvoQEo9dlmd2dG_vUJs9W2-FXZ7ebG8w4M/edit?hl=es

3.2. Configura controles de acceso y cifrado de información para garantizar la confidencialidad de los datos.

A. CONFIGURACIÓN DE CONTROLES DE ACCESO.
  • Gestión de Usuarios

Cada usuario tiene un ID de sistema interno en PostgreSQL (llamado sysid),
así como una contraseña. El ID es utilizado para asociar objetos en una base
de datos con su propietario
PostgreSQL crea por defecto a un superusuario llamado postgres. Todos los
demás superusuarios pueden ser creados por éste, o por cualquier otro
superusuario creado posteriormente.
PostgreSQL proporciona dos métodos para la creación de usuarios de bases
de datos. Cada uno de ellos requiere autenticación como superusuario.
Los métodos son:
· A través del uso del comando SQL CREATE USER.
· Un programa de línea de comandos llamado createuser
  • CREATE USER

La sintaxis para CREATE USER es:
CREATE USER nombre_usuario
[ WITH [ SYSID uid ]
[ PASSWORD 'password' ] ]
[ CREATEDB | NOCREATEDB ]
[ CREATEUSER | NOCREATEUSER ]
[ IN GROUP groupname [, ...] ]
[ VALID UNTIL 'abstime' ]
A continuación se describe cada una de las partes de la sintaxis de CREATE
USER:
  • SYSID uid

Especifica que el ID que va a definirse debe establecerse al valor de uid.
Si se omite, un razonable y único valor numérico por defecto es escogido.
  • PASSWORD 'password'

Establece la nueva contraseña del usuario. Si no se especifica, la
contraseña por defecto es NULL.
  • CREATEDB | NOCREATEDB

Usando la palabra clave CREATEDB se le garantiza al nuevo usuario el
privilegio de crear nuevas bases de datos, así como el de destruir las de
su propiedad. Usando NOCREATEDB se deniega este permiso (que es lo
que ocurre por defecto).
  • CREATEUSER | NOCREATEUSER

Certifica el privilegio de crear nuevos usuarios. Si un usuario tiene los
privilegios de crear a otros usuarios tendrá además todos los privilegios,
en todas las bases de datos (incluyendo los permisos para crear una base
de datos, aunque se haya especificado NOCREATEDB).
NOCREATEUSER explícitamente fuerza a la situación por defecto, que
deniega el privilegio.
  • IN GROUP nombre_grupo [, ...]

Añade al nuevo usuario al grupo llamado nombre_grupo. Pueden ser
especificados múltiples nombres de grupo, separándolos mediante
comas. El o los grupos deben existir para que funcione la condición.
  • VALID UNTIL 'abstime'

Establece que la contraseña del usuario expirará el abstime, el cual debe
ser un formato reconocible de fecha/hora (timestamp). Tras esa fecha, la
contraseña se resetea, y la expiración se hace efectiva.
  • VALID UNTIL 'infinity'

Establece validez permanente para la contraseña del usuario.

createuser
El script createuser es ejecutado directamente desde la línea de comandos, y
puede operar de dos formas.
Si se utiliza sin argumentos, él interactivamente le pedirá el nombre de
usuario y cada uno de los privilegios que se le van a asignar. Alternamente,
puede optar por especificar las opciones y el nombre del usuario a ser creado
en la misma línea de comandos.
La sintaxis de createuser es:
createuser [ opciones ] [ nombre_usuario ]
El nombre_usuario en la sintaxis representa el nombre del usuario que va a
crear. Reemplace opciones con una o más de las siguientes:
· -d, -createdb Equivalente a la palabra clave CREATEDB. Permite al
nuevo usuario crear bases de datos.
· -D, -no-createdb Equivalente a la palabra clave NOCREATEDB
Explícitamente indica que el nuevo usuario no puede crear bases de
datos.
· -a, -adduser Equivalente a la palabra clave CREATEUSER Perimte al
nuevo usuario la creación de otros usuarios, y asigna el status de
superusurario al usuario.
· -A, -no-adduser Equivalente a la palabra clave NOCREATEUSER.
Explícitamente indica que el nuevo usuario no es superusuario.
· -i SYSID, -sysid=SYSID Establece el nuevo ID de sistema del usuario a
SYSID.
· -P, -pwprompt Resulta en una petición de introducción de contraseña,
permitiéndole establecer la contraseña del nuevo usuario.
· -h NOMBRE_MAQUINA, -host=NOMBRE_MAQUINA Especifica desde
qué NOMBRE_MAQUINA se conectará, además de la local (localhost), o
la máquina definida por la variable de entorno PGHOST.
· -p PUERTO, -port=PUERTO Especifica que la conexión de base de
datos se realizará por el puerto PUERTO, en vez de por el puerto por
defecto.


-U NOMBRE_USUARIO, -username=NOMBRE_USUARIO Especifica
que NOMBRE_USUARIO será el usuario que conecte a PostgreSQL (por
defecto se conecta usando el nombre de usuario del sistema).
· -W, -password Resulta en una petición de contraseña para el usuario
que conecta, lo cual ocurre automáticamente si el archivo pg_hba.conf
está configurado para no confiar en la máquina solicitante.
  • Modificación de Usuarios

Los usuarios existentes sólo pueden ser modificados por superusuarios
PostgreSQL mediante el comando SQL ALTER USER, donde su sintaxis es:
ALTER USER nombre_usuario
[ WITH PASSWORD 'password' ]
[ CREATEDB | NOCREATEDB ]
[ CREATEUSER | NOCREATEUSER ]
[ VALID UNTIL 'abstime' ]
Aquí nuevamente se hace uso de las palabras claves utilizadas en
CREATE USER.
  • Eliminación de Usuarios

Al igual que en la creación de usuarios, en la eliminación de usuarios también
existen dos formas de hacerlo:
· El comando DROP USER
· El programa psql
La sintaxis para DROP USER es:
DROP USER nombre_usuario
La sintaxis para psql es:
[~]$ psql -U manager template1
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit


  • Manejo de Grupos

Cualquier superusuario puede crear un nuevo grupo en PostgreSQL con el
comando CREATE GROUP. Aquí tiene la sintaxis de CREATE GROUP:
CREATE GROUP nombre_grupo
[ WITH [ SYSID groupid ]
[ USER username [, ...] ] ]
En la sintaxis, nombre_grupo es el nombre del grupo a ser creado. debe iniciar
por una carácter alfabético, y no puede exeder los 31 caracteres de longitud. El
proporcionar la palabra clave WITH permite especificar cualquiera de los
atributos opcionales. Si desea especificar el ID de sistema a usar con el nuevo
grupo, utilice la palabra clave SYSID para especificar el valor de groupid. Use la
palabra clave USER para incluir a uno o más usuarios al grupo en tiempo de
creación. Separe los distintos usuarios mediante comas.
Adicionalmente, el usuario PostgreSQL y las tablas de grupos operan
separadamente las unas de las otras. Esta separación que los ID de usuarios y
grupos puedan ser idénticos dentro del sistema PostgreSQL.
Y para la eliminación de un grupo se usa el comando SQL DROP GROUP. Su
sintaxis es:
DROP GROUP nombre_grupo
Para añadir o eliminar un usuario a un grupo se usa el comando SQL ALTER
GROUP, especificando si es para añadirlo ADD y si es para eliminarlo DROP, y
sin son varios usuarios simplemente se separan por ‘,’.
Su sintaxis es:
ALTER GROUP nombre_grupo { ADD | DROP } USER username [, ... ]

  • OTRAS FUNCIONES BÁSICAS DE PostgreSQL


Estas son algunas otras funciones a tener en cuenta para el manejo de bases
de datos en PostgreSQL.
· Abort: Aborta la transacción en curso
· Modificar Grupo:
MODIFICAR GRUPO nombre AÑADIR USUARIO nombre de usuario [, ...
]MODIFICAR GRUPO nombre ELIMINAR USUARIO nombre de usuario [,
... ]
· CREATE TABLE: Crea una nueva tabla
CREATE [ TEMPORARY | TEMP ] TABLE table (
column type
[ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ]
[column_constraint_clause | PRIMARY KEY } [ ... ] ]
[, ... ]
[, PRIMARY KEY ( column [, ...] ) ]
[, CHECK ( condition ) ]
[, table_constraint_clause ]
) [ INHERITS ( inherited_table [, ...] ) ]
· Modificar Tabla:
MODIFICAR TABLA tabla [ * ]
AÑADIR [ COLUMNA ] columna tipo
MODIFICAR TABLA tabla [ * ]
MODIFICAR [ COLUMNA ] columna { SET DEFAULT valor | DROP
DEFAULT }
MODIFICAR TABLA tabla [ * ]
RENOMBRAR [ COLUMNA ] columna A nueva columna
MODIFICAR TABLA tabla
RENOMBRAR A nueva tabla
· Modificar usurario:
MODIFICAR USUARIO nombre de usuario[ WITH PASSWORD ’palabra
clave’ ][ CREATEDB | NOCREATEDB ][CREATEUSER |
NOCREATEUSER][ VALID UNTIL ’abstime’ ]
· BEGIN: comienza una transacción en modo encadenado
BEGIN [ WORK | TRANSACTION ]
· CLUSTER:
CLUSTER indexname ON table
· COMMIT: Realiza la transacción actual.
COMMIT [ WORK | TRANSACTION ]
· COPY: Copia datos entre ficheros y tablas.
COPY [ BINARY ] table [ WITH OIDS ]FROM { ’filename’ | stdin }[ [USING]
DELIMITERS ’delimiter’ ][ WITH NULL AS ’null string’ ]COPY [ BINARY ]
table [ WITH OIDS ]TO { ’filename’ | stdout }[ [USING] DELIMITERS
delimiter’ ][ WITH NULL AS ’null string’ ]
· CREATE AGGREGATE: Define una nueva función de agregado
CREATE AGGREGATE name [ AS ] ( BASETYPE = data_type [ ,
SFUNC1 = sfunc1, STYPE1 = sfunc1_return_type ][ , SFUNC2 = sfunc2,
STYPE2 = sfunc2_return_type ][ , FINALFUNC = ffunc ][ , INITCOND1 =
initial_condition1 ][ , INITCOND2 = initial_condition2 ] )
· CREATE DATABASE: Crea una nueva base de datos.
CREATE DATABASE name [ WITH LOCATION = ’dbpath’ ]
· CREATE FUNCTION: Crea una nueva función.
CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
[ WITH ( attribute [, ...] ) ]
AS obj_file , link_symbol
LANGUAGE ’C’
· CREATE INDEX: Crear un índice secundario.
CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
[ USING nombre_acceso ] ( columna [ nombre_operador] [, ...] )
CREATE [ UNIQUE ] INDEX nombre_indice ON tabla

[ USING nombre_acceso ] ( nombre_funcion( r">columnale> [, ... ])
nombre_operador )
· CREATE TRIGGER: Crea un nuevo disparador
CREATE TRIGGER name
{ BEFORE | AFTER } { event
[OR ...] } ON table
FOR EACH { ROW | STATEMENT } EXECUTE PROCEDURE
ER">funcBLE>
( arguments )
· DELETE: Borrar filas de una tabla
DELETE FROM table [ WHERE condition ]
· DROP AGGREGATE: Elimina la definición de una función agregada
DROP AGGREGATE name type
· DROP DATABASE: Elimina una base de datos existente
DROP DATABASE name
· DROP TABLE: Eliminar tablas de una base de datos
DROP TABLE nombre [, ...]
· DROP TRIGGER: Eliminar la definición de un disparador
DROP TRIGGER nombre ON tabla






B. RESPALDO DE DATOS.
Tipos de respaldo.
Incrementales.
Respaldo de Incremento ("Incremental"): Cuando se lleva a cabo un Respaldo de Incremento, sólo aquellos archivos que tengan el archive bit serán respaldados; estos archivos (o bloques) son los que han sido modificados después de un Respaldo Completo. Además cada Respaldo de Incremento que se lleve a cabo también eliminará el archive bit de estos archivos (o bloques) respaldados.


Completos.
Respaldo Completo ("Full"): Guarda todos los archivos que sean especificados al tiempo de ejecutarse el respaldo. El archive bit es eliminado de todos los archivos (o bloques), indicando que todos los archivos ya han sido respaldados.

Respaldo Diferencial ("Differential"): Este respaldo es muy similar al "Respaldo de Incremento" , la diferencia estriba en que el archive bit permanece intacto.

Respaldos manuales y automatizados.
  • Respaldos manuales.

Una vez con la replicación ejecutándose, es muy fácil hacer un respaldo de los datos. Solo necesitas temporalmente detener al esclavo de replicarse ingresando la siguiente sentencia SQL logueándote al monitor de MySQL como root o cualquier otro usuario con privilegios SUPER:

Una vez que el usuario replicador esta creado en ambos servidores, necesitaremos añadir algunas líneas a la configuración de MySQL tanto en el servidor maestro como en el esclavo. Dependiendo del tipo de sistema operativo, el archivo muy probablemente se llamara my.cnf o my.ini para Linux y Windows respectivamente. En sistemas del tipo Unix (Linux) el archivo de configuración generalmente se localiza en el directorio /etc.

  • Respaldo automatizado

Si la replicación y el proceso de respaldo están trabajando apropiadamente, podemos escribir un script de Shell simple que detenga la replicación, respalde los datos en el servidor esclavo, y después reinicie la replicación de nuevo en el servidor esclavo.