viernes, 16 de marzo de 2018

Arquitectura física de una base de datos en SQL Server

La unidad fundamental del almacenamiento de datos en SQL Server es la página. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de una base de datos se divide lógicamente en páginas numeradas de forma contigua de 0 a n. Las operaciones de E/S de disco se realizan en el nivel de página. Es decir, SQL Server lee o escribe páginas de datos enteras.

Páginas
En SQL Server, el tamaño de página es de 8 KB. Esto significa que las bases de datos de SQL Server tienen 128 páginas por megabyte. Cada página empieza con un encabezado de 96 bytes, que se utiliza para almacenar la información del sistema acerca de la página. Esta información incluye el número de página, el tipo de página, el espacio libre en la página y el Id. de unidad de asignación del objeto propietario 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 base 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.

Nombres de archivo logico y fisico

Los archivos de SQL Server 2005 tienen dos nombres:

logical_file_name es el nombre que se utiliza para hacer referencia al archivo en todas las instrucciones Transact-SQL. El nombre de archivo lógico tiene que cumplir las reglas de los identificadores de SQL Server y tiene que ser único entre los nombres de archivos lógicos de la base de datos.

os_file_name es el nombre del archivo físico que incluye la ruta de acceso al directorio.
Debe seguir las reglas para nombres de archivos del sistema operativo.


Paginas 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 un base de datos, se requiere el identificador del archivo y el número de la página. El siguiente ejemplo muestra los números de página de una base de datos que tiene un archivo de datos principal de 4 MB y un archivo de datos secundario de 1 MB.


Archivos de instantáneas 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.

Tamaño de archivo
Los archivos de SQL Server 2005 pueden crecer automáticamente a partir del tamaño originalmente especificado. Cuando se define un archivo, se puede especificar un incremento de crecimiento. Cada vez que se llena el archivo, el tamaño aumenta en la cantidad especificada. Si hay varios archivos en un grupo de archivos, no crecerán automáticamente hasta que todos los archivos estén llenos.



miércoles, 14 de marzo de 2018

ESTRUCTURA DE LA MEMORIA

Es la estructura de memoria compartida que contienen datos e información de control para una instancia de una base de datos, cada instancia tiene sus propias estructuras de memoria y se localiza en la memoria virtual del computador. Las estructuras de memoria se denominan System Global Area (SGA) la cual es un área compartida por todos los usuarios y se divide en tres partes:

La SGA está compueseta por tres estructuras principales:
  • la buffer cache
  • la shared pool
  • el redo log buffer

Fondo común compartido (Shared pool): 

Cuando un usuario ejecuta una sentencia ocurren dos cosas. Primero, Oracle verifica si ya existe en la library cache una sentencia idéntica. Si no se encuentra una sentencia idéntica, la sentencia debe ser parseada y luego alojada en la library cache. El parseo requiere, a su vez, diversas subtareas que implican overhead para el sistema. Si, en cambio, existe una sentencia idéntica en la library cache, Oracle pobablemente la reutilice.
Arear de Memoria rápida (Dtabase buffer cache): La buffer cache es utilizada para almacenar en memoria los bloques recientemente accedidos de los datafiles. Un bloque es la unidad mínima de almacenamiento que lee o escribe Oracle en un momento determinado.

Área de registro de rehacer (Redo log buffer): es un buffer circular que mantiene todos los cambios que han sido realizados sobre la base de datos por operaciones de insert, update, delete, create, alter y drop. Las entradas de este buffer contienen toda la información necesaria para reconstruir los cambios realizados a la base de datos por medio de cualquier instrucción (el bloque que ha sido cambiado, la posición de cambio y el nuevo valor). El uso es estrictamente secuencial.

lunes, 12 de marzo de 2018

Arquitectura de un manejador de bases de datos

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.

En esta zona se encuentran las sentencias SQL que han sido analizadas. El análisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas.
Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantiene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicográfica, espacios en blanco y variables incluidas.
La base de datos Oracle asigna memoria a la shared pool cuando una nueva instrucción sql se analiza. El tamaño de esta memoria depende de la complejidad de la instrucción. Si toda la shared pool ya ha sido asignada la base de datos Oracle puede liberar elementos de la shared pool hasta que haya suficiente espacio libre para nuevas sentencias. Al liberar un elemento de la shared pool el sql asociado debe ser recompilado y reasignado a otra área de sql compartida la próxima vez que se ejecute.
El contenido de la zona de SQL compartido es:
  • Las sentencias SQL y PL/SQL (texto de la sentencia)
  • Plan de ejecución de la sentencia SQL.
  • Lista de objetos referenciados.
Los pasos de procesamiento de cada petición de análisis de una sentencia SQL son:
  • Comprobar si la sentencia se encuentra en el área compartida.
  • Comprobar si los objetos referenciados son los mismos.
  • Comprobar si el usuario tiene acceso a los objetos referenciados.Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida.
 
Dividido en:

Library cache

Incluye los espacios comunes de SQL, áreas privadas de SQL (en el caso de una configuración de servidor compartido), los procedimientos PL/SQL y paquetes, y las estructuras de control, tales como bloqueos.

Data Dictionary Cache

También conocido como Dictionary Cache o Row Cache, almacena la información de uso más reciente sobre el diccionario de datos. Es una colección de tablas y vistas que contienen información referente a la base de datos como los nombres y tipos de datos de las columnas de las tablas, usuarios, passwords y privilegios. Durante la fase de compilación, esta información es necesaria para resolver los nombres de los objetos utilizados en un comando SQL y para validar los privilegios de acceso.
 
Video: https://www.youtube.com/watch?v=fKOnylu4tmA

Large Pool

El administrador de la base de datos puede configurar esta área de memoria opcional, para proveer localidades más amplias de memoria para:
  • Memoria de sesiones.
  • Procesos de I/O del servidor
  • Backups de la base de datos y operaciones de recuperación.
Al asignar espacios dentro de large pool para un servidor compartido, Oracle puede usar la shared pool principalmente para guardar en caché las sentencias compartidas de sql y evitar la sobrecarga causada por la disminución de la caché de sql compartida. Además la memoria para backup y operaciones de recuperación y para procesos de I/O del servidor es asignada en buffers de algunos cientos de kilobytes, por lo que la large pool mucho más capaz de satisfacer dicha demanda de memoria que la shared pool.

Java Pool

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.

Streams Pool

Esta memoria es usada exclusivamente por flujos de Oracle. Esta almacena colas de mensajes y provee memoria para que los flujos de Oracle capturen procesos y los apliquen. A menos que se configure específicamente, el tamaño de esta memoria empieza en cero. El tamaño de la streams pool crece dinámicamente como sea necesario cuando los flujos de Oracle son usados.

martes, 6 de marzo de 2018

Práctica del video: Explicación de los comandos commit y rollback
















Arquitectura de un sistema gestor de bases de datos

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.

Trabajo con puerto usb

Programación de puerto USB USB viene de frase en Ingles “Universal Serial Bus” que se utiliza para describir un tipo de puerto en la co...