상세 컨텐츠

본문 제목

데이터베이스 모델링(무결성, 트랜잭션)

Database

by somiyuralove 2020. 5. 19. 21:50

본문

* 무결성 제약 정의

 

데이터베이스의 가장 중요한 역할 중 하나인 정보의 정확한 저장, 정합성을 유지하기 위해 데이터베이스에 무결성 제약 조건을 적용합니다.

 

각 테이블에 저장되어 있는 데이터의 무결성을 유지하기 위해서는 데이터베이스에서 지원하는 무결성 보존 기능을 이용하는 방법과 애플리케이션에서 로직에 의해 적용하는 방법이 있습니다.

 

데이터베이스에서는 데이터의 모든 무결성에 대해 책임지지 않으며, 다만 관계에 의해 파생된 각 데이터들의 정합성을 유지하기 위해 참조 무결성을 지정합니다.

 

기타 업무적으로 복잡한 관계에 의해 데이터 상호간에 유지해야 할 정합성은 애플리케이션 내에서 로직으로 처리합니다.

 

참조 무결성의 종류에는 크게 입력 참조 무결성, 수정 참조 무결성, 삭제 참조 무결성이 있습니다.

 

관계형 데이터베이스에서 참조 무결성을 유지하는 것은 테이블간의 관계에 의해 발생된 정보가 데이터의 입력, 수정, 삭제 과정에서 이질화되는 요소를 막아주어 데이터의 정합성을 유지합니다.

 

그러나 DBMS에 참조 무결성 원칙을 과다하게 적용할 경우 데이터베이스의 성능을 저하시키는 주요 원인이 될 수 있습니다.

관계에 의해 DBMS에 FK 제약(constraint)을 생성하면 DBMS 내부적으로 처리해야 할 작업이 많아지므로 테이블의 입력, 수정, 삭제할 때 처리 시간이 많이 걸립니다.

 

FK 제약이 테이블에 걸려 있으면 PK가 수정, 삭제될 때마다 관련된 테이블들을 참조 무결성 규칙에 의해 조회 작업을 하거나 FK가 입력, 수정, 삭제될 때마다 관련 테이블의 PK를 참조 무결성 원칙에 따라 점검합니다.

 

반대로 FK가 있는 테이블의 레코드를 생성하거나 변경하면 PK가 있는 테이블의 레코드가 존재하는지 검사합니다.

 

이와 같이 항상 데이터베이스 내에서 많은 작업이 발생하므로 데이터베이스에 로드가 걸려 성능을 저하시키는 이유가된다.

이런 이유로 인해서 제약을 사용하지 않는 경우도 많지만, 그러나 FK 제약을 사용하지 않는 곳은 데이터의 무결성이 보장되지 않고 깨져 있는 경우가 많습니다.

 

요즘 DBMS는 성능이 우수하므로 FK 제약을 사용해도 성능이 심각하게 저하되지 않으며, FK 제약을 사용하여 프로젝트를 진행하는 경우가 늘어나고 있습니다.

 

DBMS 내부적으로 이러한 추가적인 작업이 필요하므로 FK 제약이 걸려 있는 컬럼들은 가능하면 인덱스를 걸어줄 것을 권유합니다.

 

* 트랜잭션 분석

 

데이터베이스에의 트랜잭션을 분석하는 것은 테이블에 발생하는 업무 트랜잭션에 따라 데이터베이스의 용량을 산정하여 데이터베이스 구조를 최적화 하는데 주 목적이 있습니다.

 

데이터베이스에 무슨 트랜잭션이 어느 정도 발생하는지를 분석하고 그에 따라 트랜잭션 처리 방법을 결정하는 것은 데이터베이스 설계에서 고려해야 하는 중요한 요소입니다.

 

트랜잭션을 분석하는 과정을 논리 설계 단계에서 해야 하는지, 물리 설계 단계에서 진행해야 하는지는 논란이 많은 항목입니다.

 

실무에서 적용할 때에는 논리 설계 단계에서도 개략적으로 데이터를 분석하고, 이를 논리적 모델링에 적절히 활둉하며, 다시 물리 설계 단계에서 좀더 정확한 데이터를 산출하여 데이터베이스 용량 및 구조 설계에 이용하는 것이 적절한 작업 방법이 되었습니다.

 

1) 트랜잭션 정의

트랜잭션이란 데이터베이스에 행해지는 작업의 논리적인 단위입니다. 프로세스 모델링을 설명할 때 단위 프로세스란 일반적으로 한 사람이 한곳에서 그 일을 완성할 때까지 수행되는 것입니다. 그리고 그 단위를 트랜잭션 단위라고도 합니다.

 

트랜잭션 단위는 업무에 의해 판단되며, 데이터베이스 처리 방법에 의해서는 판단되지 않습니다. 그러나 업무적인 단위를 DBMS가 제공하는 트랜잭션 제어 문장을 이용하여 제어할 수 있습니다.

 

일반적으로는 SQL 문장을 수행한 후 커밋(Commint)이나 롤백(Rollback)을 이용하여 트랜잭션을 제어합니다.

 

2) 트랜잭션 분석

트랜잭션은 각각의 업무에서 처리하는 업무의 기본 단위이므로 데이터베이스 담당자가 하는 것이 아니라 애플리케이션을 분석, 설계하는 업무 개발 담당자가 분석합니다. 

트랜잭션을 분석할 때는 단위 프로세스와 크러드 매트릭스를 이용하여 트랜잭션 분석서를 작성합니다. 만약에 이와 같은 분석 산출물이 존재하지 않는다면 단위 프로세스에 해당하는 프로세스 목록을 선택하여 프로세스의 흐름을 따라 작업하도록 합니다.

 

3) 트랜잭션 분석도 이용

트랜잭션 분석도는 데이터베이스의 용량 산정 및 디스크 구성 전략의 근거 자료로 이용됩니다.

또한 웹 애플리케이션 서비스나 미들웨어를 이용하여 데이터베이스에 접근할 때 사용자의 트랜잭션을 분산시키는 전략적인 근거자료로 이용됩니다.

 

4) 용량 산정의 근거 자료로 이용

모든 테이블에 대해 데이터양을 초기에 알 수는 없습니다. 그러나 접수, 등록과 같이 업무가 시작되는 부분의 데이터양과 트랜잭션양은 도출되 수 있습니다. 즉, 알수 있는 테이블의 모든 생성 트랜잭션 수를 파악한 다음 그 테이블에서 연관된 테이블들의 생성 트랜잭션을 분석해 나가면 각 테이블에 저장되는 데이터양을 유추할 수 있습니다.

 

5) 디스크 구성의 이용

트랜잭션을 분석하면 각각의 테이블에는 얼마만큼의 프로세싱이 발생할 것인지 예측할 수 있습니다.

각 테이블에 발생하는 트랜잭션 수가 많을 경우, 디스크 입출력의 집중화 현상을 방지하기 위해 데이터베이스의 데이터파일을 여러 디스크에 나누어 설계하고, 그에 따라 테이블 공간도 여러 디스크에 나누어 설계하는 전략을 세울 수 있습니다.

 

6) 데이터베이스와 연결되는 채널의 분산

턱시도와 같은 미들웨어는 데이터베이스와 통신하기 위해 데이터베이스와 미리 세션을 맺고, 연결된 세션을 통해 업무 프로세스가 데이터베이스와 통신할 수 있도록 트랜잭션을 제어합니다. 각 채널별로 집중화된 트랜잭션을 분산시킴으로써 이와 같은 대기 현상이나 에러 현상을 방지할 수 있습니다.

관련글 더보기

댓글 영역