전문가칼럼

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

DBMS 실시간 고성능 트랜잭션을 위한 ‘카이로스’

전문가칼럼
DBMS별 분류
DB2
작성자
dataonair
작성일
2003-01-01 00:00
조회
10093





DBMS 실시간 고성능 트랜잭션을 위한 ‘카이로스"

유영철/ 리얼타임테크 기술이사
(lewyc@realtimetech.co.kr)

MMDBMS(메인 메모리 데이터베이스 관리 시스템)는 데이터베이스의 일부 또는 전부를 메인 메모리에서 관리함으로써 디스크에 대한 접근 횟수를 줄여 실시간 고성능 트랜잭션 처리를 가능하게 하는 데이터베이스 관리 기술이다. 이 글에서는 MMDBMS와 기존 DBMS의 차이점과 특징적인 기능 및 응용사례를 위주로 소개한다.

최근 메인 메모리의 대용량화와 가격 하락으로 인해 각 산업부문의 메모리 적용에 큰 장애로 작용하던 문제들이 하나씩 해결되면서 메모리 활용에 대한 제한이 없어지고 있다. 특히 64비트 운영체계의 출현은 4기가바이트까지 제한적으로 사용하던 메인 메모리를 무제한으로 사용할 수 있게 하였다.

이와 함께 IT 시장의 상황은 급속도로 발전하여 대용량 데이터의 고속 트랜잭션 처리와 다양한 서비스가 지원되는 유연한 구조의 DBMS를 요구하는 반면, 오라클, 인포믹스 등 범용 DBMS는 데이터베이스를 디스크에 두고 사용함으로써 복잡한 알고리즘 처리와 과도한 디스크 I/O로 인하여 성능에 한계를 보이며, 고속의 정보 검색과 인증 처리가 요구되는 인터넷, 통신, 금융 등의 일부 특정분야 적용에는 어려움을 보이고 있다.

이에 대한 대처 방안으로 각 기업에서 시스템의 증설을 시도하기도 하지만 근본적인 해결 방법이 되지는 못한다. 따라서 구조적으로 빠른 처리와 CPU의 효율적 운용을 가능케 하고 현재의 시스템과 유연한 연동이 가능한 솔루션을 찾게 되었고, 그에 대한 적절한 해답으로 점차 MMDBMS가 관심의 대상이 되고 있다.


MMDBMS vs. 디스크 기반 DBMS

MMDBMS와 디스크 기반 DBMS의 차이가 단순히 데이터베이스를 메모리에 올리는 것이라면, 디스크 기반 DBMS의 버퍼를 충분히 크게 했을 경우에 MMDBMS와 같은 성능을 갖게 될 것이다. 그러나 MMDBMS는 디스크 접근 방법 및 질의 처리 알고리즘 최적화 등 데이터베이스 관리 기법과 시스템의 구조 등에서 디스크 기반 DBMS와 근본적인 차이를 보이고 있고, 이는 성능 향상의 결정적인 요인이 된다.

디스크 기반 DBMS는 디스크 사용의 효율성을 위하여 디스크 I/O 회수를 줄이면서 디스크 공간을 적게 사용하는 것에 초점을 맞춘 B+ 트리 구조의 인덱스 기법을 사용한다. 반면에 MMDBMS의 인덱스 구조는 계산 시간과 메모리 사용량을 줄이기 위한 목적으로 T 트리를 사용한다. T 트리 구조는 균형을 유지하기 위해 필요한 회전(rotation) 연산 비용을 메인 메모리 구조에 최적화한 것으로 데이터 검색뿐만 아니라 데이터 변경에 따른 인덱스 구조변경에 필요한 시간을 최소화하는 장점이 있다.

디스크 기반 DBMS는 디스크 I/O를 줄이기 위해 메인 메모리에 버퍼를 두어 최근에 접근한 데이터를 캐싱한다. 그러나 모든 데이터가 버퍼에 캐싱되어 있다고 하더라도 최악의 시나리오를 고려한 알고리즘을 사용할 수밖에 없기 때문에 데이터가 디스크에 존재한다는 가정을 배제할 수 없다. 따라서 이를 관리 및 처리하기 위해 복잡한 알고리즘의 사용으로 CPU 시간을 많이 사용하는 결과를 초래하게 되어 시스템의 부하를 증가시키게 된다.

이에 반해 MMDBMS는 메모리 내의 데이터만 고려하면 되기 때문에 알고리즘이 매우 간단하며 CPU의 시간을 최소화하여 시스템의 부하를 감소시킬 수 있다.

