47강. 시스템 카탈로그(System Catalog)
- 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블
- 카탈로그들이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전이라고도 함
1. 메타 데이터(Meta-Data)
- 시스템 카탈로그에 저장된 정보를 의미
메타 데이터의 유형
- 데이터베이스 객체 정보 : 테이블(Table), 인덱스(Index), 뷰(View) 등의 구조 및 통계 정보
- 사용자 정보 :아이디, 패스워드, 접근 권한 등
- 테이블의 무결성 제약 조건 정보 : 기본키, 외래키, NULL 값 허용 여부 등
- 함수, 프로시저, 트리거 등에 대한 정보
2. 데이터 디렉터리(Data Directory)
- 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템
- 시스템 카탈로그는 사용자와 시스템 모두 접근할 수 있지만 데이터 디렉터리는 시스템만 접근할 수 있음
48강. 데이터베이스 저장 공간 설계
1. 데이터베이스 저장 공간 설계
- 데이터베이스에 데이터를 저장하려면 테이블이나 컬럼 등 실제 데이터가 저장되는 공간을 정의해야 함
1) 테이블(Table)
- 데이터베이스의 가장 기본적인 객체
- 로우(Row, 행)와 컬럼(Column, 열)으로 구성되어 있음
- 데이터베이스의 모든 데이터는 테이블에 저장됨
2) 컬럼(Column)
- 테이블의 열을 구성하는 요소
- 데이터 타입(Data Type), 길이(Length) 등으로 정의됨
3) 테이블스페이스(Tablespace)
- 테이블이 저장되는 논리적인 영역
- 한 개의 테이블스페이스에 한 개 이상의 테이블을 저장할 수 있음
2. 테이블 종류
1) 일반 테이블 : 대부분의 DBMS에서 표준 테이블로 사용되는 테이블 형태
2) 클러스터드 인덱스 테이블(Clustered Index Table)
- 기본키(Primary Key)나 인덱스키의 순서에 따라 데이터가 저장되는 테이블
- 일반적인 인덱스를 사용하는 테이블에 비해 접근 경로가 단축됨
3) 파티셔닝 테이블(Partitioning Table) : 대용량의 테이블을 작은 논리적 단위인 파티션(Partition)으로 나눈 테이블
4) 외부 테이블(External Table)
- 데이터베이스에서 일반 테이블처럼 이용할 수 있는 외부 파일
- 데이터베이스 내에 객체로 존재함
5) 임시 테이블(Temporary Table)
- 트랜잭션이나 세션별로 데이터를 저장하고 처리할 수 있는 테이블
- 임시 테이블에 저장된 데이터는 트랜잭션이 종료되면 삭제됨
49강. 트랜젝션 / CRUD 분석
1. 트랜잭션(Transaction)
- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미
- 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용됨
- 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용됨
2. 트랜잭션의 특징(ACID)
1) 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 함
2) 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
3) 독립성(Isolation, 격리성, 순차성) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랙잭션 실행 중에 다른 트랜잭션의 연산이 끼어 들 수 없음
4) 영속성(Durability, 지속성) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
3. CRUD 분석
- 프로세스와 테이블 간의 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것
- CRUD 분석을 통해 많은 트랙잭션이 몰리는 테이블을 파악할 수 있으므로 디스크 구성 시 유용한 자료로 활용할 수 있음
4. CRUD 매트릭스
- 2차원 형태의 표로서, 행(Row)에는 프로세스를, 열(Column)에는 테이블을, 행과 열이 만나는 위치에는 프로세스가 테이블에 발생시키는 변화를 표시하여 프로세스와 데이터간의 관계를 분석하는 분석표
- CRUD 매트릭스를 통해 트랜잭션이 테이블에 수행하는 작업을 검증
- CRUD 매트릭스의 각 셀에는 Create, Read, Update, Delete의 앞 글자가 들어가며, 복수의 변화를 줄 때는 기본적으로 'C > D > U > R' 의 우선순위를 적용하여 한 가지만 적지만, 활용 목적에 따라 모두 기록할 수 있음.
ex) '주문 변경' 프로세스를 실행하려면 테이블의 데이터를 읽은(Read) 다음 수정(Update)해야 하므로 R(Read)과 U(Update)가 필요하지만 CRUD 매트릭스에는 우선순위가 높은 'U' 만 표시
- CRUD 매트릭스가 완성되었다면 C, R, U, D 중 어느 것도 적히지 않은 행이나 열, C나 R이 없는 열을 확인하여 불필요하거나 누락된 테이블 또는 프로세스를 찾는다.
5. 트랜잭션 분석
- CRUD 매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB의 용량 산정 및 구조의 최적화를 목적으로 함
- 트랜잭션 분석은 업무 개발 담당자가 수행
- 트랜잭션 분석을 통해 프로세스가 과도하게 접근하는 테이블을 확인할 수 있으며, 이러한 집중 접근 테이블을 여러 디스크에 분산 배치함으로써 디스크 입.출력 향상을 통한 성능 향상을 가져올 수 있음
50강. 인덱스
- 인덱스는 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
- 인덱스는 레코드가 저장된 물리적 구조에 접근하는 방법을 제공
- 인덱스를 통해서 파일의 레코드에 빠르게 엑세스 할 수 있음
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적임
1. 인덱스(Index)의 종류
1) 트리 기반 인덱스 : 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
2) 비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법
3) 함수 기반 인덱스 : 컬럼의 값 대신 컬럼에 특정 함수(Function)나 수식(Expression)을 적용하여 산출된 값을 사용하는 것
4) 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
5) 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는 것
2. 클러스터드/넌클러스터드 인덱스
1) 클러스터드 인덱스(Clustered Index)
- 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
- 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음
2) 넌클러스터드 인덱스(Non-Clustered Index)
- 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 해야 함
51강. 뷰 / 클러스터
1. 뷰(View)
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 저장장치 내에 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 간주됨
- 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있음
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제됨
- 뷰를 정의할 때는 CREATE문, 제거할 때는 DROP문을 사용
2. 뷰(View)의 장.단점
1) 장점
- 논리적 데이터 독립성을 제공
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해 줌
- 사용자의 데이터 관리를 간단하게 해줌
- 접근 제어를 통한 자동 보안이 제공됨
2) 단점
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신, 연산에 제약이 따름
3. 클러스터(Cluster)
- 클러스터는 데이터 저장 시 데이터 엑세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 클러스터링 된 테이블은 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 클러스터는 데이터의 분포도가 넓을수록(중복이 많은 데이터), 분포도가 안좋을수록 유리함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간을 절약할 수 있음
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용
52강. 파티션(Partition)
- 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
- 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
1. 파티션의 장.단점
1) 장점
- 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상됨
- 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상됨
- 파티션별로 백업 및 복구를 수행하므로 속도가 빠름
- 시스템 장애 시 데이터 손상 정도를 최소화할 수 있음
- 데이터 가용성이 향상됨
- 파티션 단위로 입.출력을 분산시킬 수 있음
2) 단점
- 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구됨
- 테이블간 조인에 대한 비용이 증가함
- 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하됨
2. 파티션의 종류
1) 범위 분할(Range Partitioning) : 지정한 열의 값을 기준으로 분할 ex. 일별, 월별, 분기별 등
2) 해시 분할(Hash Partitioning)
- 해시 함수를 적용한 결과 값에 따라 데이터를 분할함
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 때 유용함
- 특정 데이터가 어디에 있는지 판단할 수 없음
- 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적임
3) 조합 분할(Composite Partitioning)
- 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용함
'IT > 정보처리기사' 카테고리의 다른 글
[시나공 토막강의] 57-60강 정리 (0) | 2023.03.11 |
---|---|
[시나공 토막강의] 53-56강 정리 (0) | 2023.03.08 |
[시나공 토막강의] 44-46강 정리 (0) | 2023.02.28 |
[시나공 토막강의] 40-43강 정리 (0) | 2023.02.27 |
[시나공 토막강의] 36-39강 정리 (0) | 2023.02.21 |