DB2 10.1 ha dado paso a un nuevo nivel de compresión llamado "Compresión Adaptativa" o "Adaptive Compression" que mejora por mucho los actuales niveles de compresión logrados por su predecesora. Este artículo trata de mostrar de manera general el funcionamiento de esta nueva tecnología de compresión y las ventajas que ofrece para los clientes desde distintas puntos de vista.

Oscar Solis, IT Specialist, IBM

Oscar Solis tiene actualmente el rol de IT Specialist en IBM y durante 10 años ha trabajado directamente con distintas plataformas de tecnologías de información. Actualmente forma parte del IMTE (Information Management Technology Ecosystem) que se encarga entre otras cosas de difundir las características de DB2 en el mundo de las tecnologías de información a través de visitas a clientes, evaluaciones de ambientes y pruebas de concepto, destacando siempre las ventajas competitivas de este manejador de base de datos sobre su competencia.



24-07-2012

Nuevo nivel de compresión en DB2 10

Con el reciente lanzamiento de DB2 10.1, un nuevo nivel de compresión ha llegado para el beneficio de los clientes llamado “Compresión Adaptativa” o “Adaptive Compression” en inglés.

Anteriormente con la versión DB2 9.7, los clientes ya contaban con una gran ventaja en esta herramienta a través de “Row Compression”; sin embargo, ahora ha quedado superado por la nueva tecnología de compresión integrada en DB2 10.1.

Esta nueva tecnología de compresión al igual que sus predecesoras se encuentra disponible como característica adicional de “Storage Optimization” la cual está disponible para dos versiones:

  • Enterprise Server Edition (con costo adicional)
  • Advanced Enterprise Server Edition (ya incluida y sin costo adicional)

Con la nueva tecnología de compresión, se han realizado muchas mejoras significativas, las cuales tienen como principal propósito reducir las necesidades de almacenamiento y, en consecuencia, la reducción de costos hacia el cliente. Adicionalmente, debido a que hay niveles más altos de compresión, esto permite que se pueda cargar más información en memoria y con esto tener mejoras de desempeño. Otra nueva característica es que se reduce la necesidad de realizar operaciones de reorganización de tablas, por lo que el nivel de mantenimiento disminuye y, en este sentido, hay reducción de costos nuevamente.

En resumen, los beneficios que se obtienen al utilizar “Adaptive Compression” son:

  • Menores requerimientos de espacio y memoria que usualmente son los elementos más costosos en una solución de base de datos.
  • Mejor administración en el crecimiento de almacenamiento, lo cual genera ahorros de energía y enfriamiento.
  • Ayuda a mejorar el desempeño de la base de datos, ya que se requieren menores operaciones de I/O.
  • Reduce los costos administrativos.
  • Hay menores costos por propiedad.

¿Cómo funciona?

La “Compresión Adaptativa” utiliza dos enfoques. El primer enfoque tiene que ver con la compresión a nivel de tabla basado en un diccionario de compresión el cual ya es muy conocido por la compresión de registros que realiza, también llamada “Row Compression”, la cual comprime información con base en patrones de repetición identificados a través del diccionario de compresión y sustituidos en la información original.

El segundo enfoque, el cual se integra como parte adicional en DB2 10.1 y que es una mejora y extensión al enfoque anterior, es el enfoque que utiliza un diccionario de compresión a nivel de página el cual a su vez se basa en un algoritmo para comprimir la información basado en patrones de repetición de acuerdo con cada página de datos. El diccionario por página asocia patrones de repetición con símbolos más pequeños; dichos símbolos entonces son utilizados para reemplazar los datos originales en las tablas. El diccionario de compresión a nivel de tabla es almacenado en la tabla para la cual es creado y es utilizado para comprimir información en dicha tabla. El diccionario de compresión a nivel de página es almacenado dentro de la misma página de datos como registros especiales y ocultos y es utilizado para comprimir información sólo en dicha página.

Hay que tener presente que en DB2 10.1 se puede especificar que una tabla sólo sea comprimida con base en el diccionario a nivel de tabla utilizando “Row Compression”; sin embargo, no se puede especificar que una tabla sólo utilice diccionario de compresión a nivel de página ya que el enfoque de “Adaptive Compression” utiliza ambos diccionarios, a nivel de tabla y a nivel de página, es decir, funcionan complementariamente como una solución integral.

