아키텍트2008. 8. 19. 17:25

SQL Server Data Services에 대해서는 앞의 글에 간략히 설명을 드렸기에 개요는 더이상 말하지 않겠습니다. 오늘은 SSDS에 대해 조금 더 자세히 설명해 보겠습니다.

SSDS의 이해

비즈니스 로직 Layer 정의 목적
Authority 컨테이너의 집합 계정, 보안등을 위해
컨테이너들을 조직화
"서울", "부산"
Container (컨테이너) 엔티티의 집합 컨텐츠, 쿼리의 목적으로 엔티티 조직화 "판매될 자동차들"
"제공된 서비스들"
Entity (엔티티) 단위 데이터 스토리지 단위 "판매될 자동차"로
필드명, 타입, 값으로 구성됨

Authority, Container, Entity의 체계로 데이터를 저장, 관리합니다.

1. 데이터 모델
    - 특정한 스키마를 필요로 하지 않고, 유연한 데이터 모델을 지원합니다. 엔티티가 최소의 단위 입니다. 엔티티는 프로퍼티를 통해 실제 데이터 값을 가지고 있습니다. 모든 엔티티는 서비스 메타데이타 프로퍼티와 사용자 지정 프로퍼티를 함께 가지고 있습니다. 고정형 엔티티는 없습니다. 서비스 형태로 사용되어져야 하는 특성 상 엔티티와 엔티티간에의 속성은 독립적으로 서로 영향을 미치지 않습니다. 특정 프로퍼티의 값의 데이터 유형은 엔티티 별로 서로 달라집니다. 프로퍼티의 표준화 및 엔티티간의 프로퍼티 유형은 어플리케이션 개발자에 의해 결정되기 때문입니다. 프로퍼티의 데이터 타입의 종류는 스트링, 바이너리, Boolean, Number, 날짜 등입니다.

2. 데이터 조작
    - Authority, 컨테이너, 엔티티에 생성/수정/삭제 등의 데이터 조작이 가능합니다. SSDS는 웹 사이트 인터페이스를 통해 SSDS의 계정 및 authority의 생성 및 삭제 기능을 지원합니다.  
  . 컨테이너의 생성 및 삭제 조작 가능 (수정 기능은 제공되지 않습니다)
  . 엔티티의 생성, 대체 및 삭제 가능
  . 직렬화 포맷의 단일 컨테이너의 검색/조회 가능
  . 직렬화 포맷의 단일 엔티티 검색/조회 가능

3. Query 언어
    - SSDS는 텍스트기반의 쿼리 언어를 지원하는데, C#을 이용한 LINQ 패턴도 가능합니다. 쿼리 언어는 간단한 필터링 시나리오가 가능하도록 해주는데, 단일 authority나 컨테이너를  아래와 같은 규칙에 의해 조회 가능합니다.
    . 특정 조건을 만족하는 컨테이너 값을 가져오기 위해 authority를 조회할 수 있음
      (이 경우 쿼리의 범위는 쿼리가 적용되는 단일 authority로 한정됨)
    . 특정 조건을 만족하는 엔티티 값을 가져오기 위해 컨테이너를 조회 할 수 있음
      (이 경우 쿼리의 범위는 쿼리가 적용되는 단일 컨테이너로 한정됨)
쿼리는 Boolean(AND, OR, NOT) 및 비교 연산자(<, >, <=, >=, !=, ==)를 사용할 수 있음.
모든 비교는 특정 형태로 이루어 져야 하는데, "프로퍼티 OP(연산자) 상수/파라미터"의 형태여야 함. 예를들면, SELECT e FROM e IN 엔티티 WHERE e["도시"] == "서울";

4. 리소스 기반의 쿼리
    - SSDS는 리소스 기반의 쿼리를 지원하는데, 리소스 쿼리는 엔티티, 컨테이너 등의 경로를 경유하여 값을 가져오는 것을 의미합니다. 예를들면, 다음의 REST URI는 특정 컨테이너를 의미하죠.
