Wednesday, July 19, 2006
IDE1FX
IDE1FX es uno del más madura, y la mayoría de los datos gráficos completamente equipados modelan ciertamente representaciones.
IDE1FX es parte de una familia de los modelos gráficos para todas las clases de programa y de información del proceso. Hay dos niveles comunes de exhibición usados por IDE1FX: el modelo lógico que los concentrados en conseguir las tablas y las columnas enumeraron correctamente y las relaciones “de alto nivel” entre las tablas definieron, y el modelo físico que cava más profundamente en cómo las tablas y las relaciones se ponen en ejecución realmente usando un motor particular de la base de datos.
Tuesday, July 11, 2006
Gestion de Memoria y de Transacciones
GESTION DE TRANSACCIONES
Una transacción es una secuencia de instrucciones de manipulación de la base de datos que constituye una unidad lógica de ejecución. Una transacción debe satisfacer las propiedades de atomicidad, consistencia, aislamiento y persistencia. El mantenimiento de cada una de estas propiedades es responsabilidad de un módulo del SGBD, la atomicidad y la persistencia son responsabilidad del módulo de recuperación, el aislamiento es responsabilidad del módulo de control de la concurrencia y la consistencia es responsabilidad del módulo de comprobación de la integridad y del módulo de recuperación.
Una transacción es un conjunto de operaciones que realizan una única función lógica en una aplicación de bases de datos
El componente de gestión de transacciones asegura que la base de datos se mantiene en un estado consistente (correcto) aun cuando se produzcan Fallos en el sistema (p.e. fallos de alimentación o del sistema operativo) o fallos de transacción.
El gestor de control de concurrencia controla la interacción entre transacciones concurrentes, para asegurar la consistencia de la base de datos.
EJEMPLOS:
Considere la base de datos que ha diseñado en la práctica anterior y cuyo esquema se encuentra en el anexo para la gestión de una biblioteca y realice los siguientes ejercicios.
a) En el sistema ORACLE10 no existe la directriz actualización en cascada para la restauración de la integridad referencial. ¿Cómo podría modificar el código de un socio que ha tenido préstamos, sin violar la integridad referencial de la relación de préstamos históricos? (necesidad del concepto de transacción).
b) Diseñe una transacción que realice inserciones de tuplas sobre la relación Socios según el siguiente esquema de transacción:
COMMIT;
INSERT INTO socio VALUES (‘s1’, ..., ..., ..., 0);
INSERT INTO socio VALUES (‘s2’, ..., ..., ..., 0);
INSERT INTO socio VALUES (‘s1’, ..., ..., ..., 0);
INSERT INTO socio VALUES (‘s3’, ..., ..., ..., 0);
COMMIT;
(Donde s1, s2 y s3 son códigos de socio que no haya usado hasta el momento de ejecutar la transacción y los puntos suspensivos representan valores cualesquiera para los atributos nombre, dirección y teléfono).
Esta transacción viola la restricción de clave primaria para la relación Socio.
Ejecute dos veces el anterior esquema de transacción, una vez con la restricción de clave primaria para la relación socio en modo inmediato; borre las tuplas insertadas y vuelva a realizarlo con la restricción en modo diferido. ¿Qué diferencias observa en ambos casos? (atomicidad y consistencia).
Gestión de almacenamiento
El gestor de almacenamiento es un módulo que proporciona el interfaz entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicación y consultas enviadas al sistema.
El gestor de almacenamiento se encarga de:
Interactuar con el gestor de ficheros
Conseguir un almacenamiento, recuperación y actualización eficientes de los datos
Cuadro sinoptico inconvenientes de los S. de Procesamiento de Archivos
Redundancia e Inconsistencia: Esto se genera a que los archivos y programas de aplicación son creados por diferentes programadores en un largo periodo de tiempo, los diversos archivos tienen probablemente diferentes formatos. Esta redundancia conduce a un almacenamiento y costo de acceso más alto.
Dificultades de acceso: el entorno de procesamiento de archivos convencional no permite que los datos necesarios sean obtenidos de una forma práctica y eficiente. Se debe desarrollar sistemas de recuperación de datos más interesantes para un uso general.
Aislamiento de datos: Debido a que los datos están dispersos en varios archivos pueden estar en diferentes formatos, es difícil escribir nuevos programas de aplicación para recuperar datos apropiados.
Problemas de Integridad: los valores de los datos almacenados en la BD deben satisfacer ciertos tipos de ligaduras o consistencias, es decir, el problema es complicado cuando las ligaduras implican diferentes elementos de datos de diferentes archivos.
Problemas de Atomicidad: En muchas aplicaciones es crucial asegurar que una vez que un fallo ha ocurrido y se ha detectado, los datos se restauran al estado de consistencia que existía antes del fallo.
Anomalías en el acceso concurrentes: Los sistemas en un entorno de interacción de actualizaciones concurrentes pueden dar lugar a datos inconsistentes.
Problemas de Seguridad: No todos los usuarios de un sistema de BD deberían poder acceder a todos los datos. Como los programas de aplicación se añaden al sistema de forma ad hhoc, es difícil garantizar tales ligaduras de seguridad.
Dificultades de acceso: el entorno de procesamiento de archivos convencional no permite que los datos necesarios sean obtenidos de una forma práctica y eficiente. Se debe desarrollar sistemas de recuperación de datos más interesantes para un uso general.
Aislamiento de datos: Debido a que los datos están dispersos en varios archivos pueden estar en diferentes formatos, es difícil escribir nuevos programas de aplicación para recuperar datos apropiados.
Problemas de Integridad: los valores de los datos almacenados en la BD deben satisfacer ciertos tipos de ligaduras o consistencias, es decir, el problema es complicado cuando las ligaduras implican diferentes elementos de datos de diferentes archivos.
Problemas de Atomicidad: En muchas aplicaciones es crucial asegurar que una vez que un fallo ha ocurrido y se ha detectado, los datos se restauran al estado de consistencia que existía antes del fallo.
Anomalías en el acceso concurrentes: Los sistemas en un entorno de interacción de actualizaciones concurrentes pueden dar lugar a datos inconsistentes.
Problemas de Seguridad: No todos los usuarios de un sistema de BD deberían poder acceder a todos los datos. Como los programas de aplicación se añaden al sistema de forma ad hhoc, es difícil garantizar tales ligaduras de seguridad.
Saturday, July 08, 2006
Niveles RAID
Niveles de RAID
La elección de los diferentes niveles de RAID va a depender de las necesidades del usuario en lo que respecta a factores como seguridad, velocidad, capacidad, coste, etc. Cada nivel de RAID ofrece una combinación específica de tolerancia a fallos (redundancia), rendimiento y coste, diseñadas para satisfacer las diferentes necesidades de almacenamiento. La mayoría de los niveles RAID pueden satisfacer de manera efectiva sólo uno o dos de estos criterios. No hay un nivel de RAID mejor que otro; cada uno es apropiado para determinadas aplicaciones y entornos informáticos. De hecho, resulta frecuente el uso de varios niveles RAID para distintas aplicaciones del mismo servidor. Oficialmente existen siete niveles diferentes de RAID (0-6), definidos y aprobados por el el RAID Advisory Board (RAB). Luego existen las posibles combinaciones de estos niveles (10, 50, ...). Los niveles RAID 0, 1, 0+1 y 5 son los más populares.
RAID 0: Disk Striping "La más alta transferencia, pero sin tolerancia a fallos".
También conocido como "separación ó fraccionamiento/ Striping". Los datos se desglosan en pequeños segmentos y se distribuyen entre varias unidades. Este nivel de "array" o matriz no ofrece tolerancia al fallo. Al no existir redundancia, RAID 0 no ofrece ninguna protección de los datos. El fallo de cualquier disco de la matriz tendría como resultado la pérdida de los datos y sería necesario restaurarlos desde una copia de seguridad. Por lo tanto, RAID 0 no se ajusta realmente al acrónimo RAID.
Consiste en una serie de unidades de disco conectadas en paralelo que permiten una transferencia simultánea de datos a todos ellos, con lo que se obtiene una gran velocidad en las operaciones de lectura y escritura. La velocidad de transferencia de datos aumenta en relación al número de discos que forman el conjunto. Esto representa una gran ventaja en operaciones secuenciales con ficheros de gran tamaño. Por lo tanto, este array es aconsejable en aplicaciones de tratamiento de imágenes, audio, video o CAD/CAM, es decir, es una buena solución para cualquier aplicación que necesite un almacenamiento a gran velocidad pero que no requiera tolerancia a fallos. Se necesita un mínimo de dos unidades de disco para implementar una solución RAID 0.
RAID 1: Mirroring "Redundancia. Más rápido que un disco y más seguro"
También llamado "Mirroring" o "Duplicación" (Creación de discos en espejo). Se basa en la utilización de discos adicionales sobre los que se realiza una copia en todo momento de los datos que se están modificando. RAID 1 ofrece una excelente disponibilidad de los datos mediante la redundancia total de los mismos. Para ello, se duplican todos los datos de una unidad o matriz en otra. De esta manera se asegura la integridad de los datos y la tolerancia al fallo, pues en caso de avería, la controladora sigue trabajando con los discos no dañados sin detener el sistema. Los datos se pueden leer desde la unidad o matriz duplicada sin que se produzcan interrupciones. RAID 1 es una alternativa costosa para los grandes sistemas, ya que las unidades se deben añadir en pares para aumentar la capacidad de almacenamiento. Sin embargo, RAID 1 es una buena solución para las aplicaciones que requieren redundancia cuando hay sólo dos unidades disponibles. Los servidores de archivos pequeños son un buen ejemplo. Se necesita un mínimo de dos unidades para implementar una solución RAID 1.
RAID 0+1/ RAID 0/1 ó RAID 10: "Ambos mundos"
Combinación de los arrays anteriores que proporciona velocidad y tolerancia al fallo simultáneamente. El nivel de RAID 0+1 fracciona los datos para mejorar el rendimiento, pero también utiliza un conjunto de discos duplicados para conseguir redundancia de datos. Al ser una variedad de RAID híbrida, RAID 0+1 combina las ventajas de rendimiento de RAID 0 con la redundancia que aporta RAID 1. Sin embargo, la principal desventaja es que requiere un mínimo de cuatro unidades y sólo dos de ellas se utilizan para el almacenamiento de datos. Las unidades se deben añadir en pares cuando se aumenta la capacidad, lo que multiplica por dos los costes de almacenamiento. El RAID 0+1 tiene un rendimiento similar al RAID 0 y puede tolerar el fallo de varias unidades de disco. Una configuración RAID 0+1 utiliza un número par de discos (4, 6, 8) creando dos bloques. Cada bloque es una copia exacta del otro, de ahí RAID 1, y dentro de cada bloque la escritura de datos se realiza en modo de bloques alternos, el sistema RAID 0. RAID 0+1 es una excelente solución para cualquier uso que requiera gran rendimiento y tolerancia a fallos, pero no una gran capacidad. Se utiliza normalmente en entornos como servidores de aplicaciones, que permiten a los usuarios acceder a una aplicación en el servidor y almacenar datos en sus discos duros locales, o como los servidores web, que permiten a los usuarios entrar en el sistema para localizar y consultar información. Este nivel de RAID es el más rápido, el más seguro, pero por contra el más costoso de implementar.
RAID 2: "Acceso paralelo con discos especializados. Redundancia a través del código Hamming"
El RAID nivel 2 adapta la técnica comúnmente usada para detectar y corregir errores en memorias de estado sólido. En un RAID de nivel 2, el código ECC (Error Correction Code) se intercala a través de varios discos a nivel de bit. El método empleado es el Hamming. Puesto que el código Hamming se usa tanto para detección como para corrección de errores (Error Detection and Correction), RAID 2 no hace uso completo de las amplias capacidades de detección de errores contenidas en los discos. Las propiedades del código Hamming también restringen las configuraciones posibles de matrices para RAID 2, particularmente el cálculo de paridad de los discos. Por lo tanto, RAID 2 no ha sido apenas implementado en productos comerciales, lo que también es debido a que requiere características especiales en los discos y no usa discos estándares.Debido a que es esencialmente una tecnología de acceso paralelo, RAID 2 está más indicado para aplicaciones que requieran una alta tasa de transferencia y menos conveniente para aquellas otras que requieran una alta tasa de demanda I/O.
RAID 3: "Acceso síncrono con un disco dedicado a paridad"
Dedica un único disco al almacenamiento de información de paridad. La información de ECC (Error Checking and Correction) se usa para detectar errores. La recuperación de datos se consigue calculando el O exclusivo (XOR) de la información registrada en los otros discos. La operación I/O accede a todos los discos al mismo tiempo, por lo cual el RAID 3 es mejor para sistemas de un sólo usuario con aplicaciones que contengan grandes registros.RAID 3 ofrece altas tasas de transferencia, alta fiabilidad y alta disponibilidad, a un coste intrínsicamente inferior que un Mirroring (RAID 1). Sin embargo, su rendimiento de transacción es pobre porque todos los discos del conjunto operan al unísono.Se necesita un mínimo de tres unidades para implementar una solución RAID 3.
RAID 4: "Acceso Independiente con un disco dedicado a paridad."
Basa su tolerancia al fallo en la utilización de un disco dedicado a guardar la información de paridad calculada a partir de los datos guardados en los otros discos. En caso de avería de cualquiera de las unidades de disco, la información se puede reconstruir en tiempo real mediante la realización de una operación lógica de O exclusivo. Debido a su organización interna, este RAID es especialmente indicado para el almacenamiento de ficheros de gran tamaño, lo cual lo hace ideal para aplicaciones gráficas donde se requiera, además, fiabilidad de los datos. Se necesita un mínimo de tres unidades para implementar una solución RAID 4. La ventaja con el RAID 3 está en que se puede acceder a los discos de forma individual.
RAID 5: "Acceso independiente con paridad distribuida."
Este array ofrece tolerancia al fallo, pero además, optimiza la capacidad del sistema permitiendo una utilización de hasta el 80% de la capacidad del conjunto de discos. Esto lo consigue mediante el cálculo de información de paridad y su almacenamiento alternativo por bloques en todos los discos del conjunto. La información del usuario se graba por bloques y de forma alternativa en todos ellos. De esta manera, si cualquiera de las unidades de disco falla, se puede recuperar la información en tiempo real, sobre la marcha, mediante una simple operación de lógica de O exclusivo, sin que el servidor deje de funcionar. Así pues, para evitar el problema de cuello de botella que plantea el RAID 4 con el disco de comprobación, el RAID 5 no asigna un disco específico a esta misión sino que asigna un bloque alternativo de cada disco a esta misión de escritura. Al distribuir la función de comprobación entre todos los discos, se disminuye el cuello de botella y con una cantidad suficiente de discos puede llegar a eliminarse completamente, proporcionando una velocidad equivalente a un RAID 0.RAID 5 es el nivel de RAID más eficaz y el de uso preferente para las aplicaciones de servidor básicas para la empresa. Comparado con otros niveles RAID con tolerancia a fallos, RAID 5 ofrece la mejor relación rendimiento-coste en un entorno con varias unidades. Gracias a la combinación del fraccionamiento de datos y la paridad como método para recuperar los datos en caso de fallo, constituye una solución ideal para los entornos de servidores en los que gran parte del E/S es aleatoria, la protección y disponibilidad de los datos es fundamental y el coste es un factor importante. Este nivel de array es especialmente indicado para trabajar con sistemas operativos multiusuarios.Se necesita un mínimo de tres unidades para implementar una solución RAID 5.Los niveles 4 y 5 de RAID pueden utilizarse si se disponen de tres o más unidades de disco en la configuración, aunque su resultado óptimo de capacidad se obtiene con siete o más unidades. RAID 5 es la solución más económica por megabyte, que ofrece la mejor relación de precio, rendimiento y disponibilidad para la mayoría de los servidores.
RAID 6: "Acceso independiente con doble paridad"
Similar al RAID 5, pero incluye un segundo esquema de paridad distribuido por los distintos discos y por tanto ofrece tolerancia extremadamente alta a los fallos y a las caídas de disco, ofreciendo dos niveles de redundancia. Hay pocos ejemplos comerciales en la actualidad, ya que su coste de implementación es mayor al de otros niveles RAID, ya que las controladoras requeridas que soporten esta doble paridad son más complejas y caras que las de otros niveles RAID. Así pues, comercialmente no se implementa.
Ejercicio en Java de los tres niveles de Abstracción
NIVELES DE ABSTRACCION
Considérese un array de enteros bidimensionales del tamaño n x m que se va usar en un lenguaje de programación preferido usando el array como ejemplo; ilustre la diferencia.
Nivel de Vistas
El usuario solo puede obtener los datos del array. Puede ver hacer operaciones pero no puede modificar el código fuente.
El usuario solo puede obtener los datos del array. Puede ver hacer operaciones pero no puede modificar el código fuente.
Nivel Lógico
En este nivel se define el algoritmo que manipula el array a las operaciones que se harán sobre el que solo el programador puede realizar estas operaciones de modificación del programa.
Nivel Físico
Los datos del array se almacenan en el disco duro o en un medio o dispositivo de almacenamiento asignado en espacio de memoria.
Investigación de DBMS libres y comerciales
INFORMIX
- Capacidad de optimizar el rendimiento de una forma inteligente gracias a la ejecución en paralelo de las principales operaciones de la base de datos (particularmente, consulta o compactación de índices, y también salvaguarda y recuperación de datos).
- Ejecución de múltiples hilos y procesadores virtuales que trabajan en paralelo, atienden a usuarios concurrentes, esto consigue que todo el rendimiento se aproveche de acuerdo a su prioridad.
- El objetivo es conseguir escalabilidad total y lineal.
- Tiene la capacidad de relación de datos en múltiples lugares físicos (dentro de la citada arquitectura DSA), suponiendo un eficaz sistema de distribución y compartir datos dentro de un mismo sistema organizativo.
- Incluye de forma integrada el servidor Netscape FaxTrap, para soporte y conectividad de aplicaciones Web e Intranet. Ofrece servicios escalables Web/Inet de alto rendimiento, entorno de desarrollo basado en Java/JavaScript seguridad basada en SSL con autentificación.
- Encriptación en integridad de mensajes, control de accesos, soporte de certificados del lado del cliente y asistentes para la publicación en Internet.
- Web Integration Option, facilita la generación de Aplicaciones orientas a Internet. Se trata de un Runtime que enlaza al servidor Web y el servidor de base de datos de forma que las aplicaciones puedan incorporan sencilla los datos suministrados dinámicamente suministrados por Informix. También es posible incorporar una consulta SQL dentro de una página Web. El WIO incluye al WebDB Publisher se encarga de generar informes mediante asistentes, es decir una forma automática para generar paginas a partir de datos de una base de datos.
- En cuanto a la seguridad e integridad de los datos, incluye duplicación, espejo de disco, volcado de seguridad y restauración de alta velocidad de transacciones en línea y un diseño de seguridad conforme a la clasificación C2, OLTP y DataWareHousing disponible
MAGIC
- Sin código: La característica principal de este entorno de programación, orientado a base de datos, es que no posee código (entendiéndose archivos de texto estructurado mediante un lenguaje que luego será interpretado).Toda la programación se realiza definiendo objetos (generalmente en modo visual o de ventanas) con tablas que los van relacionando. Tiene gran potencia y una curva de aprendizaje asombrosa, por lo que es considerado un lenguaje RAD.
- Runtime: La compilación y ejecución de los programas se realiza mediante una elaborada aplicación que puede diseñarse tanto para ejecutarse como clientes distribuidos, cliente - servidor o en modo web o internet mediante los navegadores.
Base de datos: Posee puertas de conexión a las más renombradas bases de datos, muchas con sus controladores nativos, lo que le otorga gran potencia de respuesta. Y además soporta conexiones genéricas como ODBC.
FIREBIRD
- Es multiplataforma, puede ejecutarse en los sistemas operativos: Linux, HP-UX, FreeBSD, Mac OS, Solaris y Microsoft Windows.
- Ejecutable pequeño, con requerimientos de hardware bajos.
Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros (embedded).
Soporte de transacciones. - Es medianamente escalable.
- Buena seguridad basada en usuarios/roles.
- Diferentes arquitecturas, entre ellas el Firebird empotrado (embedded server) que permite ejecutar aplicaciones monousuario en ordenadores sin instalar el software Firebird
Bases de datos de sólo lectura, para aplicaciones que corran desde dispositivos sin capacidad de escritura, como cd-roms. - Existencia de controladores ODBC, OLEDB y JDBC
- Controlador nativo para PHP
- Requerimientos de administración bajos, siendo considerada como una base de datos libre de mantenimiento, al margen de la realización de copias de seguridad y restauraciones periódicas.
- Pleno soporte del estándar SQL-92, tanto de sintaxis como de tipos de datos.
Completo lenguaje para la escritura de disparadores (triggers) y procedimientos almacenados. - Capacidad de almacenar elementos BLOB (binary large objects).
Microsoft SQL Server
- Soporte de transacciones.
- Gran estabilidad.
- Gran seguridad.
- Escalabilidad.
- Soporta procedimientos almacenados.
- Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente.
- Permite trabajar en modo cliente-servidor donde la información y datos se alojan en el servidor y las terminales o clientes de la red sólo accesan a la información.
- Además permite administrar información de otros servidores de datos.
POSTGRESQL
- Claves ajenas también denominadas Llaves ajenas o Llaves Foráneas (foreign keys).
- Disparadores (triggers).
- Vistas.
- Integridad transaccional.
- Acceso concurrente multiversión (no se bloquean las tablas, ni siquiera las filas, cuando un proceso escribe).
- Capacidad de albergar programas en el servidor en varios lenguajes.
- Herencia de tablas.
- Tipos de datos y operaciones geométricas.
My SQL
Características de construcción:
- Escrito en C y C++
- Trabaja bajo diferentes plataformas: AIX 4x 5x, Amiga, BSDI, Digital Unix 4x, FreeBSD 2x 3x 4x, HP-UX 10.20 11x, Linux 2x, Mac OS, NetBSD, Novell NetWare 6.0 , OpenBSD 2.5, OS/2, SCO OpenServer, SCO UnixWare 7.1.x, SGI Irix 6.x, Solaris 2.5, SunOS 4.x, Tru64 Unix y Windows 9x, Me, NT, 2000, XP, 2003.
- Desarrollo de APIs para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl.
- Procesos MultiHilo. Capacidad de trabajar servidores con varios procesadores.
- Provee sistema transaccional con la tabla Innodb.
- Velocidad cuando se manipula datos con el tipo de tabla Myisam.
- Velocidad en la utilización de joins y procesos de optimización.
- Soporta muchos tipos de columnas para las tablas: FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM y OpenGIS (Modelo Geométrico).
- Manejo de la memoria a través de manejo del buffer y cache.







