Vous êtes sur la page 1sur 60

Arquitectura de Base de

Datos Orientada a
Servicios (SODA) en SQL
Server 2005
Diego Dagum
Arquitecto .NET
Microsoft Chile
Introducción

Tradicionalmente los datos fueron


pasivos, las aplicaciones tenían que
pedir por ellos
Para ello, había que conectarse a bases
de datos a través de bibliotecas
específicas
Hoy las empresas replantean sus
sistemas aislados en una nueva
arquitectura empresarial que comparta
funcionalidades individuales (servicios)
a todo el portfolio de aplicaciones
Agenda

Servicios en la Base de Datos?


SODA en SQL Server 2005
Soporte Nativo a Servicios Web
Integración de CLR al Motor de Consultas
Intermediario de Servicios (Service Broker)
Suscripción a Consultas (Query Notification)
Despliegue y Escalabilidad
Por Qué Servicios En La Base De Datos
Evolución De Los Datos De Aplicaciones

Originalmente cada aplicación


determinaba sus propios datos
(modelos, tablas, etc)
Esto hizo que en muchas
organizaciones los datos estén
multiplicados por doquier
Inconsistencias difíciles de administrar
Baja confiabilidad
Luego las bases de datos comenzaron a
brindar servicios de escala empresarial
Por Qué Servicios En La Base De Datos
Servicios De Base De Datos A Escala Empresarial

Procedimientos almacenados para


concentrar lógica consistente de
manipulación de datos
Reusables entre varias aplicaciones
Desacoplando estructura de tablas y
aplicaciones
Participación en contextos
transaccionales
Alta disponibilidad mediante
clusterización, redundancia, etc
Por Qué Servicios En La Base De Datos
Arquitectura Orientada a Servicios (SOA)

Bajo acoplamiento: el contrato es lo


único que comparten consumidor y
proveedor de servicio
El servicio detrás del contrato puede ser
escalado, evolucionado (reimplementado)
independientemente de los consumidores
Los contratos definen mensajes de
entrada y salida (la lingua franca hoy es
XML)
Dentro de las fronteras donde el servicio
“vive”, los datos pueden estar
Por Qué Servicios En La Base De Datos
Qué Hace a Una Base de Datos “Orientada a Servicios”

Para actuar como proveedor de


servicios debe:
Proveer soporte a puntos de entrada
Socket vía TCP, HTTP GET/PUT, SOAP, etc
Recibir requerimientos en protocolos
estándares (XML), además del TDS
propietario
Contemplar características de
escalabilidad como pooling, activación y
topología distribuible
Agenda

Servicios en la Base de Datos?


SODA en SQL Server 2005
Soporte Nativo a Servicios Web
Integración de CLR al Motor de Consultas
Intermediario de Servicios (Service Broker)
Suscripción a Consultas (Query Notification)
Despliegue y Escalabilidad
Arquitectura de Base de Datos
Orientada a Servicios en SQL 2005
Soporte Nativo a Servicios Web
SP y funciones como [WebMethod]
Integración de CLR al Motor de
Consultas
Contenedor para incluir extensiones .NET,
lado a lado con T-SQL
Intermediario de Servicios (Service
Broker)
Cola transaccional expuesta como servicio
(más que orientada a mensajes)
Soporte Nativo a Servicios Web
Introducción

Para conectarse con una base de datos se


requieren piezas que implementen un
protocolo de comunicación (conocidas como
conectores)
En el caso de SQL Server, el protocolo se llama
Tabular Data Stream (TDS)
Las plataformas implementan una API para
desacoplar los conectores específicos del código
(ADO.NET, OleDb, JDBC)
Para acceder vía un protocolo estándar como
WS (caso típico de aplicaciones externas y
legacies) hay que
Implementar un servicio web accesible vía IIS
Soporte Nativo a Servicios Web
Definición

Procedimientos
almacenados y
funciones se pueden SQL Server
exponer como WS
Windows Server

Despacho
2003 incluye listener

Registro
Modo Usuario

HTTP a nivel kernel Modo Kernel

(sin IIS)
Listener
También Win XP SP2 Puerto 80
HTTP
(HTTP.SYS)
SQL Server registra
porciones de URL,
que se ‘atan’
(binding) a WS
WSDL se genera
demo 1

Soporte Nativo a Servicios Web


Soporte Nativo a Servicios Web
Beneficios

SOAP es menos acoplado en TDS