디스크 기반 DBMS는 기본적으로 디스크에 모든 데이터가 있다고 가정하기 때문에 필요한 데이터에 접근할 때 디스크의 해당 레코드를 메모리의 물리적 주소(physical address)로 매핑하는 주소 변환이 필요하다. 이러한 메모리 주소와 데이터베이스 주소 간의 매핑 시간은 아주 짧지만 고속의 데이터 처리 시에는 무시할 수 없는 비용이 된다. MMDBMS는 메모리 내의 데이터베이스를 메모리 포인터로 직접 접근할 수 있기 때문에 주소 변환의 비용은 물론, 디스크와 메모리간의 데이터 복사로 인한 디스크 I/O 횟수 자체를 획기적으로 줄일 수 있다.

tech-dbms1.gif

tech-dbms2.gif


카이로스의 기능 및 특징

멀티미디어 및 DBMS 관련 솔루션 전문회사인 리얼타임테크의 카이로스(Kairos)는 순수 국산 기술로 개발된 고성능/고가용성 MMDBMS이다.

카이로스는 순수 관계형 데이터 모델과 표준 질의 처리 규격인 SQL92를 지원하며, 로컬 데이터베이스뿐만 아니라 TCP/IP를 통하여 원격 시스템의 데이터베이스를 접근할 수 있는 클라이언트/서버 구조를 가지고 있다. 또한 엔진을 스레드화하여 운영체계의 컨텍스트 스위칭에 대한 부하를 최소화한다.

범용 DBMS의 응용을 수정없이 사용 가능하도록 ODBC, JDBC, SQL CLI, ESQL 등 다양한 프로그래밍 인터페이스를 지원하고, 오라클, 인포믹스, DB2, MS SQL 서버 등의 기존 DB와 실시간 동기화가 가능하다.

Active-Standby(이하 A-S), Active-Active(이하 A-A) 등 다양한 형태의 이중화를 지원한다. 특히 A-A형인 경우, 각기 다른 시스템에서 동시에 같은 데이터를 갱신할 때 데이터의 충돌이 일어날 수 있는데, 이를 사전에 방지하여 어떠한 경우에도 데이터의 일관성을 유지하게 한다. 또한 MMDBMS로서는 처음으로 분산 DB 처리 기능을 지원하며 대용량의 DB를 실시간으로 처리할 수 있도록 한다.

다음은 카이로스의 구성 요소에 대한 세부적인 사항이다. 카이로스는 핵심 컴포넌트인 MMDB와 저장 관리자, 표준 SQL 기반의 질의를 처리해 주는 질의처리기, 다양한 프로그래밍 환경을 지원하기 위한 인터페이스, 기타 유틸리티 등으로 구성되어 있다.

● 저장관리자

저장관리자는 카이로스의 핵심 컴포넌트로서 트랜잭션의 ACID 특성을 만족시키기 위한 트랜잭션 관리자, ECBH와 T-트리 인덱싱 기법 및 다양한 크기의 페이지 설정을 지원하는 메모리 관리자, 2PL 기반 동시성 제어 기법과 레이블/레코드 레벨의 잠금 기능을 갖춘 잠금 관리자, 변형된 ARIES 기반 회복 기법과 2단계 재적재를 지원하는 회복관리자 등으로 구성되어 있다.

● 질의처리기

표준 SQL(SQL92) 기반의 다양한 데이터 타입 및 질의어를 처리한다.

● 프로그래밍 인터페이스

프로그램에서 카이로스 DBMS의 여러 기능들을 사용하기 위한 인터페이스로 고속 응용을 위한 스토리지 API와 범용 응용을 위한 표준 인터페이스를 제공한다. 스토리지 API는 질의어 처리기를 거치지 않고 직접 저장관리자에 접근하는 인터페이스로 고속 데이터 처리를 요하는 응용 개발을 위한 인터페이스다. 표준 인터페이스에는 ODBC, JDBC, SQL/CLI, ESQL/C 등이 있으며, C/C++, Java 등 다양한 언어를 지원하고, 기존 DBMS와의 호환을 가능하게 한다.

● 유틸리티

범용 DBMS와 카이로스 간의 데이터 동기화, 시스템의 폴트 톨러런스를 보장하는 데이터 이중화, 서버 환경 설정 및 상태 모니터 등의 기능을 제공한다.


DB 동기화 기능

