martes, 17 de abril de 2018

Unidad 2

Objetivo de la Unidad

-Saber las memorias de los DBMS
-Saber instalar un DBMS
-Conocer los requisitos para cada DBMS
-Saber elegir un DBMS

2.1 Características del DBMS


CONTROL DE REDUNDANCIA.
En la creación tradicional de programas de archivos, cada grupo de usuarios mantiene sus propios archivos para manejar sus aplicaciones de procesamiento de datos. Supongamos la situación para una base de datos de un supermercado. Los grupos involucrados serían, entre otros, el de finanzas y el de reposición. Con el enfoque tradicional, cada sector mantendría archivos independientes para los proveedores, cada uno con un objetivo distinto. Buena parte de los datos se almacenarían dos veces.
 

Generalmente, esta redundancia de datos provoca varios problemas: 
•Es necesario realizar la misma actualización -introducir un nuevo proveedor- varias veces: una vez en cada archivo que contenga datos de proveedores. Esto implica duplicar el trabajo 
•Se desperdiciara espacio de almacenamiento al guardar los mismos datos en varios lugares 
•Es posible que los archivos que representan los mismos datos se tornen inconsistentes

RESTRICCIÓN DE LOS ACCESOS NO AUTORIZADOS.
Cuando muchos usuarios comparten una misma base de datos, es probable que no todos tengan la autorización para tener acceso a toda la información que contiene. El SGBD debe contar con un subsistema de seguridad y autorización que permita al DBA crear cuentas y especificar restricciones para ellas.

CUMPLIMIENTO DE LAS RESTRICCIONES DE INTEGRIDAD.
La mayor parte de las aplicaciones de base de datos tienen ciertas restricciones de integridad que deben cumplir los datos. El SGBD debe ofrecer recursos para definir tales restricciones y hacer que se cumplan. Por ejemplo, en la tabla de abajo, podemos especificar que el valor del elemento Ciclo dentro de cada registro de la tabla ESTUDIANTE debe ser un entero entre 1 y 5. 





RESPALDO Y RECUPERACIÓN
Todo SGBD debe contar con recursos para recuperarse de fallos de hardware o de software. Para ello está el subsistema de respaldo y recuperación del SGBD. Por ejemplo, si el sistema falla mientras se está ejecutando un complejo programa de actualización, el subsistema de recuperación se encargará de asegurarse de que la base de datos se restaure al estado en el que estaba antes de que comenzara la ejecución del programa.

2.1.1 Estructura de memoria y procesos de la instancia

Área Global del Sistema (System Global Area, SGA)

El Área Global del Sistema (SGA) es un grupo de estructuras de la memoria compartida que contiene datos e información de control de una instancia de una BD. Si varios usuarios se conectan de forma concurrente a la misma instancia, entonces los datos se comparten en el SGA, por lo que también se llama shared global area.

Una instancia en Oracle se compone de un SGA y de procesos. Cuando se crea una instancia, Oracle asigna memoria a un SGA automáticamente y esta se devuelve al sistema operativo cuando la instancia se cierra. Por tanto, cada instancia posee su propio SGA.

Además, es de lectura/escritura. Todos los usuarios conectados a una instancia multiproceso pueden leer la información contenida en el SGA de la instancia y varios procesos pueden escribir en él durante la ejecución.

Una parte del SGA contiene información general acerca del estado de la base de datos y de la instancia, a la que los procesos en segundo plano necesitan acceder (SGA fija), pero no se almacenan los datos de usuario. El SGA también incluye información de comunicación entre procesos, como la información de bloqueos. Además, si el sistema usa una arquitectura de servidor compartido, entonces las colas de petición y respuesta y algunos contenidos del PGA se encuentran en el SGA.

El SGA contiene la siguiente estructura de datos:

