Introducción a las Arquitecturas de Base de Datos Orientadas a Servicios

 Quiero  cumplir con aquellos que hoy seleccionaron la presentación sobre "El Aporte de SQL Server 2005 para Desarrolladores" que di acompañando a Patrick Mac Kay. El evento de lanzamiento fue arrastrando una demora incremental y lamentablemente nuestra charla fue variable de ajuste por lo que hubo que podarle una parte. Es esa parte la que transcribo acá y reitero que el 28 de Diciembre a las (hora de Chile) 16 hs realizamos un webcast sobre "Arquitectura de Base de Datos Orientada a Servicios"

Siempre hemos considerado a las bases de datos como meros repositorios pasivos de información. Pasivos en el sentido de que las bases de datos no inician espontáneamente transacciones sino que participan en aquellas transacciones que las aplicaciones las hagan partícipes

Si dos procesos iban a usar la base de datos como forma de comunicación. Esta íba a ser asíncrona por naturaleza. Un proceso cumplía el rol de productor de registros de novedades y el otro el de consumidor de las mismas. El proceso consumidor debía encargarse de sondear la base de datos para saber si hay novedades ya que la base de datos no le avisaba en forma espontánea. A su vez, si el proceso consumidor deja resultados de su gestión, es el proceso productor quien ahora deberá sondear a la base para conocerlos

También la pasividad de las bases de datos se pone de manifiesto en aquellos casos en que, para evitar idas y vueltas (round trips) al servidor para levantar colecciones de datos que varían con poca frecuencia, las aplicaciones implementan cachés. Nuevamente, serán ellas mismas las que deberán proveer mecanismos de expiración de los cachés porque las bases de datos no avisan que hubo novedades en la colección de datos resguardada

A la fama de pasividad se le suma otra fama de "difícil para comunicarse". En efecto: para poder hablar con la base de datos, las aplicaciones necesitaban bibliotecas especiales como ODBC, OleDb, JDBC o bien piezas propietarias de conexión y comunicación. Sin embargo, el nuevo estándar de interoperabilidad basado en servicios web XML ha venido dando tantos buenos resultados conectando aplicaciones empresarias, que la pregunta es más que obvia: por qué no hacer lo mismo con la base de datos?

Para cubrir éstas y otras necesidades de servicios de base de datos, SQL Server 2005 provée soluciones en la forma de frameworks que revisaremos a continuación

Soporte a Servicios Web XML (XML Web Services)

Justamente es esa última necesidad que describíamos la primera que vamos a encarar. SQL Server 2005 provée soporte nativo al protocolo SOAP (Simple Object Access Protocol, o Protocolo Sencillo de Acceso a Objetos) de manera que cualquier cliente habilitado para consumir servicios web (creánme con que las tecnologías actuales son muchos más que los habilitados para invocar a SQL Server 2005 a través de conectores nativos), pueda invocar a procedimientos almacenados (stored procedures o SP‘s) o a comandos SQL

Para esto se puede usar directamente el servidor web liviano (HTTP.SYS), a fin de evitarnos un Internet Information Services (IIS) más complejo de configurar y más consumidor de recursos. Este servidor liviano viene incorporado en Windows Server 2003 y también en Windows XP SP2

Las respuestas vuelven serializadas en XML, seguramente más fáciles de interpretar para una aplicación Java u otra "no .NET" que un System.Data.DataSet

Encargado de Servicios (Service Broker)

En los últimos diez años explotó el comercio electrónico (e-commerce). Nuevas formas de vender y de comprar comenzaron a requerir que varias partes se pongan de acuerdo en forma automática

Por ejemplo, el cliente que adquiere ofertas turísticas vía web requiere que con su pago se enlace una aerolínea para que emita un pasaje, una cadena hotelera, una compañía de arriendo de vehículos, una compañía emisora de tarjeta de crédito y una compañía de correo que haga llegar al cliente los vouchers y pasajes

Cómo hace la aplicación de la agencia de viajes para coordinar la conversación de las distintas partes de la transacción? A quién le toca lidiar con los timeouts, con las retransmisiones de mensajes? Cómo coordinar las transacciones individuales entre la agencia de viajes y cara parte en la conversación para que todos los sistemas queden en un estado consistente al final de la transacción global?

El Encargado de Servicios (Service Broker) es un framework que permite que las aplicaciones distribuidas obtengan mensajería confiable y asíncrona. Este framework está construído sobre la infraestructura de la base de datos SQL Server 2005, exponiendo mediante extensiones a T-SQL un modelo basado en colas

El framework se completa con el soporte out-of-box a colas donde por performance hay más de un proceso consumiendo mensajes (o sea, el blockeo entre procesos lectores está contemplado y es un tema menos al que debamos gastar cabeza)

Asimismo, aquellos procesos que envíen mensajes relacionados que por cuestiones de integridad deban procesarse en orden y por el mismo lector se pueden agrupar en conversaciones

Para el administrador de la base de datos no hay sobrecarga de ningún tipo, si se va a implementar una solución basada en este framework. Él sigue manteniendo la misma base de datos de siempre

El Encargado de Servicios, entonces, nos va a permitir desacoplar las partes de una aplicación, manejar conversación asíncrona, no enterarse más que en configuración quién está ejecutando el servicio o dónde se encuentra

Servicios de Notificación (Notificación Services)

Como comentaba al principio, los nuevos escenarios imponen que los datos abandonen el rol pasivo que venían llevando, y comiencen a ser ellos mismos a los que vayan a las aplicaciones, en lugar de ser estas quienes tengan que sobrecargar las conexiones y el motor de la base con overhead

Servicios de Notificación es otro framework que permite a los procesos suscribirse a eventos (tales como un cambio en el estado de la base -por ejemplo el resultado de una consulta-, que se reciba un mensaje en formato de archivo en un directorio, o incluso eventos de calendario)

Los suscriptores al evento reciben una notificación, que se puede configurar para distribuir en varios formatos: SMTP, HTTP, etc

Los Servicios de Notificación nos van a posibilitar saber que hubo cambios por lo que debemos expirar el caché, o inclusive conocer eventos de negocio cómo que se demoró la salida de un vuelo o que el valor de una acción supera determinado umbral

A mucho de esto lo ayuda el hecho de que SQL Server 2005 trae integrado el motor común de ejecución de los lenguages .NET (Common Language Runtime o CLR). De momento dejemos acá. El 28 de Diciembre, pues, a las 16 hs (hora chilena), retomamos con Patrick este tema en el webcast y lo exploramos más a fondo

Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.

2 respuestas a Introducción a las Arquitecturas de Base de Datos Orientadas a Servicios

  1. Juan Pablo dijo:

    Hola Dagum,SQL2005 viene muy potenciado, Service Broker es uno de los Frameworks que mas me gusta, porque está en el dominio de las cosas que hago, integración.Es interesante ver que aplica en integración de Entidades, dónde ahorra un montón de energía de desarrollo. Pero para las temas de PM seguimos necesitando otras soluciones. Modelar un PM en la base de datos, se aleja de los estándares por lo que creo que no es el camino.Buen POST, muy justo con los asistentes al Launch, voy a tratar de subir el montón de cosas que no contamos nosotros en la sesión de VSTS también

  2. Unknown dijo:

    Hola Diego, cómo estás? He publicado un breve artículo en el Architect Newsletter de Eduardo acerca de la orientación a servicios en SQL Server 2005. Puede obtenerse también en el sitio de SQLgurus.org, en esta dirección: http://www.sqlgurus.org/dotnetnuke/Documentos/tabid/57/ItemID/16/Default.aspx

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s