Personalizando InfoSphere MDM Server usando infraestructura de consulta conectable de objetos empresariales y de SQL conectable

Guías e instrucciones

IBM® InfoSphere® Master Data Management Server es un producto altamente personalizable que puede satisfacer rigurosos requisitos de rendimiento y escalabilidad. Para satisfacer los requisitos específicos de rendimiento de los clientes, el producto ofrece una infraestructura de consulta conectable de objetos empresariales y de SQL conectable. Estos dispositivos ayudan a modificar una consulta existente usada por el servidor de MDM, ayudando a optimizar la aplicación. Este artículo se enfoca en las prácticas recomendadas para implementar consultas conectables de objetos empresariales y SQL conectable de InfoSphere MDM Server.

Prashanta Chandramohan , MDM Senior Technical Specialist, IBM

Prashanta ChandramohanPrashanta Chandramohan es un especialista certificado en TI con una amplia experiencia trabajando en la suite de productos de IBM MDM. Actualmente está trabajando para el equipo de India Lab Services and Solutions como un especialista técnico sénior para InfoSphere Master Data Management Server e Initiate Master Data Service. En este rol, ha realizado varias implementaciones exitosas de MDM Server en distintas zonas geográficas y ha ganado un buen reconocimiento en comunidades y clientes de MDM en todo el mundo. Actualmente está trabajando con muchos clientes norteamericanos, ayudándoles con sus iniciativas de MDM usando MDM Server e Initiate Master Data Service. Escribe un blog y también ha escrito artículos sobre IBM MDM, el gobierno de datos y la calidad de datos.



16-04-2012

Visión General

IBM InfoSphere Master Data Management Server (MDM Server) es una solución de MDM líder de IBM en el mercado. MDM Server es un repositorio maestro físico que entrega una sola versión de la verdad sobre entidades de datos críticos como el cliente, el producto, la cuenta y más. Está diseñado para satisfacer altos requisitos de rendimiento y escalabilidad. El producto ofrece personalizaciones flexibles para modelos de datos y los servicios empresariales ofrecidos para gestionar datos maestros.

Con base en los requisitos del cliente, el producto puede ser personalizado. Para servir a una base diversa de clientes con entornos de software y hardware, requisitos empresariales de cliente y características de datos heterogéneos, hay un número de personalizaciones para cada implementación. Es importante que estas implementaciones sigan las buenas prácticas en todas las personalizaciones, de forma que estos cambios no afecten el comportamiento de MDM Server. Esto ayudará al cliente a realizar el mantenimiento del sistema más fácilmente.

Nuestro objetivo es mostrar la mejor forma de escribir consultas conectables de objetos empresariales en MDM Server. Una infraestructura de consulta conectable nos permite modificar una consulta de base de datos existente usada por un servicio de consultas. El nuevo cambio de consulta puede ser requerido para asegurarse de que el servicio está optimizado y que pueda ejecutarse más rápidamente para satisfacer un objetivo específico de rendimiento. Este artículo toma un escenario de ejemplo donde esta personalización es requerida y muestra un enfoque paso a paso. Ya que MDM está construido sobre la infraestructura de J2EE, sigue estándares de Java™ y está diseñado con la re-usabilidad en mente, y hay ciertas buenas prácticas recomendadas para realizar un mejor mantenimiento del sistema. También, el artículo discute las mejoras a nivel de encuesta introducidas en MDM Server V9.0.x.


Introducción a la consulta de objetos empresariales de MDM Server

Una importante opción de personalización en InfoSphere MDM Server es usar la infraestructura de consulta conectable de objetos empresariales. Este dispositivo ayuda a modificar una consulta existente usada por el servicio de MDM y la sustituye con una consulta optimizada. Muy frecuentemente durante las implementaciones, hemos visto que los clientes usan este dispositivo para configurar consultas de rápida ejecución para satisfacer los objetivos de rendimiento.

