lunes, 19 de marzo de 2018

Arquitectura de un DBMS

Estructura física de la base de datos Oracle

Está compuesta por 3 componentes:
  • La estructura de memoria
  • Los procesos
  • Los archivos

MEMORIA:
Es la estructura de memoria compartida que contiene los datos en información de control para cada instancia de una base de datos.

  • System Global Area (SGA): Es un área compartida para todos los usuarios, es como una memoria general.
  • Fondo Común Compartido (Shared Pool): Se utiliza durante el procesamiento de comandos. Almacena información de la instrucción SQL (Library Cache), y también información de uso mas frecuente sobre el diccionario de datos (Data Dictionary Cache).
  • Área de Memoria Rapida (Database Buffer Cache): Al procesarse una consulta, el servidor busca los datos solicitados en esta estructura. Si no se encuentra, el proceso servidor lee el bloque de la memoria secundaria y coloca una copia.
  • Área de Registro de Rehacer (Redo Log Buffer): es un buffer circular que guarda los cambios en la base de datos por operaciones como lo son insert, delete, etc. Es esencial cuando se requiere una recuperación de la base de datos.
  • Large Pool: se usa para reservar memoria en caso de un backup.
  • Java Pool: Almacena código java.
  • Program Global Area (PGA):  es una memoria privada, utilizable solo por los procesos servidor.

