기타

2023. 2. 16. 17:12정처기 필기/2과목 - 소프트웨어 개발

1. 트리 순회방법

* 전위 순회 (Pre-Order Traversal)

  : Root --> Left --> Right

 

* 중위 순회 (In-Order Traversal)

  : Left --> Root --> Right

 

* 후위 순회 (Post-Order Traversal)

  : Left --> Right --> Root

 

2. 이진 트리

 

 

3. 논리 데이터 저장소

* 구조

- 개체(Entity) : 관리할 대상이 되는 실체

- 속성(Attribute) : 관리할 정보의 구체적 항목

- 관계(Relationship) : 개체 간의 대응 관계

 

4. 물리 데이터 저장소

* 논리 데이터 저장소에서 물리 데이터 저장소 모델로 변환하는 절차

 

단위 개체를 테이블로 변환

속성을 컬럼으로 변환

UID(Unique Identifier)를 PK로 변환

관계를 FK로 변환

컬럼 Type과 Length 정의 (반정규화)

 

5. 인덱스 

- 분포도(Selectivity) 10~15% 이내 

 

* 인덱스 컬럼 선정

- 수정이 잦지 않은 컬럼

- ORDER BY, GROUB BY, UNION이 빈번한 컬럼

- 분포도가 좋은 컬럼은 단독 인덱스로 생성

- 인덱스들이 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성

 

* 설계 시 고려사항

- 지나치게 많은 인덱스는 오버헤드 발생

- 인덱스만의 추가적인 저장 공간이 필요

- 넓은 범위 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드 발생

 

6. 뷰(View)

- 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블로 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같음

- 가상 테이블이기 때문에 물리적으로 구현되어 있지 않지만 사용자에게 있는 것처럼 간주된다.

- 데이터의 논리적 독립성을 제공할 수 있다.

- 정의된 뷰로 다른 뷰를 정의할 수 있다.

- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

 

속성 설명
REPLACE 뷰가 이미 존재하는 경우 재생성
FORCE 본 테이블의 존재 여부에 관계 없이 뷰 생성
NOFORCE 기본 테이블이 존재할 때만 뷰 생성
WITH CHECK OPTION 서브 쿼리 내의 조건을 만족하는 행만 변경
WITH READ ONLY 데이터 조작어(DML) 작업 불가

 

* 장점

- 논리적 데이터 독립성 제공

- 접근 제어를 통한 자동 보안 제공

 

* 단점

- 독립적인 인덱스를 가질 수 없음

- 뷰의 정의를 ALTER로 변경할 수 없음 (DROP 후 CREATE해야 함)

- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신, 연산에 제약이 따른다.

 

7. 클러스터(Cluster)

- 인덱스의 단점을 해결한 기법 (분포도가 넓을수록 오히려 유리)

- 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약이 가능

- 대량의 범이를 자주 엑세스하는 경우 적용

- 인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용

 

* 클러스터 테이블 선정

- 수정이 빈번하지 않는 테이블

- ORDER BY, GROUP BY, UNION이 빈번한 테이블

- 처리 범위가 넓어 문제가 발생하는 경우 단일 테이블 클러스터링

- 조인이 많아 문제가 발생되는 경우는 다중 테이블 클러스터링

 

* 설계 시 고려사항

- 조회 속도를 향상시켜주지만 입력, 수정, 삭제 시 성능 저하

 

8. 파티션 (Partition)

* 장점

- 성능 향상

- 가용성 향상

- 백업 가능

- 경합 감소

 

종류 설명
레인지 파티셔닝
(Range Partitioning)
지정한 열의 값을 기준으로 분할 (범위분할)
ex_일별, 월별, 분기별 등
해시 파티셔닝
(Hash Partitioning)
해시 함수에 따라 데이터 분할 (해시분할)
리스트 파니셔닝
(List Partitioning)
미리 정해진 그룹핑 기준에 따라 분할
컴포지트 파티셔닝
(Composite Partitioning)
범위분할 + 해시함수 (조합분할)

 

9. PL (Procedural Language)/ SQL

구성 설명
선언부
(Declare)
변수, 상수, CURSOR, EXCEPTION 선언
실행부
(Begin/End)
BEGIN과 END 사이에 기술되는 영역
데이터를 처리할 SQL문과 PL/SQL 블록을 기술
예외부
(Exception)
실행부에서 에러 발생시 문장 기술

 

* 장점

  : 컴파일 불필요, 모듈화 기능, 절차적 언어 사용, 에러 처리

 

* PL/SQL을 활용한 저장형 객체 활용

  : 프로시저, 함수, 패키지, 트리거

 

10. 단위 모듈 구현의 원리

원리 설명
정보 은닉
(Information Hiding)
어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐
분할과 정복
(Divide & Conquer)
복잡한 문제를 분해, 모듈 단위로 문제 해결
데이터 추상화
(Data Abstraction)
각 모듈 자료 구조를 엑세스하고 수정하는 함수내에 자료 구조의 표현 내역을 은폐
모듈 독립성
(Module Inpendency)
낮은 결합도와 높은 응집도

 

11. 알고리즘 설계 기법

기법 설명
분할과 정복
(Divide and Conquer)
문제를 나눌 수 없을 때까지 나누고, 각각 풀면서 다시 병합해서 문제의 답을 얻는 알고리즘
동적 계획법
(Dynamic Programming)
어떤 문제를 풀기 위해 더 작은 문제의 연장선으로 생각하고, 과거에 구한 해를 활용하는 방식
탐욕법
(Greedy)
결정 순간마다 가장 좋다고 생각하는 것을 해답으로 생각내는 방식
백트래킹
(Backtracking)
어떤 노드를 점검 후 선택을 되돌려 다른 노드를 검색하며 최적의 해를 구하는 알고리즘

 

12. 시간 복잡도에 다른 알고리즘

복잡도 설명 대표 알고리즘
O(1) - 상수형
- 항싱 일정한 속도로 작동
해시 함수
O(logN) - 로그형
- log2N번 만큼 수행
이진 탐색
O(n) - 선형 복잡도
- 입력 자료를 차례로 하나씩 모두 처리
-  수행 시간이 자료 크기와 정비례
순차 탐색
O(N logN) - 선형 로그형 복잡도 퀵 정렬
머지 정렬
O(NC2) - 2중 for문 버블 정렬
삽입 정렬