La documentación de MDM proporciona etapas de alto nivel para que sean realizadas para implementar consultas conectables. Este artículo ayuda a identificar un requisito cuando la infraestructura de consulta conectable es requerida y explica etapas detalladas para hacer esta modificación de producto con un escenario de ejemplo.

Ya que las clases de objetos empresariales de MDM están diseñadas con la re-usabilidad en mente y las clases relacionadas a un dominio particular están agrupadas, puede resultar una implementación equivocada de estas clases, afectando el comportamiento del producto, y puede causar resultados no deseados. Las buenas prácticas discutidas pronto ayudarán a realizar un mantenimiento más fácil de las consultas conectables sin afectar la funcionalidad principal del producto.


Requisitos previos del sistema e información de configuración

Los siguientes componentes y versión de IBM InfoSphere MDM Server son usados aquí:

  • InfoSphere MDM Server V9.0.1
  • Un servidor de aplicaciones ejecutando WebSphere® Application Server V6.1.0.25
  • Un servidor de base de datos ejecutando DB2® V9.5 Fixpack 4

Cuándo usar la infraestructura de extensión de consulta de objetos empresariales

La infraestructura de extensión de consulta de objetos empresariales de InfoSphere MDM Server nos permite modificar una consulta de MDM Server existente para conseguir un mejor rendimiento. Esta personalización puede ser requerida, ya que MDM Server está diseñado para operar en muchos entornos de cliente para satisfacer distintos requisitos de datos. Si una transacción de consulta particular no está cumpliendo con las expectativas de rendimiento requeridas, los clientes pueden considerar la modificación de la consulta de base de datos ejecutada por el producto.

Todas las transacciones de consultas de producto tienen soporte de consulta conectable, excepto los servicios del módulo DWLCommonServices, DWLAdminServices y los Servicios de Tabla de Código.


Implementación de consulta de objetos empresariales de muestra

Tomaremos un ejemplo de implementación de consulta de objetos empresariales de muestra sugerido en la Nota Técnica "Degradación severa de rendimiento de SQL con cláusulas "OR" complicadas en plataformas de DB2 z/OS".

Introducción a la implementación de muestra

La Nota Técnica mencionada anteriormente es una modificación sugerida a InfoSphere MDM Server mientras se usa DB2 en z/OS® como el servidor de base de datos. Cuando se invoca el servicio getPartyRelationship , DB2 z/OS exhibe costos más altos de E/S y CPU debido a una exploración de tabla en sentencias SQL ejecutadas frecuentemente. Esto es debido al uso de una cláusula OR complicada en la consulta predeterminada proporcionada de fábrica.

Para atender esto, podemos modificar esta consulta predeterminada con una sentencia SQL optimizada al implementar el dispositivo de consulta conectable de objetos empresariales de MDM Server. La siguiente sección cubre etapas detalladas y buenas prácticas a seguir.

Etapas detalladas para implementar las consultas de objetos empresariales

En este escenario de muestra, necesitamos personalizar la consulta conectable existente, ya que sólo modificaremos la ejecución de la consulta durante la transacción getPartyRelationship :

  1. Extienda la clase BObjQuery
  2. Altere temporalmente la consulta existente
  3. Extienda la clase de implementación BObjQueryFactory
  4. Registre la nueva clase de implementación de fábrica

Ahora que hemos identificado las tareas de personalización de alto nivel requeridas, vayamos a través de cada etapa con detalle.

1. Extienda la clase BObjQuery

Para entender la implementación de consulta del objeto empresarial principal, vamos a crear una nueva clase llamada CustomPartyRelationshipExtBObjQuery. Esto alterará temporalmente provideSQLStatement() de forma que pueda retornar una consulta correcta cuando la transacción getPartyRelationship sea ejecutada.

Listado 1. Código de muestra exhibiendo la clase BObjQuery extendida
package com.custom.tcrm.coreParty.bobj.query;

