Linux tiene una agrupación de nodos de dispositivos brutos que se deben vincular a un dispositivo de bloque para poder realizar la E/S bruta. Hay un controlador de dispositivos brutos que actúa como el depósito central de información de vinculación de dispositivos brutos con dispositivos de bloque. La vinculación se realiza utilizando un programa de utilidad que se denomina bruto, que normalmente proporciona el distribuidor de Linux.
Antes de configurar E/S bruta en Linux, es necesario lo siguiente:
# ln -s /dev/your_raw_dev_ctrl /dev/rawctl
Distribución Nodos disp. brutos Contr. disp. brutos ------------ -------------------- --------------------- RedHat 6.2 /dev/raw/raw1 to 255 /dev/rawctl SuSE 7.0 /dev/raw1 to 63 /dev/raw
DB2 da soporte a cualquiera de los controladores de dispositivos brutos anteriores y a la mayoría de los otros nombres para nodos de dispositivos brutos. DB2 no da soporte a los dispositivos brutos en Linux/390.
Para configurar E/S bruta en Linux:
En este ejemplo, la partición bruta a utilizar es /dev/sda5. No debe contener datos valiosos.
Paso 1. | Calcule el número de páginas de 4 096 bytes de esta partición, redondeándolo si es necesario. Por ejemplo: # fdisk /dev/sda Command (m for help): p Disk /dev/sda: 255 heads, 63 sectors, 1106 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/sda1 1 523 4200997 83 Linux /dev/sda2 524 1106 4682947+ 5 Extended /dev/sda5 524 1106 4682947 83 Linux Command (m for help): q # El número de páginas en /dev/sda5 es num_pages = floor( ((1106-524+1)*16065*512)/4096 ) num_pages = 11170736 |
Paso 2. | Vincule un nodo de dispositivos brutos con esta partición. Esto debe realizarse cada vez que se rearranca la máquina y requiere acceso root. Utilice raw -a para ver los nodos de dispositivos brutos que ya están en uso: # raw /dev/raw/raw1 /dev/sda5 /dev/raw/raw1: bound to major 8, minor 5 |
Paso 3. | Establezca permisos de lectura globales en el controlador de dispositivos brutos y la partición de disco. Establezca permisos de lectura y grabación globales en el dispositivo bruto: # chmod a+r /dev/rawctl # chmod a+r /dev/sdb1 # chmod a+rw /dev/raw/raw1 |
Paso 4. | Cree el espacio de tabla en DB2, especificando el dispositivo bruto, no la partición de disco. Por ejemplo: CREATE TABLESPACE dms1 MANAGED BY DATABASE USING (DEVICE '/dev/raw/raw1' 11170736)
|
También se da soporte a los espacios de tabla en dispositivos bruto para todos los tamaños de página soportados por DB2.
A continuación de la sección titulada "Definición de una columna de identidad en una nueva tabla," añada la sección siguiente, "Creación de una secuencia":
Una secuencia es un objeto de base de datos que permite la generación automática de valores. Las secuencias se ajustan a la tarea de generar valores de clave exclusivos. Las aplicaciones pueden utilizar secuencias para evitar posibles problemas de simultaneidad y rendimiento resultantes de la generación de un contador exclusivo fuera de la base de datos.
A diferencia de un atributo de columna de identidad, una secuencia no está ligada a una columna de tabla específica ni está vinculada a una columna de tabla exclusiva y sólo es accesible a través de esa columna de tabla.
Una secuencia se puede crear o alterar, de modo que genere valores de una de estas formas:
A continuación se encuentra un ejemplo de creación de un objeto de secuencia:
CREATE SEQUENCE order_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 24
En este ejemplo, la secuencia tiene el nombre order_seq. Empezará en 1 y aumentará en 1 sin límite superior. No hay ninguna razón para volver al principio y reiniciar desde 1 porque no hay un límite superior asignado. El número asociado con el parámetro CACHE especifica el número máximo de valores de secuencia que el gestor de bases de datos preasigna y mantiene en memoria.
Los números de secuencia generados tienen las propiedades siguientes:
Si una base de datos que contiene una o más secuencias se recupera a un punto anterior en el tiempo, esto puede ocasionar la generación de valores duplicados para algunas secuencias. Para evitar posibles valores duplicados, no debería recuperarse una base de datos con secuencias a un punto anterior en el tiempo.
Sólo se da soporte a las secuencias en una base de datos de un único nodo.
Hay dos expresiones que se utilizan con una secuencia.
La expresión PREVVAL devuelve el valor generado más recientemente para la secuencia especificada para una sentencia anterior dentro de la sesión actual.
La expresión NEXTVAL devuelve el valor siguiente para la secuencia especificada. Se genera un nuevo número de secuencia cuando una expresión NEXTVAL especifica el nombre de la secuencia. Sin embargo, si hay varias instancias de una expresión NEXTVAL especificando el mismo nombre de secuencia dentro de una consulta, el contador para la secuencia se aumenta sólo una vez para cada fila del resultado.
Puede utilizarse el mismo número de secuencia como valor de clave exclusivo en dos tablas por separado haciendo referencia al número de secuencia con una expresión NEXTVAL para la primera tabla y una expresión PREVVAL para las tablas adicionales.
Por ejemplo:
INSERT INTO order (orderno, custno) VALUES (NEXTVAL FOR order_seq, 123456); INSERT INTO line_item (orderno, partno, quantity) VALUES (PREVVAL FOR order_seq, 987654, 1)
Las expresiones NEXTVAL o PREVVAL pueden utilizarse en las ubicaciones siguientes:
A continuación de la nueva sección titulada "Creación de una secuencia", añada la sección siguiente:
Aunque hay similitudes entre secuencias y columnas IDENTITY, también hay diferencias. Las características de cada una de ellas pueden utilizarse al diseñar la base de datos y las aplicaciones.
Una columna de identidad tiene las características siguientes:
Un objeto de secuencia tiene las características siguientes:
Aunque estas no son todas las características de estos dos elementos, estas características le ayudarán a determinar cuáles utilizar dependiendo del diseño de la base de datos y las aplicaciones que utilizan la base de datos.
Dentro de la sección titulada "Creación de un Índice, Extensión de índice o Especificación de índice", añada la nota siguiente en el párrafo que empieza con la frase: "Cualquier columna que forma parte de una clave de índice está limitada a 255 bytes."