정보처리기사 - 데이터 입출력 구현 #50~54
2023. 8. 19. 11:27ㆍ자격증/정보처리기사
50. 인덱스(Index)
50.1 인덱스(Index)
데이터 레코드에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
- 레코드가 저장된 물리적 구조에 접근하는 방법을 제공
- 인덱스를 통해서 파일의 레코드에 빠르게 액세스가 가능
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적
50.2 인덱스(Index)의 종류
종류 | 내용 |
---|---|
트리 기반 인덱스 | 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것 |
비트맵 인덱스 | 인덱스 컬럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법 |
함수 기반 인덱스 | 컬럼의 값 대신 컬럼에 특정 함수(Function)나 수식(Expression)을 적용하여 산출된 값을 사용하는 것 |
비트맵 조인 인덱스 | 다수의 조인된 객체로 구성된 인덱스 |
도메인 인덱스 | 개발자가 필요한 인덱스를 직접 만들어 사용하는 것 |
50.3 클러스터드/넌클러스터드 인덱스
종류 | 내용 |
---|---|
클러스터드 인덱스 (Clustered Index) |
- 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식 - 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음 |
넌클러스터드 인덱스 (Non-Clustered Index) |
- 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식 - 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬해야 함 |
51. 뷰 / 클러스터
51.1 뷰(View)
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주됨
- 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있음
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제
- 뷰를 정의할 때는 CREATE문, 제거할 때는 DROP문을 사용
51.2 뷰의 장·단점
구분 | 내용 |
---|---|
장점 | - 논리적 데이터 독립성을 제공 - 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해 줌 - 사용자의 데이터 관리를 간단하게 해줌 - 접근 제어를 통한 자동 보안이 제공 |
단점 | - 독립적인 인덱스를 가질 수 없음 - 뷰의 정의를 변경할 수 없음 - 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름 |
51.3 클러스터(Cluster)
데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 클러스터링 된 테이블은 데이터 조회 속도를 향상시키지만 입력, 수정, 삭제에 대한 작업 성능을 저하시킴
- 클러스터는 데이터 분포도가 넓을수록 유리
- 전체 레코드 중 조건에 맞는 레코드의 숫자가 적은 경우 분포도가 좋다고 함
- 데이터 분포도가 넓은 테이블을 클러스터링 하면 저장 공간의 절약이 가능
- 처리 범위가 넓은 경우에는 단일 테이블 클러스터링을, 조인이 많이 발생하는 경우에는 다중 테이블 클러스터링을 사용
- 단일 테이블 클러스터링
- 여러 개의 테이블 뿐만 아니라 한 개의 테이블에 대해서도 클러스터링 수행이 가능
- 특정 컬럼의 동일한 값을 동일 블록이나 연속된 블록에 저장하므로 데이터 조회 성능이 향상
52. 파티션(Partition)
52.1 파티션(Partition)
대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
- 대용량 데이터베이스의 경우 몇 개의 중요한 테이블에만 집중되어 데이터가 증가하므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
- 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행
52.2 파티션의 장·단점
구분 | 내용 |
---|---|
장점 | - 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상 - 파티션별로 데이터가 분산되어 저장되므로 디스크 성능이 향상됨 - 파티션별로 백업 및 복구를 수행하므로 속도가 빠름 - 시스템 장애 시 데이터 손상 정도를 최소화할 수 있음 - 데이터 가용성이 향상됨 - 파티션 단위로 입·출력 분산 가능 |
단점 | - 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구 - 테이블간 조인에 대한 비용 증가 - 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하됨 |
52.3 파티션의 종류
종류 | 내용 |
---|---|
범위 분할 (Range Partitioning) |
- 지정한 열의 값을 기준으로 분할 - 예) 일별, 월별, 분기별 등 |
해시 분할 (Hash Partitioning) |
- 해시 함수를 적용한 결과 값에 따라 데이터를 분할 - 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터가 고르게 분산될 때 유용 - 특정 데이터가 어디에 있는지 판단할 수 없음 - 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적 |
조합 분할 (Composite Partitioning) |
- 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식 - 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용 |
53. 분산 데이터베이스 설계
53.1 데이터베이스 용량 설계
데이터가 저장될 공간을 정의하는 것
- 데이터베이스 용량을 설계할 때에는 테이블에 저장될 데이터양과 인덱스, 클러스터 등이 차지하는 공간 등을 예측하여 반영해야 함
- 데이터베이스 용량 설계의 목적
- 데이터베이스의 용량을 정확히 산정하여 디스크의 저장 공간을 효과적으로 사용하고 확장성 및 가용성을 높임
- 디스크의 특성을 고려하여 설계함으로써 디스크의 입·출력 부하를 분산시키고 채널의 병목 현상을 최소화
53.2 분산 데이터베이스 설계
분산 데이터베이스는 논리적으로 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트(Site)에 분산된 데이터베이스
- 데이터의 처리나 이용이 많은 지역에 데이터베이스를 위치시킴으로써 데이터의 처리가 가능한 해당 지역에서 해결될 수 있도록 함
- 애플리케이션이나 사용자가 분산되어 저장된 데이터에 접근하는 것을 목적으로 함
53.3 분산 데이터베이스의 목표
목표 | 내용 |
---|---|
위치 투명성 (Location Transparency) |
액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스할 수 있음 |
중복 투명성 (Replication Transparency) |
동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행 |
병행 투명성 (Concurrency Transparency) |
분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음 |
장애 투명성 (Failure Transparency) |
트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리 |
53.4 분산 설계 방법
방법 | 설명 |
---|---|
테이블 위치 분산 | 데이터베이스의 테이블을 각기 다른 서버에 분산시켜 배치하는 방법 |
분할 (Fragmentation) |
- 테이블의 데이터를 분할하여 분산시키는 것 - 분할 규칙 : 완전성(Completeness), 재구성(Reconstruction), 상호 중첩 배제(Disjointness) - 주요 분할 방법 1. 수평 분할 : 특정 속성의 값을 기준으로 행(Row) 단위로 분할 2. 수직 분할 : 데이터 컬럼(속성) 단위로 분할 |
할당(Allocation) | - 동일한 분할을 여러 개의 서버에 생성하는 분산 방법 - 중복이 없는 할당과 중복이 있는 할당으로 나뉨 |
54. 데이터베이스 이중화 / 서버 클러스터링
54.1 데이터베이스 이중화(Database Replication)
시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것
- 데이터베이스 이중화를 수행하면 하나 이상의 데이터베이스가 항상 같은 상태를 유지하므로 데이터베이스에 문제가 발생하면 복제된 데이터베이스를 이용하여 즉시 문제를 해결할 수 있음
- 여러 개의 데이터베이스를 동시에 관리하므로 사용자가 수행하는 작업은 데이터베이스 이중화 시스템에 연결된 다른 데이터베이스에도 동일하게 적용
- 애플리케이션을 여러 개의 데이터베이스에서 분산 처리하므로 데이터베이스의 부하를 줄일 수 있음
- 데이터베이스 이중화를 이용하면 손쉽게 백업 서버를 운영할 수 있음
54.2 데이터베이스 이중화의 분류
- 변경 내용의 전달 방식에 따라 Eager 기법과 Lazy 기법으로 나뉨
기법 | 내용 |
---|---|
Eager 기법 | 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법 |
Lazy 기법 | - 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜잭션에 작성하여 각 데이터베이스에 전달되는 기법 - 데이터베이스마다 새로운 트랜잭션이 수행되는 것으로 간주 |
54.3 데이터베이스 이중화 구성 방법
방법 | 내용 |
---|---|
활동-대기(Active-Standby) 방법 | - 한 데이터베이스가 활성 상태로 서비스하고 있으면 다른 데이터베이스는 대기하고 있다가 활성 데이터베이스에 장애가 발생하면 대기 상태에 있던 데이터베이스가 자동으로 모든 서비스를 대신 수행 - 구성 방법과 관리가 쉬워 많은 기업에서 이용 |
활동-활동(Active-Active) 방법 | - 두 개의 데이터베이스가 서로 다른 서비스를 제공하다가 둘 중 한쪽 데이터베이스에 문제가 발생하면 나머지 다른 데이터베이스가 서비스를 제공 - 두 데이터베이스가 모두 처리를 하기 때문에 처리율이 높지만 구성 방법 및 설정이 복잡 |
54.4 클러스터링(Clustering)
두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 서버 및 이중화 공유 스토리지를 사용하여 서버의 고가용성을 제공
- 공유 스토리지(NAS; Network Attached Storage) : 데이터 저장소를 네트워크로 연결하여 파일 및 데이터를 공유하는 것으로, 다수의 사용자 또는 서버가 데이터를 안전하고 편리하게 공유할 수 있음
- 고가용성(HA; High Availability) : 시스템을 오랜 시간동안 계속해서 정상적으로 운영이 가능한 성질
- 클러스터링 종류
종류 | 내용 |
---|---|
고가용성 클러스터링 | - 하나의 서버에 장애가 발생하면 다른 노드(서버)가 받아 처리하여 서비스 중단을 방지하는 방식 - 일반적으로 언급되는 클러스터링이 고가용성 클러스터링 |
병렬 처리 클러스터링 | 전체 처리율을 높이기 위해 하나의 작업을 여러 개의 서버에서 분산하여 처리하는 방식 |
54.5 RTO/RPO
종류 | 내용 |
---|---|
RTO (Recovery Time Objective, 목표 복구 시간) |
- 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간 - 예) 장애 발생 후 6시간 내 복구 가능 |
RPO (Recovery Point Objective, 목표 복구 시점) |
- 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점을 의미 - 예) 장애 발생 전인 지난 주 금요일에 백업시켜 둔 복원 시점으로 복구 가능 |
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 - 데이터 입출력 구현 #58~60 (0) | 2023.08.19 |
---|---|
정보처리기사 - 데이터 입출력 구현 #55~57 (0) | 2023.08.19 |
정보처리기사 - 데이터 입출력 구현 #46~49 (0) | 2023.08.19 |
정보처리기사 - 데이터 입출력 구현 #44~45 (0) | 2023.08.19 |
정보처리기사 - 데이터 입출력 구현 #40~43 (0) | 2023.08.19 |