Download presentation
Presentation is loading. Please wait.
2
강성재 Developer Evangelist Microsoft Korea D&PE 개발자 관점에서 바라본 SQL Server 2005 (1)
3
왜 64-bit 인가 ? 4GB 의 메모리 한계 극복 동일한 Windows 환경 빠른 시장 접근성 기존 Windows 개발 기술 보전 신뢰성과 유용성 향상 성능과 확장성 향상 동일한 Windows 환경 관리할 시스템의 수 감소 Total Cost of Ownership (TCO) 감소 기존 Windows 관리 기술 보전
4
64-bit Architectures x64 (64-bit Extensions) IPF (Itanium Processor Family) 64-bit extensions 은 x86 명령 셋을 근간으로 하고 있다 고객은 최신 64-bit 기술의 장점과 기존 32-bit 애플리케이션 투자를 보전 할 수 있다 Explicitly Parallel Instruction Computing (EPIC) 에 근간을 둔 아키텍처 고객은 Windows 플랫폼을 통해 높은 수준의 확장성을 얻을 수 있다
5
Platform Direction 확장성 애플리케이션 운용 폭 32-bit x86 64-bit x64 64-bit IPF
6
64-bit 의 힘 ! RDBMS Scientific computing Data modelling Physical system simulation CAD/CAE Imaging Data mining ERP / Manufacturing / Process modelling Shared application hosting Server consolidation Online Game Server ( 특히 한국 !!!)
7
목차 SQL Server 2005 살펴 보기 Transact-SQL 강화 XML 과 XQuery 서비스 브로커 웹 서비스 지원
8
1. SQL Server 2005 살펴 보기 SQL Server 2005 컴포넌트 새로운 데이터베이스 개발 기능 SQL Server 2005 의 개발 지원 도구 SQL Server Management Studio
9
SQL Server 2005 컴포넌트 SQL Server 2005 Relational Database Engine.NET CLR Analysis Services Native HTTP Support Service Broker Replication Reporting Services Full-Text Search Notification Services Data Transformation Services
10
새로운 데이터베이스 개발 기능 Transact-SQL 강화 XML 지원 메시지 기반 서비스 HTTP 지원 알림 (Notification) 서비스 CLR 통합 리포팅 서비스 SQL 관리 객체
11
SQL Server 2005 의 개발 지원 도구 SQL Server Management Studio Business Intelligence Development Studio sqlcmd Visual Studio designers
12
데이터베이스 개발 환경 통합 SQL Server Management Studio
13
데모 데모
14
2. Transact-SQL 강화 데이터 타입 강화 데이터 정의 언어 강화 데이터 조작 언어 강화 구조적 예외 처리
15
데이터베이스 DDL 문 테이블 DDL 문.NET Framework 프로그래밍 테이블과 인덱스 분할 인덱싱 강화 보안 DDL 문 서비스 브로커 문 DDL 트리거와 이벤트 알림 데이터 정의 언어 강화
16
데이터 조작 언어 강화 OUTPUT 키워드 PIVOT,UNPIVOT APPLY Ranking 기능
17
OUTPUT 키워드 Declare a table-valued variable 1 1 Use OUTPUT to return details to the variable 2 2 DECLARE @InsertDetails TABLE (ProductID int, InsertedBy sysname) INSERT INTO Stock.ProductList OUTPUT inserted.ProductID, suser_name() INTO @InsertDetails VALUES ('Racing Bike', 412.99) SELECT * FROM @InsertDetails
18
CustBikeChain Mike82 Lisa37 PIVOT 과 UNPIVOT PIVOT – 값을 컬럼으로 변환 CustProdQty MikeBike8 MikeChain2 LisaBike3 LisaChain7 SELECT * FROM Sales.Order PIVOT (SUM(Qty) FOR Prod IN ([Bike],[Chain])) PVT SELECT * FROM Sales.Order PIVOT (SUM(Qty) FOR Prod IN ([Bike],[Chain])) PVT SELECT Cust, Prod, Qty FROM Sales.PivotedOrder UNPIVOT (Qty FOR Prod IN ([Bike],[Chain])) UnPVT SELECT Cust, Prod, Qty FROM Sales.PivotedOrder UNPIVOT (Qty FOR Prod IN ([Bike],[Chain])) UnPVT CustBikeChain Mike82 Lisa37 CustProdQty MikeBike3 MikeChain2 MikeBike5 LisaBike3 LisaChain3 LisaChain4 UNPIVOT – 컬럼을 값으로 변환
19
DML Enhancements 데모 데모
20
3. XML 과 XQuery XML 데이터 타입 XML 스키마 XQuery
21
데이터베이스와 XML 장점 : 구조적 데이터와 반구조적 데이터를 위한 단일 스토어 관계 모델에 다양한 내용 정의 적절한 데이터 모델 선택 구조적 데이터와 반구조적 데이터를 위한 단일 스토어 관계 모델에 다양한 내용 정의 적절한 데이터 모델 선택 기능 : XML Indexes XQuery 기반의 데이터 구조 ( 검색, 복구 ) XQuery 기반의 변경 ( 조작 ) XML 스키마 지원 : Typed XML: 유효한 스키마 Untyped XML: 유효하지 않은 XML Typed XML: 유효한 스키마 Untyped XML: 유효하지 않은 XML
22
XML 데이터 타입 CREATE TABLE xml_tab ( the_id INTEGER, xml_col XML) CREATE PROCEDURE transform ( @x XML, @y XML OUTPUT) AS... CREATE FUNCTION simple ( @x NVARCHAR(max)) RETURNS XML AS DECLARE @a XML SET @a = @x... RETURN @a
23
XML column XML column 은 well-formed XML 을 저장 –XML 1.0 추천
24
XML 스키마 CREATE XML SCHEMA COLLECTION cvSchemas AS N' <xsd:schema targetNamespace=...' CREATE XML SCHEMA COLLECTION cvSchemas AS N' <xsd:schema targetNamespace=...' XML schema collection 생성
25
데이터베이스와 XML Schema 데이터베이스 내의 XML 데이터는 XML 스키마를 사용해야 한다 XML SCHEMA COLLECTION 생성 –collection 이름은 XML 인스턴스와 연동 XML SCHEMA COLLECTION 생성은 순수 스키마 요구 CREATE XML SCHEMA COLLECTION geocoll '<xs:schema... targetNamespace= urn:geo>... ' literal schema targetNamespace CREATE TABLE Locations ( location xml(geocoll)... ) reference to schema collection
26
XML 인덱스 XML column 기반의 XML 인덱스 생성 –Column 에 대해 XML 질의 최적화 – 먼저 primary XML 인덱스 생성 (node table) – 세 개의 특별한 인덱스 타입 VALUE –content 질의 최적화 PATH –structure 질의 최적화 PROPERTY –name/value 최적화 CREATE TABLE xml_tab ( id integer primary key, doc xml) GO CREATE PRIMARY XML INDEX xml_idx on xml_tab (doc) GO
27
XQuery XQuery 는 Xpath 의 서브셋 –XPath 또는 FLWOR 표현 사용 – 대부분 유요한 XPath 문장은 XQuery 문장과 같다 (: this is a valid XQuery :) /people/person[age > 30] (: so is this FLWOR expression :) for $p in /people/person where $p/age > 30 order by $p/age[1] return $p/name
28
FLWOR 표현 XML 질의는 FLWOR 표현 – 다섯 타입의 절로 구성 FOR LET (SQL Server 2005 또는 System.Xml 지원하지 않음 ) WHERE ORDER BY RETURN
29
Martin Gudgin 33 short Simon Horrell 40 short Mark Szolkowski 30 medium XML 문서 예
30
XML 데이터 타입 메소드 query 메소드 사용 value 메소드 사용 columns 과 variables 관계 결합 exist 메소드 사용 modify 메소드 사용
31
서비스 브로커 서비스 지향 아키텍처 (SOA) 란 ? 서비스 브로커 시스템 아키텍처 서비스 브로커 통신 아키텍처 서비스 브로커 사용
32
서비스 지향 아키텍처 (SOA) 란 ? 서비스 간의 느슨한 통신 Message Queuing Web Services SOA 예 :
33
서비스 브로커 시스템 아키텍처 SQL Server Object Description Message TypeDefines valid messages for exchange between services Contract Specifies type of messages and their direction in a conversation, initiator or target QueueStores messages before sending and after receipt as result set Service Program The part of a service broker application that reads messages from a queue and processes them. ServiceAddressable endpoint for service communication Service program Contract Service Queue Message type
34
서비스 브로커 통신 아키텍처 ConstructDescription Dialog Conversations that involve messages being sent and received by two services, ensuring exactly-once-in- order (EOIO) delivery Dialog continues until explicitly ended or error occurs Service Instance Identifies a group of related conversations with a unique identifier Only one service program at a time can read messages with the same service instance identifier Route Used to direct conversations between different SQL Server instances A combination of a network address and an optional service name Remote Service Binding Associates a local database user with the name of a remote service
35
서비스 브로커 사용 데이터베이스 내의 서비스 브로커 사용 서비스 구현 Contracts 생성 Queues 생성 Services 생성 Message 전송 Message 수신
36
데이터베이스 내의 서비스 브로커 사용 서비스 브로커 상태 점검 1 1 서비스 브로커 사용 가능 2 2 SELECT is_broker_enabled FROM sys.databases WHERE database_id = db_id() SELECT is_broker_enabled FROM sys.databases WHERE database_id = db_id() ALTER DATABASE AdventureWorks SET ENABLE_BROKER ALTER DATABASE AdventureWorks SET ENABLE_BROKER
37
Services 구현 디자인 : Message types Contracts Queues Services Service program logic Message types Contracts Queues Services Service program logic
38
Contracts 생성 message 타입 생성 1 1 Contract 생성 2 2 CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas CREATE CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ( [//Adventure-Works.com/Expenses/ExpenseClaim] SENT BY INITIATOR, [// Adventure-Works.com/Expenses/ClaimResponse] SENT BY TARGET ) CREATE CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ( [//Adventure-Works.com/Expenses/ExpenseClaim] SENT BY INITIATOR, [// Adventure-Works.com/Expenses/ClaimResponse] SENT BY TARGET )
39
Queues 생성 CREATE QUEUE ExpenseQueue CREATE QUEUE ExpenseQueueWithActivation WITH STATUS = OFF, ACTIVATION ( PROCEDURE_NAME = ProcessExpense, MAX_QUEUE_READERS = 5, EXECUTE AS SELF) CREATE QUEUE ExpenseQueue CREATE QUEUE ExpenseQueueWithActivation WITH STATUS = OFF, ACTIVATION ( PROCEDURE_NAME = ProcessExpense, MAX_QUEUE_READERS = 5, EXECUTE AS SELF) activation parameters 명시 3 3
40
Services 생성 CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpenseQueue ( [//Adventure-Works.com/Expenses/ProcessExpense] ) CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpenseQueue ( [//Adventure-Works.com/Expenses/ProcessExpense] ) 통신 라이프타임에 대해 메시지 유지 여부 선택 4 4
41
Message 전송 dialog handle 변수 선언 1 1 dialog 통신 시작 2 2 Message 전송 3 3 DECLARE @dialog_handle uniqueidentifier BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ;SEND ON CONVERSATION @dialog_handle MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] (@msgString)
42
Message 수신 Message 저장을 위한 변수 선언 1 1 RECEIVE 문 호출 2 2 message 타입 체크 그리고 적절한 프로세스 3 3 만약 통신 종료이면, END CONVERSATION 호출 4 4 DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue IF (@msgType = '//Adventure-Works.com/Expenses/ExpenseClaim') -- process @msg … END CONVERSATION @conversation
43
추천서적 : Microsoft Press IT 전문가를 위한 고급 정보 최신 기술서적에 대한 정보는 여기서 참조하세요. www.microsoft.com/learning/books/
44
이 서적은 국내 대형서점에서 판매되며, 온라인 서점에서도 판매 됩니다. 추천서적 : IT 전문가를 위한 참고서적
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.