Clientes con dificultades para acceder vía TDS
a la base de datos ahora pueden optar por
este estándar
No obstante, allí donde TDS esté disponible, sigue
siendo más rico y con mejor performance
Algunas caracs. de ADO.NET 2.0 sin equivalencia
en WS
Servicios Web requieren menos configuración
(firewalls, etc) que protocolos propietarios
Seguridad vía WS-Security, SSL, Kerberos, etc
Lo esperable es exponer servicios web hacia
Agenda

Servicios en la Base de Datos?


SODA en SQL Server 2005
Soporte Nativo a Servicios Web
Integración de CLR al Motor de Consultas
Intermediario de Servicios (Service Broker)
Suscripción a Consultas (Query Notification)
Despliegue y Escalabilidad
Integración de CLR
Introducción

SP ha resultado ser útil para concentrar lógica


intensiva de acceso a datos en la BD
Extensiones a T-SQL, no obstante, no
contemplan otras características como acceso
a otros recursos
Sistema de archivos, red, memoria, hilos, procesos,

Tampoco tienen disponibles bibliotecas para
operaciones con tipos de datos (expresiones
regulares, manejo de cadenas, arreglos, etc)
T-SQL implementa un paradigma declarativo,
estructurado, sin soporte a cualidades de OO
Integración de CLR
Definición
Motor SQL CLR es un entorno de
T-SQL
ejecución administrado
El contenedor coordina
CLR hilos, memoria,
C#, VB.NET,
C++.NET, J#, concurrencia

Contenedor Extensiones
SQLCLR
habilitadas
SO SQL
Funciones escalares
Windows Funciones que
devuelven tablas
Tipos
Agregaciones
Procedimientos
demo 2

Integración de CLR al Motor de


