Implementación de un patrón de caché basado en base de datos en WebSphere Enterprise Service Bus

Aprenda cómo crear un patrón dinámico de caché basado en base de datos en WebSphere ESB al extender las primitivas empaquetadas con un conjunto adicional de primitivas de mediación. El artículo describe la arquitectura del patrón de caché y le muestra cómo implementar sus propios primitivas.

Thomas Bohn, Especialista TI certificado, IBM Software Services for WebSphere, IBM

Thomas BohnThomas Bohn es un Especialista en TI Certificado con el equipo IBM Software Services for WebSphere en Alemania. Ha trabajado en este equipo durante 12 años y su enfoque actual es la arquitectura de BPM y proyectos de integración de software. Sus especialidades de producto incluyen WebSphere Application Server, WebSphere ESB y WebSphere Process Server.



Susann Fritzsche, Especialista TI, IBM Software Services for WebSphere, IBM

Susann FritzscheSusann Fritzsche es una Especialista en TI con el equipo IBM Software Services for WebSphere en Alemania. Ha trabajado en este equipo desde que se unió a IBM hace tres años y sus especialidades actuales incluyen la Gestión de Procesos Empresariales y WebSphere ESB.



21-01-2013

Introducción

De acuerdo con la arquitectura de SOA comúnmente aceptada, la capa de integración en una infraestructura de SOA proporciona servicios sin estado para otros componentes. De forma que en cualquier implementación de SOA, los datos fluyen a través de la capa de integración entre el sistema de fondo y el frontal. Dependiendo del escenario, muchas de las solicitudes acceden repetidamente a la misma información. Por lo tanto, poner los datos en la memoria caché en la capa de integración puede ser una forma efectiva de limitar el consumo de recursos y mejorar los tiempos de respuesta.

En un proyecto reciente los autores se enfrentaron con un requisito que extendió ese patrón simple de caché. La capa de integración proporcionó servicios para un frontal basado en portal para permitir que el usuario trabaje con largas listas de objetos al utilizar funciones como desplazamiento, filtrado y ordenación mientras tiene páginas de datos presentados para ellas. Ya que los datos venían de un fondo relativamente lento, ponerlos en caché tenía mucho sentido. Pero el portal no podía alojar toda esa información, ya que su granularidad por usuario crearía una enorme cantidad de datos en caché con un impacto significativo en el rendimiento.

Por lo tanto, implementamos un caché de datos en la capa de integración que soportó una granularidad por usuario. Para implementar funciones para desplazarse a través de, ordenar y filtrar listas de objetos que son recuperados una vez desde el fondo, tuvimos que implementar el caché en una forma con estado y por usuario, lo cual es un patrón inusual de acuerdo con los estándares actuales de la arquitectura de SOA.

Este artículo describe este patrón, la solución basada en él y la tecnología base proporcionada por IBM® WebSphere® Enterprise Service Bus (en adelante llamado WebSphere ESB). El artículo describe un patrón de caché basado en base de datos inteligente, dinámico y poderoso que, al combinarse con IBM DB2, habilita a WebSphere ESB para que tome la carga de trabajo de cualquier sistema de fondo, particularmente para manejar listas de elementos. El valor añadido para esta solución de caché está en su consciencia de la semántica de las estructuras de datos en caché para proporcionar mecanismos de filtrado, transferencia de páginas y ordenación para el interlocutor. El patrón de caché está basado en la habilidad de ampliar los primitivas de mediación de WebSphere ESB previamente empaquetados y el artículo incluye una visión general de cómo desarrollar sus propios primitivas de mediación.

Para beneficiarse de este artículo, debe tener experiencia en la integración utilizando WebSphere ESB y un entendimiento básico de IBM DB2® y sus dispositivos pureXML que soportan el almacenamiento y la consulta de datos XML con los lenguajes SQL/XML y XQuery.

Visión general y propósito de un patrón de caché basado en base de datos para WebSphere ESB

