본문 바로가기

SQL Server/SQL Server Tip & Tech

로그 DB 설계와 관리에 대한 컨셉 (슬라이딩 윈도우)

첫째, 로그를 DB에 적재하는 방법

1.     대량 로그이고 다음날 조회해도 되는 경우 => 로그를 파일로 쌓고, 필요한 것만 daily batch DB에 적재

2.     대량 로그이지만 실시간 조회가 필요한 경우 => 로그의 DB적재를 비동기 처리할 수 있는 미들웨어를 만듭니다.

3.     대량 로그가 아닌 경우 => Application Server에서 직접 DB INSERT 합니다.

 

둘째, DB에 적재한 로그 테이블의 용량을 관리하는 방법

1.     보통 슬라이딩 윈도우 기법을 사용합니다.

A.     테이블을 일자 기준으로 파티셔닝하고, 기준 일자가 지난 데이터는 파티션을 스위치해서... 데이터를 다른 테이블로 옮기는 방식입니다

B.      이 방식을 사용하면 대량 데이터를 옮기는 동안에도 해당 테이블에 Lock이 걸리지 않습니다.
슬라이딩 윈도우가 아니라면... INSERT ~ SELECT ~ 구문으로 데이터 복사하고, DELETE문으로 원본을 지워야하는데
...
원본을 지우는 동안 테이블에 Lock이 걸려... 시스템 장애를 초래할 수 있습니다
.
-
아래 링크를 참고하세요
.
http://msdn.microsoft.com/en-us/library/aa964122.aspx

 

2.     슬라이딩 윈도우의 응용

A.     어떻게 응용할 수 있을까요?
최근 로그는 비싼 디스크에 보관하고, 일정 기간이 지난 데이터는 싼 디스크로 옮길 수 있습니다
.
최종에는... 만료일자를 둬서 해당 기간이 초과하면 삭제할 수 있죠
.
구현이 번거롭지만... 슬라이딩 윈도우 기법을 사용해야하는 이유는.. 위에서 말씀드린 것과 같습니다
.
, 테이블을 잠그지 않음으로 해서... 이 무거운 작업을 아주 적은 부하로 가볍게... 온라인 중에 처리할 수 있기 때문이죠.

B.      그럼 비싼 디스크와 싼 디스크란 것은?
말그대로 DB에 붙어있는 하드디스크의 가격을 말합니다
.
 
SAS-RAID
로 구성한 디스크가 가장 비쌉니다. (메모리 디스크를 제외하면
^^)
반대로 단일 SATA 디스크가 가장 저렴하죠
.

보통 DB의 스토리지는 SAS-RAID로 되어 있을 겁니다
.
이 곳에는... 조회가 빈번한 최근 로그를 보관합니다. 서비스 내용에 따라 다르지만... 1개월 ~ 3개월까지가 되겠죠
?

그리고... 이 장비에 SATA 디스크를 추가합니다
.
사실 단일 디스크는 Falt Tolerance에 취약하기 때문에... SATA 디스크도 RAID로 구성하는 것이 바람직합니다
.
서버에 디스크 장착할 공간이 없다면... 외장형 SATA-RAID 스토리지를 구매해서 서버의 e-SATA포트에 연결할 수 있습니다
.
이 곳에는... 조회가 빈번하지 않은 예전 로그를 옮겨와 보관합니다. 보통 3개월 ~ 1 or 3 or 5 ^^ (빌링 데이터는 5년 보관합니다
.)

그리고 최대 보관기간이 초과된 데이터는 삭제
...

여기서... 데이터를 옮기고 삭제하는 것은... 자동화된 슬라이딩 윈도우 기법이 적용되어야겠죠. ^^