Consultas
Integración de CLR
Tipos de Conexión
Capa de la API Acceso a datos
(interfaz pública, validación y políticas simétrico
de alto nivel)
Conexió
Microsoft.SqlServer.Server System.Data.SqlClient En el motor de datos:
n Conexió menos latencia porque
en n se accede in process,
context regular pero mayor
o competencia por CPU
Protocolo lado
cliente (TDS, SQL
Fuera del motor: mayor
Server) latencia aunque
Transporte lado
servidor se enfoca en
cliente (TCP,
acceso a datos y a
Named pipes, procesar mensajes para
Interfaz etc) SOA
in-process Transp. lado
servidor (TCP,
Seguridad
Named pipes, SAFE: restringido a CLR
etc)
EXTERNAL_ACCESS:
Protocolo lado acceso a recursos del
servidor (TDS,
SQL Server)
SO y de la red pero no
unsafe
Motor de SQL Server 2005 UNSAFE: sin
restricciones (como
extended stored
Integración de CLR
Beneficios

Aprovechamiento del modelo de


programación .NET
Ejecución administrada (GC, verificación de
seguridad, etc)
OO (herencia, polimorfismo, encapsulamiento, etc)
Biblioteca de clases (IO, XML, RegExp, math, etc)
Desarrollo integrado en Visual Studio 2005
SQLCLR o T-SQL?
T-SQL sigue siendo lo más adecuado para acceso
intensivo a datos (SQLCLR se apoya en T-SQL para
acceder al motor)
SQLCLR es útil para proceso de cómputo intensivo
con los datos, una vez que estos han sido
Agenda

Servicios en la Base de Datos?


SODA en SQL Server 2005
Soporte Nativo a Servicios Web
Integración de CLR al Motor de Consultas
Intermediario de Servicios (Service Broker)
Suscripción a Consultas (Query Notification)
Despliegue y Escalabilidad
Intermediario de Servicios
Introducción

Los servicios pueden estar preparados para


consumirse en forma asincrónica
Tradicionalmente el desarrollador tenía que
asegurar que los mensajes se procesen en
forma ordenada
En un primer mensaje, la cabecera de una orden
de compra, en los siguientes los ítems
Evitar duplicidades por retransmisiones
No procesar un ítem dos veces
Coordinar servicios relacionados que pueden
no responder todos a un mismo tiempo
Inventario, pago, contabilidad, despacho
No mezclar mensajes de consumidores
Intermediario de Servicios
Definición

Implementación de MOM (message-


oriented middleware) en la base de
datos
Ambiente de aplicación distribuida para
encolar mensajes a servicios en forma
asíncrona, ordenada, unívoca y
transaccional
Además permite reunir, en grupos
conversacionales, diálogos individuales
con servicios de granularidad más fina
Inventario, Pago, Despacho, etc
Intermediario de Servicios
Caso 1 – Mensajes Independientes

Instancia Instancia
Procesadora 1 Procesadora 2

Servicio de
Activación de U1 U2 U3 U4 U5 U6
Usuarios
Intermediario de Servicios
Caso 1 – Mensajes Independientes

Instancia Instancia
Procesadora 1 Procesadora 2
U1

Servicio de
Activación de U2 U3 U4 U5 U6
Usuarios
Intermediario de Servicios
Caso 1 – Mensajes Independientes

Instancia Instancia
Procesadora 1 Procesadora 2
U1 U2

Servicio de
Activación de U3 U4 U5 U6
Usuarios
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2

Servicio
de
Reserva E1 P1 E2 P1 P2 P2 P3
de
Excursio
nes
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2
E1

Servicio
de
Reserva P1 E2 P1 P2 P2 P3
de
Excursio
nes
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2
E1 E2

Servicio
de
Reserva P1 P1 P2 P2 P3
de
Excursio
nes
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2
E2

Servicio
de
Reserva P1 P1 P2 P2 P3
de
Excursio
nes
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2
P1 E2

Servicio
de
Reserva P1 P2 P2 P3
de
Excursio
nes
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2
E2

Servicio
de
Reserva P1 P2 P2 P3
de
Excursio
nes
Intermediario de Servicios
Caso 2 – Mensajes Relacionados

Instancia Instancia
Procesadora 1 Procesadora 2
P2 E2

Servicio
de
Reserva P1 P2 P3
de
Excursio
nes
Intermediario de Servicios

Nuevos objetos en la base de datos


Mensajes
Contratos
Colas
Servicios

Nuevos comandos T-SQL


CREATE / ALTER / DROP MESSAGE TYPE <tipo de mensaje>
CREATE / ALTER / DROP CONTRACT <contrato> (<tipo de
mensaje>)
CREATE / ALTER / DROP QUEUE <cola>
CREATE / ALTER / DROP SERVICE <servicio> (contrato) ON QUEUE
<cola>

BEGIN DIALOG CONVERSATION <conversación>


SEND ON CONVERSACION <conversación> MESSAGE TYPE <tipo de
mensaje>
END DIALOG

GET CONVERSATION GROUP … FROM <cola>


demo 3

Intermediario de Servicios
Intermediario de Servicios
Activación de Lectores de Colas

El framework se encarga de activar


lectores en la medida que la cola se va
llenando
Cada programa lector se ocupa de
terminar luego de cierto tiempo ocioso
Si la gestión del servicio es externa a la
BD, se emiten eventos de activación
La aplicación externa deberá monitorear
estos eventos para gestionar sus lectores
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2

Servicio
de
Órdenes O1 O2 O3 O4
de
Compra

Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O1

Servicio
de
Órdenes O2 O3 O4
de
Compra

Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O1 O2

Servicio
de
Órdenes O3 O4
de
Compra

Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O2

Servicio
de
Órdenes O3 O4
de
Compra

T1
I1
Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O3 O2

Servicio
de
Órdenes O4
de
CompraI1

T1

Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O3

Servicio
de
Órdenes O4
de
Compra
T1 I1

T2
I2
Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O3 I1

Servicio
de
Órdenes O4
de
Compra
T1

T2
I2
Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O3 T1

Servicio
de
Órdenes O4
de
Compra
T2

I2
Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2

Servicio
de
Órdenes O4
de
Compra
T2 I2

T3
I3
Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Manejo de Estado de Grupos Conversacionales

Instancia Instancia
Procesadora 1 Procesadora 2
O4 T2

Servicio
de
Órdenes
de
CompraI2

T3
I3
Servicio de Servicio
Tarjeta de de
Crédito Inventario
Intermediario de Servicios
Beneficios

Integridad de datos
Mensaje mal procesado vuelve a la cola y
no se producen cambios (atomicidad
transaccional)
Orden y coordinación de mensajes
relacionados
Bajo acoplamiento
Un servicio puede ser un SP, un método
.NET, …
Rendimiento aceptable por
asincronismo
Intermediario de Servicios
Ejemplos de Uso

Triggers asincrónicos en sistemas OLTP


Commit inmediato mientras el servicio se
consume en una transacción separada
Sucursales ocasionalmente conectadas
Mensaje no distribuido queda en la cola
Proceso distribuido a lado servidor
Ejemplo de orden de compra (inventario,
tarjeta)
Consolidación de datos (Call center)
Mensaje al servicio de posición global de
Agenda

Servicios en la Base de Datos?


SODA en SQL Server 2005
Soporte Nativo a Servicios Web
Integración de CLR al Motor de Consultas
Intermediario de Servicios (Service Broker)
Suscripción a Consultas (Query Notification)
Despliegue y Escalabilidad
Suscripción a Consultas
Introducción

Implementar modelos Productor-


Consumidor con una BD no es trivial
Un problema típico es tener al
Consumidor consultando la BD para
determinar que haya registros a
consumir
Esta consulta consume ciclos de CPU y
otros recursos (conector a BD, tráfico de
red, etc)
A mayor frecuencia, menor performance
A menor frecuencia, menor capacidad de
Suscripción a Consultas
Definición

Un cambio en la BD se produce por los


comandos INSERT, UPDATE, DELETE
Es posible suscribirse a una consulta,
para que dispare una notificación al
cambiar su resultado
Esta característica utiliza el
Intermediario de Servicios (Service
Broker)
Se puede suscribir un servicio propio u
ocupar uno default
(QueryNotificationService)
Suscripción a Consultas
Implementación

Dos mecanismos de suscripción


SqlDependency y SqlNotificationRequest
SqlDependency se cuelga del dispatcher
default
Sólo hay que especificar un manejador del evento
OnChanged
Se puede configurar el mecanismo de transporte
(HTTP, TCP, etc), un timeout, si la BD va a requerir
autentificarse y si se debe encriptar la notificación
En ASP.NET 2.0, SqlCacheDependency implementa
CacheDependency encapsulando SqlDependency
SqlNotificationRequest más potente aunque
complejo
Implementa tanto la lógica de esperar por
notificaciones como la de atenderlas
Suscripción a Consultas
Esquema Conversacional de SqlDependency

SQL Server
2. Registro de 3. Cambio en
la suscripción la consulta
suscripta

4. Mensaje a
la cola del
1. SqlCommand Intermediario
de suscripción de Servicios
5. La notificación
es enviada

6. Al recibirse interviene
OnChangeEventHandler
demo 4

Suscripción a Consultas
Agenda

Servicios en la Base de Datos?


SODA en SQL Server 2005
Soporte Nativo a Servicios Web
Integración de CLR al Motor de Consultas
Intermediario de Servicios (Service Broker)
Suscripción a Consultas (Query Notification)
Despliegue y Escalabilidad
Despliegue y Escalabilidad

Los servicios se pueden instanciar a


múltiples escalas, en tiempo de
despliegue (no de desarrollo)
Escala reducida, junto al motor de
consultas (DB tier): menor latencia, mayor
competencia por CPU
Gran escala, en un proceso separado
(middle-tier): mayor latencia, procesos
dedicados
Escalar la BD por clusterización
presenta mayor acoplamiento que
Despliegue y Escalabilidad

Estas características de SODA pueden


convivir en una instancia única de SQL
Server 2005
distribuirse de modo de ejecutar SQLCLR
separado del motor de acceso a datos
Lógica

CLR

SQLCLR

SQL Server 2005 SQL Server 2005

Capa única Capas múltiples


Despliegue y Escalabilidad
Topología de Servicios Ocasionalmente Conectada

Servidor
Proxy

Nodos de
Procesamiento
de Servicios
Internet

Usuario de aplicaciones
basadas en servicios
Resumen

En un esquema orientado a servicios, las


bases de datos deben evolucionar de su
contexto actual (acoplado) a uno más
estándar
Hemos visto que SQL Server 2005 promueve
un esquema abierto, donde
Expone funcionalidades como servicios web
Enriquece las posibilidades de acceso a datos (T-
SQL) con las de cómputo sobre los mismos
(SQLCLR)
Provée un esquema asíncrono de coordinación de
servicios, garantizando orden e idempotencia de
mensajes, al tiempo que previene que mensajes
relacionados se dispersen
Dota a los datos de comportamiento “activo”,
liberando a los procesos de preguntar
frecuentemente por novedades
Referencias

SQL Server Developer Center


http://msdn.microsoft.com
http://msdn.microsoft.com//sql/
sql/

Webcasts de Desarrollo con SQL Server


2005
http://www.microsoft.com
http://www.microsoft.com//events/series/msdnsqlserver2005.
events/series/msdnsqlserver2005.mspx
mspx

Orientación a Servicios en SQL Server


2005
http://www.sqlgurus.org/dotnetnuke/Documentos/tabid/57/ItemID/16/Default.aspx
diegod@microsoft.com
http://spaces.msn.com/members/diegumzone/
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Vous aimerez peut-être aussi