1.     반정규화(De-Normalization)

  • 데이터 중복 허용하고 조인을 줄여서 데이터베이스 성능을 향상하는 방법

  • 반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아짐

2.     반정규화를 수행하는 경우

  • 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우

  • 다량의 범위를 자주 처리해야 하는 경우

  • 특정 범위의 데이터만 자주 처리하는 경우

  • 요약/집계 정보가 자주 요구되는 경우

*반정규화 절차

  • 대상 조사 및 검토: 데이터 처리 범위, 통계성 등을 확인해서 반정규화 한다.

  • 다른 방법 검토: 반정규화 수행 전, 다른 방법 있는지 검토함(ex: 클러스터링, , 인덱스 튜닝, 파티션, 응용프로그램 등)

  • 반정규화 수행: 테이블, 속성, 관계 등을 반정규화함

*클러스터링(Clustering)

  • 클러스터링 인덱스는 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법

  • 조회 시에 인접 블록을 연속으로 읽기 때문에 성능이 향상됨

3.     반정규화 기법

(1)   계산된 칼럼 추가

(2)   테이블 수직분할

  • 하나의 테이블을 두 개 이상의 테이블로 분할, 칼럼 분할 해 새로운 테이블 만듦

(3)   테이블 수평분할

  • 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법

 

*파티션 기법

  • 데이터베이스에서 파티션을 사용해 테이블 분할할 수 있음

  • 파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어서 저장됨

  • Range Partition: 데이터 값의 범위를 기준으로 파티션을 수행함

  • List Partition: 특정한 값을 지정해 파티션을 수행함

  • Hash Partition: 해시 함수를 적용해 파티션을 수행함

  • Composite Partition: 범위와 해시를 복합적으로 사용해 파티션을 수행함

 

*파티션 테이블의 장점

  • 데이터 조회 시에 액세스(Access) 범위가 줄어들기 때문에 성능이 향상됨

  • 데이터가 분할되어 있기 때문에 I/O의 성능이 향상됨

  • 각 파티션을 독립적으로 백업 및 복구가 가능함

(4)   테이블 병합

  • 11 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킴

  • 1N 관계의 테이블을 병합해 성능을 향상시킴(하지만 많은 양의 데이터 중복 발생함)

  • 슈퍼 타입과 서브 타입 관계가 발생하면 테이블을 통합해 성능을 향상시킴

 

*Super typeSub type

  • 슈퍼 타입과 서브 타입은 부모와 자식 간의 관계가 나타남

  • 슈퍼 타입과 서브 타입의 관계는 베타적 관계와 포괄적 관계가 있음

  • 베타적 관계는 슈퍼 타입이 서브타입1이거나 서브타입2인 경우를 의미함

  • 포괄적 관계는 슈퍼타입이 서브타입 1일수도 있고 2일 수도 있는 것임

 

*슈퍼 타입 및 서브 타입 변환 방법

(1)   OneToOne Type

  • 슈퍼 타입과 서브 타입을 개별 테이블로 도출함

  • 테이블의 수가 많아서 조인이 많이 발생하고 관리가 어려움

(2)   Plus Type

  • 슈퍼 타입과 서브 타입 테이블로 도출함

  • 조인이 발생하고 관리가 어려움

(3)   Single Type

  • 슈퍼 타입과 서브 타입을 하나의 테이블로 도출함

  • 조인 성능이 좋고 관리가 편리하지만, 입출력 성능이 나쁨

 

1.     분산 데이터베이스

  • 데이터베이스 시스템 구축 시에 한 대의 물리적 시스템에 데이터베이스 관리 시스템을 설치하고 여러 명의 사용자가 데이터베이스 관리 시스템에 접속해 데이터베이스를 사용하는 구조를 중앙 집중형 데이터 베이스라 함

  • 물리적으로 떨어진 데이터베이스에 네트워크로 연결해 단일 데이터베이스 이미지를 보여 주고 분산된 작업 처리를 수행하는 데이터베이스를 분산 데이터베이스라 함

  • 분산 데이터베이스를 사용하는 고객은 시스템이 네트워크로 분산되어 있는지 여부를 인식하지 못하면서, 자신만의 데이터베이스를 사용하는 것처럼 사용할 수 있다.

  • 데이터베이스는 투명성을 제공해야 함

  • 투명성은 분산 데이터베이스에서 중요한 요소이며 투명성의 종류에는 분할, 위치, 지역사상, 중복, 장애 및 병행 투명성이 있음

 

*분산 데이터베이스의 투명성 종류

  • 분할 투명성: 하나의 논리적 릴레이션이 여러 단면으로 분할되어 각 단면의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없음

  • 위치 투명성: 데이터가 어느 위치에 있더라도 동일한 명령을 사용해 데이터에 접근할 수 있어야 함

  • 지역 사상 투명성: 지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시스템 이름과 무관한 이름이 사용 가능함

  • 중복 투명성: 데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하게 데이터 일관성이 유지됨

  • 장애 투명성: 데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생해도, 데이터의 무결성은 보장됨

  • 병행 투명성: 여러 고객의 응용프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 없음

2.     분산 데이터베이스 설계 방식

  • 분산데이터베이스를 구축하거나 운영할 때 동일한 데이터베이스 관리 시스템으로 분산 데이터베이스를 구축하는 것은 어렵지 않음

  • 하지만 기업에 여러 종류의 데이터베이스 관리 시스템이 있으면 이기종 데이터베이스 관리 시스템으로 연동 해야함

  • 이기종 데이터베이스 시스템으로 연동하기 위해서는 데이터베이스 미들웨어(ODBC, JDBC)를 사용해야 함

(1)   상향식 설계 방식

  • 지역 스키마 작성 후 향후 전역 스키마를 작성해 분산 데이터베이스를 구축함

(2)   하향식 설계 방식

  • 전역 스키마 작성 후에 해당 지역 사상 스키마를 작성해 분산 데이터베이스를 구축함

 

*분산 데이터베이스 장점

  • 데이터베이스 신뢰성과 가용성이 높음

  • 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능함

  • 분산 데이터베이스를 추가해 시스템 용량 확장이 쉬움

 

*분산 데이터베이스 단점

  • 데이터베이스가 여러 네트워크를 통해서 분리되어 있기 때문에 관리와 통제가 어려움

  • 보안관리가 어려움

  • 데이터 무결성 관리가 어려움

  • 데이터베이스 설계가 복잡함

 

+ Recent posts