martes, 6 de noviembre de 2012

Unidad V Transacciones

  1. ¿Qué es una transacción?

Transacion: trasferencia de fondos de una fuente a otra.

·         Numeros de cuentas

·         Cantidad a tranferir

·         Verificar si tiene fondos.

·         Transferir fondos

  1. ¿Qué significa ACID? y defina cada una de las palabras que forman las siglas

Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad), para ser calificacada como transacción.

·         Atomicity : Una Transacción (Tx) se ejecuta completamente ó de otra manera se eliminan los cambios parciales realizados.

Begin Transaction - Programa - End Transaction

Responsable: El método de recuperación, de no completar todas las operaciones, devuelve la BD a su estado anterior a empezar esa Tx (rollback).

·         Coherencia: Asegura que los datos queobservamos no cambian (por otros usuarios) hasta que acabemos la Transacción.

Después de terminar una Transacción la Base de datos no viola ninguna de sus reglas: valores obligatorios, claves únicas,etc.

Responsable: los programadores mediante la definición adecuada de la integridad referencial: check, triggers, primary key, foreign key,…

·         Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen.

Una Transacción en ejecución no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar.

Más aun, si varias transacciones, se ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado secuencialmente. Esto se conoce como seriabilidad debido a que su resultado es la capacidad de volver a cargar los datos iniciales y reproducir una serie de transacciones para finalizar con los datos en el mismo estado en que estaban después de realizar transacciones originales.d

Responsable: el método de concurrencia: mecanismos, reglas, protocolos

·         Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas.

Responsable: el método o gestor de recuperación. 
  1. ¿Qué significa Tx?

Es una transacion.

  1. ¿Para que nos sirve el Rollback?

·         Finaliza la transacción actual y deshace los cambios realizados

·         Recuperacion, de no completar todas las operaciones, devuelve la BD a su estado anterior a empezar esa Tx

  1. Defina Integridad de datos

El término integridad de datos se refiere a la corrección y completitud de los datos en una base de datos. Cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos almacenados puede perderse de muchas maneras diferentes. Pueden añadirse datos no válidos a la base de datos, tales como un pedido que especifica un producto no existente.

  1. Defina concurrencia

El termino concurrencia se refiere al hecho de que los DBMS (SISTEMAS DE ADMINISTRACION DEBD) permiten que muchas transacciones puedan accesar a unamisma base de datos a la vez.

  1. Defina Grado de consistencia

Podría definirse como la coherencia entre todos los datos de la base de datos. Cuando se pierde la integridad también se pierde la consistencia. Pero la consistencia también puede perderse por razones de funcionamiento.

  1. Mencione aspectos relacionados al procesamiento de transacciones

·         Modelo de estructura de transacciones. Es importante considerar si las transacciones son planas o pueden estar anidadas.

·         Consistencia de la base de datos interna. Los algoritmos de control de datos semántico tienen que satisfacer siempre las restricciones de integridad cuando una transacción pretende hacer un commit.

·         Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. Así también, se requieren protocolos para la recuperación local y para efectuar los compromisos (commit) globales.

·         Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas.

·         Protocolos de control de réplicas. El control de réplicas se refiere a cómo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA).

  1. Defina los estados de una transacción:
    • Activa (Active): el estado inicial; la transacción permanece en este estado durante su ejecución.
    • Parcialmente comprometida (Uncommited): Después de ejecutarse la última transacción.
    • Fallida (Failed): tras descubrir que no se puede continuar la ejecución normal.
    • Abortada (Rolled Back): después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.
    • Comprometida (Commited): tras completarse con éxito.
 

  1. El estándar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en función de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos eventos son:
    • Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podría usarse una versión anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento.
    • Lectura norepetible. Una transacción vuelve a leer datos que previamente había leído y encuentra que han sido modificados o eliminados por una transacción cursada.
    • Lectura fantasma. Una transacción vuelve a ejecutar una consulta, devolviendo un conjuto de registros que satisfacen una condición de búsqueda y encuentra que otros registro que satisfacen la condición han sido insertadas por otra transacción cursada.

miércoles, 5 de septiembre de 2012


Investigar los siguientes 

  • motor de base de datos