public class CustomPartyRelationshipExtBObjQuery extends PartyRelationshipBObjQuery {

	public CustomPartyRelationshipExtBObjQuery(String queryName, 
				DWLControl control) {
		super(queryName, control);
	}

	public CustomPartyRelationshipExtBObjQuery(String persistenceStrategyName,
			DWLCommon objectToPersist) {
		super(persistenceStrategyName, objectToPersist);
	}

	@Override
	protected String provideSQLStatement() throws BObjQueryException {
			return super.provideSQLStatement();
	}
}

2. Altere temporalmente la consulta existente

A continuación, definimos un parámetro de cadena de caracteres para alojar la nueva sentencia SQL. Defina una nueva variable de cadena de caracteres con la siguiente sentencia SQL.

Listado 2. Sentencia SQL modificada declarada en la clase BObjQuery
private static final String CUSTOM_PARTY_RELATIONSHIPS_ACTIVE_QUERY = 
  "SELECT CONTACTREL.CONT_REL_ID, CONTACTREL.REL_TP_CD, 
	CONTACTREL.REL_DESC, CONTACTREL.START_DT, CONTACTREL.END_DT, 
	CONTACTREL.TO_CONT_ID, CONTACTREL.FROM_CONT_ID, 
	CONTACTREL.LAST_UPDATE_DT, CONTACTREL.LAST_UPDATE_USER, 
	CONTACTREL.LAST_UPDATE_TX_ID, CONTACTREL.REL_ASSIGN_TP_CD, 
	CONTACT.CONTACT_NAME, CONTACT. LAST_UPDATE_TX_ID, 
	CONTACTREL.END_REASON_TP_CD FROM CONTACTREL, CONTACT 
	WHERE ((CONTACTREL.FROM_CONT_ID = ? 
	AND CONTACT.CONT_ID = CONTACTREL.TO_CONT_ID 
	AND (CONTACTREL.END_DT is null OR  CONTACTREL.END_DT > ?))) 
	UNION 
	(SELECT   CONTACTREL.CONT_REL_ID, CONTACTREL.REL_TP_CD, 
	CONTACTREL.REL_DESC, CONTACTREL.START_DT, CONTACTREL.END_DT, 
	CONTACTREL. TO_CONT_ID, CONTACTREL.FROM_CONT_ID, 
	CONTACTREL.LAST_UPDATE_DT, CONTACTREL.LAST_UPDATE_USER, 
	CONTACTREL.LAST_UPDATE_TX_ID, CONTACTREL.REL_ASSIGN_TP_CD, 
	CONTACT.CONTACT_NAME, CONTACT. LAST_UPDATE_TX_ID, 
	CONTACTREL.END_REASON_TP_CD FROM CONTACTREL, CONTACT 
	WHERE (CONTACTREL.TO_CONT_ID = ? 
	AND CONTACT.CONT_ID = CONTACTREL.FROM_CONT_ID 
	AND (CONTACTREL.END_DT is null OR  CONTACTREL.END_DT > ?)))";

También, modifique la función provideSQLStatement() en la clase CustomPartyRelationshipExtBObjQuery para retornar la nueva sentencia SQL, como se muestra en el Listado 3.

Tenemos que ser cuidadosos al seleccionar el nombre de consulta para la comparación. Para averiguar el nombre correcto de la consulta, puede visitar la documentación de la API de MDM y buscar la clase BObjQuery apropiada. En nuestro escenario de muestra, buscaremos en la clase PartyRelationshipBObjQuery y eligiremos PARTY_RELATIONSHIP_ACTIVE_QUERY.

Listado 3. Retornar la sentencia SQL modificada de la función provideSQLStatement
@Override
protected String provideSQLStatement() throws BObjQueryException
{
	if (queryName.equals(PARTY_RELATIONSHIPS_ACTIVE_QUERY)) {
		return CUSTOM_PARTY_RELATIONSHIPS_ACTIVE_QUERY;
	} 
	else 
	{
		return super.provideSQLStatement();
	}
}