ChildrensBooksContainer1 beneath the authority:
mydomain.ssds.microsoft.com

만약 http://mydomain.ssds.microsoft.com/ChildrensBooksContainer1 이라는 URI를 입력했다면 해당 컨테이너에 들어있는 모든 엔티티값이 리턴값으로 돌아올 것입니다.

또, 한단계 더 나아가서 http://http://mydomain.ssds.microsoft.com/ChildrensBooksContainer1/SomeBook 이라는 REST URI 를 입력한다면 해당 컨테이너에서 일치하는 SomeBook, 즉 특정 엔티티가 리턴값으로 돌아오게 되는 거죠.

5. 보안
    - 보안은 계정, authority, 컨테이너 레벨에 적용됩니다. 계정은 Windows Live ID를 통해 보호되고, 각 authority는 "Secret Key"를 통해 read/write 접근 권한을 부여하며, 컨테이너 역시 "Secret Key"를 통해 read/write 권한을 부여합니다. 선택적으로 컨테이너는 외부에 읽기 권한을 부여하는 것이 가능합니다.

6. API
    - SSDS 서비스의 런타임은 웹서비스를 통해 이용 가능한데, 가장 중요한 방식은 RESTful 서비스 입니다. Authrity, 컨테이너, 엔티티는 모두 URI 주소를 통해 접근 가능합니다. 또한, SOAP 기반의 endpoint도 지원되는데, SOAP endpoint는 authority 까지만 지원됩니다.
현재까지는 XML이 주로 사용되는 문서 포맷인데, 이후에 AtomPub 등의 다양한 프로토콜이 추가 지원될 것으로 예정되어 있습니다. Visual C#, Visual Basic 등을 통해 LINQ Qurty 역시 사용 가능합니다.

Posted by 조이트리
아키텍트2008. 8. 19. 11:44
SQL Server Data Services (이하 SSDS)는 개발자들이 데이터베이스가 필요할 때 언제든지, 얼마든지 (크기) 사용할 수 있고, 고가용성 및 보안성을 갖춘 온디맨드 데이터베이스 서비스를 의미합니다. 즉, 전기, 수도처럼 원할 때 사용하고 서비스 비용을 지불하는 형태의 유틸리티 컴퓨팅 이라고 할 수 있죠.

특징은 크기에 제한없이 무한으로 사용할 수 있고 원할 때마다 확장 및 축소 가능하다는 점, 고객이 직접 인프라(서버, DBMS 등), 운영인력을 통한 관리 및 운영비를 감당할 필요가 없다는 점, SOAP과 REST 같은 웹 프로그래밍 인터페이스를 통해 웹 어플리케이션을 빠르게 프로비저닝(실제 쓸수 있게 적용)할 수 있다는 점과 사용이 쉽고 표준 기반의 인터페이스를 이용하여 개발하기 때문에 개발자들의 업무 부담이 줄어든다는 장점이 있습니다.

다음과 같은 고객에게 유용할 것 같은데요,
첫째, 대용량 데이터베이스가 필요한데, 초기에 큰 투자 없이 업무 시스템을 개발하려고 하는 고객
둘째, 데이터 사용량이 많고, 매쉬업 유형의 어플리케이션을 최소의 인프라 투자로 보안, 가용성, 관리용이성이
        필요한 개발자 및 파트너사
셋째, 규모가 크거나 공유가 필요한 협업 어플리케이션을 구축하려고 하는 고객

빠른 배포를 위한 어플리케이션 신속한 개발, 온디맨드 확장, 비즈니스에 사용가능한 정도의 SLA(Service Level Agreement) 등의 이점을 강조할 수 있겠네요. 아래 사이트를 통해 무료 베타 서비스가 가능합니다.
 http://www.microsoft.com/sql/dataservices/default.mspx

이후에는 SSDS를 이용한 어플리케이션 개발에 대한 글을 적어 보겠습니다.
Posted by 조이트리