75.2 Esquema CIM

Los elementos del esquema meta son clases, propiedades y métodos. El esquema meta también admite indicaciones y asociaciones como tipos de clases y referencias como tipos de propiedades.

Las clases se pueden ordenar en una jerarquía de generalización que representa relaciones de subtipo entre clases. La jerarquía de generalización es un gráfico en raíz dirigido que no admite varias herencias.

Una clase normal puede contener propiedades escalares o de matriz de cualquier tipo intrínseco como booleano, entero, cadena y otros. No puede contener clases incrustadas o referencias a otras clases.

Una asociación es una clase especial que contiene dos o más referencias. Representa una relación entre dos o más objetos. Debido a la forma en que se definen las asociaciones, es posible establecer una relación entre clases sin que afecte a ninguna de las clases relacionadas. Es decir, la adición de una asociación no afecta a la interfaz de la clase relacionada. Sólo las asociaciones pueden tener referencias.

El fragmento de esquema de la ilustración siguiente muestra las relaciones entre algunos objetos CIM que utiliza Gestión de escritorios de ZENworks 7.

Correspondencia entre el esquema CIM y un esquema RDBMS

La ilustración muestra la correspondencia entre el esquema CIM y un esquema DBMS relacional. Las clases se muestran con el nombre de la clase como encabezado de recuadro. Las asociaciones están etiquetadas dentro de las líneas situadas entre dos clases.

La jerarquía de herencia de este fragmento de esquema se muestra en la siguiente ilustración del esquema CIM 2.2. Las referencias que aparecen como tipo Ref están en negrita con cada subtipo de asociación limitando el tipo de la referencia.

Esquema CIM 2.2 y su jerarquía de herencia

75.2.1 Asignación relacional a CIM

CIM es un modelo de objeto completo con clases, herencia y polimorfismo. La asignación generada a un esquema relacional conserva estas funciones en la máxima extensión. Los dos aspectos siguientes forman parte de la asignación relacional:

  • Esquema lógico: el esquema lógico define cómo aparecen los datos en las aplicaciones, de manera similar a una API. El objetivo es que el esquema lógico permanezca igual con independencia de la base de datos subyacente para que el software de la aplicación se pueda ejecutar sin cambios en las bases de datos admitidas. Aunque SQL es un estándar, este objetivo no es del todo posible. El software de la aplicación tiene que conocer más acerca de la base de datos que se está utilizando y esta información se puede compendiar y aislar en un área pequeña del código de la aplicación.

  • Esquema físico: el esquema físico define cómo se estructuran los datos en la base de datos. El esquema tiende a ser específico para la base de datos debido a la naturaleza de SQL y RDBMS. En este documento sólo se describe el esquema físico en términos generales.

Una tabla de la base de datos representa cada clase de la jerarquía CIM. Una columna del tipo adecuado de la tabla representa cada propiedad no heredada de la clase. Cada tabla también cuenta con una clave principal, id$, que es un entero de 64 bits que identifica una instancia de manera única. Una instancia de una clase CIM se representa mediante una fila en cada tabla que se corresponde con una clase de su jerarquía de herencia. Cada fila tiene el mismo valor para id$.

Cada clase CIM también se representa mediante una vista que utiliza id$ para unir filas pertenecientes a las distintas tablas de la jerarquía de herencia para producir un conjunto compuesto de propiedades (heredadas más locales) correspondientes a una instancia de esa clase. La vista también contiene una columna adicional, class$, de tipo entero que representa el tipo de la clase real de la instancia (el último nodo de un árbol).

Las asociaciones se asignan de la misma manera que las clases normales, con una propiedad de referencia que se representa mediante una columna con el campo id$ de la instancia de objeto a que se hace referencia. De este modo, las asociaciones se pueden cruzar uniendo el campo de referencia de la asociación con el campo id$ de la tabla a que se hace referencia.

En la ilustración siguiente se representa una consulta típica mediante esta asignación:

Consulta para buscar todos los equipos de una red

Esta consulta busca todos los equipos conectados a un segmento de red determinado. Las clases y las relaciones implicadas se resaltan con bordes.

Los temas siguientes describen ambos tipos de esquema:

75.2.2 Esquema lógico

El esquema lógico es el esquema de la base de datos tal como lo ven los usuarios de la misma y el programa de aplicación. El esquema consta de procedimientos almacenados y vistas. Las tablas subyacentes no están visibles en la aplicación.

Los componentes de inventario de ZENworks 7 Desktop Management utilizan JDBC para emitir instrucciones SQL a RDBMS y efectuar la conversión entre tipos de datos RDBMS y tipos de datos Java. El uso de JDBC con procedimientos almacenados y vistas proporciona un nivel de abstracción que aísla el código de la aplicación de la tecnología de la base de datos subyacente y de los cambios producidos en el esquema físico.

En las secciones siguientes se analizan de forma más detallada los distintos elementos del esquema lógico:

Denominación de los elementos de esquema

Se recomienda utilizar los nombres CIM sin cambios en el esquema de la base de datos. Sin embargo, se pueden producir algunos problemas debido a las diferencias en la denominación de esquemas, como las siguientes:

  • Los nombres en CIM y SQL no distinguen mayúsculas de minúsculas.
  • Todas las bases de datos tienen conjuntos diferentes de palabras reservadas que deben encerrarse entre comillas (“ “) cuando se utilizan como nombres de elementos de esquemas. Sin embargo, en Oracle, el hecho de encerrar un nombre entre comillas hace que distinga mayúsculas de minúsculas.
  • Las clases CIM evitan el uso de nombres y palabras reservadas SQL.
  • Los nombres CIM no tienen limitada la longitud y, por lo general, son nombres largos. Sybase admite hasta 128 caracteres pero Oracle restringe los nombres a 30 caracteres.

