- 시스템 카탈로그 (Catalog)
- 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 좁은의미로 데이터 사전 이라고도 함
- 메타 데이터 (Meta-Data)
- 시스템 카탈로그에 저장된 정보
- 유형
- 데이터베이스 객체 정보, 사용자 정보, 무결정 제약조건 정보
- 데이터 디렉터리 (Data-Directory)
- 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템
- 데이터베이스 저장 공간 설계
- 테이블
- 데이터베이스의 가장 기본적인 객체
- 행(Row)와 열(Column)으로 구성
- 종류
- 일반 테이블
- 클러스터드 인덱스 테이블 : 기본키나 인덱스의 순서에 따라 데이터가 저장되는 테이블
- 파티셔닝 테이블 : 대용량 테이블을 작은 논리적 단위인 파티션으로 나눈 테이블
- 외부 테이블
- 임시 테이블 : 트랜잭션이나 세션별로 데이터를 저장하고 처리
- 테이블
- 트랜잭션 (Transaction)
- 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
- 병행제어 및 회복작업에 사용
- 특성
- 원자성 (Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않. 도록 복구(Rollback) 되어야 함
- 일관성 (Consistency) : 트랜잭션이 성공적으로 완료되면 언제나 일관성있는 데이터베이스 상태로 변한함
- 격리성 (Isolation) : 한 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음
- 영속성 (Durability) : 트랜잭션의 결과는 시스템이 고장나도 영구적으로 반영되어야 함
- CRUD 분석
- 프로세스와 테이블 간 CRUD 매트릭스를 만들어 트랜잭션을 분석하는 것
- 트랜잭션이 몰리는 테이블 파악 가능
- 행(Row)에는 프로세스, 열(Column)에는 테이블
- Create, Read, Update, Delete
- 트랜잭션 분석
- CRUD 매트릭스를 기반으로 DB의 용량 산정 및 구조의 최적화 목적
- 인덱스 (Index)
- 데이터 레코드를 빠르게 접근하기 위해 <키, 값 포인터> 쌍으로 구성되는 데이터 구조
- 물리적 구조에 접근하는 방법 제공
- 종류
- 트리 기반 인덱스 : 인덱스를 저장하는 불록이 트리구조를 이룸
- 비트맵 인덱스 : 인덱스 컬럼의 데이터를 Bit값으로 변환
- 함수 기반 인덱스
- 비트맵 조인 인덱스
- 도메인 인덱스 : 필요한 인덱스를 직접 만들어 사용
- 클러스터드 인덱스
- 인덱스 키의 순서에 따라 데이터가 정렬되어 저장
- 넌클러스터드 인덱스
- 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 뷰 (View)
- 하나 이상의 기본 테이블로부터 유도된 가상테이블
- 정의할때 Create, 제거할때 Drop
- 장점
- 논리적 독립성 제공
- 데이터 관리를 편리하게 해줌
- 자동 보안 제공
- 단점
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의 변경 불가능
- 삽입, 삭제, 갱신 연산에 제약
- 클러스터 (Cluster)
- 동일한 성격의 데이터를 동일한 데이터블록에 저장하는 물리적 저장 방법
- 조회 속도 향상 BUT 삽입, 삭제, 수정 성능 저하
- 종류
- 단일 테이블 클러스터링 : 처리 범위가 넓은 경우
- 다중 테이블 클러스터링 : 조인이 많이 발생하는 경우
- 파티션 (Partition)
- 대용량 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
- 장점
- 쿼리 성능 향상
- 디스크 성능 향상
- 속도 향상
- 가용성 향상
- 단점
- 비용 증가
- 세심한 관리 요구
- 저용량 테이블에 파티셔닝을 수행하면 오히려 성능 저하
- 종류
- 범위 분할 (Range) : 열의 값 기준으로 분할
- 해시 분할 (Hash) : 해시 함수를 적용하여 분할, 데이터가 고른 컬럼에 효과적(주민번호, 전화번호 ..)
- 조합 분할 (Composite) : 범위 분할 후 해시 분할, 범위 분할 파티션이 너무 큰 경우 사용
- 분산 데이터베이스
- 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 사이트에 분산된 데이터베이스
- 목표
- 위치 투명성 (Location Transparency) : 데이터베이스의 실제 위치를 알 필요 없이 논리적 명칭만으로 액세스 가능
- 중복 투명성 (Replication Transparency) : 데이터의 중복이 있어도 사용자는 하나의 데이터만 존재하는 것처럼 사용
- 병행 투명성 (Concurrency Transparency) : 다수의 트랜잭션들이 동시에 실현되더라도 결과는 영향을 받지 않음
- 장애 투명성 (Failure Transparency) : 장애에도 불구하고 트랜잭션을 정확하게 처리해야함
- 분산 설계 방법
- 테이블 위치 분산
- 분할
- 규칙 : 완전성, 재구성, 상호 중첩 배제
- 방법 : 수평 분할 (행 단위), 수직 분할 (속성 단위)
- 할당
- 동일한 분할을 여러 개의 서버에 생성
- 데이터베이스 이중화 (Replication)
- 동일한 데이터베이스를 복제하여 관리
- 분류
- Eager 기법 : 데이터의 변경이 발생하면 모든 데이터베이스에 즉시 전달하여 즉시 적용
- Lazy 기법 : 트랜적션 수행 종료 후 데이터베이스에 전달
- 구성 방법
- 활동-대기 : 하나의 DB가 활성상태, 다른 하나의 DB는 대기상태
- 활동-활동 : 두개의 DB가 서로 다른 서비스를 제공하다가 한쪽이 다운되면 다른 한쪽이 서비스 제공
- 클러스터링
- 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술
- 종류
- 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 서버가 받아서 처리하여 서비스 중단을 방지
- 병렬 처리 클러스터링 : 하나의 작업을 여러개의 서버에 분산하여 처리
- RTO (목표 복구 시간)
- 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간을 의미
- RPO (목표 복구 시점)
- 업부 중단 시점으로부터 데이터를 복구할 수 있는 기준점
- 데이터베이스 보안
- 암호화 (Encryption)
- 데이터 송신시 암호문으로 변환하는 것
- 기법 : 개인키 암호화 방식, 공개키 암호화 방식
- 접근 통제
- 객체와 주체 사이의 정보 흐름을 제한하는 것
- 접근 통제 기술
- DAC (임의 접근 통제) : 사용자의 신원에 따라 접근 권한을 부여
- MAC (강제 접근 통제) : 사용자의 등급에 따라 접근 권한을 부여
- RBAC (역할 기반 접근 통제) : 사용자의 역할에 따라 접근 권한을 부여
- 접근 통제 3요소
- 접근 통제 정책
- 허용 여부를 정의하는 것
- 종류
- 신분 기반 정책
- 신분에 근거하여 접근 제한
- IBP : 단일 주체에 대한 접근 제한
- GBP : 복수 주체에 대한 접근 제한
- 규칙 기반 정책
- 권한에 근거하여 접근 제한
- MLP : 사용자나 객체별로 접근 제한
- CBP : 집단별로 접근 제한
- 역할 기반 정책
- GBP의 변형, 역할에 근거하여 접근 제한
- 신분 기반 정책
- 접근 통제 매커니즘
- 정의된 접근통제 정책을 구현하는 기술적인 방법
- 보안 등급, 패스워드, 암호화 등..
- 접근 통제 보안모델
- 기밀성 모델 : 군사적인 목적으로 개발
- 무결성 모델 : 불법적인 정보 변경을 방지
- 접근통제 모델 : 접근통제 매커니즘을 보안 모델로 발전시킨 것, 대표적으로 접근통제행렬이 있음
- 조건
- 값 종속 통제
- 다중 사용자 통제
- 컨텍스트 기반 통제
- 접근 통제 정책
- 암호화 (Encryption)
- 데이터베이스 백업
- 장애에 대비하여 저장된 데이터를 보호하고 복구하기 위한 작업
- 로그파일
- 데이터베이스의 처리 내용이나 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
- 과거 상태로 복귀(UNDO)시키거나 현재 상태로 재생(REDO)시켜 일관성 유지
- 복구 알고리즘
- No-UNDO / REDO : 데이터베이스 버퍼의 내용을 비동기적으로 갱신한 경우
- UNDO / No-REDO : 데이터베이스 버퍼의 내용을 동기적으로 갱신한 경우
- UNDO / REDO : 데이터베이스 버퍼의 내용을 동기/비동기적으로 갱신한 경우
- No-UNDO / No-REDO : 동기적으로 기록하지만 다른 영역에 기록한 경우
- 종류
- 물리 백업 : 데이터베이스의 파일을 백업
- 논리 백업 : 논리적 객체들을 백업
- 스토리지 (Storage)
- 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS (Direct Attached Storage)
- 서버와 저장장치를 전용 케이블로 직접 연결
- 빠른 속도
- 유지보수 비용 저렴
- 확장성 및 유연성 저하
- NAS (Network Attached Storage)
- 서버와 저장장치를 네트워크를 통해 연결
- 파일 공유 가능
- 확장성 및 유연성 우수
- SAN (Storage Area Network)
- SAN + NAS
- 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성
- 파이버 채널(FC) 스위치를 이용하여 네트워크 구성
- 확장성, 유연성, 가용성 뛰어남
- 논리 데이터 모델 변환
- 규칙
- 논리(엔티티) → 물리(테이블)
- 논리(속성) → 물리(컬럼)
- 논리(주 식별자) → 물리(기본키)
- 논리(외래 식별자) → 물리(외래키)
- 논리(관계) → 물리(관계)
- 슈퍼타입/서브타입을 테이블로 변환
- 슈퍼타입 기준 테이블 변환 : 서브타입을 슈퍼타입에 통합
- 서브타입 기준 테이블 변환 : 슈퍼타입의 속성들을 서브타입에 추가
- 개별타입 기준 테이블 변환 : 슈퍼타입과 서브타입들을 각각의 개별적인 테이블로 변환
- 속성을 컬럼으로 변환
- 일반 속성 변환, Primary UID를 기본키로 변환, Primary UID(관계의 UID)를 기본키로 변환, Secondary UID를 유니크키로 변환
- 규칙
- 물리데이터 모델 품질 검토
- 기준 : 정확성, 완전성, 준거성, 최신성, 일관성, 활용성
- 자료 구조
- 자료를 기억장치 내에 저장하는 방법과 처리 방법등을 연구 분석하는 것
- 분류
- 선형 구조
- 배열 (Array)
- 크기와 형(Type)이 동일한 자료들이 순서대로 나열된 자료의 집합
- 데이터 삭제 시 메모리 낭비가 발생
- 선형 리스트
- 연속 리스트 (Continuous List)
- 연속되는 기억장소에 저장되는 자료 구조
- 삽입.삭제 시 자료의 이동 필요
- 연결 리스트 (Linked List)
- 자료들을 임의의 공간에 기억시키고 노드의 포인터를 이용하여 서로 연결
- 포인터 : 현재의 위치에서 다음 노드의 위치를 알려주는 요소
- 자료들을 임의의 공간에 기억시키고 노드의 포인터를 이용하여 서로 연결
- 연속 리스트 (Continuous List)
- 스택 (Stack)
- 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조
- 후입선출 (LIFO) 방식
- 기억공간이 없을 때 삽입 = 오버플로, 자료가 없을 때 삭제 = 언더플로
- 큐 (Queue)
- 한쪽 끝에서는 삽입 작업이 다른 한쪽에서는 삭제 작업이 이루어지는 자료 구조
- 선입선출 (FIFO) 방식
- 시작을 표시하는 프런트 포인터와 끝을 표시하는 리어 포인터
- 배열 (Array)
- 비선형 구조
- 그래프
- 정점과 간선의 두 집합으로 이루어지는 자료구조
- 방향 그래프
- 최대 간선 수 : n(n-1)
- 무방향 그래프
- 최대 간선 수 : n(n-1)/2
- 트리 (Tree)
- 정점과 선분을 이용하여 사이클을 이루지 않는 그래프의 특수한 형태트리 관련 용어
- 근 노드 (Root) : 트리의 맨 위에 있는 노드 (A)
- 디그리 : 각 노드에서 뻗어나온 가지의 수 (B의 Degree는 2)
- 단말 노드 : 자식이 없는 노드 (H, I, E, F, G)
- Level : 근 노드의 Level을 1로 가정하면 자식 노드는 L+1 (F의 레벨은 3 _ 위 사진은 근 노드의 레벨을 1로 가정)
- 깊이 : 트리가 가질 수 있는 최대 레벨 (4)
- 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수 (2)
- 이진 트리
- 디그리가 2 이하인 노드들로 구성된 트리
- 정점과 선분을 이용하여 사이클을 이루지 않는 그래프의 특수한 형태트리 관련 용어
- 그래프
- 선형 구조
- 트리의 운행법
- PreOrder (전위 순회)
- 중간 → 왼쪽 → 오른쪽
- 결과 : A, B, D, H, I, E, C, F, G
- InOrder (중위 순회)
- 왼쪽 → 중간 → 오른쪽
- 결과 : H, D, I, B, E, A, F, C, G
- PostOrder (후위 순회)
- 왼쪽 → 오른쪽 → 중간
- 결과 : H, I, D, E, B, F, G, C, A
- PreOrder (전위 순회)
- 수식의 표기법
- 전위 표기법
- 연산자 → 왼쪽 → 오른쪽
- +AB
- 중위 표기법
- 왼쪽 → 연산자 → 오른쪽
- A + B
- 후위 표기법
- 왼쪽 → 오른쪽 → 연산자
- AB+
- 전위 표기법
- 정렬
- 삽입 정렬 (Insertion Sort)
- 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬
- 시간복잡도 = O(n²)
- 선택 정렬 (Slection Sort)
- 최소값을 찾아 첫번째 위치에 놓고 나머지 값 중 다시 최소값을 찾아 두번째에 놓는 방식을 반복
- 시간 복잡도 = O(n²)
- 버블 정렬 (Bubble Sort)
- 인접한 두개의 값을 비교하여 크기에 따라 서로 위치 교환
- 시간 복잡도 = O(n²)
- 쉘 정렬 (Shell Sort)
- 매개변수의 값으로 서브파일을 구성하고, 각 서브파일을 삽입정렬 방식으로 순서 배열
- 최악 시간 복잡도 = O(n²)
- 퀵 정렬 (Quick Sort)
- 키를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브파일에 분해시켜 정렬
- 평균 시간 복잡도 = O(nlog₂n), 최악 시간 복잡도 = O(n²)
- 힙 정렬 (Heap Sort)
- 전이진 트리를 이용한 정렬
- 시간 복잡도 = O(nlog₂n)
- 2-Way 합병 정렬
- 이미 정렬되어 있는 두개의 파일을 한개로 합치는 정렬
- 시간 복잡도 = O(nlog₂n)
- 기수 정렬 (Radix Sort)
- Queue를 이용하여 자릿수(Digit) 별로 정렬
- 시간 복잡도 = O(dn)
'정보처리기사_실기' 카테고리의 다른 글
정보처리기사 70 ~ 84 (개발 환경 구축 ~ 패키지 소프트웨어) (0) | 2022.06.23 |
---|---|
정보처리기사 64 ~ 69 (통합 구현 ~ 연계 테스트) (0) | 2022.06.23 |
정보처리기사 31 ~ 46 (데이터 전환 ~ 반정규화) (0) | 2022.06.20 |
정보처리기사 20 ~ 30 (소프트웨어 개발 방법론 ~ 개발 프레임워크) (0) | 2022.06.18 |
정보처리기사 1~19 (소프트웨어 생명주기 ~ 다이어그램) (0) | 2022.06.17 |