3. Extienda la clase de implementación BObjQueryFactory

Para este escenario de muestra, necesitamos extender la clase de fábrica de consulta de parte para recoger la clase BObjQuery extendida. Ya que estamos personalizando la consulta de relación de parte, esta clase será PartyModuleBObjQueryFactoryImpl. Esto tiene métodos para crear instancias de BObjQuery para cada uno de los objetos empresariales en PartyModule.

Para nuestro escenario, podemos definir la clase como se muestra a continuación.

Listado 4. Extender la clase PartyModuleBObjQueryFactoryImpl
public class CustomPartyModuleBObjQueryFactoryImpl extends 
	PartyModuleBObjQueryFactoryImpl {

    public CustomPartyModuleBObjQueryFactoryImpl() {
        super();
    }
    
    public BObjQuery createPartyRelationshipBObjQuery
    	(String queryName, DWLControl dwlControl)
    {
      if ((queryName == null) || (queryName.trim().equals("")))
        throw new IllegalArgumentException("Query Name cannot be empty or null.");

      return new CustomPartyRelationshipExtBObjQuery(queryName, dwlControl);
    }    
}

4. Registre la nueva clase de implementación de fábrica

Registrar la nueva clase BObjQueryFactory es importante. Esta configuración nos permite que MDM Server sepa qué clase ejecutar, de forma que una instancia de CustomPartyRelationshipExtBObjQuery es creada en lugar de la clase BObjQuery de fábrica.

Para realizar esta configuración, modifique el archivo TCRM.properties para cambiar la configuración Party.BObjQueryFactory. Proporcione el nombre de la clase recién creada como se muestra a continuación, en lugar de la clase de fábrica predeterminada.

Listado 5. Actualice el archivo TCRM.properties de forma que la implementación BObjQueryFactory sea cambiada para la nueva clase
Party.BObjQueryFactory=
	com.hnb.tcrm.coreParty.bobj.query.CustomPartyModuleBObjQueryFactoryImpl

Una vez que estas etapas sean realizadas, publique sus cambios de código en el servidor de aplicaciones donde MDM se esté ejecutando. Se necesita un reinicio del servidor para asegurarse de que el cambio del archivo de propiedad que realizamos tenga efecto.

Ahora puede probar el servicio al ejecutar un servicio de getPartyRelationship .


Mejoras a nivel de consulta: SQL conectable

InfoSphere MDM Server proporciona una opción para usar niveles de consulta en transacciones de consulta y búsqueda. Estos niveles de consulta permiten a los usuarios elegir el nivel de detalles para objetos que están siendo retornados de MDM. Por ejemplo, un nivel de consulta que va de 0 a 4 puede ser proporcionado cuando un servicio getPerson se esté ejecutando. Este nivel de consulta controla un tipo distinto de información de detalle adicional retornada para la parte de persona. Mientras mayor sea el nivel de consulta, mayor será la información que obtengamos.

Junto con el uso de niveles de consulta predeterminados proporcionados de fábrica, los clientes tienen una opción para configurar niveles de consulta personalizados para captar nuevas combinaciones de objetos. Los dominios de parte y de contrato soportan esto, y a continuación están algunos de los servicios que soportan la recuperación selectiva de objetos hijos. Para obtener más detalles sobre los niveles de consulta soportados para estos servicios, consulte la Guía de Referencia de Transacciones de MDM.

  1. getParty
  2. getPerson
  3. getOrganization
  4. getContract
  5. getProductInstance

El SQL conectable, también conocido como Optimized Transparent SQL (OTS), introducido en MDM Server V9.0.x, ayuda a reducir el tiempo de respuesta de transacciones de consulta de grano grueso, consiguiendo así un rendimiento mejorado. La Figura 1 ilustra el uso del dispositivo de SQL conectable.