El patrón de caché basado en base de datos para WebSphere ESB (el cual es llamado el Caché de Lista de Objetos Empresariales Con Estado) soporta el caché inteligente y con estado y la recuperación repetida de mensajes de respuesta de servicio que contienen una lista de objetos empresariales para:

  • Habilitar sistemas frontales basados en el navegador para recuperar conjuntos de datos de páginas, filtrados y almacenados para proporcionar un acceso más conveniente a usuarios finales
  • Minimizar el número de solicitudes enviadas a servicios de fondo y sistemas

Para trabajar, las funciones en WebSphere ESB deben recibir información del interlocutor especificando el criterio para recuperar datos. Cualquier llamada al Caché de Lista de Objetos Empresariales Con Estado debe por lo tanto contener información para la recuperación de la lista de objetos empresariales en caché, y ese criterio es pasado como parte del mensaje de solicitud por el peticionario del servicio. La Figura 1 muestra el objeto ResultRetrieveCriteria, y la Tabla 1 después de ella describe sus atributos con detalle:

Figura 1. Objeto empresarial ResultRetrieveCriteria
ResultRetrieveCriteria business object
Tabla 1. Atributos de ResultRetrieveCriteria
Nombre del atributoDescripción
pagingStartIndexDefine el índice de inicio en la lista para transferencia de páginas
pagingMaxResultDefine cuántos objetos de la lista comenzando con pagingStartIndex serán retornados
sortFieldDefine el campo para el que la lista será ordenada. La expresión XPath tiene que ser relativa al elemento de raíz de lista en el objeto de respuesta.
sortASCDefine si la lista será de orden ascendente (true) o descendente (false)
searchListNameDefine el nombre de la lista en el objeto de respuesta para el cual la búsqueda es aplicada.
searchFieldsDefine la lista de atributos (nameXPath, valor) como el criterio de búsqueda. La expresión XPath para el nombre de atributo debe ser relativa para el elemento de raíz de lista en el objeto de respuesta.
searchCombinationTypeDefine el tipo de combinación de búsqueda. El criterio de búsqueda ALL es enlazado por AND u OR.

El caché es utilizado con interfaces gráficas de usuario (GUIs) tales como portales para mostrar listas de objetos y proporcionar funciones como ordenación, búsqueda y transferencia de páginas. Los componentes de caché del lado de WebSphere ESB deben mantener una sesión lógica con el sistema frontal para coincidir los datos en caché con el usuario que está ejecutando la consulta. Para soportar esta granularidad por usuario, todos los elementos de caché son identificados por dos claves que deben ser exclusivas cuando son combinadas:

Clave de Sesión de Caché
Esta clave es para la sesión lógica que una entidad, normalmente un usuario, tiene con el activo. El valor de la clave debe ser el mismo a través de múltiples entradas de caché creadas para el mismo usuario. El ID de Sesión de HTTP de un sistema frontal puede ser utilizado para la clave de sesión de caché.
Clave de Entrada de Caché
Esta clave identifica exclusivamente el elemento de caché desde un punto de vista de datos empresariales. Puede incluir múltiples elementos del objeto empresarial de solicitud que en combinación debe identificar exclusivamente la instancia del objeto empresarial de respuesta.

El patrón de caché utiliza la Clave de Sesión de Caché y la Clave de Entrada de Caché para almacenar la lista de objetos empresariales como XML serializado en la base de datos. El patrón de caché utiliza IBM DB2 y sus funciones de pureXML para almacenar datos en caché e implementar la transferencia de páginas, la ordenación y el filtrado. El patrón de caché traduce solicitudes para datos en caché en sentencias SQL que son ejecutadas en la base de datos. Lógicamente, el patrón de caché actúa como una fachada para las funciones de base de datos y las traduce en llamadas de servicio. Para obtener más información sobre el dispositivo PureXML de DB2, vea Resources al fondo del artículo.

Cambiando el flujo

Esta sección explica cómo se ve el flujo de caché. La Figura 2 muestra las fases de ejecución del Caché de Lista de Objetos Empresariales Con Estado. Los primitivas utilizados en este patrón de caché son descritos con más detalle en la sección Primitivas de caché más abajo.