Es un conjunto de Algorimos que permite la Gestion y Optimización de Base de datos.
Prudentemente el Motor de bases de datos utiliza instrucciones especificas para la:
A)Busqueda de información
B) Añadir, Borrrar, Modificar : Tablas
C) Añadir, Borrar, Modificar : Campos
D) Etc.

La mayoria de los motores Basan sus busquedas por lo que se le llama I.D. (Identificadores) Ya que se facilita la Ordenacion por medio del metodo Burbuja.
  • MyISAM
Es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de Mysql, el motor InnoDB está empezando a reemplazar a este tipo de tablas por su capacidad de ejecutar transacciones de tipo ACID y bloqueo de registros e integridad referencial
  • InnoDB
Es una tecnología de almacenamiento de datos de código abierto para la base de datos MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerá de la aplicación específica.
  • Transacciones tipo ACID
Expresa la función que las transacciones desarrollan en aplicaciones críticas para una misión. Acuñado por los pioneros en el procesamiento de transacciones, el acrónimo ACID responde a los términos atomicidad (atomicity), coherencia (consistency), aislamiento (isolation) y permanencia (durability).
Estas propiedades garantizan un comportamiento predecible, reforzando la función de las transacciones como proposiciones de todo o nada diseñadas para reducir la carga de administración cuando hay muchas variables.

Atomicidad 
Una transacción es una unidad de trabajo en la que se produce una serie de operaciones entre las instrucciones BEGIN TRANSACTION y END TRANSACTION de una aplicación. Una transacción se ejecuta exactamente una vez y tiene carácter "atómico" (de subdivisión), es decir, el trabajo se realiza en su totalidad o no se realiza en ningún caso. La atomicidad elimina la posibilidad de procesar un subconjunto de operaciones.

Coherencia 
Una transacción es una unidad de integridad porque mantiene la coherencia de los datos, transformando un estado coherente de datos en otro estado de datos igualmente coherente.
La coherencia requiere que los datos enlazados mediante una transacción se mantengan en términos de semántica. Una parte de la responsabilidad para mantener la coherencia recae en el programador de la aplicación que debe asegurarse de que ésta exija todas las restricciones de integridad conocidas. 

Aislamiento 
Una transacción es una unidad de aislamiento, permitiendo que transacciones concurrentes se comporten como si cada una fuera la única transacción que se ejecuta en el sistema. Una transacción nunca debe ver las fases intermedias de otra transacción.
Las transacciones alcanzan el nivel máximo de aislamiento cuando se pueden serializar. Como un alto grado de aislamiento puede limitar el número de transacciones concurrentes, algunas aplicaciones reducen el nivel de aislamiento en el intercambio para mejorar el rendimiento.

Permanencia 
Una transacción también es una unidad de recuperación. Si una transacción se realiza satisfactoriamente, el sistema garantiza que sus actualizaciones se mantienen aunque el equipo falle inmediatamente después de la confirmación. El registro especializado permite que el procedimiento de reinicio del sistema complete las operaciones no finalizadas, garantizando la permanencia de la transacción.

  • Diferencia entre MyISAM y InnoDB
·                * InnoDB se recupera de un problema volviendo a ejecutar sus logs, mientras que MyISAM necesita repasar todos los índices y tablas que hayan sido actualizados y reconstruirlos si esos cambios no han sido escritos en disco. El primer proceso requiere más o menos el mismo tiempo siempre, mientras que el segundo aumenta con el tamaño de la base de datos.
·                   MyISAM deja al sistema operativo la tarea de hacer la caché de las lecturas y escrituras de los registros, mientras que InnoDB realiza él mismo la tarea, combinando cachés de registro y de índice. InnoDB no envía directamente los cambios en las tablas al sistema operativo para que las escriba, lo que puede hacerlo mucho más rápido que MyISAM en ciertos escenarios.
·                 InnoDB almacena físicamente los registros en el orden de la clave primaria, mientras que MyISAM los guarda en el orden en que fueron añadidos. Cuando la clave primaria se escoge de acuerdo con las necesidades de las consultas más habituales esto puede suponer una mejora sustancial del rendimiento. Por otro lado, si los datos se insertan en un orden que difiera sustancialmente del orden de la clave primaria, se obliga a InnoDB a reordenar mucho los datos para mantenerlos en el orden adecuado.
·              InnoDB no dispone de la compresión de datos de la que disfruta MyISAM, de modo que tanto el espacio en disco como la caché en la memoria RAM pueden ser más grandes. Este problema se ha reducido en MySQL 5.0, reduciéndolo en aproximadamente un 20%.
·                  Cuando opera con transacciones ACID, InnoDB debe escribir en disco al menos una vez por cada transacción, aunque puede combinar las escrituras de varias inserciones concurrentes. Para los discos duros típicos, esto supone un límite de aproximadamente 200 transacciones por segundo, por lo que aumentarlas exige controladores de disco con caché de escritura y sistema de alimentación ininterrumpido para mantener la integridad. InnoDB ofrece diversos modos de funcionamiento que reducen este efecto, pero conllevan una pérdida de integridad transaccional. MyISAM no tiene ese problema porque no soporta transacciones.

  • Como habilitar MyISAM e InnoDB en Mysql