Figura 1. Usando el dispositivo de SQL conectable
Usando el dispositivo de SQL conectable

Tomando el servicio de consulta getPerson como un ejemplo, cuando este servicio es ejecutado, habrá más de una llamada de base de datos realizada para recuperar cada objeto hijo de PersonBObj. Si está usando un nivel de consulta más alto, habrá más interacciones de base de datos, ya que esta transacción tiene que captar AddressBObj, PersonNameBObj, ContactMethodBObj, PartyIdentificationBObj, PartyPrivPrefBObj, etc.

Con el dispositivo de OTS activado, sólo una llamada a la base de datos es realizada, ya que sólo habrá un SQL para ejecutar.

Los clientes pueden usar sentencias SQL conectables en dos formas:

  • Para mejorar servicios de consulta de grano grueso existentes con SQLs más adecuados para el entorno
  • Para crear las sentencias de SQL conectable optimizadas para niveles de consulta personalizados

Activando OTS

Para activar el dispositivo de SLQ conectable, establezca el distintivo optimized.sql en true en tcrm_extension.properties, como se muestra en el Listado 6. Este es un valor global que aplica a todos los dominios y niveles de consulta.

Listado 6. Activando OTS en tcrm_extension.properties
optimized.sql=true

Para mejorar los servicios de consulta existentes, los clientes pueden activar entradas en la tabla INQLVLQUERY correspondiente al dominio al cual pertenece el servicio. Por ejemplo, getPerson pertenece a group_name = 'Person' en la tabla INQLVL. Para mejorar esta transacción al ejecutarse con consulta de nivel 4, usted estará ejecutando la siguiente sentencia SQL.

Listado 7. Ajustando el servicio de consulta de grano grueso existente
update INQLVLQUERY 
  set END_DT = null 
  where INQLVL_ID 
  in (select INQLVL_ID 
    from INQLVL 
    where INQ_LVL = 4 
    and GROUP_NAME = 'Person')

Alternativamente, los clientes pueden añadir nuevos niveles de consulta personalizados usando los servicios de admin addInqLevelQuery y updateInqLevelQuery :

  • Cree un nivel de consulta personalizado con nivel de consulta de tipo 500.
  • Cree un SQL conectable para el nuevo nivel de consulta 500 usando el servicio addInqLevelQuery .
  • Ajuste la sentencia SQL generada y use el servicio de admin updateInqLevelQuery para persistir la sentencia SQL optimizada.

El SQL conectable permite mejoras para servicios de consulta de grano grueso junto con la retención de la funcionalidad existente de MDM Server. Pueden ayudar a evitar múltiples llamadas de base de datos y mejorar los servicios de consulta con una sola llamada de SQL optimizada. Con OTS en su lugar, los administradores de bases de datos pueden ver, analizar y ajustar esta sentencia SQL con base en el modelo de datos usado en la implementación de MDM Server, ayudando a reducir el tiempo e incrementar el rendimiento.


Resumen de buenas prácticas

InfoSphere MDM Server es un repositorio de datos maestro físico que puede gestionar múltiples dominios de datos y puede ser implementado para satisfacer un amplio conjunto de requisitos empresariales. En consecuencia, cada implementación de MDM es distinta y necesita una observación cuidadosa en la forma en que el modelo de datos de MDM es usado y los servicios son configurados para alcanzar los requisitos de rendimiento del cliente.

Este artículo discutió la infraestructura de implementación de consulta conectable de objetos empresariales y de SQL conectable usada por MDM Server. El ejemplo discutido le dará un buen conocimiento práctico sobre este dispositivo y cubre algunas de las buenas prácticas a seguir.

