Track2_session41

advertisement
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 사용가능
질문
Download