· Caché de los Buffers de la BD (Database Buffer Cache).
· Buffer del Dietario o del Registro del Rehacer (Redo Log Buffer).
· El ‘Pool’ Compartido (Shared Pool).
· Caché de Biblioteca.
· Caché del Diccionario de Datos.
· Estructuras de Control.
· Información diversa

Instancia de una Base de Datos
Cada instancia Oracle está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de ordenador), se le asigna un área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de una instancia gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o varios usuarios.

Figura 2. Estructura de una instancia de Oracle

La Instancia y la Base de Datos

Cuando se inicia una instancia Oracle monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un mismo ordenador pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de datos física.

Únicamente el administrador de la base de datos puede iniciar una instancia y abrir una base de datos. Si una base de datos está abierta, entonces el administrador puede cerrarla y, cuando esto ocurre, los usuarios no pueden acceder a la información que contiene.



2.1.2 Estructuras Físicas de la Base de Datos

Áreas Globales de Programas PGA (Program Global Areas)

Un área global de programa (PGA) es una región de memoria que contiene datos e información de control para los procesos de servidores. Es una memoria no compartida creada por Oracle cuando un proceso de un servidor es iniciado. Solo el servidor del proceso puede acceder a él y se lee y escribe solamente por un código de Oracle que actúa en nombre del proceso.

Contenido de un PGA

El contenido de la memoria de un PGA varía dependiendo de dónde se está ejecutando la instancia y de si el tipo de servidor es compartido. Pero generalmente la memoria del PGA puede ser clasificada de la siguiente forma:

Memoria de Sesión: La memoria de sesión (Session Memory) se asigna para mantener las variables de una sesión (logon information) y otra información relativa a la sesión. Para un servidor compartido, la memoria de sesión es compartida y no privada.

Área SQL Privada: Un área SQL privada contiene datos como por ejemplo consultas de información de ejecuciones y consultas de ejecuciones en áreas de trabajo. Cada sesión que establece una sentencia tiene un área privada de SQL. Cada usuario que emite la misma sentencia tiene su propia área SQL privada que usa un área SQL compartida. Aunque, muchas áreas SQL privadas pueden ser asociadas con la misma área SQL compartida.

La ubicación de un área privada SQL depende del tipo de conexión establecida para una sesión. Si una sesión se conecta a través de un servidor dedicado, las áreas privadas SQL esta localizadas en el servidor del proceso del PGA. De cualquier forma, si una sesión se conecta a través de un servidor compartido, parte del área privada SQL se mantiene en el SGA.

Cursores y Áreas SQL

La aplicación de desarrollo de un programa precompilador Oracle o un programa OCI puede explícitamente abrir cursores, o manejar algún área privada SQL específica, y usarla como un recurso nombrado a través de la ejecución de un programa. Los cursores recursivos de Oracle que emiten implícitamente algunas sentencias SQL también usan áreas SQL.

La administración de las áreas SQL privadas son responsabilidad de los procesos del usuario. La asignación y liberación de las áreas SQL privadas dependen de en qué herramienta de la aplicación se usan, aunque el número de áreas SQL privadas que un proceso de usuario puede asignar está siempre limitado el parámetro OPEN_CURSORS. El valor por defecto de este parámetro es 50.

Un área SQL privada continua existiendo hasta que el correspondiente cursor es cerrado o la sentencia es liberada. Aunque Oracle libera el área de ejecución después de que la sentencia se complete, el área persistente se mantiene en espera. Las aplicaciones de desarrollo cierran todos los cursores abiertos que no van a ser usados otra vez para liberar el área persistente y minimizar la cantidad de memoria requerida por el usuario de la aplicación.



2.1.3 Requerimientos para Instalación de la Base de Datos

Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores.
Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar oracle 11g Express y MySQL estándar versión 5.1. En Windows Seven y Ubuntu 10.
Requerimiento
Oracle
MySQL
RAM
512 MB
512 MB
Memoria virtual
1024 MB
1024 MB
Espacio disco duro
1.5 GB
1 GB
Tamaño máximo de la base de datos
4 GB
Sin limite
Sistema Operativo: Windows Server, Windows Seven, Linux, Unix
  