Figura 2. Flujo de caché
Caching flow
Ruta 1
La primitiva StatefullBOListCacheGet que está colocado en el flujo de solicitud es ejecutado. Extrae la clave de sesión de caché y calcula la entrada de caché, y después utiliza ambos para verificar si una entrada correspondiente existe en la base de datos. Si una entrada de caché es encontrada, la primitiva ejecuta la Ruta 4. Si no se encuentra una entrada de caché, la primitiva ejecuta la Ruta 2.
Ruta 2 -- Falla de Caché
La primitiva StatefullBOListCacheGet reenvía la clave de sesión de caché, la clave de entrada de caché y otros datos a la primitiva StatefullBOListCachePut. La primitiva StatefullBOListCacheGet llama a la terminal de falla de caché. Debe poner el objeto ResultRetrieveCriteria contenido en el mensaje de solicitud en una ubicación accesible para la primitiva StatefullBOListCachePut. La ubicación sugerida está dentro del contexto de correlación. El mensaje de solicitud es después enviado al servicio empresarial de fondo para su procesamiento. El flujo de control es continuo con la Ruta 3.
Ruta 3
El servicio empresarial de fondo responde con un mensaje de respuesta enviado a la primitiva StatefullBOListCachePut. La primitiva recupera los datos proporcionados por la primitiva StatefullBOListCacheGet para insertar el mensaje de respuesta en la base de datos. La lista de objetos de datos es serializada y ordenada en una columna de tabla de base de datos de tipo XML. La primitiva StatefullBOListCachePut después recupera el objeto ResultRetrieveCriteria para generar una consulta de base de datos que aplicará las funciones de filtrado, ordenación o búsqueda que el peticionario desea que sean ejecutadas en la lista de objetos empresariales contenida en el mensaje de respuesta. La primitiva StatefullBOListCachePut ejecuta la consulta de base de datos y envía una respuesta de regreso al peticionario.
Ruta 4 -- Coincidencia de Caché
La primitiva StatefullBOListCacheGet recupera el objeto ResultRetrieveCriteria en la solicitud para generar una consulta de base de datos que aplicará las funciones de filtrado, ordenación o búsqueda que el peticionario desea que sean ejecutadas en la lista de objetos empresariales contenida en el mensaje de respuesta. La primitiva StatefullBOListCachePut ejecuta la consulta de base de datos y envía su respuesta de regreso al peticionario, evitando una llamada al servicio empresarial de fondo.

Primitivas de caché

Esta sección describe los primitivas que el Caché de Lista de Objetos Empresariales Con Estado utiliza.

StatefullBOListCacheGET

Esta primitiva es parte del flujo de solicitud de mediación.

La terminal cacheFail, que es llamada si no existe una entrada de caché para sessionID y para la clave, retorna el mensaje de solicitud, por lo que el mensaje original puede ser pasado al fondo. La terminal cacheHit, que es llamada si existe una entrada de caché para sessionID y para la clave, retorna el mensaje de respuesta para el cual los mecanismos de búsqueda, transferencia de páginas y ordenación ya han sido aplicados. Esta respuesta debe ser pasada de regreso al interlocutor sin hacer más llamadas al sistema de fondo. La Tabla 2 muestra las propiedades de la primitiva en la sección Details de la vista Properties en WebSphere Integration Developer:

Tabla 2. Propiedades de la primitiva StatefullBOListCacheGET
PropiedadDescripción
Nombre de JNDI del origen de datos de BD de cachéNombre de JNDI del origen de datos
XPath para ID exclusiva que identifica la sesión del cliente con el cachéEste ID es una clave para la sesión lógica que una entidad (normalmente un usuario) tiene con el activo. Para aclarar todas las actividades de un usuario, el valor de la clave debe ser el mismo en múltiples entradas de caché. Por ejemplo, el ID de Sesión de HTTP de un sistema frontal puede ser utilizado para la clave de sesión de caché.
XPath para objeto de tipo ResultRetrieveCriteria que especifique cómo la respuesta debe ser enviada de regreso.La expresión XPath debe apuntar al objeto ResultRetrieveCriteria dentro del objeto de entrada de operación.
XPath para atributo de entero en el mensaje de respuesta que aloja el conteo de objetos de resultado en la lista de BO.La expresión XPath debe apuntar a un atributo de entero que aloje el conteo de objetos de resultado en la lista de BO que cumpla con el criterio de búsqueda, transferencia de páginas y almacenamiento.
XPath para la raíz de lista de mensajes de respuesta y atributo que está sujeto al caché.La expresión XPath tiene que apuntar al atributo que es el elemento de raíz de lista. La ruta debe iniciar en el nivel de objeto de respuesta de la operación.
Claves del cachéIdentificar exclusivamente el elemento en caché desde un punto de vista de datos empresariales. Puede incluir múltiples elementos del objeto empresarial de solicitud que en combinación debe identificar exclusivamente la instancia del objeto empresarial de respuesta.

StatefullBOListCachePUT

Esta primitiva es parte del flujo de respuesta de mediación. Utiliza la clave de caché definida y el identificador de sesión exclusivo de la primitiva GET para almacenar el mensaje de respuesta serializado desde el sistema backup en la base de datos de caché. Más aún, ejecuta una búsqueda, una transferencia de páginas y una ordenación en la lista de objetos almacenada para el ResultRetrieveCriteria definido como parte del objeto de entrada de la solicitud. La Tabla 3 muestra las propiedades primitivas en la sección Details de la vista Properties en WebSphere Integration Developer:

Tabla 3. Propiedades primitivas de StatefullBOListCachePUT
PropiedadDescripción
Nombre de JNDI del origen de datos de BD de cachéNombre de JNDI del origen de datos
XPath para objeto de tipo ResultRetrieveCriteria que especifique cómo la respuesta debe ser enviada de regreso.La expresión XPath debe apuntar al objeto ResultRetrieveCriteria.

La terminal de afuera de la primitiva PUT retorna el objeto de respuesta que contiene la lista de objetos que cumple con ResultRetrieveCriteria. Este objeto de respuesta puede ser pasado al nodo de respuesta de entrada.

StatefullBOListCache INVALIDATE WITH KEY AND SESSION

Esta primitiva suprime una entrada de base de datos de caché para una clave e ID de sesión dados. Es colocado en el flujo de solicitud en frente de la primitiva GET. El sistema frontal desencadena la ejecución al establecer un distintivo en el objeto de entrada de la operación para garantizar que la solicitud sea enviada al sistema de fondo. La Tabla 4 muestra las propiedades primitivas que son parte de la sección Details de la vista Properties en WebSphere Integration Developer.

Tabla 4. StatefullBOListCache INVALIDATE WITH KEY AND SESSION
PropiedadDescripción
Nombre de JNDI del origen de datos de BD de cachéNombre de JNDI del origen de datos.
XPath para ID exclusiva que identifica la sesión del cliente con el cachéEste ID es una clave para la sesión lógica que una entidad (normalmente un usuario) tiene con el activo. Para aclarar todas las actividades de un usuario, el valor de la clave debe ser el mismo en múltiples entradas de caché. Por ejemplo, el ID de Sesión de HTTP de un sistema frontal puede ser utilizado para la clave de sesión de caché.
Claves del cachéIdentificar exclusivamente el elemento en caché desde un punto de vista de datos empresariales. Puede incluir múltiples elementos del objeto empresarial de solicitud que en combinación debe identificar exclusivamente la instancia del objeto empresarial de respuesta.

StatefullBOListCache INVALIDATE FOR ENTIRE SESSION

Esta primitiva suprime todas las entradas de caché que pertenecen a un ID de sesión específico y es llamado como un servicio separado por el sistema frontal cuando la sesión de usuario expira. La Tabla 5 muestra las propiedades primitivas en la sección Details de la vista Properties en WebSphere Integration Developer.