La mayoría de estos problemas se evita durante la generación de esquemas conservando la grafía de los nombres CIM, abreviando los nombres con más de 30 caracteres y colocando comillas delante y detrás de cualquier nombre que se encuentre en la unión de los conjuntos de palabras reservadas.

Cualquier nombre con más de 28 caracteres se abrevia a un nombre raíz de 28 o menos caracteres para permitir un prefijo de dos caracteres de modo que todos los elementos asociados del esquema SQL puedan utilizar el mismo nombre raíz. El algoritmo de abreviación acorta un nombre para que sea nemotécnico, reconocible y también único dentro de su ámbito. Al nombre abreviado se le asigna un carácter # como sufijo (tenga en cuenta que # es un carácter no válido en CIM) para evitar conflictos con otros nombres. Si dos o más nombres del mismo ámbito generan la misma abreviación, se añade un dígito para que el nombre sea único. Por ejemplo, AttributeCachingForRegularFilesMin se abrevia como AttCacForRegularFilesMin#.

Todos estos nombres abreviados se escriben en una tabla de nombres de este tipo para que un programa busque el nombre CIM real y recupere el nombre abreviado con el fin de utilizarlo con SQL.

Las vistas son los elementos de esquema que se manipulan con más frecuencia por código de aplicación y consultas. Utilizan el mismo nombre que la clase CIM que representan. Por ejemplo, la clase CIM.UnitaryComputerSystem se representa mediante una vista denominada CIM.UnitaryComputerSystem.

En caso necesario, los nombres para índices y tablas auxiliares se crean concatenando el nombre de la clase y el nombre de la propiedad separados por un carácter $. Estos nombres se suelen abreviar. Por ejemplo, NetworkAdapter$NetworkAddresses se abrevia como NetAdapter$NetAddresses#. Este hecho no afecta negativamente a los usuarios de esquema de Gestión de escritorios de ZENworks 7.

Usuarios y funciones

En SQL, un usuario con el mismo nombre que el esquema es el propietario de cada esquema; por ejemplo, CIM, ManageWise®, ZENworks y otros.

Además, hay un usuario MW_DBA que dispone de los privilegios y los derechos de administrador de la base de datos para todos los objetos del esquema. La función MW_Reader tiene acceso de sólo lectura a todos los objetos del esquema y la función MW_Updater tiene acceso de lectura, escritura y ejecución a todos los objetos del esquema.

Los programas de aplicación deben acceder a la base de datos como MW_Reader o MW_Updater para una base de datos Sybase, MWO_Reader o MWO_Updater para una base de datos Oracle y MWM_Reader o MWM_Updater para una base de datos MS SQL Server, según sean sus requisitos.

Tipos de datos

Los tipos de datos CIM se asignan al tipo de datos más apropiado proporcionado por la base de datos. Por lo general, la aplicación Java no necesita el tipo porque utiliza JDBC para acceder a los datos.

Java no admite de forma local los tipos sin signo, por lo que se deben utilizar clases o tipos de enteros del siguiente tamaño para representarlos. Además, hay que asegurarse de que no se producen problemas al leer o escribir en la base de datos. Por ejemplo, si se lee o escribe un número negativo en un campo sin signo de la base de datos, es probable que se produzca un error.

Las cadenas de CIM y Java son Unicode, por lo que la base de datos se crea utilizando el conjunto de caracteres UTF-8. La internacionalización no representa ningún problema. Sin embargo, puede crear problemas con la distinción entre mayúsculas y minúsculas en las consultas.

Todas las bases de datos conservan la grafía de los datos de cadena almacenados dentro de las mismas, pero pueden acceder a dichos datos teniendo en cuenta o no las mayúsculas o minúsculas durante las consultas. En Gestión de escritorios de ZENworks 7, los componentes Consulta de inventario y Exportación de datos no se ven afectados porque los datos consultados se recuperan de la base de datos antes de realizarse la consulta y, por lo tanto, se tiene en cuenta automáticamente la distinción entre mayúsculas y minúsculas.

En CIM, las cadenas se pueden especificar con o sin un tamaño máximo de caracteres. Muchas cadenas no tienen ningún tamaño especificado, por lo que no se puede limitar su tamaño. Por razones de eficacia, las cadenas sin limitar se asignan a una cadena de variables con un tamaño máximo de 254 caracteres. Las cadenas CIM con un tamaño máximo se asignan a las cadenas de base de datos de variables del mismo tamaño. El tamaño de la base de datos se expresa en bytes y no en caracteres porque un carácter Unicode puede requerir más de un byte para el almacenamiento.

Vistas

Cada clase CIM se representa en la base de datos mediante una vista que contiene todas las propiedades heredadas y locales que no sean de matriz de esa clase. La vista se denomina de la misma manera que la clase CIM.

Las vistas se pueden consultar mediante la instrucción SELECT y actualizar mediante la instrucción UPDATE. Como las vistas no se pueden utilizar con las instrucciones INSERT y DELETE, utilice los procedimientos de constructor y destructor.

75.2.3 Esquema físico

El esquema físico consta de los elementos necesarios para la ejecución de la base de datos. El esquema físico es diferente en cada base de datos. Un esquema físico típico consta de:

  • Definiciones de tablas ’t$xxx’Definiciones de índices ’i$xxx
  • Definiciones de activador ’x$xxx’, ’n$xxx’ y ’u$xxx
  • Definiciones de secuencia (Oracle) ’s$xxx
  • Funciones y procedimientos almacenados

El esquema lógico se coloca encima del esquema físico, por lo que no es necesario que los usuarios y las aplicaciones conozcan el esquema físico.