Para configurar los ficheros de espacio de tablas de InnoDB, debe utilizarse la opción innodb_data_file_pathen la sección [mysqld] del fichero de opciones my.cnf. En Windows, se puede emplear en su lugar my.ini. El valor de innodb_data_file_path debería ser una lista de una o más especificaciones de ficheros. Si se incluirá más de un fichero de datos, habrá que separarlos con punto y coma (';'):

Crear su base de datos  y tablas(DDL) e insertar datos (DML)


  1. Ingrese a Mysql  (mysql -hlocalhost -uroot -p) recuerde estar en el directorio bin.
  2. crear base de datos con el nombre (inventario,biblioteca,etc.)
  3. salga de mysq
  4. DML para su base de datos  en un archivo tipo texto, utilize notepad  o word pad, grabe con la extensión nombre.sql


5.para iniciar mysql y conectarse a la base de datos siga el siguiente ejmplo ( cambie empresa por el nombre de su base de datos y empresa.sql por el nombre que uso en el archivo texto para  crear sus tablas) el archivo debe estar en el directorio mysql/bin 
6. en el promt de mysql  escriba  
     SELECT  * FROM nombre_tabla;
  donde nombre_tabla es el nombre de su tabla



problema #3
 Problema de diseño de bases de datos
 Supongamos que se nos ha encargado el desarrollo de un sistema de información para 
una galería de arte. Tras analizar el problema, hemos obtenido la siguiente lista de requisitos:  
• El sistema ofrecerá información acerca de las distintas exposiciones que estén programadas 
(título, descripción, fecha de inauguración y fecha de clausura). 
• En cada exposición se expondrán obras de distintos artistas. Cada obra vendrá identificada 
por un número de registro. El sistema informará acerca del título, artista, estilo y precio de 
salida de cada una de las obras de arte expuestas en las exposiciones. 
• Cada obra tiene un propietario, que suele ser el artista que la creó, aunque esto no es 
necesariamente así. 
• Las obras expuestas se pueden comprar haciéndole ofertas a sus propietarios. Al término de 
la exposición, el propietario de una obra puede vender la obra a la persona que haya 
realizado la mejor oferta. 
NOTA: Es esencial que en la base de datos no se almacenen datos de forma redundante, para lo 
cual hemos de tener en cuenta que una misma persona puede ser propietaria de una obra de arte 
y realizar ofertas para comprar otras obras de arte. De hecho, incluso puede ser responsable de 
la creación de alguna de las obras expuestas. 

DIAGRAMA:
TABLAS:

CODIGO:
Exposicion
Num_exposicion
INT, primary key
Titulo
VARCHAR(25)
Fecha_inaguracion
DATE
Fecha_clausura
DATE
Descripcion
VARCHAR(50)

CREATE TABLE exposicion(
Num_exposicion INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Titulo VARCHAR(25) NOT NULL,
Fecha_inaguracion DATE NOT NULL,
Fecha_clausura DATE NOT NULL,
Descripcion VARCHAR(50));

Obra
Num_obra
INT, primary key
Titulo
VARCHAR(30)
Estilo
VARCHAR(20)
Precio_salida
DECIMAL(9,2)
Num_artista
INT, foreign key
CREATE TABLE obra(
Num_obra INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Titulo VARCHAR(30) NOT NULL,
Estilo VARCHAR(20) NOT NULL,
Precio_salida DECIMAL (9,2) NOT NULL,
Num_artista INT FOREIGN KEY (num_artista) REFERENCES artista (num_artista) ON DELETE CASCADE );

