본문 바로가기

DAP/06.데이터베이스 설계와 이용

[데이터베이스 설계와 이용] 저장공간 설계

1. 테이블 설계
가. Heap-Organized Table :
- 데이터 값의 순서에 관계없이 데이터를 저장하는 일반 테이블

나. Index Organized Table or Clustered Index Table :
- 키 값의 순서대로 데이터를 저장 (PK 값이나 인덱스의 순서대로 데이터 저장)
- 저장구조는 B-Tree 구조로 Leaf 노드에 데이터가 존재한다.
- 일반적으로 인덱스를 이용하는 테이블보다 접근 경로가 단축됨
- 소량의 데이터에 대한 랜덤 액세스에서 성능이 탁월

다. Partitioned Table :
- 테이블을 파티션으로 나눠서 데이터를 저장한다.
- 데이터 처리 대상은 테이블이며, 저장은 파티션 별로 수행
- 키 칼럼 값에 의해서 범위(Range), 해시값(Hash), 목록(List) 등 다양한 키 값을 적용 가능
- 대용량 데이터베이스 환경에서 반드시 고려할 필요가 있음
- 운용적인 측면 : 확장성, 가용성 도모
- 대용량 데이터에 대한 배치 작업에 성능 보장 및 관리 측면이 유리

라. External Table :
- 파일 데이터를 일반 테이블 형태로 이용할 수 있도록 하는 테이블
- 데이터웨어하우스(DW), ETL(Extraction, transformation, Loading) or ETT 작업등에 유리

마. Temporary Table :
- 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 있는 테이블
- 저장된 데이터는 트랜잭션 종료후 휘발됨
- 다른 세션에서 처리되는 데이터 공유 불가
- 절차적 처리를 위한 임시적으로 사용 가능


2. 칼럼
- 칼럼은 테이블을 구성하는 요소, 데이터 타입(Data Type)길이 (Length)로 정의
- 칼럼이 서로 참조하는 관계일경우 데이터 타입과 길이는 동일하게 지정해야한다. (다른경우 내부적 변경으로 인덱스 사용 불가할 수 있음)

# 데이터 타입에 따른 물리적 칼럼 순서
- 고정길이 칼럼이고 NOT NULL 칼럼은 선두에
- 가변길이 칼럼은 뒷편에
- NULL 값이 많을 것으로 예상되는 칼럼은 뒷편에

# 데이터 타입 길이 지정시 고려사항
- 가변길이 데이터 타입은 예상되는 최대 길이로 지정
- 고정길이 데이터 타입은 최소 길이로 지정
- 소수점 이하 자리수는 반올림되어 저장되므로 정확성 확인 필요


3. 테이블 설계시 고려사항
A. 칼럼의 데이터 길이의 합은 1 Block 또는 Page 크기보다 큰경우 수직분할 고려
   (1 Block 이상이면 체인 발생 --> 속도 저하)
B. 칼럼 길이가 길고, 특정 칼럼의 사용 빈도의 차이가 심한경우, 각기 다른 사용자들이 사용하는 칼럼이 다른경우 수직분할 고려
C. 수직 분할을 고려할때에는 테이블이 하나의 트랜잭션에 의해서 동시 처리되는 경우, 조인이 빈번히 발생되는 경우가 없는경우 사용
D. 주문일, 배송일시, 계약일 등에는 시간 데이터 타입 사용은 자제, 시간타입은 로그성 정보나 정확성이 필요한 경우 사용



4. 테이블과 테이블 스페이스 구조 설계시 고려사항
- 테이블에 저장되는 테이블 스페이스는 업무별로 지정
- 대용량 테이블은 독립적인 테이블 스페이스 지정
- 테이블과 인덱스는 분리하여 지정
- LOB 타입의 데이터는 독립된 공간을 지정


5. 용량설계
A. 용량 설계 목적
- 정확한 데이터 용량 예측, (효과적인 공간사용, 확장성을 보장하여 가용성 있는 설계 필요)
- H/W 특성 고려한 디스크 채널 병목 최소화
- 디스크 I/O 분산한 접근 성능 향상
- 테이블이나 인덱스에 맞는 저장 옵션 지정