ARCHIVOS:
se clasifican en 4 grupos:

    • Archivos de Datos: se utilizan para almacenamiento físico de las tablas, indices, procedimientos, y también los datos de los usuarios de las BD.
    • Archivos de Control: contiene la descripción y la dirección de los archivos de las BD.
    • Archivos de Rehacer: Contiene todos los cambios que se le han hecho a la BD para recuperación en caso de fallas.
    • Archivos Fuera de Linea: se utilizan para guardar información vieja de los archivos de rehacer y son totalmente opcionales. También se utilizan para respaldos.
    PROCESOS:
    Son programas que se ejecutan para permitir acceso a los datos, se cargan en la memoria y son llevados al usuario. Se clasifican en 3:

    1) Procesos de Base o de Soporte

    • Database  Writer (DBWR): copia los bloques desde buffer cache a memoria secundaria.
    • Log Writer (LGWR): escribe las entradas desde el Log Buffer a disco.
    • Checkpoint (CKPT): notifica al DBWR para que se escriban en los archivos de datos todos los bloques de la lista de sucios.
    • System Monitor (SMON): cuando se inicia una instancia realiza un proceso de recuperación rapida. Limpia estructuras, etc.

    2) Procesos de Usuario: ejecuta el código de aplicación del usuario.
    3) Procesos de Servidores: ejecutan las ordenes sql de los usuarios, para que estos puedan tener acceso a los datos

    Arquitectura de MySQL

    La información está organizada en en bases de datos, que están compuestas por tablas, registros y columnas.También contiene indices, llaves primarias y foráneas para establecer relaciones entre ellas.

    Existen 3 capas en un sistema de bases de datos relacional.
    1) Capa de Aplicación: Es la parte externa y la interfaz desde donde los usuarios se comunican con el sistema.
    2) Capa Lógica: Es donde se realizan las operaciones del sistema.
    3) Capa Física: Es donde se almacenan los datos.

    Páginas:
    La unidad fundamental del almacenamiento de datos en SQL Server es la página.
    El espacio en disco de un archivo de datos de una base de datos se divide en páginas numeradas de forma contigua de 0 a n.
    En SQL Server, el tamaño de página es de 8 KB. Las bases de datos de SQL Server tienen 128 páginas por megabyte.
    En la siguiente tabla se muestran los tipos de página utilizados en los archivos de datos de una base de datos de SQL Server.

    Las filas de datos se colocan en las páginas una a continuación de otra, empezando inmediatamente después del encabezado. Al final de la página, comienza una tabla de desplazamiento de fila y cada una de esas tablas contiene una entrada para cada fila de la página. Cada entrada registra la distancia del primer byte de la fila desde el inicio de la página. Las entradas de la tabla de desplazamiento de fila están en orden inverso a la secuencia de las filas de la página.

    Extensiones:
    Las extensiones son la unidad básica en la que se administra el espacio. Una extensión consta de ocho páginas contiguas físicamente, es decir 64 KB. Esto significa que las bases de datos de SQL Server tienen 16 extensiones por megabyte.
    Para hacer que la asignación de espacio sea eficaz, SQL Server no asigna extensiones completas a tablas con pequeñas cantidades de datos. SQL Server tiene dos tipos de extensiones:
    • Las extensiones uniformes son propiedad de un único objeto; sólo el objeto propietario puede utilizar las ocho páginas de la extensión.
    • Las extensiones mixtas, que pueden estar compartidas por hasta ocho objetos. Cada una de las 8 páginas de la extensión puede ser propiedad de un objeto diferente.
    Archivos de Bases de Datos
    Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:
    • Archivos de datos principales 
      El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de la base de datos. Cada base de datos tiene un archivo de datos principal. La extensión recomendada para los nombres de archivos de datos principales es .mdf.
    • Archivos de datos secundarios 
      Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que algunas bases de datos no tengan archivos de datos secundarios, mientras que otras pueden tener varios archivos de datos secundarios. La extensión de nombre de archivo recomendada para los archivos de datos secundarios es .ndf.
    • Archivos de registro 
      Los archivos de registro almacenan toda la información de registro que se utiliza para recuperar la base de datos. Como mínimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber varios. La extensión de nombre de archivo recomendada para los archivos de registro es .ldf.

    Páginas de archivos de datos
    Las páginas de un archivo de SQL Server 2005 están numeradas secuencialmente, comenzando por 0 para la primera página del archivo. Cada archivo de una base de datos tiene un número de identificador único. Para identificar de forma única una página de una base de datos, se requiere el identificador del archivo y el número de la página.

    Archivos de instantaneas de bases de datos:
    La forma de archivo que utiliza una instantánea de base de datos para almacenar sus datos de copia por escritura depende de si la instantánea la ha creado un usuario o se utiliza internamente:
    • Una instantánea de base de datos que crea un usuario almacena sus datos en uno o más archivos dispersos. La tecnología de archivos dispersos es una característica del sistema de archivos NTFS. Al principio, un archivo disperso no incluye datos de usuario y no se le asigna espacio en disco.
    • Las instantáneas de bases de datos las utilizan internamente algunos comandos DBCC. Entre estos comandos se incluyen: DBCC CHECKDB, DBCC CHECKTABLE, DBCC CHECKALLOC y DBCC CHECKFILEGROUP. Una instantánea de base de datos interna utiliza secuencias de datos alternativos dispersos de los archivos de base de datos originales. 

    martes, 13 de marzo de 2018

    Teoria Clase 12-marzo

    Memoria 


    • Shared Global Area (SGA): es el área más grande de memoria y quizás el más importante 
    • Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL.El área de memoria que comprende la Shared Pool contiene la “library cache”, “el data dictionary cache” y el “result cache”.El “data dictionary cache” es una especie de metadatos de la base de datos, es en definitiva una colección de tablas y vistas que contienen información de la base de datos, sus estructuras y sus usuarios. Es una zona bastante accedida de la base de datos. Otra área es la “library cache”. Es sin duda otra zona bastante concurrida de la base de datos. Oracle representa cada sentencia SQL que se ejecuta con una zona SQL compartida, con lo que Oracle es capaz de reconocer cuando 2 usuarios ejecutan la misma sentencia, y así poder reutilizar la misma área para ambos usuarios. Esta zona de memoria compartida contiene el plan de ejecución, con lo que Oracle ahorra memoria utilizando la misma área para las sentencias que se ejecutan en múltiples ocasiones. En la “result cache” se almacenan filas y no bloques. En este área por ejemplo podemos guardar listas de valores muy utilizadas. Para ello tendremos que definir un tipo de Hint especial en nuestras consultas que hagan que los resultados obtenidos se almacenen en esta cache. 
    • Redo Log Buffer: contiene un registro de todas las transacciones dentro de la base, las cuales se almacenan en el respectivo archivo de Redo y en caso de siniestro se vuelven a ejecutar aquellos cambios que aún no se hayan reflejado en el archivo de datos (commit). 
    • Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O.Esta zona es opcional. El administrador del sistema puede configurarla siempre que quiera reservar memoria para realizar operaciones de backup o recuperación de la base de datos o consultas en paralelo. 
    • Java Pool: usado principalmente para almacenar objetos Java.La memoria java pool es usada en la memoria del servidor para todas las sesiones que utilicen código java y datos en la JVM. Esta memoria es usada de diferentes maneras dependiendo del modo en el que la base de datos esté corriendo. 

    instancia de Oracle

    Es el conjunto de procesos del servidor que permiten el acceso a la base de datos. Es un conjunto de estructuras de datos y procesos en memoria. Está formado por: 



    • SGA. Area global de sistema. Se trata de la zona de memoria común para todos los procesos de servidor, contien las siguientes estructuras de datos fundamentales: 
    • Buffer de caché de base de datos. Almacena bloques de datos leídos de la base de datos a fin de que las próximas consultas no necesiten acudir a disco y se las pueda servir de estos datos en la caché. 
    • Buffer redo log. Estructura que almacena los datos anteriores y posteriores a cada instrucción y así facilitar tanto su anulación, como su realización en caso de problemas.
    • Large pool. Área de la memoria que proporciona espacio para los datos necesarios para realizar operaciones de backup y restauración, así como los datos de sesión y otros que permitan aliviar el trabajo de la instancia. 
    • Shared pool. Consta de la caché del diccionario de datos y de la caché de instrucciones SQL, PL/SQL. De esa forma se acelera la ejecución de consultas e instrucciones que utilicen los mismos metadatos o bien que se traten de instrucciones parecidas a otras anteriormente ejecutadas. - Cache Library. -Data Dictionary Cache. 
    • Java Pool. Sólo se usa si hemos instalado Java para agilizar el proceso de las instrucciones en ese lenguaje. 

    Archivos 
    • Control (ctl): almacenan información acerca de la estructura de archivos de la base. 
    • Rollback (rbs): cuando se modifica el valor de alguna tupla en una transacción, los valores nuevos y anteriores se almacenan en un archivo, de modo que si ocurre algún error, se puede regresar (rollback) a un estado anterior. 
    • Redo (rdo): bitácora de toda transacción, en muchos dbms incluye todo tipo de consulta incluyendo aquellas que no modifican los datos. 
    • Datos (dbf): el tipo más común, almacena la información que es accesada en la base de datos. 
    • Indices (dbf) (dbi): archivos hermanos de los datos para acceso rápido. 
    • Temp (tmp): localidades en disco dedicadas a operaciones de ordenamiento o alguna actividad particular que requiera espacio temporal adicional.

    Programa Loop - Aportación de Emmanuel Horta

    Emu8086


    Turno Assembler





    miércoles, 7 de marzo de 2018

    Componentes de un SGBD

    Componentes

    Un sistema de bases de datos se divide en módulos que se encargan de cada una de las responsabilidades del sistema completo.
    Los componentes funcionales de un sistema de bases de datos se pueden dividir a grandes rasgos en:

    Usuarios 
    • Normales: Usuarios que no requieren preparación especial en el manejo de base de datos y que utilizan el sistema a través de programas de aplicación que han sido escritos para ellos. 
    • Programadores de aplicaciones: Usuarios de la base de datos y escriben programas de aplicación. Pueden llegar a utilizar herramientas DRA (Desarrollo Rápido de Aplicaciones), con las que pueden crear formularios e informes con poco esfuerzo de programación. 
    • Sofisticados: Son quienes utilizan la base de datos a través de consultas escritas en un lenguaje de consultas. 
    • DBA: Su función es administrar la base de datos por lo tanto tiene acceso total. 

    Componentes de procesamiento de consultas 

    • Compilador de LMD: Traduce las instrucciones del LMD en lenguaje de consultas a instrucciones a bajo nivel que entiende el motor de evaluación de consultas. 
    • Precompilador del LMD incorporado: Convierte las instrucciones de LMD incorporadas en un programa de aplicación en llamadas a procedimientos normales en el lenguaje anfitrión. 
    • Intérprete del LDD: Interpreta las instrucciones del LDD y las registra en un conjunto de tablas que contiene metadatos. 
    • Motor de evaluación de consultas: Ejecuta las instrucciones a bajo nivel generadas por el compilador del LMD. 


    Componentes de gestión de almacenamiento

    • Gestor de autorización e integridad: Comprueba que se satisfagan las ligaduras de integridad y la autorización de los usuarios para acceder a los datos. 
    • Gestor de transacciones: Asegura que la base de datos quede en un estado consistente a pesar de los fallos del sistema, y que las ejecuciones de transacciones concurrentes ocurran sin conflicto. 
    • Gestor de archivos: Gestiona la reserva de espacio de almacenamiento de disco, y las estructuras de datos usadas para representar la información almacenada en disco. 
    • Gestor de memoria intermedia: Es responsable de traer los datos del disco de almacenamiento a memoria principal y decidir qué datos tratar en la memoria caché. 

    Almacenamiento en disco 

    • Diccionario de datos: Que contiene información sobre los datos y es un tipo especial de tabla a la que solo tiene acceso el sistema de base de datos y no los usuarios en general. 
    • Diccionario de datos: Almacena entre otros datos, restricciones de seguridad e integridad. 
    • Indices: Que se utilizan para buscar más rápidamente un registro. Estos, junto con los datos estadísticos son archivos que son almacenados en disco.

    Ejemplo del video commit y rollback