Propietario
Num_propietario
INT, primary key
Nom_propietario
VARCHAR(20)
Apell1_propietario
VARCHAR(20)
Apell2_propietario
VARCHAR(20)
CREATE TABLE propietario(
Num_propietario INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Nom_propietario VARCHAR(20) NOT NULL,
Apell1_propietario VARCHAR(20) NOT NULL,
Apell2_propietario VARCHAR(20) NOT NULL,

lunes, 27 de agosto de 2012

  • Que es un lenguaje de definicion de datos?

Es el que se encarga de la modificacion de la estructura de los objetos de la base de datos. existen cuatro operaciones basicas: CREATE, ALTER, DROP y TRUCANTE.
  • Para que se utiliza!


Permite crear una tabla, definir las columnas y las restricciones de estas.

CREATE TABLE nombreTabla( nombreColumna tipoDatos, nombreColumna tipoDatos, nombreColumna tipoDatos) Tipos datos, varían dependiendo del motor de bases de datos
  • Inlcuya un ejemplo

  • CREATE  Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice,trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte.Permite crear además la misma base de datos.
  • ALTER Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos auna tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar untrigger, etc.
  • DROP Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger,función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Sepuede combinar con la sentencia ALTER.
  • TRUNCATE Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DELETE, esque si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si latabla es muy grande, la desventaja es que TRUNCATE solo sirve cuando se quiere eliminarabsolutamente todos los registros, ya que no se permite la cláusula WHERE.
ejemplo de CREATE: 
CREATE TABLE TABLA_NOMBRE (
cl integer not null
nombre VARCHAR (50)
fecha_nac DATE NOT NULL,
PRIMARY KEY (my_field1, my_field 2)

1.1 Requerimientos e instalación del SGBD



1. Que es Mysql

MySQL es un sistema de gestión de bases de datos relacional, licenciado bajo la GPL de la GNU. Su diseño multihilo le permite soportar una gran carga de forma muy eficiente. MySQL fue creada por la empresa sueca MySQL AB, que mantiene el copyright del código fuente del servidor SQL, así como también de la marca.
Aunque MySQL es software libre, MySQL AB distribuye una versión comercial de MySQL, que no se diferencia de la versión libre más que en el soporte técnico que se ofrece, y la posibilidad de integrar este gestor en un software propietario, ya que de no ser así, se vulneraría la licencia GPL.
Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración.


2. Donde obtener el software

Consulte la página de descargas de MySQL (http://dev.mysql.com/downloads/) para obtener información acerca de la versión más actualizada e instrucciones de descarga. Para obtener una lista actualizada de los sitios de replicación que también ofrecen descargas de MySQL, consulte http://dev.mysql.com/downloads/mirrors.html. Encontrará información acerca de cómo constituir un sitio de replicación y de cómo informar sobre un sitio de replicación que esté funcionando mal o esté desactualizado.


3. Cuales son los requerimientos

Antes de instalar MySQL, se debería hacer lo siguiente:
  1. Determinarse si la plataforma donde se desea hacer la instalación está soportada.
  2. Elegirse la distribución que se instalará.
  3. Descargar la distribución que se desea instalar y verificar su integridad.           

4. Como instalarlo

1.Debe determinarse si la plataforma donde se desea hacer la instalación está soportada. Nótese que no todos los sistemas soportados son igualmente adecuados para ejecutar MySQL. En algunas plataformas el funcionamiento será mucho más robusto y eficiente que en otras.
2.Debe elegirse la distribución que se instalará. Hay varias versiones de MySQL disponibles, y la mayoría lo están en varios formatos de distribución. Se puede elegir entre distribuciones prearmadas que contienen programas binarios (precompilados) o bien código fuente. En caso de duda, debe elegirse una distribución binaria. También se provee acceso público al código fuente para quienes deseen ver los desarrollos más recientes y colaborar en el testeo de código nuevo.
3.Descargar la distribución que se desea instalar. Para ver una lista de sitios desde los cuales se puede obtener MySQL,