Arquitectura de Base Arquitectura de Base de Datos Orientada a de Datos Orientada a Servicios (SODA) en Servicios (SODA) en SQL Server 2005SQL Server 2005
Diego DagumDiego DagumArquitecto .NETArquitecto .NETMicrosoft ChileMicrosoft Chile
IntroducciónIntroducción
Tradicionalmente los datos fueron Tradicionalmente los datos fueron pasivos, las aplicaciones tenían que pasivos, las aplicaciones tenían que pedir por ellospedir por ellos
Para ello, había que conectarse a bases Para ello, había que conectarse a bases de datos a través de bibliotecas de datos a través de bibliotecas específicasespecíficas
Hoy las empresas replantean sus Hoy las empresas replantean sus sistemas aislados en una nueva sistemas aislados en una nueva arquitectura empresarial que comparta arquitectura empresarial que comparta funcionalidades individuales (servicios) funcionalidades individuales (servicios) a todo el portfolio de aplicacionesa todo el portfolio de aplicaciones
Cómo deben evolucionar las bases de Cómo deben evolucionar las bases de datos para acomodarse a esta nueva datos para acomodarse a esta nueva realidad?realidad?
AgendaAgenda
Servicios en la Base de Datos?Servicios en la Base de Datos?
SODA en SQL Server 2005SODA en SQL Server 2005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Integración de CLR al Motor de ConsultasIntegración de CLR al Motor de Consultas
Intermediario de Servicios (Intermediario de Servicios (Service BrokerService Broker))
Suscripción a Consultas (Suscripción a Consultas (Query NotificationQuery Notification))
Despliegue y EscalabilidadDespliegue y Escalabilidad
Por Qué Servicios En La Base De Por Qué Servicios En La Base De DatosDatosEvolución De Los Datos De AplicacionesEvolución De Los Datos De Aplicaciones
Originalmente cada aplicación Originalmente cada aplicación determinaba sus propios datos determinaba sus propios datos (modelos, tablas, etc)(modelos, tablas, etc)
Esto hizo que en muchas Esto hizo que en muchas organizaciones los datos estén organizaciones los datos estén multiplicados por doquiermultiplicados por doquier
Inconsistencias difíciles de administrarInconsistencias difíciles de administrar
Baja confiabilidadBaja confiabilidad
Luego las bases de datos comenzaron a Luego las bases de datos comenzaron a brindar servicios de escala empresarialbrindar servicios de escala empresarial
Por Qué Servicios En La Base De Por Qué Servicios En La Base De DatosDatosServicios De Base De Datos A Escala Servicios De Base De Datos A Escala EmpresarialEmpresarialProcedimientos almacenados para Procedimientos almacenados para
concentrar lógica consistente de concentrar lógica consistente de manipulación de datosmanipulación de datos
Reusables entre varias aplicacionesReusables entre varias aplicaciones
Desacoplando estructura de tablas y Desacoplando estructura de tablas y aplicacionesaplicaciones
Participación en contextos Participación en contextos transaccionalestransaccionales
Alta disponibilidad mediante Alta disponibilidad mediante clusterizaciónclusterización, redundancia, etc, redundancia, etc
Hoy, el concepto de Arquitectura Hoy, el concepto de Arquitectura Orientada a Servicios impone Orientada a Servicios impone características adicionalescaracterísticas adicionales
Por Qué Servicios En La Base De Por Qué Servicios En La Base De DatosDatosArquitectura Orientada a Servicios (SOA)Arquitectura Orientada a Servicios (SOA)
Bajo acoplamiento: el contrato es lo Bajo acoplamiento: el contrato es lo único que comparten consumidor y único que comparten consumidor y proveedor de servicioproveedor de servicio
El servicio detrás del contrato puede ser El servicio detrás del contrato puede ser escalado, evolucionado (reimplementado) escalado, evolucionado (reimplementado) independientemente de los consumidoresindependientemente de los consumidores
Los contratos definen mensajes de Los contratos definen mensajes de entrada y salida (la entrada y salida (la lingua franca lingua franca hoy es hoy es XML)XML)
Dentro de las fronteras donde el servicio Dentro de las fronteras donde el servicio “vive”, los datos pueden estar “vive”, los datos pueden estar estructurados diferentementeestructurados diferentemente
Para actuar como proveedor de Para actuar como proveedor de servicios debe:servicios debe:
Proveer soporte a puntos de entradaProveer soporte a puntos de entradaSocket vía TCP, HTTP GET/PUT, SOAP, etcSocket vía TCP, HTTP GET/PUT, SOAP, etc
Recibir requerimientos en protocolos Recibir requerimientos en protocolos estándares (XML), además del TDS estándares (XML), además del TDS propietariopropietario
Contemplar características de Contemplar características de escalabilidad como escalabilidad como poolingpooling, activación y , activación y topología distribuibletopología distribuible
En esta sesión revisaremos qué aporta En esta sesión revisaremos qué aporta SQL Server 2005 al respectoSQL Server 2005 al respecto
Por Qué Servicios En La Base De Por Qué Servicios En La Base De DatosDatosQué Hace a Una Base de Datos “Orientada a Qué Hace a Una Base de Datos “Orientada a Servicios”Servicios”
AgendaAgenda
Servicios en la Base de Datos?Servicios en la Base de Datos?
SODA en SQL Server 2005SODA en SQL Server 2005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Integración de CLR al Motor de ConsultasIntegración de CLR al Motor de Consultas
Intermediario de Servicios (Intermediario de Servicios (Service BrokerService Broker))
Suscripción a Consultas (Suscripción a Consultas (Query NotificationQuery Notification))
Despliegue y EscalabilidadDespliegue y Escalabilidad
Arquitectura de Base de Datos Arquitectura de Base de Datos Orientada a Servicios en SQL Orientada a Servicios en SQL 20052005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
SP y funciones como SP y funciones como [WebMethod][WebMethod]
Integración de CLR al Motor de Integración de CLR al Motor de ConsultasConsultas
Contenedor para incluir extensiones .NET, Contenedor para incluir extensiones .NET, lado a lado con T-SQLlado a lado con T-SQL
Intermediario de Servicios (Intermediario de Servicios (Service Service BrokerBroker))
Cola transaccional expuesta como servicio Cola transaccional expuesta como servicio (más que orientada a mensajes)(más que orientada a mensajes)
Suscripción a Consultas (Suscripción a Consultas (Query Query NotificationNotification))
La BD notifica cambios a otros procesosLa BD notifica cambios a otros procesos
Soporte Nativo a Servicios Soporte Nativo a Servicios WebWebIntroducciónIntroducción
Para conectarse con una base de datos se Para conectarse con una base de datos se requieren piezas que implementen un requieren piezas que implementen un protocolo de comunicación (conocidas como protocolo de comunicación (conocidas como conectores)conectores)
En el caso de SQL Server, el protocolo se llama En el caso de SQL Server, el protocolo se llama Tabular Data StreamTabular Data Stream (TDS) (TDS)
Las plataformas implementan una API para Las plataformas implementan una API para desacoplar los conectores específicos del código desacoplar los conectores específicos del código (ADO.NET, OleDb, JDBC)(ADO.NET, OleDb, JDBC)
Para acceder vía un protocolo estándar como Para acceder vía un protocolo estándar como WS (caso típico de aplicaciones externas y WS (caso típico de aplicaciones externas y legacieslegacies) hay que) hay que
Implementar un servicio web accesible vía IISImplementar un servicio web accesible vía IIS
Este servicio web, debe acceder a la BD vía TDS Este servicio web, debe acceder a la BD vía TDS mediante alguno de los modelos de programación mediante alguno de los modelos de programación (ADO.NET o JDBC)(ADO.NET o JDBC)
Soporte Nativo a Servicios Soporte Nativo a Servicios WebWebDefiniciónDefinición
Procedimientos Procedimientos almacenados y almacenados y funciones se pueden funciones se pueden exponer como WSexponer como WSWindows Server Windows Server 2003 incluye 2003 incluye listenerlistener HTTP a nivel HTTP a nivel kernelkernel (sin IIS)(sin IIS)
También Win XP SP2También Win XP SP2
SQL Server registra SQL Server registra porciones de URL, porciones de URL, que se ‘atan’ que se ‘atan’ ((bindingbinding) a WS) a WSWSDL se genera WSDL se genera automaticamente o automaticamente o se puede se puede personalizarpersonalizar
Listener Listener HTTPHTTP
(HTTP.SYS)(HTTP.SYS)
SQL ServerSQL Server
Modo UsuarioModo Usuario
Modo KernelModo Kernel
Puerto 80Puerto 80
Reg
istr
oR
eg
istr
o
Desp
ach
oD
esp
ach
o
demo 1demo 1
Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Soporte Nativo a Servicios Soporte Nativo a Servicios WebWebBeneficiosBeneficios
SOAP es menos acoplado en TDSSOAP es menos acoplado en TDS
Clientes con dificultades para acceder vía TDS Clientes con dificultades para acceder vía TDS a la base de datos ahora pueden optar por a la base de datos ahora pueden optar por este estándareste estándar
No obstante, allí donde TDS esté disponible, sigue No obstante, allí donde TDS esté disponible, sigue siendo más rico y con mejor performancesiendo más rico y con mejor performance
Algunas caracs. de ADO.NET 2.0 sin equivalencia Algunas caracs. de ADO.NET 2.0 sin equivalencia en WSen WS
Servicios Web requieren menos configuración Servicios Web requieren menos configuración ((firewallsfirewalls, etc) que protocolos propietarios, etc) que protocolos propietarios
Seguridad vía WS-Security, SSL, Kerberos, etcSeguridad vía WS-Security, SSL, Kerberos, etc
Lo esperable es exponer servicios web hacia Lo esperable es exponer servicios web hacia afuera de la organización (integración B2B) o afuera de la organización (integración B2B) o a los a los legacylegacy, dejando TDS para aplicaciones , dejando TDS para aplicaciones internas (EAI)internas (EAI)
AgendaAgenda
Servicios en la Base de Datos?Servicios en la Base de Datos?
SODA en SQL Server 2005SODA en SQL Server 2005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Integración de CLR al Motor de ConsultasIntegración de CLR al Motor de Consultas
Intermediario de Servicios (Intermediario de Servicios (Service BrokerService Broker))
Suscripción a Consultas (Suscripción a Consultas (Query NotificationQuery Notification))
Despliegue y EscalabilidadDespliegue y Escalabilidad
Integración de CLRIntegración de CLRIntroducciónIntroducción
SP ha resultado ser útil para concentrar lógica SP ha resultado ser útil para concentrar lógica intensiva de acceso a datos en la BDintensiva de acceso a datos en la BD
Extensiones a T-SQL, no obstante, no Extensiones a T-SQL, no obstante, no contemplan otras características como acceso contemplan otras características como acceso a otros recursosa otros recursos
Sistema de archivos, red, memoria, hilos, procesos, Sistema de archivos, red, memoria, hilos, procesos, ……
Tampoco tienen disponibles bibliotecas para Tampoco tienen disponibles bibliotecas para operaciones con tipos de datos (expresiones operaciones con tipos de datos (expresiones regulares, manejo de cadenas, arreglos, etc)regulares, manejo de cadenas, arreglos, etc)
T-SQL implementa un paradigma declarativo, T-SQL implementa un paradigma declarativo, estructurado, sin soporte a cualidades de OOestructurado, sin soporte a cualidades de OO
Un intento previo, Un intento previo, Extended Stored ProceduresExtended Stored Procedures, , permitió definir procedimientos almacenados en permitió definir procedimientos almacenados en C/C++C/C++
Integración de CLRIntegración de CLRDefiniciónDefinición
CLR es un entorno de CLR es un entorno de ejecución administradoejecución administrado
El contenedor coordina El contenedor coordina hilos, memoria, hilos, memoria, concurrenciaconcurrencia
Extensiones Extensiones habilitadashabilitadas
Funciones escalaresFunciones escalares
Funciones que Funciones que devuelven tablasdevuelven tablas
TiposTipos
AgregacionesAgregaciones
ProcedimientosProcedimientos
Motor SQLMotor SQLT-SQLT-SQL
WindowsWindows
SO SQLSO SQL
CLRCLRC#, VB.NET, C#, VB.NET, C++.NET, J#,C++.NET, J#,
… …
ContenedorContenedorSQLCLRSQLCLR
demo 2demo 2
Integración de CLR al Motor de Integración de CLR al Motor de ConsultasConsultas
InterfazInterfazin-processin-process
Integración de CLRIntegración de CLRTipos de ConexiónTipos de Conexión
Capa de la APICapa de la API
(interfaz pública, validación y políticas (interfaz pública, validación y políticas de alto nivel)de alto nivel)
ConexióConexiónnen en
contextcontextoo
Acceso a datos Acceso a datos simétricosimétrico
En el motor de datos: En el motor de datos: menos latencia porque menos latencia porque se accede se accede in processin process, , pero mayor pero mayor competencia por CPUcompetencia por CPUFuera del motor: mayor Fuera del motor: mayor latencia aunque latencia aunque servidor se enfoca en servidor se enfoca en acceso a datos y a acceso a datos y a procesar mensajes para procesar mensajes para SOASOA
SeguridadSeguridadSAFE: restringido a CLRSAFE: restringido a CLREXTERNAL_ACCESS: EXTERNAL_ACCESS: acceso a recursos del acceso a recursos del SO y de la red pero no SO y de la red pero no unsafeunsafeUNSAFE: sin UNSAFE: sin restricciones (como restricciones (como extended stored extended stored proceduresprocedures))
Protocolo lado Protocolo lado cliente (TDS, SQL cliente (TDS, SQL
Server)Server)
ConexióConexiónn
regularregular
Transporte lado Transporte lado cliente (TCP, cliente (TCP, Named pipes, Named pipes,
etc)etc)Transp. lado Transp. lado
servidor (TCP, servidor (TCP, Named pipes, Named pipes,
etc)etc)
Protocolo lado Protocolo lado servidor (TDS, servidor (TDS, SQL Server)SQL Server)
Motor de SQL Server 2005Motor de SQL Server 2005
Microsoft.SqlServer.ServerMicrosoft.SqlServer.Server System.Data.SqlClientSystem.Data.SqlClient
Integración de CLRIntegración de CLRBeneficiosBeneficios
Aprovechamiento del modelo de Aprovechamiento del modelo de programación .NETprogramación .NET
Ejecución administrada (GC, verificación de Ejecución administrada (GC, verificación de seguridad, etc)seguridad, etc)
OO (herencia, polimorfismo, encapsulamiento, etc)OO (herencia, polimorfismo, encapsulamiento, etc)
Biblioteca de clases (IO, XML, RegExp, Biblioteca de clases (IO, XML, RegExp, mathmath, etc), etc)
Desarrollo integrado en Visual Studio 2005Desarrollo integrado en Visual Studio 2005
SQLCLR o T-SQL?SQLCLR o T-SQL?T-SQL sigue siendo lo más adecuado para acceso T-SQL sigue siendo lo más adecuado para acceso intensivo a datos (SQLCLR se apoya en T-SQL para intensivo a datos (SQLCLR se apoya en T-SQL para acceder al motor)acceder al motor)
SQLCLR es útil para proceso de cómputo intensivo SQLCLR es útil para proceso de cómputo intensivo con los datos, una vez que estos han sido con los datos, una vez que estos han sido accedidosaccedidos
Como WS vs TDS, ambos modelos son Como WS vs TDS, ambos modelos son complementarioscomplementarios
AgendaAgenda
Servicios en la Base de Datos?Servicios en la Base de Datos?
SODA en SQL Server 2005SODA en SQL Server 2005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Integración de CLR al Motor de ConsultasIntegración de CLR al Motor de Consultas
Intermediario de Servicios (Intermediario de Servicios (Service BrokerService Broker))
Suscripción a Consultas (Suscripción a Consultas (Query NotificationQuery Notification))
Despliegue y EscalabilidadDespliegue y Escalabilidad
Intermediario de ServiciosIntermediario de ServiciosIntroducciónIntroducción
Los servicios pueden estar preparados para Los servicios pueden estar preparados para consumirse en forma asincrónicaconsumirse en forma asincrónicaTradicionalmente el desarrollador tenía que Tradicionalmente el desarrollador tenía que asegurar que los mensajes se procesen en asegurar que los mensajes se procesen en forma ordenadaforma ordenada
En un primer mensaje, la cabecera de una orden En un primer mensaje, la cabecera de una orden de compra, en los siguientes los ítemsde compra, en los siguientes los ítems
Evitar duplicidades por retransmisionesEvitar duplicidades por retransmisionesNo procesar un ítem dos vecesNo procesar un ítem dos veces
Coordinar servicios relacionados que pueden Coordinar servicios relacionados que pueden no responder todos a un mismo tiempono responder todos a un mismo tiempo
Inventario, pago, contabilidad, despachoInventario, pago, contabilidad, despacho
No mezclar mensajes de consumidores No mezclar mensajes de consumidores concurrentesconcurrentes
Intermediario de ServiciosIntermediario de ServiciosDefiniciónDefinición
Implementación de MOM (Implementación de MOM (message-message-oriented middlewareoriented middleware) en la base de ) en la base de datosdatos
Ambiente de aplicación distribuida para Ambiente de aplicación distribuida para encolar mensajes a servicios en forma encolar mensajes a servicios en forma asíncrona, ordenada, unívoca y asíncrona, ordenada, unívoca y transaccionaltransaccional
Además permite reunir, en grupos Además permite reunir, en grupos conversacionales, diálogos individuales conversacionales, diálogos individuales con servicios de granularidad más finacon servicios de granularidad más fina
Inventario, Pago, Despacho, etcInventario, Pago, Despacho, etc
Intermediario de ServiciosIntermediario de ServiciosCaso 1 – Mensajes IndependientesCaso 1 – Mensajes Independientes
Servicio deServicio deActivación deActivación de
UsuariosUsuarios
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
U1U1 U2U2 U3U3 U4U4 U5U5 U6U6
Intermediario de ServiciosIntermediario de ServiciosCaso 1 – Mensajes IndependientesCaso 1 – Mensajes Independientes
Servicio deServicio deActivación deActivación de
UsuariosUsuarios
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
U2U2 U3U3 U4U4 U5U5 U6U6
U1U1
Intermediario de ServiciosIntermediario de ServiciosCaso 1 – Mensajes IndependientesCaso 1 – Mensajes Independientes
Servicio deServicio deActivación deActivación de
UsuariosUsuarios
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
U3U3 U4U4 U5U5 U6U6
U1U1 U2U2
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
E1E1 P1P1 E2E2 P1P1 P2P2 P2P2 P3P3
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
P1P1 E2E2 P1P1 P2P2 P2P2 P3P3
E1E1
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
P1P1 P1P1 P2P2 P2P2 P3P3
E1E1 E2E2
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
P1P1 P1P1 P2P2 P2P2 P3P3
E2E2
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
P1P1 P2P2 P2P2 P3P3
E2E2P1P1
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
P1P1 P2P2 P2P2 P3P3
E2E2
Intermediario de ServiciosIntermediario de ServiciosCaso 2 – Mensajes RelacionadosCaso 2 – Mensajes Relacionados
Servicio Servicio dede
Reserva Reserva dede
ExcursioExcursionesnes
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
P1P1 P2P2 P3P3
E2E2P2P2
Intermediario de ServiciosIntermediario de Servicios
Nuevos objetos en la base de datosNuevos objetos en la base de datosMensajesMensajesContratosContratosColasColasServiciosServicios
Nuevos comandos T-SQLNuevos comandos T-SQLCREATE / ALTER / DROP MESSAGE TYPE <tipo de mensaje>CREATE / ALTER / DROP MESSAGE TYPE <tipo de mensaje>CREATE / ALTER / DROP CONTRACT <contrato> (<tipo de CREATE / ALTER / DROP CONTRACT <contrato> (<tipo de mensaje>)mensaje>)CREATE / ALTER / DROP QUEUE <cola>CREATE / ALTER / DROP QUEUE <cola>CREATE / ALTER / DROP SERVICE <servicio> (contrato) ON QUEUE CREATE / ALTER / DROP SERVICE <servicio> (contrato) ON QUEUE <cola><cola>
BEGIN DIALOG CONVERSATION <conversación>BEGIN DIALOG CONVERSATION <conversación>SEND ON CONVERSACION <conversación> MESSAGE TYPE <tipo de SEND ON CONVERSACION <conversación> MESSAGE TYPE <tipo de mensaje>mensaje>END DIALOGEND DIALOG
GET CONVERSATION GROUP … FROM <cola>GET CONVERSATION GROUP … FROM <cola>RECEIVE … FROM <cola>RECEIVE … FROM <cola>
demo 3demo 3
Intermediario de ServiciosIntermediario de Servicios
Intermediario de ServiciosIntermediario de ServiciosActivación de Lectores de ColasActivación de Lectores de Colas
El El frameworkframework se encarga de activar se encarga de activar lectores en la medida que la cola se va lectores en la medida que la cola se va llenandollenando
Cada programa lector se ocupa de Cada programa lector se ocupa de terminar luego de cierto tiempo ociosoterminar luego de cierto tiempo ocioso
Si la gestión del servicio es externa a la Si la gestión del servicio es externa a la BD, se emiten eventos de activaciónBD, se emiten eventos de activación
La aplicación externa deberá monitorear La aplicación externa deberá monitorear estos eventos para gestionar sus lectoresestos eventos para gestionar sus lectores
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
O1O1 O2O2 O3O3 O4O4
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
O1O1
O2O2 O3O3 O4O4
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
O1O1 O2O2
O3O3 O4O4
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T1T1
O2O2
O3O3 O4O4
I1I1
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T1T1
O2O2O3O3
O4O4
I1I1
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T1T1
T2T2
O3O3
O4O4
I1I1
I2I2
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T1T1
T2T2
O3O3
O4O4
I1I1
I2I2
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T1T1
T2T2
O3O3
O4O4
I2I2
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T3T3 I3I3
I2I2
O4O4
T2T2
Intermediario de ServiciosIntermediario de ServiciosManejo de Estado de Grupos ConversacionalesManejo de Estado de Grupos Conversacionales
Servicio Servicio dede
Órdenes Órdenes dede
CompraCompra
InstanciaInstanciaProcesadora 1Procesadora 1
InstanciaInstanciaProcesadora 2Procesadora 2
Servicio deServicio deTarjeta deTarjeta de
CréditoCrédito
ServicioServiciodede
InventarioInventario
T2T2
T3T3
O4O4
I3I3
I2I2
Intermediario de ServiciosIntermediario de ServiciosBeneficiosBeneficios
Integridad de datosIntegridad de datosMensaje mal procesado vuelve a la cola y Mensaje mal procesado vuelve a la cola y no se producen cambios (atomicidad no se producen cambios (atomicidad transaccional)transaccional)
Orden y coordinación de mensajes Orden y coordinación de mensajes relacionadosrelacionados
Bajo acoplamientoBajo acoplamientoUn servicio puede ser un SP, un Un servicio puede ser un SP, un método .NET, …método .NET, …
Rendimiento aceptable por Rendimiento aceptable por asincronismoasincronismo
Posibilidad de definir Posibilidad de definir timeouttimeout a la a la conversaciónconversación
Activación automáticaActivación automática
Intermediario de ServiciosIntermediario de ServiciosEjemplos de UsoEjemplos de Uso
TriggersTriggers asincrónicos en sistemas OLTP asincrónicos en sistemas OLTPCommitCommit inmediato mientras el servicio se inmediato mientras el servicio se consume en una transacción separadaconsume en una transacción separada
Sucursales ocasionalmente conectadasSucursales ocasionalmente conectadasMensaje no distribuido queda en la colaMensaje no distribuido queda en la cola
Proceso distribuido a lado servidorProceso distribuido a lado servidorEjemplo de orden de compra (inventario, Ejemplo de orden de compra (inventario, tarjeta)tarjeta)
Consolidación de datos (Call center)Consolidación de datos (Call center)Mensaje al servicio de posición global de Mensaje al servicio de posición global de cliente, para que éste repostée a distintos cliente, para que éste repostée a distintos subsistemassubsistemas
AgendaAgenda
Servicios en la Base de Datos?Servicios en la Base de Datos?
SODA en SQL Server 2005SODA en SQL Server 2005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Integración de CLR al Motor de ConsultasIntegración de CLR al Motor de Consultas
Intermediario de Servicios (Intermediario de Servicios (Service BrokerService Broker))
Suscripción a Consultas (Suscripción a Consultas (Query NotificationQuery Notification))
Despliegue y EscalabilidadDespliegue y Escalabilidad
Suscripción a ConsultasSuscripción a ConsultasIntroducciónIntroducción
Implementar modelos Productor-Implementar modelos Productor-Consumidor con una BD no es trivialConsumidor con una BD no es trivial
Un problema típico es tener al Un problema típico es tener al Consumidor consultando la BD para Consumidor consultando la BD para determinar que haya registros a determinar que haya registros a consumirconsumir
Esta consulta consume ciclos de CPU y Esta consulta consume ciclos de CPU y otros recursos (conector a BD, tráfico de otros recursos (conector a BD, tráfico de red, etc)red, etc)
A mayor frecuencia, menor performanceA mayor frecuencia, menor performance
A menor frecuencia, menor capacidad de A menor frecuencia, menor capacidad de reacciónreacción
Suscripción a ConsultasSuscripción a ConsultasDefiniciónDefinición
Un cambio en la BD se produce por los Un cambio en la BD se produce por los comandos INSERT, UPDATE, DELETEcomandos INSERT, UPDATE, DELETE
Es posible suscribirse a una consulta, Es posible suscribirse a una consulta, para que dispare una notificación al para que dispare una notificación al cambiar su resultadocambiar su resultado
Esta característica utiliza el Esta característica utiliza el Intermediario de Servicios (Intermediario de Servicios (Service Service BrokerBroker))
Se puede suscribir un servicio propio u Se puede suscribir un servicio propio u ocupar uno ocupar uno defaultdefault ((QueryNotificationServiceQueryNotificationService))
Al distribuirse una notificación se Al distribuirse una notificación se elimina su suscripciónelimina su suscripción
Suscripción a ConsultasSuscripción a ConsultasImplementaciónImplementación
Dos mecanismos de suscripciónDos mecanismos de suscripciónSqlDependencySqlDependency y y SqlNotificationRequestSqlNotificationRequest
SqlDependencySqlDependency se cuelga del se cuelga del dispatcher dispatcher defaultdefault
Sólo hay que especificar un manejador del evento Sólo hay que especificar un manejador del evento OnChangedOnChangedSe puede configurar el mecanismo de transporte Se puede configurar el mecanismo de transporte (HTTP, TCP, etc), un (HTTP, TCP, etc), un timeouttimeout, si la BD va a requerir , si la BD va a requerir autentificarse y si se debe encriptar la notificaciónautentificarse y si se debe encriptar la notificaciónEn ASP.NET 2.0, En ASP.NET 2.0, SqlCacheDependencySqlCacheDependency implementa implementa CacheDependencyCacheDependency encapsulando encapsulando SqlDependencySqlDependency
SqlNotificationRequestSqlNotificationRequest más potente aunque más potente aunque complejocomplejo
Implementa tanto la lógica de esperar por Implementa tanto la lógica de esperar por notificaciones como la de atenderlasnotificaciones como la de atenderlas
Optimización de evaluación de suscripcionesOptimización de evaluación de suscripcionesSuscripciones a una misma consulta se evalúan Suscripciones a una misma consulta se evalúan una sola vezuna sola vez
1. SqlCommand1. SqlCommandde suscripciónde suscripción
SQL ServerSQL Server
Suscripción a ConsultasSuscripción a ConsultasEsquema Conversacional de Esquema Conversacional de SqlDependencySqlDependency
2. Registro de2. Registro dela suscripciónla suscripción
3. Cambio en3. Cambio enla consultala consultasuscriptasuscripta
4. Mensaje a4. Mensaje ala cola della cola del
IntermediarioIntermediariode Serviciosde Servicios
5. La notificación5. La notificaciónes enviadaes enviada
6. Al recibirse interviene6. Al recibirse intervieneOnChangeEventHandlerOnChangeEventHandler
demo 4demo 4
Suscripción a ConsultasSuscripción a Consultas
AgendaAgenda
Servicios en la Base de Datos?Servicios en la Base de Datos?
SODA en SQL Server 2005SODA en SQL Server 2005Soporte Nativo a Servicios WebSoporte Nativo a Servicios Web
Integración de CLR al Motor de ConsultasIntegración de CLR al Motor de Consultas
Intermediario de Servicios (Intermediario de Servicios (Service BrokerService Broker))
Suscripción a Consultas (Suscripción a Consultas (Query NotificationQuery Notification))
Despliegue y EscalabilidadDespliegue y Escalabilidad
Los servicios se pueden instanciar a Los servicios se pueden instanciar a múltiples escalas, en tiempo de múltiples escalas, en tiempo de despliegue (no de desarrollo)despliegue (no de desarrollo)
Escala reducida, junto al motor de Escala reducida, junto al motor de consultas (consultas (DB tierDB tier): menor latencia, mayor ): menor latencia, mayor competencia por CPUcompetencia por CPU
Gran escala, en un proceso separado Gran escala, en un proceso separado ((middle-tiermiddle-tier): mayor latencia, procesos ): mayor latencia, procesos dedicadosdedicados
Escalar la BD por Escalar la BD por clusterizaciónclusterización presenta mayor acoplamiento que presenta mayor acoplamiento que dividir aplicaciones en SOAdividir aplicaciones en SOA
Despliegue y EscalabilidadDespliegue y Escalabilidad
Despliegue y EscalabilidadDespliegue y Escalabilidad
Estas características de SODA puedenEstas características de SODA puedenconvivir en una instancia única de SQL convivir en una instancia única de SQL Server 2005Server 2005
distribuirse de modo de ejecutar SQLCLR distribuirse de modo de ejecutar SQLCLR separado del motor de acceso a datosseparado del motor de acceso a datos
SQL Server 2005SQL Server 2005
SQLCLRSQLCLR
Capa únicaCapa única
SQL Server 2005SQL Server 2005
Capas múltiplesCapas múltiples
CLRCLR
LógicaLógica
Despliegue y EscalabilidadDespliegue y EscalabilidadTopología de Servicios Ocasionalmente Topología de Servicios Ocasionalmente ConectadaConectada
Usuario de aplicacionesUsuario de aplicacionesbasadas en serviciosbasadas en servicios
ServidorServidorProxyProxy
Nodos deNodos deProcesamientoProcesamiento
de Serviciosde Servicios
Inte
rne
Inte
rne
tt
ResumenResumen
En un esquema orientado a servicios, las En un esquema orientado a servicios, las bases de datos deben evolucionar de su bases de datos deben evolucionar de su contexto actual (acoplado) a uno más contexto actual (acoplado) a uno más estándarestándarHemos visto que SQL Server 2005 promueve Hemos visto que SQL Server 2005 promueve un esquema abierto, dondeun esquema abierto, donde
Expone funcionalidades como servicios webExpone funcionalidades como servicios webEnriquece las posibilidades de acceso a datos (T-Enriquece las posibilidades de acceso a datos (T-SQL) con las de cómputo sobre los mismos SQL) con las de cómputo sobre los mismos (SQLCLR)(SQLCLR)Provée un esquema asíncrono de coordinación de Provée un esquema asíncrono de coordinación de servicios, garantizando orden e idempotencia de servicios, garantizando orden e idempotencia de mensajes, al tiempo que previene que mensajes mensajes, al tiempo que previene que mensajes relacionados se dispersenrelacionados se dispersenDota a los datos de comportamiento “activo”, Dota a los datos de comportamiento “activo”, liberando a los procesos de preguntar liberando a los procesos de preguntar frecuentemente por novedadesfrecuentemente por novedades
Estas características redundan en mayor Estas características redundan en mayor robustez en los desarrollos, mejora en la robustez en los desarrollos, mejora en la productividad, menos líneas de código y productividad, menos líneas de código y mayor mayor time-to-markettime-to-market
ReferenciasReferencias
SQL Server Developer CenterSQL Server Developer Centerhttp://http://msdn.microsoft.commsdn.microsoft.com//sqlsql//
Webcasts de Desarrollo con SQL Server Webcasts de Desarrollo con SQL Server 20052005http://http://www.microsoft.comwww.microsoft.com//eventsevents/series/msdnsqlserver2005./series/msdnsqlserver2005.mspxmspx
Orientación a Servicios en SQL Server Orientación a Servicios en SQL Server 20052005http://www.sqlgurus.org/dotnetnuke/Documentos/tabid/57/ItemID/16/Default.aspxhttp://www.sqlgurus.org/dotnetnuke/Documentos/tabid/57/ItemID/16/Default.aspx
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
[email protected]://spaces.msn.com/members/diegumzone/