2. Estructuras lógicas de almacenamiento
• 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_SIZEAgregue aquí la segunda viñeta
• Extensiones: Se forma con uno o mas 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 data files, cada data file solo puede
pertenecer a un determinado table space
Para la gestión del almacenamiento de una base de datos Oracle existen 4 conceptos bien definidos
que deben ser conocidos para poder comprender la forma en la que se almacenan los datos.
3. 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:
4. Definición y creación 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:
5. bitácoras
a estructura más ampliamente usada para grabar las modificaciones de la base de
datos es la Bitácora. Cada registro de la bitácora escribe una única escritura de
base de datos y tiene lo siguiente:
• 1. Nombre de la transacción: Nombre de la transacción que realizó la operación
de escritura.
• 2. Nombre del dato: El nombre único del dato escrito.
• 3. Valor antiguo: El valor del dato antes de la escritura.
• 4. Valor nuevo: El valor que tendrá el dato después de la escritura.
6. bitacoras
Existen otros registros de bitácora especiales para grabar sucesos importantes
durante el proceso de transacción, tales como:
• < T1, inicio >
• < T1, x, v1, v2 >
• < T1, commit >
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.
7. 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.
8. particiones
• 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.
9. particiones
• 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
• ALTER TABLE contratos
• PARTITION BY RANGE(YEAR(fechaInicio)) (
• PARTITION partDecada50 VALUES LESS THAN (1960),
• PARTITION partDecada60 VALUES LESS THAN (1970),
• PARTITION partDecada70 VALUES LESS THAN (1980),
• PARTITION partDecada80 VALUES LESS THAN (1990),
• PARTITION partDecada90 VALUES LESS THAN (2000),
• PARTITION partDecada00 VALUES LESS THAN (2010),
• PARTITION partDecada10 VALUES LESS THAN MAXVALUE);
11. particiones
• 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.
• ALTER TABLE contratos
• PARTITION BY HASH(YEAR(fechaInicio))
• PARTITIONS 7;
•
• 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.
• ALTER TABLE contratos
• PARTITION BY KEY()
• PARTITIONS 7;
12. particiones
•
• Compuesta: podemos combinar los distintos métodos de particionado y crear
particiones de particiones
• Por último, un pequeño ejemplo de cómo afectaría el particionado a una consulta
sencilla como obtener el número total de tuplas que cumplen una condición.
Estas son las estadísticas de la consulta sin particionado (ni índices)
• EXPLAIN SELECT COUNT(*)
• FROM contratos
• WHERE fechaInicio BETWEEN '1950-01-01' AND '1955-12-31'
13. particiones
select_type table type key rows Extra
SIMPLE contratos ALL 239796 Using where
Y este el resultado de añadir las particiones (nótese la palabra clave PARTITIONS para que nos
muestre también la información relativa a las particiones)
EXPLAIN PARTITIONS SELECT COUNT(*)
FROM contratos
WHERE fecha Inicio BETWEEN '1950-01-01' AND '1955-12-31'
14. particiones
select_type table partitions type key rows Extra
SIMPLE contratos partDecada50 ALL 8640 Using where
El número de tuplas que MySQL tiene que comprobar se ve disminuido en 2 órdenes de magnitud.
El número de tuplas que MySQL tiene que comprobar se ve disminuido en 2
órdenes de magnitud.
15. 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.
17. Espacio 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.
18. Espacio para objetos
• 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
19. • 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.
20. • 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.
• El DBA debe separar en diferentes discos a los archivos para:
23. • Un segmento contiene un tipo específico de objetos de la base de datos, como
por ejemplo una tabla. Un segmento está compuesto de extensiones que definen
el tamaño disponible para el segmento. A medida que se llenan las extensiones
se van añadiendo nuevas extensiones, 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 él, ya
que si la tabla crece, el segmento también crece con ella.
24. • 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).
25. • 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. 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.
27. Memoria compartida
• La memoria compartida contiene todos los datos intervenidos, como:
• • Grupo de memorias intermedias
• • Tabla de bloqueos
• • Memoria intermedia del registro, que contiene las entradas del registro que
esperan a ser volcadas en el almacenamiento estable
• • Planes de consulta en caché, que se pueden reutilizar si se envía de nuevo la misma
consulta
• La exclusión mutua se puede implementar por medio de funciones del sistema
operativo llamadas semáforos. Implementaciones alternativas, con menos
sobrecargas, utilizan instrucciones atómicas especiales soportadas por el hardware
de la computadora; un tipo de instrucción atómica comprueba una posición de la
memoria y la establece a uno automáticamente. Los mecanismos de exclusión mutua
también se utilizan para implementar pestillos.
28. Instancia 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.
29. Instancias multiples
• 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.