3.1 Estructuras logicas de almacenamiento
Para la gestión del almacenamiento de una base de datos existen 4 conceptos
bien definidos que deben ser conocidos para poder comprender la forma en la que
se almacenan los datos. Vamos a ver la diferencia entre bloque, extensión,
segmento y espacio de tablas.
Bloques: Se tratan de la unidad más pequeña. Generalmente debe múltiple del
tamaño de bloque del sistema operativo, ya que es la unidad mínima que va a
pedir Oracle al sistema operativo. Si no fuera múltiple del bloque del sistema se
añadiría un trabajo extra ya que el sistema debería obtener más datos de los
estrictamente necesarios. Se especifica mediante DB_BLOCK_SIZE
Extensiones: Se forma con uno o más bloques. Cuando se aumenta tamaño de
un objeto se usa una extensión para incrementar el espacio.
Segmentos: Grupo de extensiones que forman un objeto de la base de datos,
como por ejemplo una tabla o un índice.
Espacio de tablas: Formado por uno o más datafiles, cada datafile solo puede
pertenecer a un determinado tablespace
En general, el almacenamiento de los objetos de la base de datos (tablas e índices
fundamentalmente) no se realiza sobre el archivo o archivos físicos de la base de
datos, sino que se hace a través de estructuras lógicas de almacenamiento que
tienen por debajo a esos archivos físicos, y que independizan por tanto las
sentencias de creación de objetos de las estructuras físicas de almacenamiento.
Esto es útil porque permite que a esos "espacios de objetos " les sean asociados
nuevos dispositivos físicos (es decir, más espacio en disco) de forma dinámica
cuando la base de datos crece de tamaño más de lo previsto.
3.1.1 Definición de espacio de almacenamiento
Las bases de datos suelen ser creadas para almacenar grandes cantidades de datos de forma permanente. Por lo general, los datos almacenados en éstas suelen ser consultados y actualizados constantemente.
La mayoría de las bases de datos se almacenan en las llamadas memorias secundarias, especialmente discos duros, aunque, en principio, pueden emplearse también discos ópticos, memorias flash, etc.
Las razones por las cuales las bases de datos se almacenan en memorias secundarias son:
En cuanto al respaldo de las bases de datos (ver backup), suelen emplearse tanto discos duros, como cintas magnéticas, discos ópticos o similares.
Las técnicas empleadas para almacenar bases de datos son sumamente importantes para la velocidad de acceso y recuperación de datos. Las técnicas dependen del tipo de almacenamiento, el uso que se le da o se le dará a la base de datos, la estructura de la misma, el SGBD empleado, etc.
Esta dependencia no significa necesariamente que haya que cambiar la estructura de la base de datos si se cambian las técnicas empleadas. Las técnicas de almacenamiento son independientes de la base de datos, pero, de todas maneras, las mejores técnicas muchas veces pueden determinarse viendo la estructura de la base de datos, entre otras características.
Los encargados de elegir estas técnicas son los diseñadores y administradores de bases de datos, y dependen también de las capacidades del SGBD. En general, el SGBD ofrece diferentes opciones y técnicas para organizar los datos.
La idea es que los encargados de la base de datos encuentren las técnicas idóneas, o sea, aquellas que permitan la mayor velocidad posible de acceso a los datos. Una mala decisión en esta área puede resultar en una menor velocidad de acceso a la base de datos, o en un uso excesivo del espacio de almacenamiento, o incluso, puede aumentar la velocidad de consulta de una base de datos, pero disminuir la velocidad de actualización de la misma.
3.1.2 Definicion y creacion del espacio asignado para cada base de datos
Las bases de datos se almacenan en ficheros o archivos. Existen diferentes
formas de organizaciones primarias de archivos que determinan la forma en que
los registros de un archivo se colocan físicamente en el disco y, por lo tanto, cómo
se accede a éstos.
Las distintas formas de organizaciones primarias de archivos son:
Existe una segunda forma de acceder a los datos llamada organización
secundaria o estructura de acceso auxiliar. Estas permiten que los accesos a los
registros de un archivo basado en campos alternativos, sean más eficientes que
los que han sido utilizados para la organización primaria de archivos.
El DBMS asigna espacio de almacenamiento a las bases de datos cuando los
usuarios introducen create database o alter database. El primero de los comandos
puede especificar uno o más dispositivos de base de datos, junto con la cantidad
de espacio en cada uno de ellos que será asignado a la nueva base de datos.
Si se utiliza la palabra clave default o se omite completamente la cláusula on , el
DBMS pone la base de datos en uno o más de los dispositivos predeterminados
de base de datos especificados en master..sysdevices
Para especificar un tamaño (en este ejemplo, 4MB) para una base de datos que
se va a almacenar en una ubicación predeterminada, utilice on default = size de
esta forma:
create database newpubs on default = 4
Para situar la base de datos en dispositivos específicos, dé el nombre del
dispositivo o dispositivos en que desea almacenarla. Como la sintaxis indica,
puede solicitar que se almacene en más de un dispositivo de base de datos, con
una cantidad de espacio diferente en cada uno. Todos los dispositivos
mencionados en create database deben estar enumerados en sysdevices . En
otras palabras, deben haberse inicializado con disk init .
La instrucción siguiente crea la base de datos newdb y asigna 3MB en mydata y
2MB en newdata . Como en el ejemplo anterior, la base de datos y el diario de
transacciones no se separan:
create database newdb on mydata = 3, newdata = 2
3.1.3 Bitácoras
La estructura es ampliamente usada para grabar las modificaciones de la base de datos es la Bitácora, herramienta que permite registrar, analizar detectar y notificar eventos que suceden en cualquier sistemas de informacion utilizado en las organizaciones. La estructura mas ampliamente usada para grabar las modificaciones de la BD.
Cuales son sus funciones
La importancia de las bitácoras es la de recuperar información ante incidentes de seguridad, detección de comportamiento inusual, información para resolver problemas, evidencia legal, es de gran ayuda en las tareas de cómputo forense.
Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo siguiente :
Nombre de la transacción : Nombre de la transacción que realizó la operación de escritura.
Nombre del dato : El nombre único del dato escrito.
Valor antiguo : El valor del dato antes de la escritura.
Valor nuevo : El valor que tendrá el dato después de la escritura.
Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos.
También tenemos la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora.
Los registros de la bitácora deben residir en memoria estable como resultado el volumen de datos en la bitácora puede ser exageradamente grande.
Una bitácora puede registrar mucha información acerca de eventos relacionados con el sistema que la genera los cuales pueden ser:
• Fecha y hora.
• Host origen.
• Usuario.
• Actividad realizada.
3.1.4 Particiones
Una partición es una división de una base de datos lógica o sus elementos constituyentes en partes independientes. La partición de bases de datos se hace normalmente por razones de mantenimiento, rendimiento o manejo.
Una aplicación popular y favorable es en un Sistema de Administración de Base de Datos Distribuida. Cada partición puede ser extendida hasta múltiples nodos, y los usuarios en el nodo pueden hacer transacciones locales en la partición. Esto aumenta el rendimiento en sitios que tienen transacciones regularmente involucrando ciertas vistas de datos, y manteniendo la disponibilidad y la seguridad.
Esta partición puede hacerse creando bases de datos más pequeñas separadas (cada una con sus propias tablas, índices, y registros de transacciones) o dividiendo elementos seleccionados, por ejemplo, solo una tabla.
Partición horizontal consiste en poner diferentes filas en diferentes tablas. Por ejemplo, clientes con códigos postales menores que 50000 están almacenados en la tabla ClientesEste, mientras que los clientes con códigos postales mayores o iguales a 50000 están almacenados en la tabla ClientesOeste. Las dos tablas de partición son entonces ClientesEste y ClientesOeste, mientras que una vista con una unión podría ser creada con las dos tablas para poder dar una vista completa de todos los clientes.
Partición vertical consiste en crear miles de tablas con miles de columnas y crear tablas para poner las columnas restantes.
Se puede particionar una tabla de 5 maneras diferentes:
- Por rango: para construir nuestras particiones especificamos rangos de valores. Por ejemplo, podríamos segmentar los datos en 12 particiones: una para los contratos de 1950 a 1960, otra para los años 60, los 70, 80, 90, la década del 2000 y la década actual
- Por listas: para construir nuestras particiones especificamos listas de valores concretos.
- Por hash: MySQL se encarga de distribuir las tuplas automáticamente usando una operación de módulo. Sólo hay que pasarle una columna o expresión que resulte en un entero (el hash) y el número de particiones que queramos crear.
- Por clave: similar a la partición por hash, pero en este caso no necesitamos pasarle un entero; MySQL utilizará su propia función de hash para generarlo. Si no se indica ninguna columna a partir de la que generar el hash, se utiliza la clave primaria por defecto.
- Compuesta: podemos combinar los distintos métodos de particionado y crear particiones de particiones
3.1.5 Espacios Privados
Un «espacio privado» permite que los administradores y redactores gestionen el conjunto de datos del sitio. Algunas bases de datos tienen estos espacios privados llamados comúnmente paneles de control, que son formularios que aparecen al abrir la base de datos.
Los paneles de control sirven de "puerta principal" o "recibidor" de una base de datos en el sentido de que dirigen a las personas hacia determinadas tareas, como introducir o buscar datos. Sirven también para mantener alejados a los usuarios de las tablas que contienen los datos en tiempo real.
Cuando reciba una base de datos, debe adentrarse más allá del panel de control para averiguar cómo están estructurados los datos, pero merece la pena echar un vistazo inicial al panel de control. Le puede ofrecer algún indicio sobre las tareas que el diseñador de la base de datos consideró que realizarían los usuarios habitualmente con los datos.
Puede hacer clic en los vínculos del panel de control para ver qué objetos, como formularios e informes, abren.
3.1.6 Espacios para objetos
Los DBMS se basan en archivos para almacenar datos, y estos archivos, o
conjuntos de datos, residen en medios de almacenamiento, o dispositivos. Una
buena parte del trabajo del DBA implicará la planificación para el almacenamiento
real de la base de datos.
Algunas tecnologías de almacenamiento son más adecuadas que otras. Sin
embargo, la naturaleza mecánica de la unidad de disco los hace más vulnerables
al fracaso de los componentes de otro equipo. Además, las formas en que las
unidades de disco son utilizados por las bases de datos pueden hacer que la
gestión del almacenamiento impredecibles, como la barra lateral "Modern DBMS
de uso de disco“ Puede usarse RAID para mejorar la seguridad de los datos.
Para aplicaciones de misión crítica la integridad de los datos puede ser más
importante que la disponibilidad de datos. Si el soporte es poco fiable y un fallo de
las causas de corrupción de datos, los datos perdidos puede ser más de un
problema que el tiempo de inactividad. Es imperativo, por tanto, que las soluciones
de almacenamiento de base de datos para protegerlos a toda costa. La
recuperación de datos desde medios de almacenamiento lleva mucho más tiempo
en completarse que la recuperación de datos desde la memoria caché o la
memoria.
El rendimiento de la base de datos depende de la entrada y salida a disco. La
cantidad de datos almacenados es mayor que nunca antes, y los datos se
almacenados por más tiempo.
Algunos DBMS permiten al tamaño de los archivos temporales de expandirse y
contraerse de forma automática. Dependiendo del tipo y la naturaleza de las
operaciones de base de datos en proceso, esta fluctuación puede provocar picos
de uso del disco
El crecimiento de la capacidad de almacenamiento aumenta aún más la
complejidad de la gestión de datos y bases de datos. Muchas organizaciones
están implementando nuevas tecnologías de almacenamiento, tales como
almacenamiento en red (NAS) y redes de área de almacenamiento (SAN), para
ayudar a controlar la cantidad cada vez mayor de almacenamiento necesario para
los usos modernos. La gestión del almacenamiento en el entorno dinámico de hoy
es una tarea difícil DBA.
Hay muchos problemas de almacenamiento que deben ser resueltos antes de que
un DBA pueda crear una base de datos. Uno de los temas más importantes es la
cantidad de espacio para permitir la base de datos.
El cálculo espacial debe tener en cuenta no sólo tablas, índices, sino también, y
dependiendo del DBMS, el registro de transacciones. Cada una de estas
entidades probablemente requerirá un archivo separado o conjunto de datos, para
el almacenamiento persistente.
3.2 Segmentos
Un segment es aquel espacio reservado por la base de datos, dentro de un
datafile, para ser utilizado por un solo objeto. Así una tabla (o cualquier otro
objeto) está dentro de su segmento, y nunca podrá salir de el, ya que si la tabla
crece, el segmento tambien crece con ella. Físicamente todo objeto en base de
datos no es más que un segmento dentro de un datafile. Se puede decir que, un
segmento es a un objeto de base de datos, lo que un datafile a un tablespace; el
segmento es la representación física del objeto en base de datos (el objeto es solo
una definición lógica).
Los segmentos son los equivalentes físicos de los objetos que almacenan datos.
El uso efectivo de los segmentos requiere que el DBA conozca los objetos, que
utiliza una aplicación, cómo los datos son introducidos en esos objetos y el modo
en que serán recuperados.
Un segmento está constituido por secciones llamadas extensiones, que son
conjuntos contiguos de bloques Oracle. Una vez que una extensión existente en
un segmento no puede almacenar más datos, el segmento obtendrá del espacio
de tabla otra extensión. Este proceso de extensión continuará hasta que no quede
más espacio disponible en los ficheros del espacio de tablas, o hasta que se
alcance un número máximo de extensiones por segmento.
Existen 5 tipos de segmento:
- De datos.
- De índices.
- De rollback.
- Temporales.
- De bootstrap.
3.3 Memoria Compartida
Memoria compartida distribuida
Los sistemas de memoria compartida distribuida (DSM) representan la creación
hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas
multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de
memoria compartida en sistemas con memorias distribuidas físicamente y
consecuentemente combinan las mejores características de ambos enfoques.
Debido a esto, el concepto de memoria compartida distribuida es reconocido como
uno de los enfoques mas atractivos para la creación de sistemas escalables, de
alto rendimiento de sistemas multiprocesador.
Memoria compartida basada en páginas
El esquema de DSM propone un espacio de direcciones de memoria virtual que
integra la memoria de todas las computadoras del sistema, y su uso se realiza
mediante paginación. Las páginas quedan restringidas a estar necesariamente en
un único nodo. Cuando un programa intenta acceder a una posición virtual de
memoria, se comprueba si esa página se encuentra de forma local. Si no se
encuentra, se provoca un fallo de página, y el sistema operativo solicita la página
al resto de nodos. El sistema funciona de forma análoga al sistema de memoria
virtual tradicional, pero en este caso los fallos de página se propagan al resto de
ordenadores, hasta que la petición llega al nodo que tiene la página virtual
solicitada en su memoria local. A primera vista este sistema parece más eficiente
que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser
un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de
páginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de
direcciones en una zona local y privada y una zona de memoria compartida, que
se usará únicamente por procesos que necesiten compartir datos. Esta
abstracción se acerca a la idea de programación mediante la declaración explícita
de datos públicos y privados, y minimiza el envío de información, ya que sólo se
enviarán los datos que realmente vayan a compartirse.
Memoria compartida basada en objetos
Una alternativa al uso de páginas es tomar el objeto como base de la transferencia
de memoria. Aunque el control de la memoria resulta más complejo, el resultado
es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden
integrar limpiamente. Otra de las restricciones de este modelo es que todos los
accesos a los objetos compartidos han de realizarse mediante llamadas a los
métodos de los objetos, con lo que no se admiten programas no modulares y se
consideran incompatibles.
3.4 Instancias Multiples
Se llama instancia múltiple al hecho de poder ejecutar un programa más de una vez al mismo tiempo. Hay programas que no admiten más que una sola instancia, es decir que si ya se está ejecutando, por más que lo cliquees de nuevo en el icono o en el menú no aparecerá un nuevo ejemplar del programa. Con las bases de datos se complica un poco porque si un usuario modifica un registro que otro usuario tiene también abierto, la modificación que se haga en una instancia debe reflejarse de inmediato (actualizarse) en cualquier otra instancia abierta de la misma base de datos.
Sin embargo, en las bases de datos se puede seleccionar la opción en el diseño de la BD, y se reflejarán de inmediato las modificaciones en todas las instancias abiertas
En programación, una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa. Los objetos también puede ser ocurrencia de las clases.
No hay comentarios:
Publicar un comentario