Proceso de la capa de servicios de datos

La capa de servicios de datos utiliza las diferentes secciones del archivo de plantilla de consulta para controlar cómo se ejecuta la consulta.

Las secciones para sentencias XPath a SQL y sentencias SQL de asociación definen cada una de ellas una lista de sentencias de plantilla SQL. Cada plantilla SQL tiene un nombre exclusivo y un nombre de tabla base. La tabla base hace referencia a la tabla principal de la consulta que es, normalmente, la tabla que representa el Nombre del usuario. Cada plantilla XPath a SQL, cuando se utiliza junto con las sentencias SQL de asociación en una consulta de dos pasos, devuelve una lista de claves primarias que satisfagan los criterios de búsqueda (por ejemplo, seleccionar una lista de ID de productos especificando el nombre de categoría.

La sección PROFILE define los Perfiles de acceso que utilizan las sentencias SQL de asociación. Dentro de un perfil, se hace referencia a una o varias sentencias de SQL de asociación para cada objeto base definido. Cada sentencia SQL de asociación define los datos que se han de devolver especificando la lista de claves primarias (de la sentencia XPath a SQL). Por ejemplo, una sentencia SQL de asociación que esté bajo un perfil puede recuperar todas las propiedades y descripciones del producto especificando una lista de ID de productos, mientras que otra sentencia SQL de asociación que esté bajo un perfil distinto recupera toda la información de venta cruzada y de venta ascendente así como las propiedades básicas y descripciones.

La capa de servicios de datos tiene soporte para dos tipos de consultas: un solo paso y dos pasos.

Consultas de un solo paso

Para consultas de un solo paso, se utiliza el nombre de perfil de acceso junto la clave XPath para seleccionar una sola consulta XPath a SQL que recupere toda la información solicitada. Varias consultas pueden recuperar distintos niveles de detalle para la misma expresión XPath y distintos perfiles de acceso.

El siguiente ejemplo define una consulta de un solo paso para la clave de XPath /Catalog[CatalogIdentifier[(UniqueID=))] y el perfil de acceso IBM_Admin_Details.
BEGIN_SYMBOL_DEFINITIONS
	COLS:CATALOG=CATALOG:*
	COLS:CATALOGDSC=CATALOGDSC:*	
COLS:STORECAT=STORECAT:*

END_SYMBOL_DEFINITIONS
			
BEGIN_XPATH_TO_SQL_STATEMENT
	name=/Catalog[CatalogIdentifier[(UniqueID=)]]+IBM_Admin_Details
	base_table=CATALOG
	sql=
		SELECT 
			CATALOG.$COLS:CATALOG$,
			CATALOGDSC.$COLS:CATALOGDSC$,
			STORECAT.$COLS:STORECAT$
		FROM
			CATALOG
				JOIN STORECAT ON STORECAT.CATALOG_ID=CATALOG.CATALOG_ID 
					AND STORECAT.STOREENT_ID IN ($STOREPATH:catalog$)
				LEFT OUTER JOIN CATALOGDSC ON CATALOGDSC.CATALOG_ID = 	CATALOG.CATALOG_ID 
					AND CATALOGDSC.LANGUAGE_ID IN ($CONTROL:LANGUAGES$)
     WHERE
        CATALOG.CATALOG_ID IN (?UniqueID?)

END_XPATH_TO_SQL_STATEMENT

En el ejemplo anterior, la expresión XPath consulta los catálogos con identificadores exclusivos especificados y el perfil de acceso IBM_Admin_Details selecciona todas las columnas de las tablas CATALOG, CATALOGDSC y STORECAT para estos catálogos.

Consultas de dos pasos

Las consultas de dos pasos utilizan las sentencias Xpath a SQL y las sentencias SQL de asociación. Las sentencias Xpath a SQL recuperan las claves primarias de los objetos base que puedan interesar para los criterios de búsqueda especificados por la consulta Xpath. Las sentencias SQL de asociación, seleccionadas por nombre de perfil, recuperan la información sobre dichos objetos. Las necesidades de SQL asociadas tienen una relación de clave foránea a la tabla base XPathSQL. Y las necesidades de sentencia SQL de asociación devuelven la columna de clave foránea. Consulte Códigos del archivo de plantilla de consulta.

El ejemplo siguiente define una consulta de dos pasos para la clave XPath /CatalogEntry[CatalogEntryIdentifier[(UniqueID=)]] y el perfil de acceso IBM_Admin_CatalogEntryDescription:
Nota: No se puede llamar a las sentencias SQL individuales independientemente una de la otra. Deben utilizarse en una combinación entre sí.
BEGIN_SYMBOL_DEFINITIONS
	COLS:CATENTRY=CATENTRY:*
	COLS:CATENTRY_ID=CATENTRY:CATENTRY_ID
	COLS:CATENTDESC=CATENTDESC:*
END_SYMBOL_DEFINITIONS

BEGIN_XPATH_TO_SQL_STATEMENT
	name=/CatalogEntry[CatalogEntryIdentifier[(UniqueID=)]]
	base_table=CATENTRY
	sql=
		SELECT 
			CATENTRY.$COLS:CATENTRY_ID$
		FROM
			CATENTRY
			  JOIN STORECENT ON (CATENTRY.CATENTRY_ID = STORECENT.CATENTRY_ID 
				AND STORECENT.STOREENT_ID = $CTX:STORE_ID$)
		WHERE
         CATENTRY.CATENTRY_ID IN (?UniqueID?) AND
         CATENTRY.MARKFORDELETE = 0
END_XPATH_TO_SQL_STATEMENT

BEGIN_ASSOCIATION_SQL_STATEMENT
	name=IBM_RootCatalogEntryWithDescription
	base_table=CATENTRY
	additional_entity_objects=true
	sql=
		SELECT 
			CATENTRY.$COLS:CATENTRY$,
			CATENTDESC.$COLS:CATENTDESC$
		FROM
			CATENTRY
			    LEFT OUTER JOIN CATENTDESC ON CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID 
					AND CATENTDESC.LANGUAGE_ID IN ($CONTROL:LANGUAGES$)
		WHERE
       CATENTRY.CATENTRY_ID IN ($ENTITY_PKS$)
END_ASSOCIATION_SQL_STATEMENT

BEGIN_PROFILE 
	name=IBM_Admin_CatalogEntryDescription
	BEGIN_ENTITY 
		base_table=CATENTRY 	  
		associated_sql_statement=IBM_RootCatalogEntryWithDescription
	END_ENTITY
END_PROFILE

En el ejemplo anterior, la sentencia XPath a SQL se utiliza para captar las claves primarias de la tabla base, CATENTRY. La tabla base para la sentencia XPath a SQL debe ser la misma que la tabla base para la sentencia SQL de asociación. La sección PROFILE lista las sentencias SQL asociadas para que se ejecuten para el perfil de acceso IBM_Admin_CatalogEntryDescription. Este ejemplo lista una sola sentencia de SQL asociada, IBM_RootCatalogEntryWithDescription, que se ejecuta con las claves primarias sustituidas por el código $ENTITY_PKS$ para recuperar todos los datos solicitados por la consulta original.

Para las consultas de dos pasos, cada perfil de acceso puede lista muchas sentencias SQL asociadas que seleccionen cada una datos distintos. Por ejemplo, una sentencia SQL de asociación puede recuperar todas las propiedades y descripciones del producto especificando una lista de ID de productos, mientras que otra sentencia SQL de asociación que esté bajo un perfil distinto puede recuperar toda la información de venta cruzada y de venta ascendente además de las descripciones y propiedades básicas.

Nota: Para evitar posibles problemas al pasar a la siguiente versión de HCL Commerce, cree sus propios perfiles de acceso personalizados y no modifique nunca directamente los perfiles de acceso predeterminados de HCL Commerce. Puede añadir nuevas consultas o ampliar las consultas facilitadas con el producto base, colocando sus archivos de plantilla de consulta bajo el directorio de configuración ampliada para el módulo de servicio (por ejemplo, para el catálogo, xml\config\com.ibm.commerce.catalog-ext).

Hay un nivel predeterminado de orden cuando ha creado una consulta que devuelve las claves primarias en un orden predefinido en la plantilla de consulta. El orden de los objetos de datos que representan la tabla base en el gráfico de datos es coherente con el orden de las claves primarias devueltas por la consulta XPath a SQL para las consultas en dos pasos. La lista de objetos en PhysicalDataContainer debe aparecer en el mismo que el orden de las claves primarias devueltas por la consulta XPath a SQL.

Directrices sobre el usuario de consultas

Utilice las consultas de un solo paso siempre que sea posible. Sin embargo, en algunos casos, no es posible captar todos los datos en una sola consulta. De forma alternativa, es posible que la consulta se una a un número de tablas muy grande y que no cumpla los requisitos de rendimiento.

Utilice una consulta de dos pasos bajo las siguientes condiciones:
  • Consultas que necesitan paginar datos. No se puede paginar el resultado de una consulta de un solo paso si devuelve muchos registros para cada registro de la tabla base. Una consulta de dos pasos le permite paginar el conjunto de resultados devuelto por la primera sentencia (las claves primarias) en lugar de paginar el conjunto de resultados de la segunda sentencia.
  • Consultas de búsqueda paramétrica
  • Consultas complejas que se ejecutan de forma deficiente debido a la unión de demasiadas tablas. Dividiendo esas consultas en una sentencia XPath SQL y muchas sentencias SQL asociadas se puede mejorar el rendimiento.