B. 테이블 저장 옵션
- 초기 사이즈, 증가 사이즈
- 트랜잭션 관련 옵션
- 최대 사이즈와 자동증가

C. 저장 용량 설계 절차
- 용량분석 : 증가되는 데이터 예상 건수, 주기, 로우 길이 등 고려
- 오브젝트별 용량 산정 : 테이블, 인덱스에 대한 크기
- 테이블 스페이스별 용량 산정 : 테이블 스페이스별 오브젝트 용량의 합계
- 디스크 용량 산정 : 테이블스페이스에 따른 디스트 용량과 I/O 분산 설계

Q.320 데이터베이스의 기본 목적은 관련 정보를 저장하고 탐색하는데 있다. 이러한 데이터베이스의 목적을 효율적으로 지원하기 위해서 대부분의 데이터베이스 관리 시스템에서는 데이터의 저장구조를 논리적인 구조와 물리적인 구조로 나누어서 관리하고 있다. 다음중 논리적 데이터베이스 영역 할당에 대한 설명으로 틀린 것은?

1. 테이블 스페이스는 데이터베이스를 논리적으로 분할한 것으로,  물리적 저장 구조인 여러개의 데이터 파일을 가진다.
2. 세그먼트는 특정 논리적 저장영역 구조를 위하여 할당된 데이터 확장 영역의 집합으로써 테이블을 위한 테이블 세그먼트와 인덱스를 위한 인덱스 세그먼트 등이 있다.
3. 확장 영역은 특정 유형의 정보를 저장하기 위하여 할당된 연속된 데이터 블록으로, 예약된 데이터 블록을 모두 사용하면 자동으로 할당되며 데이터가 삭제되면 자동으로 반환된다.
4. 데이터 블록은 데이터베이스에서 데이터를 저장하는 가장 작은 단위로써 하나의 데이터 블록은 디스크에 위치하는 물리적 데이터베이스 영역의 특정 바이트수에 해당한다.

정답) 3

Q.309 다음중 데이터 확장 영역(Extents)에 대한 설명으로 부적절한 것은?

1. 특정 유형의 정보를 저장하기 위해 할당된 몇 개의 연속적인 데이터 블록이다.
2. 행수가 '0' 인 테이블은 저장공간의 절약을 위해서 Extents가 없다.
3. 단편화된 Extents는 연속적인 데이터 블록을 확보할 수 없는 원인이다.
4. 저장공간의 단편화 방지를 위해서 초기, 증가 Extents 사이즈를 설계한다.

정답) 2

Q.311 다음중 테이블 설계 과정에서 Nullable 칼럼에 대한 고려사항으로 부적합한 것은?

1. NULL에 어던 정수를 더하면 그 결과는 정수가 된다
2. 미확정 값을 표현할때 NULL 값을 이용한다.
3. 입력 조건 값으로 자주 이용되는 칼럼은 테이블 정의 시에 NOT NULL Constaints를 적용한다.
4. NULL이 허용되는 칼럼은 테이블에서 칼럼 순서를 뒷편으로 지정한다.

정답) 1

Q.302 24시간 운영되는 인터넷 쇼핑몰의 데이터베이스 저장 객체들을 설계 중이다. 인터넷 쇼핑몰의 특성을 고려할 때, 다음중 테이블 설계가 틀린 것은?

1. 90% 이상의 테이블을 Heap-Ortanized Table로 설계 했다.
2. 게시판은 동시에 많은 사용자가 조회하므로 식별자 칼럼과 CLOB 타입의 게시글 칼럼 이외에 4개의 컬럼으로 구성되어 있다. 해당 테이블의 빠른 응답 속도를 보장하기 위해서 Index Organized Table로 설계 했다.
3. 주문이 하루 10만건 이상 발생했을때, 데이터 보관 주기를 1년으로 정했다. 1년이 경과한 데이터는 삭제되는 특성이 있어서 Partitional Table로 설계했다.
4. 주기적으로 신용 및 결제정보를 카드사, 금융기관 등에서 SAM 파일을 통해 제공받고 있다. 이를 데이터베이스에서 로드(Load)하기 위해서 External Table로 설계했다.

정답) 2