Adicionalmente, las recomendaciones a continuación le ayudarán a usar este dispositivo en tándem con el diseño de MDM. Estos consejos le ayudarán a usar las personalizaciones eficientemente sin lastimar las funcionalidades principales de MDM:

  • Frecuentemente introducimos nuevos niveles de consulta para soportar solicitudes de consulta específicas que lleguen a MDM Server. Se recomienda que usemos niveles de consulta personalizados comenzando desde 100, manteniendo la capacidad de actualización del producto en mente.
  • Tome la ayuda del administrador de la base de datos para verificar, analizar y ajustar cuidadosamente la sentencia SQL que planea usar durante OTS. Este dispositivo es proporcionado para mejorar el rendimiento de los servicios de consulta. Un SQL erróneo resultará en el rendimiento degradado del producto.
  • Durante la implementación de consulta conectable de objetos empresariales, identificar la implementación de consulta de objetos empresariales principal es clave. La Guía de Desarrolladores de MDM proporciona una buena documentación para identificar las clases correctas a modificar. Consulte la sección "Consultas Conectables de Objetos Empresariales" para obtener más detalles.
  • Los nombres de consulta de fábrica siguen convenciones de nombres estándar como se describe en la Guía de Desarrolladores de MDM. Por ejemplo, PARTY_RELATIONSHIPS_ACTIVE_QUERY es el nombre de la consulta usada por el servicio getPartyRelationship para captar todas las relaciones activas entre dos partes. Cuando está alterando esto temporalmente para proporcionar su propia consulta personalizada, puede nombrarlo CUSTOM_PARTY_RELATIONSHIPS_ACTIVE_QUERY como se muestra en nuestro escenario de muestra.
  • La documentación de la API de MDM proporciona información útil sobre clases BObjQuery de fábrica y una lista de parámetros de consulta usados por la clase. Ya que estará alterando temporalmente uno de estos parámetros, es importante familiarizarse con la documentación de la API. También, consulte la Guía de Desarrolladores de MDM para convenciones de nombres estándar usados para nombrar los parámetros de consulta.

Conclusión

IBM InfoSphere Master Data Management Server ayuda a las compañías a ganar control sobre sus entidades de datos maestros al permitirles gestionar y mantener una vista completa y precisa de datos maestros. InfoSphere MDM Server habilita a las compañías para que extraigan un valor máximo de los datos maestros al centralizar múltiples dominios de datos y proporcionar un conjunto integral de servicios empresariales previamente incorporados que soportan una gama completa de funcionalidad de gestión de datos maestros.

Altamente flexible por naturaleza, MDM Server ofrece una amplia gama de posibilidades de personalización que le ayudan a desarrollar servicios que pueden satisfacer las demandas de los clientes. Debido a su naturaleza altamente personalizable, necesita entender el impacto que cada capa tiene en la funcionalidad general del producto. Este artículo contiene información práctica para ayudarle a entender InfoSphere MDM Server y las formas en que puede modificarlo para satisfacer las metas de rendimiento de los clientes y las necesidades empresariales. Proporciona información valiosa sobre la personalización de MDM usando la infraestructura de consulta conectable de objetos empresariales y de SQL conectable, que puede usarse en implementaciones de cliente reales.

Agradecimientos

Quiero agradecer a Henk Albals, InfoSphere MDM, gestor de producto, por su retroalimentación y contribuciones para la creación de este artículo. También quiero extender mi sincero agradecimiento a numerosos autores de developerWorks que han escrito narrativas similares sobre las buenas prácticas de InfoSphere MDM Server. He usado este contenido como referencia durante la creación de este artículo y para implementar efectivamente InfoSphere MDM Server para varios clientes.

Recursos

Aprender

Obtener los productos y tecnologías

  • Construya su próximo proyecto de desarrollo con software de prueba IBM, disponible para descarga directamente de developerWorks.

Comentar

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=809995
ArticleTitle=Personalizando InfoSphere MDM Server usando infraestructura de consulta conectable de objetos empresariales y de SQL conectable
publish-date=04162012