Una diferencia importante es que mientras los diccionarios de compresión a nivel de tabla se crean una sola vez y se mantienen de manera explícita a través de tareas de mantenimiento como REORG, los diccionarios a nivel de página son creados o recreados automáticamente por el manejador de base de datos de acuerdo a las páginas que se vayan utilizando por crecimiento de la información, esto genera que las tareas de mantenimiento sean menores y que los niveles de compresión se mantengan siempre óptimos a diferencia de los diccionarios a nivel de tabla que requieren de alguna tarea de mantenimiento explícita y es hasta ese momento que alcanzan su nivel óptimo de compresión nuevamente.


Información que puede ser comprimida

Toda la información que es almacenada como registros, incluídos LOB’s y XML’s inlined, pueden ser comprimidos desde los dos enfoques “Row Compression” o “Adaptive Compression”.

Algunas restricciones son que información XML creada en DB2 9.5 o DB2 9.1 no puede ser comprimida. Sin embargo, se pueden comprimir columnas XML inline que se agreguen a una tabla usando DB2 9.7 o posterior.

De acuerdo a lo anterior es importante poner especial atención a la versión de DB2 donde se originó la información para determinar la compatibilidad con la compresión de datos.


Habilitar y deshabilitar “Adaptive Compression”

Para utilizar “Adaptive Compression”, se debe tener habilitada una licencia de la característica adicional de DB2 llamada “Storage Optimization”. Después de cumplir con el anterior requisito, lo siguiente es muy sencillo, ya que sólo es necesario configurar el parámetro COMPRESS de la tabla en cuestión a un valor YES. Se puede configurar dicho parámetro al momento de crear la tabla con la opción COMPRESS YES desde la sentencia CREATE TABLE. También se puede modificar una tabla creada previamente para que utilice compresión con la misma opción desde la sentencia ALTER TABLE. Después de habilitar la compresión, las operaciones que agreguen información a la tabla, como pueden ser INSERT, LOAD INSERT o IMPORT INSERT utilizarán compresión.

Sentencias para habilitar “Adaptive Compression”:

CREATE TABLE … COMPRESS YES ADAPTIVE
CREATE TABLE … COMPRESS YES

ALTER TABLE … COMPRESS YES ADAPTIVE
ALTER TABLE … COMPRESS YES

Para deshabilitar la compresión de una tabla, se debe utilizar la sentencia ALTER TABLE con la opción COMPRESS NO, los registros que se agreguen posteriormente no serán comprimidos. La información anterior permanece comprimida hasta que no se realice una tarea de reorganización sobre la tabla a través del comando REORG TABLE.

Sentencia para deshabilitar “Adaptive Compression”:

    ALTER TABLE … COMPRESS NO

Un ejemplo

Al inicio de este artículo he comentado sobre los beneficios directos e indirectos que se obtienen al hacer uso de “Adaptive Compression” en un ambiente de base de datos DB2; sin embargo, para tener una visión más clara, presentaré un ejemplo concreto para resaltar los porcentajes de compresión que se pueden lograr y los beneficios en costos de storage que esto puede representar.

Al realizar una prueba de compresión sobre 5 tablas de gran tamaño se obtuvieron los siguientes resultados (ver Figura 1):

  • La compresión promedio para las 5 tablas usando “Row Compression” de DB2 9.7 fue de 5X.
  • La compresión promedio para las 5 tablas usando “Adaptive Compression” de DB2 10.1 fue de 7X.

Como se puede observar en la Figura 1, “Adaptive Compression” de DB2 10.1 supera en 2X promedio el nivel de compresión logrado por su predecesor “Row Compression” de DB2 9.7.

Figura 1. Nivel de Compresión
Nivel de Compresión

Ahora, ¿qué significa este nivel de compresión en ahorros de storage?

Con base en el ejemplo anterior consideremos la Tabla E que es la más grande y la que alcanza un nivel de compresión de 10X. Esta tabla contiene alrededor de 1,500 millones de registros que si consideramos que cada registro utiliza un espacio de almacenamiento promedio de 1 Kilobyte, esta tabla alcanza un tamaño total de 1430 Gigabytes.

Esto quiere decir que después de utilizar “Adaptive Compression” en esta tabla, su tamaño será de de solamente 143 Gigabytes lo que significa un ahorro en espacio de 1287 Gigabytes. Ahora si consideramos que en el estándar de mercado 1 GB de storage tiene un costo de 1.5 USD (sin incluir costos indirectos como mantenimiento y administración), esto nos produce un ahorro de 1,930 USD, esto hablando sólo de una tabla de la base de datos, con esto trato de ejemplificar los ahorros significativos que pueden existir en storage dentro de una solución de base de datos.


Resources

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=822451
ArticleTitle=Nuevo nivel de compresión en DB2 10
publish-date=07242012