두 개의 이기종 DBMS 간에 데이터의 일관성(Consistency)을 유지하도록 하는 기술을 DB 동기화라고 한다. 일반적으로 두 개의 DBMS 간에 성해 사용하는 방법이다. 캐싱 서버와 범용 서버 사이의 동기화 등이 한 예이다.

그림 3은 동기화 시스템에 대한 기본적인 동작 과정을 보여준다.

동기화 기법은 동기화 시점에 따라 크게 두 가지로 나눌 수 있다. 하나는 비실시간 동기화 기법으로 흔히 LAZY 기법으로 불리고 다른 하나는 실시간 동기화 기법으로 EAGER 기법으로 불린다.

기본적으로 LAZY 기법이나 EAGER 기법의 동작 방식은 비슷하다. 구체적으로 가장 큰 차이는 그림 3에서 6번의 SUCCESS 응답 시기에 있다. LAZY 기법은 2번의 동작이 끝나고 3번을 하기 전에 SUCCESS 응답을 한다. 반면 EAGER 기법은 그림 3처럼 5번까지 완료가 되면 그 이후에야 SUCCESS 응답을 한다.

동기화는 데이터가 변경되는 질의어, 즉 테이블 생성 및 삭제, 데이터 추가, 삭제 및 변경 등에서만 필요하고 데이터 검색질의에는 동작하지 않는다. 따라서 LAZY 기법은 실시간으로 데이터의 일관성을 유지할 필요가 없으면서 빠른 응답시간을 요하고 주로 검색 질의를 하는 요금정산 및 통신분야에 적합하다. EAGER 기법은 검색질의에 대한 빠른 응답시간 이외에도 실시간으로 데이터의 일관성을 유지해야 되는 증권시장 등에 사용한다. 예외 상황에 대한 처리는 그림 3의 DB1에 데이터를 저장할 때 생기는 로그를 통해 어느 정도 안정적으로 대처할 수 있다.

특히 실시간 동기화가 중요한 EAGER 기법에서 동기화 시에 발생되는 더욱 심각한 예외 상황들에 안정적으로 대처하기 위해 분산환경에서처럼 TP 모니터와 2PC(2단계 확약: two phase commit)를 활용할 수도 있다.

tech-dbms3.gif

tech-dbms4.gif

tech-dbms5.gif


DB 이중화 기능

DB 이중화는 DB 시스템에서 데이터의 일관성을 유지하면서 무정지 시스템을 위해 이용된다. 개발된 이중화는 A-S 이중화와 A-A 이중화가 있다.

A-S 이중화는 Active 서버와 Standby 서버에서 하는 작업이 구분된다. Active 서버에서는 사용자의 트랜잭션을 수행하여 서비스를 제공한다. 트랜잭션 수행을 통해서 로그를 생성하고 이 로그를 직접 Standby 서버로 전송하는 작업을 한다. Standby 서버에서는 전송된 로그를 수신하고 수신된 로그에 대해서 REDO 혹은 UNDO 연산을 수행하여 자신의 데이터 이미지를 Active 서버의 데이터 이미지와 일치시킨다. Standby 서버는 사용자의 요구에 서비스를 제공하지 않고 단지 Active 서버의 백업용으로 데이터 이미지를 일치시키다가 Active 서버의 장애가 발생하면 자신이 Active 서버로 전환하여서 사용자 요구에 대해서 서비스를 계속 수행한다.

이런 이중화 방법은 로그 전송량에 의한 통신 비용이 아주 작지만 두 서버 간의 로그를 일치시키기 때문에 A-S 이중화 방법에만 적용할 수 있다. 그리고 절체 정책에 의해서 어느 시점에서 시스템이나 네트워크의 장애 같은 절체가 일어나더라도 데이터의 일관성을 유지하며 이로 인한 서비스의 단절을 최소화한다.

A-A 이중화는 A-S 이중화의 부족한 점을 보안할 수 있는 방법이다. A-S 이중화는 모든 사용자 트랜잭션이 Active 서버에서 처리되고 Standby 서버는 단지 Active서버의 데이터 이미지와 일치시키는 백업용으로 사용하고 있다. 그렇기 때문에 A-A 이중화에서는 이런 점을 보안하여 모든 사이트의 서버에서 사용자 트랜잭션을 처리하면서 각각의 사이트간 데이터의 일관성을 유지할 수 있는 방법이다.

A-A 이중화는 각각 사이트의 서버가 사용자 트랜잭션을 수행하기 때문에 A-S 이중화처럼 카이로스 서버에서 생성된 로그를 전송하여서 데이터의 이미지를 일치시킬 수 없다. 그렇기 때문에 각각의 사이트에서 각자의 사용자 트랜잭션을 수행하고, 수행 과정에서 생기는 실행 계획(질의어 처리를 수행한 후 발생하는 트랜잭션에 관한 각종 정보)을 RLOG로 재구성한 후 이중화하고 있는 모든 상대방 서버에게 이 RLOG를 전송한다. 그리고 RLOG를 수신한 사이트는 사용자 트랜잭션과 같은 형태로 이를 수행함으로써 데이터의 일치성을 보장한다. 하지만, 모든 사이트에서 생성된 RLOG를 서로 송수신하기 때문에, 다른 사이트의 서버에서 동일한 레코드를 참조하는 트랜잭션을 수행할 경우에는 데이터 불일치가 발생할 수 있다. 본 A-A 이중화는 이런 문제를 해결하기 위해서 GLM(Global Lock Manager)을 두어서 참조되는 레코드에 대해서 GLM에 등록함으로써 동일한 레코드에 대한 트랜잭션 수행을 사전에 막고 있다.

tech-dbms6.gif


분산 DB 처리 기능

응용 환경의 변화에 따라 데이터베이스 관리 시스템도 응용에서 사용하는 데이터의 특성에 따라 변화한다. 최근의 응용 환경을 보면 시스템의 구조가 복잡해지고 처리하는 데이터의 양이 기존에 비해 급격하게 증가하고 있고 고속 처리를 요하고 있다. 이러한 대용량의 데이터 처리 외에 초고속망의 보급으로 인해 관리 데이터 및 시스템이 분산되는 요구가 급격히 증가하고 있다.

데이터를 분산하여 관리할 때 이에 대한 복잡도는 일반적 데이터에 비해 급격하게 증가한다. 우선 데이터의 특성에 맞게 각 사이트에 분산되도록 최적화된 분산 방법을 결정해야 하고, 분산 데이터는 전체적으로 일관성 및 안정성을 가져야 한다. 또한 분산된 데이터의 위치 및 데이터의 메타정보를 관리하는 기능이 필요하게 된다.

리얼타임테크에서는 이러한 분산 데이터의 요구사항을 만족하며 대용량 데이터의 고속처리 응용 지원을 위한 분산 에이전트 시스템을 개발했다. 그림 6은 분산 에이전트 시스템의 구성도를 보여준다.

분산 에이전트 시스템의 사이트 구성은 분산 클라이언트의 요구를 처리하기 위한 분산 처리 사이트와 분산 에이전트 시스템을 구성하고 있는 지역 사이트들로 구성되고, 분산 에이전트 시스템은 부하 분산 기능, 분산 질의 처리 관리자, 분산 트랜잭션 관리자, 분산 연결 관리자 등으로 구성된다. 그리고, 지역 사이트 장애 발생 시 서비스가 멈추지 않도록 하기 위해 이중화가 되어 있다. 또한, 분산 에이전트 시스템을 사용하여 응용 개발이 쉽도록 하기 위해 JDBC, ODBC, CLI, ESQL/C 등 여러 표준 인터페이스를 제공하고 있다. 분산 응용 개발을 하는 개발자가 쉽게 카이로스의 분산 기능을 사용할 수 있도록 하였다.

그럼, 분산 에이전트 시스템에서 분산질의를 처리하는 과정을 살펴보자. 그림 7은 분산질의 처리하는 과정을 보여준다. 클라이언트로부터 전달된 질의를 받은 후 파싱과정을 통해 파스트리를 생성하고, 등록된 사이트 및 분할 데이터 정보가 있는지 확인한 후 해당 지역사이트에 질의를 전달하여 수행하고 결과를 클라이언트에 전달한다.

이러한 분산 에이전트 시스템의 특징은 다음과 같다.

- 분산 데이터 정보관리가 용이하다.
- 분산 트랜잭션의 ACID 성질을 보장한다.
- 지역사이트에 대한 투명성(transparency)을 제공한다.
- 지역사이트에 데이터를 분산함으로써 부하가 분산된다.
- 표준 인터페이스를 통해 프로그래밍이 쉽다.
- 복제 데이터(replica)는 지원되지 않는다.

카이로스에서 제공하는 분산 기능은 복제 데이터(replica) 관리 등 분산 데이터베이스에서 요구하는 모든 기능을 만족시키지는 않 등) 외에 분산 데이터베이스 기능 지원을 하는 DBMS가 전무한 가운데 리얼타임테크에서 MMDBMS 기반 분산 기능을 개발하였다는 것은 분산 기술의 확보와 MMDBMS의 응용분야 확대 측면에서 가치가 있다고 하겠다. 이를 통해 카이로스는 일반 응용뿐 아니라 고도화된 분산 응용 시스템 개발자들에게도 최적의 솔루션이 될 것이다.

tech-dbms7.gif

tech-dbms8.gif

tech-dbms9.gif


카이로스 활용 모델

고성능 MMDBMS인 카이로스의 활용 모델은 크게 두 가지가 있다.

첫째, 데이터의 용량이 테라바이트급 이상인 대용량 데이터베이스에서 일부 데이터에 대한 집중적인 접근이 이루어는 경우의 성능 저하를 해결하는 보조형 데이터베이스 시스템으로 활용하는 것이다. 이 경우 디스크 기반 DBMS의 캐시 서버 역할을 수행하는 것으로 인증 서버 등에서 그 활용 예를 찾아볼 수 있다.

다음은 카이로스를 독립형 테이터베이스 시스템으로 활용하는 것이다. MM DBMS의 특성을 살려 동시 접근 빈도수가 높고 기가바이트급 이하의 데이터를 처리하는 시스템에서 병목 현상을 해결하는 모델로 활용할 수 있다.

카이로스가 주로 활용될 수 있는 분야는 인터넷 검색이나 도서정보 검색 등 고속 검색 분야와 이동통신 기지국 및 기지국 제어/HLR/지능망 VOIP 게이트웨이 등 통신분야, LBS/모바일 응용 서버 등 모바일 서비스 분야, 공장제어/ITS/IBS/망관리 시스템 등 실시간 원격 모니터링 분야, HTS/ CRM 등 금융·증권 분야 등이다.

tech-dbms10.gif

tech-dbms11.gif

tech-dbms12.gif


응용 사례

● 증권시세 실시간 처리

증권회사의 초기 HTS(Home Trading System)는 빠른 응답을 위해 범용적인 RDBMS 대신 C-ISAM으로 작성된 것이 대부분이다. 그러나 C-ISAM은 DBMS의 유연성 및 관리의 편의성 등에 문제가 발생하기 때문에 MMDBMS인 카이로스로 대체하게 되었다. 카이로스로의 대체는 C-ISAM에 비해 빠른 성능은 물론 동시 사용자수 확장이 가능하게 되어, RDBMS의 장점과 C-ISAM의 장점을 통합하는 효과를 거뒀다.

● 서지정보 검색 시스템

서지정보의 경우 방대한 양의 데이터가 데이터베이스에 저장되어 있지만 실제로 사용자들이 주로 검색하는 것은 요약정보이다. 따라서 검색 빈도가 높은 요약 정보를 MMDB에 상주시켜 전체 검색 처리 속도를 개선함으로써 성능 향상 효과를 가져올 수 있다. 전체적인 데이터는 디스크 기반의 DBMS에 저장하고, 색인정보와 간략정보에는 카이로스를 도입함으로써 기존 R-DB 기반 시스템에 비해 평균 7배 정도의 성능 향상 효과를 가져왔다(검색 처리 속도 15배 향상).

● 워게임

육군교육사령부에서 개발 중인 워게임은 400만 개의 레코드에서 조건에 맞는 약 15만 개를 선택하는 클라이언트 20개를 동시에 수행시킬 때 모두 1초 이내의 응답시간을 만족시켜야 하는 고속 데이터 처리를 요구한다. 이러한 조건을 만족시키기 위해 워 게임용 DB 서버로 카이로스 DBMS를 선택했다(2004년 이후 실전배치).


맺으면서...

현대 IT 산업사회의 발달은 모든 정보의 실시간 처리를 기본적으로 요구하고 있고, 대용량 데이터의 안정적 저장을 위한 디스크 최적화 기반의 RDBMS 시장의 발전과 함께 MMDBMS에 대한 요구는 점점 더 커져가고 있는 실정이다.

순수 국산 기술로 제작된 MMDBMS인 카이로스의 가장 큰 특징은 모든 데이터가 디스크에 있지 않고 메인 메모리에 상주하고 있으며, 상대적으로 가벼운 엔진 구조 및 최적화된 알고리즘을 이용하여 전체적인 질의 처리속도를 빠르게 함으로써 일반 디스크 기반의 상용 RDBMS에 비해 좋은 성능을 보여준다는 것이다.

카이로스는 특히 고성능의 트랜잭션 처리를 요구하는 분야에 효과가 클 것으로 예상된다.


제공 : DB포탈사이트 DBguide.net