Arquitectura del Sistema 32/64-bit


Protocolo de red TCP/IP
Protocolo de red TCP/IP con SSL


La regla general para determinar el tamaño de la memoria virtual depende del tamaño de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable usar el espacio de intercambio, a menos que tenga un proceso inadecuado.

2.1.4 Instalación del software de BD en modo transaccional 

Para realizar la instalación de un SGBD, se deberían identificar los siguientes requisitos:

Tamaño de la base de datos. Un gran tamaño de base de datos requiere se software muy potente para la gestión de la misma, además podría plantear el hecho de separar los datos en distintas unidades de disco o incluso máquinas lo que podría requerir clústeres o sistemas distribuidos.
Conectividad. Si necesitamos que la base de datos sea accesible desde Internet, una Intranet o incluso si bastaría con un solo equipo de acceso.
Número de usuarios. Un número grande de usuarios requiere controles avanzados de seguridad.
Número de conexiones simultáneas. Suele ser el punto álgido de requisitos, ya que un gran número de conexiones simultáneas implica SGBD con grandes capacidades de trabajo concurrente y pocos Sistemas serían capaces de aceptarlo.
Aprovechamiento de hardware. Puede ser que sea el propio hardware de la empresa el que predetermine la selección al estar limitados por el mismo.
Política de empresa. Por ejemplo si la empresa tiene una política de impulso de software libre o acuerdos con empresas concretas de software.

Instalación y Configuraciòn de un SGBD
Comprobación de requerimientos:
Sistemas operativos. No todos los SGBD son multiplataforma, lo normal es que sean compatibles con unas cuantas plataformas: Windows, Linux, Unix,…
Paquetes o aplicaciones preinstaladas. A veces se requiere que el sistema posea algún software previo a la instalación del SGBD. En el mundo Linux se suele requerir de paquetes (como por ejemplo el compilador de C, o librerías especiales de entrada salida,…); en Windows es alguna actualización (como sus clásicos Service Pack) o software de terceros que se requiere (como la máquina Java, el Framework .Net o un servidor web concreto).
Memoria RAM. Es el requisito que más importa: más RAM, más ligero funciona el sistema. Oracle en su versión 11g aconseja al menos 1 GB de RAM
Procesador. Se suele exigir un modelo y una velocidad mínima en el mismo.
Disco duro. Se exige un espacio mínimo de disco
Requisitos de red. Se puede exigir que el equipo tenga una función concreta como que sea un servidor de dominio, o que tenga una conectividad particular (como una dirección IP fija).
Incompatibilidades. A veces se indican productos con los que existen problemas de compatibilidad. 

2.1.5 Variables de Ambiente y archivos importantes para instalación.


Variable: Es un espacio en memoria al cual se le da un nombre Hay variables específicas que se crean al momento de entrar al sistema, pero también hay variables que pueden ser definidas por el usuario. Las variables son una forma de pasar información a los programas al momento de ejecutarlos.

Variables de Ambiente: Se usan para personalizar el entorno en el que se ejecutan los programas y para ejecutar en forma correcta los comandos del shell.

Toman su valor inicial generalmente de un archivo .profile, pero hay veces en que el usuario tiene que modificar los valores de alguna variable de ambiente cuando está tratando de instalar o ejecutar un nuevo programa

A continuación se comentan las opciones más utilizadas de la sección mysqld (afectan al funcionamiento del servidor MySQL), se almacenan en el archivo my.cnf (o my.ini)

