Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Diego Dagum Arquitecto .NET Microsoft Chile
Arquitectura de Base de Datos Orientada a Servicios (SODA) en SQL Server 2005 Diego Dagum Arquitecto .NET Microsoft Chile
2
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 Cómo deben evolucionar las bases de datos para acomodarse a esta nueva realidad?
3
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
4
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
5
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 Hoy, el concepto de Arquitectura Orientada a Servicios impone características adicionales
6
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 estructurados diferentemente
7
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 En esta sesión revisaremos qué aporta SQL Server 2005 al respecto
8
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
9
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) Suscripción a Consultas (Query Notification) La BD notifica cambios a otros procesos
10
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 Este servicio web, debe acceder a la BD vía TDS mediante alguno de los modelos de programación (ADO.NET o JDBC)
11
Soporte Nativo a Servicios Web Definición
Procedimientos almacenados y funciones se pueden exponer como WS Windows Server 2003 incluye listener HTTP a nivel kernel (sin IIS) También Win XP SP2 SQL Server registra porciones de URL, que se ‘atan’ (binding) a WS WSDL se genera automaticamente o se puede personalizar SQL Server Modo Usuario Registro Despacho Modo Kernel Listener HTTP (HTTP.SYS) Puerto 80
12
Soporte Nativo a Servicios Web
demo 1 Soporte Nativo a Servicios Web
13
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 afuera de la organización (integración B2B) o a los legacy, dejando TDS para aplicaciones internas (EAI)
14
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
15
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 Un intento previo, Extended Stored Procedures, permitió definir procedimientos almacenados en C/C++
16
Integración de CLR Definición
CLR es un entorno de ejecución administrado El contenedor coordina hilos, memoria, concurrencia Extensiones habilitadas Funciones escalares Funciones que devuelven tablas Tipos Agregaciones Procedimientos Motor SQL T-SQL CLR C#, VB.NET, C++.NET, J#, … Contenedor SQLCLR SO SQL Windows
17
Integración de CLR al Motor de Consultas
demo 2 Integración de CLR al Motor de Consultas
18
Integración de CLR Tipos de Conexión
Acceso a datos simétrico En el motor de datos: menos latencia porque se accede in process, pero mayor competencia por CPU Fuera del motor: mayor latencia aunque servidor se enfoca en acceso a datos y a procesar mensajes para SOA Seguridad SAFE: restringido a CLR EXTERNAL_ACCESS: acceso a recursos del SO y de la red pero no unsafe UNSAFE: sin restricciones (como extended stored procedures) Capa de la API (interfaz pública, validación y políticas de alto nivel) Microsoft.SqlServer.Server System.Data.SqlClient Conexión en contexto Conexión regular Protocolo lado cliente (TDS, SQL Server) Transporte lado cliente (TCP, Named pipes, etc) Interfaz in-process Transp. lado servidor (TCP, Named pipes, etc) Protocolo lado servidor (TDS, SQL Server) Motor de SQL Server 2005
19
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 accedidos Como WS vs TDS, ambos modelos son complementarios
20
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
21
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 concurrentes
22
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
23
Intermediario de Servicios Caso 1 – Mensajes Independientes
Instancia Procesadora 1 Instancia Procesadora 2 Servicio de Activación de Usuarios U1 U2 U3 U4 U5 U6
24
Intermediario de Servicios Caso 1 – Mensajes Independientes
Instancia Procesadora 1 Instancia Procesadora 2 U1 Servicio de Activación de Usuarios U2 U3 U4 U5 U6
25
Intermediario de Servicios Caso 1 – Mensajes Independientes
Instancia Procesadora 1 Instancia Procesadora 2 U1 U2 Servicio de Activación de Usuarios U3 U4 U5 U6
26
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 Servicio de Reserva de Excursiones E1 P1 E2 P1 P2 P2 P3
27
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 E1 Servicio de Reserva de Excursiones P1 E2 P1 P2 P2 P3
28
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 E1 E2 Servicio de Reserva de Excursiones P1 P1 P2 P2 P3
29
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 E2 Servicio de Reserva de Excursiones P1 P1 P2 P2 P3
30
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 P1 E2 Servicio de Reserva de Excursiones P1 P2 P2 P3
31
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 E2 Servicio de Reserva de Excursiones P1 P2 P2 P3
32
Intermediario de Servicios Caso 2 – Mensajes Relacionados
Instancia Procesadora 1 Instancia Procesadora 2 P2 E2 Servicio de Reserva de Excursiones P1 P2 P3
33
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> RECEIVE … FROM <cola>
34
Intermediario de Servicios
demo 3 Intermediario de Servicios
35
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
36
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 Servicio de Órdenes de Compra O1 O2 O3 O4 Servicio de Tarjeta de Crédito Servicio de Inventario
37
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O1 Servicio de Órdenes de Compra O2 O3 O4 Servicio de Tarjeta de Crédito Servicio de Inventario
38
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O1 O2 Servicio de Órdenes de Compra O3 O4 Servicio de Tarjeta de Crédito Servicio de Inventario
39
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O2 Servicio de Órdenes de Compra O3 O4 T1 I1 Servicio de Tarjeta de Crédito Servicio de Inventario
40
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O3 O2 Servicio de Órdenes de Compra O4 I1 T1 Servicio de Tarjeta de Crédito Servicio de Inventario
41
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O3 Servicio de Órdenes de Compra O4 T1 I1 T2 I2 Servicio de Tarjeta de Crédito Servicio de Inventario
42
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O3 I1 Servicio de Órdenes de Compra O4 T1 T2 I2 Servicio de Tarjeta de Crédito Servicio de Inventario
43
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O3 T1 Servicio de Órdenes de Compra O4 T2 I2 Servicio de Tarjeta de Crédito Servicio de Inventario
44
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 Servicio de Órdenes de Compra O4 T2 I2 T3 I3 Servicio de Tarjeta de Crédito Servicio de Inventario
45
Intermediario de Servicios Manejo de Estado de Grupos Conversacionales
Instancia Procesadora 1 Instancia Procesadora 2 O4 T2 Servicio de Órdenes de Compra I2 T3 I3 Servicio de Tarjeta de Crédito Servicio de Inventario
46
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 Posibilidad de definir timeout a la conversación Activación automática
47
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 cliente, para que éste repostée a distintos subsistemas
48
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
49
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 reacción
50
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) Al distribuirse una notificación se elimina su suscripción
51
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 Optimización de evaluación de suscripciones Suscripciones a una misma consulta se evalúan una sola vez
52
Suscripción a Consultas Esquema Conversacional de SqlDependency
SQL Server 2. Registro de la suscripción 3. Cambio en la consulta suscripta 4. Mensaje a la cola del Intermediario de Servicios 1. SqlCommand de suscripción 5. La notificación es enviada 6. Al recibirse interviene OnChangeEventHandler
53
Suscripción a Consultas
demo 4 Suscripción a Consultas
54
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
55
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 dividir aplicaciones en SOA
56
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 CLR Lógica SQL Server 2005 SQL Server 2005 SQLCLR Capa única Capas múltiples
57
Despliegue y Escalabilidad Topología de Servicios Ocasionalmente Conectada
Servidor Proxy Nodos de Procesamiento de Servicios Usuario de aplicaciones basadas en servicios Internet
58
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 Estas características redundan en mayor robustez en los desarrollos, mejora en la productividad, menos líneas de código y mayor time-to-market
59
Referencias SQL Server Developer Center
Webcasts de Desarrollo con SQL Server 2005 Orientación a Servicios en SQL Server 2005
60
© 2005 Microsoft Corporation. All rights reserved.
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.