Tabla 5. StatefullBOListCache INVALIDATE FOR ENTIRE SESSION
PropiedadDescripción
Nombre de JNDI del origen de datos de BD de cachéNombre de JNDI del origen de datos.
XPath para ID exclusiva que identifica la sesión del cliente con el cachéIdentificar exclusivamente el elemento en caché desde un punto de vista de datos empresariales. Puede incluir múltiples elementos del objeto empresarial de solicitud que en combinación debe identificar exclusivamente la instancia del objeto empresarial de respuesta.

StatefullBOListCache INVALIDATE FOR COMPLETE CACHE DB

Esta primitiva invalida toda la base de datos de caché y puede ser llamado (una vez por noche, por ejemplo) por un servicio planificador para limpiar el caché. La Tabla 5 muestra las propiedades primitivas en la sección Details de la vista Properties en WebSphere Integration Developer.

Tabla 6. StatefullBOListCache INVALDIATE FOR COMPLETE CACHE DB
PropiedadDescripción
Nombre de JNDI del origen de datos de BD de cachéNombre de JNDI del origen de datos.

Visión general de la compilación de sus propias primitivas de mediación

El Caché StatefullBOList utiliza sus propias primitivas de mediación. Esta es una visión general de cómo compilar sus propios primitivas de mediación:

  1. Compile el proyecto de plug-in. Define el aspecto visual y especifica qué propiedades están disponibles en la sección Details de su primitiva.
  2. Compile el proyecto de Java™ que contiene la lógica y la implementación de su primitiva.
  3. Despliegue el proyecto de plug-in como un plug-in de Eclipse en WebSphere Integration Developer, de forma que aparezca en la paleta de Mediation Flow Editor.
  4. Despliegue el proyecto de Java y haga la implementación disponible para el tiempo de ejecución.
  5. Pruebe su primitiva de mediación personalizada.

Para obtener una descripción detallada de cada etapa, vea los primeros dos elementos más abajo en Resources.

Conclusión

Este artículo presentó un patrón de caché basado en base de datos inteligente, dinámico y poderoso en WebSphere Enterprise Service Bus y delineó el patrón y su arquitectura. El patrón de caché está basado en un conjunto de primitivas de mediación. El artículo después dio una breve visión general de cómo compilar sus propias primitivas de mediación.

Reconocimientos

Los autores quieren agradecer a Shili Yang de IBM Software Services for WebSphere por su ayuda en la revisión de este artículo.

Recursos

  • Recursos de WebSphere ESB
  • Recursos para el dispositivo pureXML de DB2
    • 15 best practices for pureXML performance in DB2
      El dispositivo pureXML le permite almacenar y consultar XML en su formato jerárquico inherente utilizando SQL/XML o XQuery y también soporta indexado de XML sofisticado y validación del esquema de XML. Este popular artículo de developerWorks proporciona consejos de rendimiento de DB2 específicos de XML.
    • Get off to a fast start with DB2 V9 pureXML, Part 3: Query DB2 XML data with SQL
      Este artículo de developerWorks le muestra cómo utilizar dispositivos pureXML de DB2 para consultar datos almacenados en columnas XML utilizando SQL y SQL/XML.
    • Updating XML in DB2 V9.5
      DB2 V9.5 presentó XQuery Update Facility, una extensión para XQuery que le permite modificar, insertar o suprimir elementos individuales y atributos dentro de un documento de XML para hacer la actualización de datos de XML más fácil y mejorar el rendimiento. Este artículo de developerWorks describe la nueva funcionalidad de actualización de XML, presenta ejemplos de operaciones de actualización de XML y le muestra cómo evitar trampas comunes.
    • Use of updating expressions in a transform expression
      Explicación de expresiones de actualización de XQuery de DB2 del centro de información de DB2.
  • Recursos de WebSphere
  • Recursos de developerWorks

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=WebSphere
ArticleID=855642
ArticleTitle=Implementación de un patrón de caché basado en base de datos en WebSphere Enterprise Service Bus
publish-date=01212013