basedir = ruta: Ruta a la raíz MySQL
console: Muestra los errores por consola independientemente de lo que se configure para log_error.
datadir = ruta: Ruta al directorio de datos.
default-table-type = tipo: Tipo de la Tabla InnoDB o, MyISAM.
flush: Graba en disco todos los comandos SQL que se ejecuten (modo de trabajo, sin transacción).
general-log = valor: Con valor uno, permite que funcione el archivo LOG para almacenar las consultas realizadas.
general-log-file = ruta: Indica la ruta al registro general de consultas.
language: Especifica el idioma de los lenguajes de error, normalmente esots archivos de lenguaje, están bajo /usr/local/share.
log-error = ruta: Permite indicar la ruta al registro de errores.
log = ruta: Indica la ruta al registro de consultas.
long-query-time = n: Segundos a partir de los cuales una consulta que tardes más, se considerará una consulta lenta.
og-bin = ruta: Permite indicar la ruta al registro binario.
pid-file = ruta: Ruta al archivo que almacena el identificador de proceso de MySQL.
port = puerto: Puerto de escucha de MySQL.
skip-grant-tables: Entra al servidor saltándose las tablas de permisos, es decir todo el mundo tiene privilegios absolutos.
skip-networking: El acceso a MySQL se hará solo desde el servidor local.
slow-query-log = 0|1: Indica si se hace LOG de las consultas lentas.
slow-query-log-file = ruta: Ruta al archivo que hace LOG de las consultas lentas.
socket = ruta: Archivo o nombre de socket a usar en las conexiones locales.
standalone: Para Windows, hace que el servidor no pase a ser un servicio.
user = usuario: Indica el nombre de usuario con el que se iniciará sesión en MySQL.
tmpdir = ruta: Ruta al directorio para archivos temporales.
Archivos LOG en MySQL

Hay cuatro registros (logs):

Registro de Errores (Error Log): Indica cuando arrancó y se detuvo el servidor. Se graba por defecto en la carpeta de datos de MySQL (archivo host_name.err, donde host_name es el nombre del servidor), pero la variable de sistema log_error permite indicar otra ruta si fuera necesario.

Registro General de Consultas (General Log File): Está en la carpeta de datos de MySQL, salvo que se indique la variable general-log-file. Contiene las consultas realizadas. Es el archivo host_name.log.

Registro Binario (Binary Log): Registra instrucciones DML. Los archivos binarios se almacenan por defecto en el directorio de datos. Sirve para intentar restaurar una base de datos en caso de desastre. Es binario, por lo que su manejo es complicado, para ver el contenido se usa la utilidad mysqlbinlog de esta forma: mysqlbinlog archivoLOG

Registro de Consultas Lentas (Slow Query Log File): Registra las consultas que tardaron más del tiempo mínimo establecido. El archivo está (salvo quese especifique slow-log-file como parámetro) en la carpeta de datos de MySQL con el nombre host_name-slow.log

2.1.6 Procedimiento general de instalación 

Aqui pueden ver un ejemplo de instalacion visto ena la unidad 2 :

https://davidmaldonadoitm.blogspot.mx/2018/02/como-instalar-apache-derby-y-crear-una.html

2.1.7 Procedimiento para configuración de un DBMS. 

Aqui podran ver un ejemplo de cofiguracion visto en la unidad 2:

https://davidmaldonadoitm.blogspot.mx/2018/01/mi-gestor-de-base-de-datos-fire-bird.html



2.1.8 Comandos generales de alta y baja del DBMS 

Una tabla es un sistema de elementos de datos (atributo - valores) que se organizan que usando un modelo vertical - columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un número específico de columnas, pero puede tener cualquier número de filas. Cada fila es identificada por los valores que aparecen en un subconjunto particular de la columna que se ha identificado por una llave primaria. Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo en una base de datos es la forma de organizarse los datos.

Por lo tanto, la creación de las tablas en el proceso de programación en Oracle juegan un papel muy importante. En el momento de crear las tablas se definen características a dos niveles: Tabla y Columna, como se muestra a continuación: A nivel de tabla: Refieren a una o a varias columnas, donde cada columna se define individualmente.
MySQL
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:

MyISAM: trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuración distinta a la que viene por defecto con MySQL.

El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor de almacenamiento MERGE permite una colección de tablas MyISAM idénticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto.

Nota: El motor de almacenamiento MEMORY anteriormente se conocía como HEAP.

Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL 5.0. En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto.

El motor de almacenamiento EXAMPLE es un motor de almacenamiento 'tonto' que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés primario es para desarrolladores.

NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para implementar tablas que se particionan en varias máquinas. Está disponible en distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está disponible para Linux, Solaris, y Mac OS X. Los autores mencionan que se añadirá soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows en próximas versiones.

El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña.

El motor de almacenamiento CSV guarda datos en archivos de texto usando formato de valores separados por comas.

El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versión sólo funciona con MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de conectar con otras fuentes de datos usando otros drivers o métodos de conexión clientes.

La versión 5 de MySQL crea por defecto tablas InnoDB que permiten el manejo de integridad referencial, transacciones. Al igual que las tablas regulares de Oracle. Para saber si el gestor de base de datos de MySQL que tenemos las soporta es necesario ejecutar la siguiente sentencia.
SHOW VARIABLES like '%innodb%';
Comando Describe
MySQL proporciona este comando que resulta útil para conocer la estructura de una tabla, las columnas que la forman y su tipo y restricciones. La sintáxis es la siguiente:
DESCRIBE nombre Tabla.
DESCRIBE f1;

Comando SHOW TABLES y SHOW CREATE TABLE
El comando SHOW TABLES muestra las tablas dentro de una base de datos y SHOW CREATE TABLES muestra la estructura de creación de la tabla.

Tablas Temporales
Las tablas temporales solo existen mientras la sesión está viva. Si se corre este código en un script de PHP (Cualquier otro lenguaje), la tabla temporal se destruirá automáticamente al término de la ejecución de la página. Si no específica MEMORY, la tabla se guardará por defecto en el disco.
CREATE TEMPORARY TABLE temporal (
ife INTEGER (13) PRIMARY KEY,
nombre CHAR (30) NOT NULL UNIQUE
);
Este tipo de tabla solo puede ser usada por el usuario que la crea.
Si creamos una tabla que tiene el mismo nombre que una existente en la base de datos, la que existe quedará oculta y trabajaremos sobre la temporal.

Tablas Memory (Head)
Se almacenan en memoria
Una tabla head no puede tener más de 1600 campos
Las tablas MEMORY usan una longitud de registro fija.
MEMORY no soporta columnas BLOB o TEXT.
MEMORY en MySQL 5.0 incluye soporte para columnas AUTO_INCREMENT e índices en columnas que contengan valores NULL.
Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra tabla no-TEMPORARY).
CREATE TEMPORARY TABLE temporal (
ife INTEGER (13) PRIMARY KEY,
nombre CHAR (30) NOT NULL UNIQUE
) ENGINE = MEMORY;


Conclusion:
Hay muchos tipos de SGBD distintos según manejen los datos, y debemos conocerlos ya que en alguna ocasión como profesionistas podremos utilizarlos. Saber cómo funcionan, sus requisitos y que necesidades satisfacen es crucial para un buen desarrollo de bases de datos.
Un SGBD nos permite controlar el acceso a los datos, asegurar su integridad, gestionar el acceso concurrente a ellos, recuperar los datos tras un fallo del sistema y hacer copias de seguridad. Las bases de datos y los sistemas para su gestión son esenciales para cualquier área de negocio, y deben ser gestionados con esmero. 


Fuentes de informacion:
https://prezi.com/0uewhljd1axo/administracion-de-bases-de-datos_unidad2/
https://sites.google.com/site/itjabd23/home/asignatura/plan-de-estudios/unidad-2-arquitectura-del-gestor
https://proyecto359.webnode.mx/unidad2/

No hay comentarios:

Publicar un comentario