블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

DB VM에 올릴 때 첫번째로 고려할 사항은 수직적 확장성이다. 수평적인 확장성은 DBMS 자체가 제공하는 클러스터 기능을 이용해야 한다. (MS SQL의 경우 수평 확장 불가, ORACLE의 경우 RAC를 이용하여 수평확장 가능). 만약에 DBMS 자체 클러스터링에 대한 확장이 불가능하다면 애플리케이션 단에서 Database Sharding등을 이용하여 확장을 하는 안을 고려할 수 있다.

수직적 확장의 경우 현재까지 Hyper-V가 최대 CPU 4 코어까지만 지원하기 때문에, 더 이상의 용량이 필요한 경우 분리된 Physical Machine을 사용하는 방법을 사용해야 한다.

 

DBMS VM에 올릴 경우 가상화에 대한 Cost로 인하여 성능이 떨어지는데, 그 중에서 성능에 가장 큰 영향을 미치는 것이 Disk에 대한 부분이다. DB VM에 배포할 때 Disk에 대해서 아래와 같이 3가지 옵션을 선택할 수 있다.

       Dynamic Size VHD : 가상 디스크의 사이즈를 동적으로 지정하여 Runtime에서 변경되도록 하는 옵션

       Fixed Size VHD : 가상 디스크의 사이즈를 정해놓고, 공유하는 방안

       Pass-through Disk : 물리적인 디스크를 직접 VM에 마운트 하는 방안

 

먼저 Fixed Size VHD Pass-through Disk (이하 PTD)의 성능 차이를 보면

 

Random IO의 경우 Read/Write 모두 큰 차이는 없고 Sequential Write 부분에서 Fixed Size Disk 가 성능이 떨어지는 것을 볼 수 있다.

일반적인 OLTP성의 트렌젝션 처리 성능을 비교해보면


 1.       Baseline: a native Windows Server 2008 environment with Hyper-V role disabled. The virtual network switch is not turned off.

2.       Root partition: a root partition in Windows Server 2008 with Hyper-V enabled.

3.       VM_PT: a guest virtual machine configured with pass-through disks, four logical processors, and 14 GB RAM.

4.       VM_VHD: guest virtual machine configured with fixed-VHD disks, four logical processors, and 14 GB RAM.

5.       Overhead is calculated by comparing with Baseline ((Baseline Batches/CPU – VM Batches/CPU)/ Baseline Batches/CPU)

위의 테스트 결과와 같이 전혀 가상화를 하지 않은 상태 (Baseline) 대비 PTD를 사용했을 때와 Fixed Size VHD의 성능을 비교하면 10~20% 정도의 차이가 나는 것을 볼 수 있고, Fixed Size VHD PTD사이의 차이는 소량의 트렌젝션에서는 PHD가 약간 우세를 나타내며, 대량의 트렌젝션에서는 큰 차이가 없는 것으로 나타난다.


다음 자료는 하나의 MS SQL 인스턴스가 독립된 PTD를 사용하고, 다른 하나는 Fixed Size VHD를 사용하는데, 해당 디스크 볼륨이 다른 VM과 공유되는 상황에 대한 비교이다.

위의 표에서와 같이 Dramatic한 성능 차이는 나지 않는다.

 

결론적으로 PTD Fixed Size VHD 사이의 성능 차이는 미미하기 때문에 성능 최적화 측면에서는 PTD를 공간 활용면에서는 Fixed Size VHD를 사용한다.

 가상화에 올린 DB Physical 서버에 직접 올린 DBMS강의 성능 차이는 약 10~20% (가상화로 인한 오버헤드)정도로 판단하고 디자인에 참고해야 하며, 가상화에 올릴 시에는 최대 4개의 코어 까지만 지원하기 때문에 4 코어 이상의 성능이 필요한 경우 가상화 환경이 아닌 분리된 DBMS 하드웨어를 사용해야 한다.

(분석 리포트 출처: http://www.microsoft.com/hosting/dynamicdatacenter/Resources.html#SQLServer_)


OLAP 튜토리얼

아키텍쳐 /BI | 2010.05.26 16:21 | Posted by 조대협
http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSAS&strSearchCategory=%7Cs_name%7Cs_subject%7C&intSeq=1713

MS SQL을 이용한 OLAP 강의.
한글이라서 쉽습니다.

'아키텍쳐  > BI' 카테고리의 다른 글

데이타 분석 계층 아키텍쳐  (0) 2012.10.14
OLAP 종류  (0) 2010.05.27
OLAP 튜토리얼  (0) 2010.05.26
데이타 웨어하우스 프로젝트 프로세스  (0) 2010.05.24
BI에 대한 링크 모음  (0) 2010.05.19

MS SQL Replication 아키텍쳐

엔터프라이즈 솔루션/MS-SQL | 2010.04.28 17:44 | Posted by 조대협



MS SQL 데이타 베이스간의 실시간 데이타 복제를 위해서 "Replication"이라는 기능을 제공한다.

보면, Oracle Golden Gate, IBM Info sphere, Quest Shareflex,MySQL geo replication 비슷한 CDC 기능이다.

Replication 방식은 크게 두가지로 나뉘어 지는데, Snapshot replication TransactionalReplication이다.

 

  1. Snapshot Replication

복제 방식은 간단하게 생각하면 Source 데이타 베이스의 내용을 Export해서 Target Import하는 개념으로 생각하면 된다. 데이타 베이스에 대한 복제를 시작하기 전에 초기 데이타를 적재 하거나, 또는 업무가 없을때 데이타를 적재하거나 주기로 변경이 되는 곳에 사용할 있다.

Snapshot Agent 의해서 주기적 또는 스케쥴에 따라서 데이타를 Export하면여 파일로 저장되고 파일은 Distributor 서버로 FTP,윈도우 파일공유,HTTP등을이용하여 전송된다. Distributor 1 이상의 수신 데이타베이스에 데이타를 전송하여 데이타를 반영한다.

 

  1. Transactional Replication

이게 전통적인 CDC 방식이다. Transaction Log Log Reader 캡춰해서 Distributor 통해서 타겟으로 보내는것인데. 재미있는 것중에 하나가 Capture 최소 단위가 하나의 트렌젝션 이하라는 것이다. 최소 단위가 트렌젝션 하나하나를 잡는게 아니라 트렌젝션이 경우 하나의 트렌젝션을 잘라서도 Capture 가능하다.

 

오라클 연동

 

그외에 흥미로운것중 하나가, 송수신 DB 모두 오라클을 지원한다. TransactionalReplication 경우 오라클의 redo 로그를 잡는 것이 아니라 테이블에 트리거를 걸어서 데이타 변경 사항을 Interface table 넣은후, interface 테이블을 읽어서 반영하는 방식이고, 오라클과의 연결은 ADO.NET,OLEDB,ODBC 이용한다

'엔터프라이즈 솔루션 > MS-SQL' 카테고리의 다른 글

MS SQL Replication 아키텍쳐  (0) 2010.04.28
MS SQL 2008 Tutorial  (1) 2010.04.27

MS SQL 2008 Tutorial

엔터프라이즈 솔루션/MS-SQL | 2010.04.27 17:54 | Posted by 조대협
http://msdn.microsoft.com/ko-kr/library/ms167593(v=SQL.100).aspx

MS는 참 문서는 체계화 잘되어 있는듯.

'엔터프라이즈 솔루션 > MS-SQL' 카테고리의 다른 글

MS SQL Replication 아키텍쳐  (0) 2010.04.28
MS SQL 2008 Tutorial  (1) 2010.04.27