SQL CE 와 SQL Notification Services를 활용한 모바일 솔루션 구현 박명은 과장 Sr. Technology Specialist 기술사업부 한국마이크로소프트 Agenda SQL CE 2.0 소개 SQL Notification Services 소개 SQL CE 2.0 특징 SQL CE 2.0 Architecture 데이터 동기화 방법 SQL Notification Services 란 ? SQL Notification Services를 이용하여 모바일 솔루션 구현 Deploy 방안 Why MS SQL Notification Services ? 사례 질문 SQL CE 2.0 소개 Pocket Innovia Architecture Multiple Listing Service Oracle SQL Server 2000 Windows CE Edition v2.0 SQL Server와의 높은 호환성 동일한 result sets 데이터타입 호한 데이터베이스 엔진 크기 ~800kb for X86 CPU 다양한 디바이스를 위한 Managed 액세스 효과적이고 복잡한 쿼리 가능 online/offline 애플리케이션 구현 가능 메인서버의 SQL Server와 동기화 가능과 클라이언트 추적이 가능 SQL Server CE Capabilities 디바이스에 따른 Data Provider 제공 오프라인상에서도 다양한 방법의 데이터베이스 액세스 가능 Remote Data Access (RDA) 로컬 저장영역의 데이터저장소와 기업내의 메인 SQL Server와의 Replication 가능 설치와 사용이 용이 Merge Replication 마스터 데이터베이스의 로컬 복사를 동기화함 마스터 데이터 저장하기 위해서는 RDA 방식보다는 좀더 효과적임 V2.0 추가된 기능들 고유한 기능들 ABS ACOS ASIN ATAN ATN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 PI POWER RADIANS RAND ROUND SIGN SQRT NEWID TAN UNICODE CHAR CHARINDEX LEN LOWER LTRIM PATINDEX REPLACE REPLICATE @IDENTITY RTRIM SPACE STR STUFF SUBSTRING UPPER CASE COALESCE CONVERT DATALENGTH V2.0 추가된 기능들 Union SELECT * FROM A UNION SELECT * FROM B Parameterized Queries INSERT INTO mytable (col1, col2) VALUES (?, ?); Index Pull Brings indexes down with RDA Pull Connectivity Setup Wizards Ease installation of SQL CE Server components Optional Error Strings Extra DLL to provide error strings in application Increased index limit per table V2.0 추가된 기능들 SQL Server Client Data Provider Direct Access to SQL Server Enhanced ISQLW SQL Server CE v2.0 Device Data Access SDE / Managed Stack Native/Unmanaged Stack eVB 3.0 ADO CE v3.1 VS .NET (VB.NET, C#) ADO.NET eVC 3.0 SQL Server CE 2.0 Data Provider CLR / .NET CF OLEDB CE SQL Server CE v2.0 OLEDB QP/Cursor Engine/ES OLEDB Storage Engine / Repl Tracking CE Data Access Storage Architecture Enterprise Backend Oracle / db2 / etc .NET CF / Managed Stack Native/Unmanaged Stack eVB 3.0 ADO CE v3.1 ADO.NET eVC 3.0 XML/BizTalk/CS 2002 VS .NET (VB.NET, C#) SQL Server CE Data Provider SQL Server Client Data Provider CLR / .NET CF Ethernet TDS Well Connected OLEDB CE SQL CE Edition v2.0 Data Provider OLEDB QP/Cursor Engine/ES OLEDB Client Agent: Replication and RDA Storage Engine / Repl Tracking OLEDB / Replication API 802.11b, CDPD, GSM, CDMA, TDMA, etc. Server Agent: Replication and Remote Data Access IIS HTTP Occasionally Connected CLIENT SERVER Browse Data Access Choices WAP, HTML etc. Mobile Browser Smart client .NET Compact Framework 4. ADO.NET Local Data ASP.NET, Mobile Controls Presentation Layer 1. XML Web services XML Web Services 3. Direct SQL Server access SQL Server CE SQL Server 2. Synchronization (http) Windows CE Windows Server DB Sync 방법 다음의 두 가지 방법이 있다. SQL Replication 일반 SQL 서버간의 복제 기술의 연장이다 통합 복제 (양방향)를 지원한다 인터넷을 통한 복제(메인 DB의 변경 내용을 받음)도 가능하다 충돌 있을 때, 자동 또는 고객 요구에 맞춘 도구를 제공한다 원격 데이터 액세스 RDA (Remote Data Access) 본래는 SQL 6.5/SQL 7.0/SQL 2000과 데이터 동기를 하기 위해 고안됨 HTTP (over TCP/IP) 기반으로 실행됨 방화벽이나 프록시 서버 뒤에 위치하고 있을지라도 SQL Server CE가 back-end 시스템과 작업할 수 있도록 한다. 방식은 다음 세가지 이다 Pull Push Sumit 프로그래밍이 가능하기 때문에 다양한 적용이 가능하다. SQL Notification Services 소개 Getting Information No notifications – connected requestor Web News Request My Device ERP, CRM LOB, Rpt Response Getting Information Push notifications – all or nothing Web News Push ERP, CRM LOB, Rpt My Device Getting Information Notifications – subscriber preference Web News ERP, CRM LOB, Rpt Notification Application My Device(s) of Choice A new class of applications that deliver personalized and timely information to any device Notification Applications Subscribers Subscriptions (millions) Source System s Events Match Notifications (millions) Subscriber Devices and Systems Architecture Subscription Management Application Subscribers SQL Server Custom Event Collector File System Subscriptions Subscriber Devices Notification Generator Distributor SQL Match Rules XSLT Formatter Custom Formatter Event Provider Host Events Event Batches App. specific Standard Notifications Notification Batches .NET Alerts Email File Custom Building The Foundation VBS scripts Data Change s Events Event Provider File System Watcher Event Provider Host Subscribers Subscriber Devices Subscriptions Notifications Generator SQL Match Rule External Delivery Distributor XSLT CF Email XSLT Building The Foundation: Defining Schemas and Rules SQL 테이블내의 Row로써 적용할 이벤트 모델 정의 SQL 테이블내의 Row로써 적용할 Subscription 모델 정의 Events StockSymbol Stock Value MSFT 41 ORCL 11 1/4 SubscriberId StockSymbol Trigger SUNW 9 1/2 patricet MSFT 40 INTC 22 IBM 65 CSCO 11 1/2 적용할 Match Rule을 SQL를 사용하여 작성 SELECT FROM WHERE AND Subscriptions 기본적인 XSLT를 이용하여 원시의 Notification 데이터를 변환함 <xsl:template match="notification"> <b><xsl:value-of select="StockSymbol"/></b> is now trading at: <b>$<xsl:value-of select="StockValue"/></b> </xsl:template> s.SubscriberId, e.StockSymbol, e.StockValue Events e, Subscriptions s (e.StockSymbol = s.StockSymbol) (e.StockValue > s.Trigger) Notifications SubscriberId StockSymbol Stock Value patricet MSFT 41 Extending the platform VBS scripts Data Change s Events Event Provider File System Watcher SQL Server provider Event Provider Host Subscribers Subscriber Devices Subscriptions Notifications Generator SQL Match Rule External Delivery Distributor XSLT CF Email XSLT Event Providers: Example: SQL Server Event Provider Data Source Query PostQuery Schedule SQL Server provider Event Provider Host Events Changes Event Providers 이벤트 테이블로 이벤트 데이터를 입력함 Built-in: FileSystemWatcher, SQL Provider SQL Server Event Provider Hosted by the Event Provider Host 변경된 데이터를 가져오기 위해 정해진 스케줄에 SQL 쿼리를 수행함 가져온 변경된 데이터를 이벤트 테이블내에 Update 함 SQL Server Event Provider SQL Provider: Every 2 minutes, retrieve all updated stocks Source Table StockSymbol Stock Value LastUpdate MSFT 41 2002-10-12 1:02:05 pm ORCL 11 1/4 2002-10-12 1:02:05 pm SUNW 9 1/2 2002-10-12 1:02:06 pm INTC 22 2002-10-12 1:02:02 pm IBM 65 2002-10-12 1:02:07 pm CSCO 11 1/2 2002-10-12 1:02:04 pm MSFT 41 1/8 2002-10-12 1:03:25 pm ORCL 11 1/8 2002-10-12 1:03:32 pm SUNW 9 2002-10-12 1:04:06 pm Event Batch #1 Event Batch #2 Events StockSymbol Stock Value LastUpdate MSFT 41 2002-10-12 1:03:00 pm ORCL 11 1/4 2002-10-12 1:03:00 pm SUNW 9 1/2 2002-10-12 1:03:00 pm INTC 22 2002-10-12 1:03:00 pm IBM 65 2002-10-12 1:03:00 pm CSCO 11 1/2 2002-10-12 1:03:00 pm MSFT 41 1/8 2002-10-12 1:05:00 pm ORCL 11 1/8 2002-10-12 1:05:00 pm SUNW 9 2002-10-12 1:05:00 pm Generator Extending the platform VBS scripts Data Change s Events Event Provider File System Watcher SQL Server provider Event Provider Host Subscribers Subscriber Devices Subscriptions Notifications Generator SQL Match Rule Distributor XSLT CF Email XSLT Custom CF Custom EP External Delivery Content Formatter Content Format Notification 원시 데이터를 변환함 Built-in: XSLT Content Formatter 왜 content formatter을 해야 하는가 ? 단순히 xslt formatting만으로 부족 (complex html, external formatting dependencies, compute operations) 하나의 단일 소스 코드내에서도 다양한 디바이스/언어를 지원해야 함 성능 Distributor에 의해 Managed code dll이 로드됨 . Cached in memory (stop, disable, update, enable, start) Exposes 3 methods: Initialize, FormatContent, Close Distributor Content Formatting Example Notifications Notification Fields City: Seattle HighTemp: 54 LowTemp: 45 public string FormatContent( string subscriberLocale, string deviceTypeName, RecipientInfo recipientInfo, Hashtable[] rawContent) { string output; foreach (Hashtable notification in rawContent) { if (subscriberLocale == “en-US”) { output = String.Format( "Forecast for {0} is: {1} F / {2} F", notification [“City”], notification [“HighTemp”], notification [“LowTemp”]); } else { output = String.Format( “Forecast for {0} is: {1} C / {2} C”, notification [“City”], (notification [“HighTemp”]-32)/9, (notification [“LowTemp”]-32/9); Subscribers Subscriptions Subscriber Devices Recipient Info SubscriberId: patricet SubscriberLocale: en-US DeviceType: Phone } } } return output; Forecast for Seattle is: 54 F / 45 F Extending the platform VBS scripts Data Change s Events Event Provider File System Watcher SQL Server provider Event Provider Host Subscribers Subscriber Devices Subscriptions Notifications Generator SQL Match Rule Distributor XSLT CF XSLT Email File HttpExt .NET Alerts * Custom CF Custom EP External Delivery SMS DP Custom Delivery Protocols Example: SMS Support Delivery Protocols 다양한 포인트를 위한 notification을 보냄 Built-in: SMTP, File, .NET Alerts * SMS 파트너들.. Configuration file: 프로토콜 정의 추가 Protocol Name 그 해당 프로토콜을 사용할 delivery channel 정의 추가 ProtocolProviderClassName, AssemblyName, postURL, Encoding… 1:1, 1:many Application Definition File User name / password to authenticate with the end point Parameters required to build the envelope Delivery Protocol MobileSys Content Formatter MSFT is trading at $41 Application Definition File: Protocol DeviceAddress: +1 425 123 4567 UserName: myCompany Password: xxxxxxx MobileSys Delivery Protocol DeviceAddress:+1 425 123 4567 UserName: myCompany Password: xxxxxxx postURL: http://www.mobilesys.com/…. ProtocolProviderAssembly:mobilesys.dll MSFT is trading at $41 Configuration File: DeliveryChannel postURL: http://www.mobilesys.com/…. ProtocolProviderAssembly: mobilesys.dll Deployed Architecture Subscription management applications SQL NSMain and Application Databases NS Services: Event Provider, Generator, Distributor Deployment Configurations A. Single System B. Two Systems NS Service NS Service SQL Server 50% SQL Server 50% C. Four Systems NS Service NS Service (backup) SQL Server (backup) SQL Replication SQL Server Notification Services Why use SQL Notification Services? Time To Market ( 구축이 용이함 ) Notification Services framework 내에서 사용자 Customizing이 가능 You focus on application, not platform design 성능 이벤트와 Subscriptions 의 Match를 SQL를 이용하여 효율적으로 할수 있음 Notification Application은 완벽한 ‘Internet’ 확장 솔루션임 Subscriptions Events SQL Join Notifications 사례 Bank one : 미국 bank 계좌와 자금관리 서비스 고객에 delivery CenterPost CenterPost를 사용하여 음성,음성메일,FAX, 전자메일, SMS/유무선 및 .NET알림을통해전달 Clalit HMO : 이스라엘 건강관리 회사 전국의 환자와 의사들에게 중요한 진단 결과를 제공하여 치료와 서비스 개선 Consorzio Gruppo Monte dei Paschi di Siena : 이탈리아 금융기관 인트라넷 어플리케이션은 워크플로우 생산성과 주요 문서 처리 관리를 개선 사례 Dresdner Kleinwork Wasserstein : Alianz Group 은행의 백오피스 시스템에서 발생하는 광범위한 이벤트를 모니터링 하고 증권인수업자와 거래자들이 온라인 알림을 제공함 MobileSys 무선장치를 이용하여 안전하고 신뢰성있는 메세징을 통해 모든 무선 장치로 중요한 데이터를 전송할수 있게 해주는 전달 인프라를 제공 Nasdaq.com : 미국 최대 증권 거래소 가입자들이 각 개인에게 관련된 금융 데이터 변동에 관한 개인화된 알림을 수신할수 있도록 하여 시장 변화에 대한 고객인식을 향상시키고 중요한 정보를 신속하게 제공 New York Times : 부동산 알림 서비스 새로운 부동산 목록에 대한 신속한 알림 서비스 제공 Summary SQL Server Notification Services 다양한 알림 어플리케이션을 위한 플랫폼 다양한 프로그래밍 모델 A scalable server for deployment Technology 구독정보에 대한 이벤트 Match XML파일내에서 모든 정의가 가능 SQL Server의 모든 기능을 Fully 사용가능 질문