Codificación de bases de datos DB2

Esta sección proporciona información importante acerca de los problemas con la codificación de bases de datos DB2 y DB2 para z/OS, información de dimensionamiento relacionada y la acción que debe considerar si se debe realizar.

¿Cuál es el problema?

Cuando se utiliza un juego de caracteres de doble byte (MBCS) y/o codificación, DB2 procesa las columnas respecto a su tamaño de bytes, no su longitud de caracteres. Esto significa que una columna CHAR, VARCHAR o CLOB, cuando se utilizan caracteres de varios bytes, puede almacenar menos caracteres, en función de la longitud o las longitudes de caracteres reales, de los que indica la especificación de longitud de columna.

Considere la ilustración siguiente:

En el caso de los datos de un solo byte, la serie se ajustará y el proceso será satisfactorio; pero, en el caso de los datos de varios bytes, la serie no cabe, lo que produce errores de desbordamiento en tiempo de ejecución. Es decir, normalmente un cliente web de IBM Cúram Social Program Management capturará e informará de los errores de tamaño de campo de una forma fácil de usar. Sin embargo, en un caso como el indicado más arriba, dado que comprueba el número de caracteres y no es sensible a la longitud de bytes, el cliente no capturará esta discrepancia de tamaños, haciendo que el usuario reciba un error de "excepción de servidor no manejada", que es un error -302 de código de SQL subyacente.

Cómo soluciona Cúram este problema

Cúram proporciona prestaciones de modelado y de tiempo de compilación para redimensionar las columnas de base de datos a fin de solucionar el tema anterior. Estas prestaciones se describen adicionalmente en Cúram Modeling Reference Guide y Cúram Server Developer's Guide.

Puesto que Cúram proporciona soporte para varios idiomas listo para usar, el soporte para los datos MBCS está habilitado de forma predeterminada con el conjunto de expansión máximo. Estos valores de expansión son adecuados para asegurar que los nuevos usuarios, los entornos de prueba, etc. no encuentran errores debido al idioma, la codificación y tamaño de base de datos. Además, los usuarios pueden encontrar que necesitan datos MBCS al importar o copiar/pegar datos de otras aplicaciones en el sistema Cúram. No obstante, estos valores predeterminados pueden no ser apropiados para todos los entornos. En el apartado siguiente se describen algunas consideraciones para cambiar estos valores de expansión.

Qué necesita tener en cuenta

Es muy importante que tenga en cuenta de manera cuidadosa los requisitos de codificación de datos en relación a DB2 y Cúram para evitar un comportamiento inesperado con la manera en que la base de datos almacena los caracteres.

La ilustración anterior representa un caso límite en el que la longitud de datos coincide con la longitud de columna máxima. En muchos casos, es improbable que incluso con caracteres MBCS se produzca una situación de desbordamiento ya que la mayoría de los datos no alcanzan el tamaño máximo definido; sin embargo, necesita estar preparado para la posibilidad de estas situaciones de error.

Debe utilizar la codificación de juego de caracteres de base de datos apropiada a la aplicación y al entorno. Si es posible, debe tener en cuenta la posibilidad de utilizar un SBCS y codificación que soporte los requisitos. Por ejemplo, CP1252 da soporte la mayoría de caracteres de Europa occidental. Sin embargo, CP1252 (u otras codificaciones SBCS) no soporta caracteres procedentes de juegos de caracteres/codificaciones diferentes o "más amplios" (por ejemplo UTF-8) que los usuarios pueden utilizar para copiar y pegar en el navegador para Cúram.

En el punto de la instalación de la base de datos DB2 (o DB2 para z/OS), sólo necesita identificar los requisitos para los datos SBCS o MBCS y estar preparado para llevar a cabo la acción adecuada antes de crear la base de datos Cúram: