온라인 트랜잭션 처리 및 의사 결정 지원
많은 응용 프로그램이 대개 다음과 같은 두 개의 데이터베이스 응용 프로그램으로 분류됩니다.
OLTP(온라인 트랜잭션 처리)
의사 결정 지원
이 응용 프로그램 유형은 데이터베이스 디자인에 큰 영향을 줍니다.
온라인 트랜잭션 처리
온라인 트랜잭션 처리 응용 프로그램은 데이터 변경을 관리하는 데 가장 적합합니다. 이 응용 프로그램에서는 대개 많은 사용자가 실시간 데이터를 변경하는 트랜잭션을 동시에 수행합니다. 일반적으로 사용자의 각 데이터 요청은 적은 수의 레코드를 참조하지만 이 중 많은 요청이 동시에 이루어집니다. 이러한 데이터베이스 유형의 예는 항공사 표 판매 시스템과 은행 트랜잭션 시스템입니다. 이 유형의 응용 프로그램에서 가장 기본적으로 고려해야 하는 것이 동시성과 원자성입니다.
데이터베이스 시스템에서 동시성 제어는 두 사용자가 같은 데이터를 바꿀 수 없도록 하거나 다른 사용자가 데이터 작업을 끝내기 전에는 데이터를 바꿀 수 없도록 합니다. 예를 들어 한 고객이 항공사 표 판매업자를 통해 비행기의 마지막 빈 좌석을 예약하기 시작하는 경우 다른 판매업자는 다른 고객에게 해당 좌석이 비었다고 말할 수 없습니다.
원자성은 트랜잭션의 모든 단계가 한 단위로 수행될 수 있도록 합니다. 한 단계라도 성공하지 못하면 나머지 단계도 수행되지 않습니다. 예를 들어 은행 트랜잭션은 고객의 당좌 예금 구좌에서 돈을 인출하여 저축 예금 구좌에 넣는 두 단계의 작업을 수행할 수 있습니다. 당좌 예금 구좌에서 돈을 인출하는 일이 성공하면 그 돈을 저축 예금 구좌에 넣거나 당좌 예금 구좌로 다시 넣는 작업을 할 수 있습니다.
온라인 트랜잭션 처리 디자인 고려 사항
트랜잭션 처리 시스템 데이터베이스는 다음을 고려해서 디자인해야 합니다.
적절한 데이터 배치
많은 사용자가 데이터베이스의 데이터를 수정하기 때문에 I/O 병목 현상은 OLTP의 큰 문제입니다. 데이터베이스를 디자인할 때에는 자주 사용하는 데이터 액세스 유형을 결정하고 자주 액세스하는 데이터를 그룹화해야 합니다. 파일 그룹과 RAID(Redundant Array of Independent Disks) 시스템을 사용하면 좋습니다.
짧은 트랜잭션을 사용하여 잠금 시간을 최소화하고 동시성을 향상
트랜잭션 중 사용자 상호 작용을 피하십시오. 가능하면 하나의 저장 프로시저를 실행하여 전체 트랜잭션을 처리하십시오. 트랜잭션에서 테이블을 참조하는 순서가 동시성에 영향을 줄 수 있습니다. 자주 액세스하는 테이블 참조는 트랜잭션 끝에 두어 잠금 시간을 최소화하십시오.
온라인 백업
OLTP 시스템은 지속적인 작업이 많아 작동 중단 시간이 적습니다. 즉, 시스템이 매일 24시간 작동됩니다. SQL Server 데이터베이스 엔진이 데이터베이스 사용 중 데이터베이스를 백업할 수는 있지만 백업 처리를 작업이 적은 시간에 수행하도록 일정을 잡아 사용자에게 미치는 영향을 최소화하십시오.
데이터베이스 정규화
중복된 정보를 줄여 업데이트 속도를 높이고 동시성을 향상시킵니다. 데이터를 줄이면 백업해야 할 데이터가 감소하므로 백업 속도도 빨라집니다.
기록 데이터 또는 집계된 데이터 최소화 또는 제거
자주 참조하지 않는 데이터는 개별 데이터베이스에 보관하거나 자주 업데이트되는 테이블로부터 기록 데이터만 있는 테이블로 옮길 수 있습니다. 그러면 테이블의 크기가 작아져 백업 시간과 쿼리 성능이 향상됩니다.
주의 깊은 인덱스 사용
인덱스는 행이 추가되거나 수정될 때마다 업데이트되어야 합니다. 자주 업데이트되는 테이블에서는 인덱스를 많이 사용하지 마십시오. 데이터베이스 엔진 튜닝 관리자를 사용하여 인덱스를 디자인하십시오.
OLTP 시스템에서 요구되는 많은 동시 사용자와 빠른 응답 시간을 처리할 수 있는 효율적인 하드웨어 구성
의사 결정 지원
의사 결정 지원 데이터베이스 응용 프로그램은 데이터를 변경하지 않는 데이터 쿼리에 가장 적합합니다. 예를 들어 회사에서 정기적으로 날짜, 판매 지역 또는 제품별로 판매 데이터를 요약하고 이 정보를 별도의 데이터베이스에 저장하여 경영 분석에 사용할 수 있습니다. 업무 의사 결정을 내리려면 사용자가 다양한 기준에 따라 데이터를 쿼리하여 빠르게 판매 추세를 결정할 수 있어야 합니다. 그러나 데이터를 바꿀 필요는 없습니다. 의사 결정 지원 데이터베이스의 테이블에는 인덱스가 많이 사용되고 여러 유형의 쿼리를 지원하기 위해 원시 데이터가 사전 처리되고 구성되는 경우가 많습니다. 사용자가 데이터를 변경하지 않기 때문에 동시성과 원자성이 문제가 되지 않습니다. 데이터는 정기적으로만 변경되고 바쁘지 않은 시간에 대량 업데이트가 수행되며 트래픽 시간이 적습니다.
의사 결정 지원 디자인 고려 사항
의사 결정 지원 시스템은 다음을 고려해서 디자인해야 합니다.
많은 인덱스 사용
의사 결정 지원 시스템은 데이터 용량은 많지만 거의 업데이트되지 않습니다. 따라서 인덱스를 많이 사용하여 쿼리 성능을 향상시키십시오.
데이터베이스 비정규화
미리 집계되거나 요약된 데이터를 사용하여 일반적인 쿼리 요구 사항을 만족하고 쿼리 응답 시간을 향상시키십시오.
별모양 또는 눈송이 스키마를 사용하여 데이터베이스의 데이터를 구성