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문 | 버블 정렬 삽입 정렬 |
'정처기 필기 > 2과목 - 소프트웨어 개발' 카테고리의 다른 글
모듈 연계 / 인터페이스 구현(보안), 구현 검증, 오류 확인 (0) | 2023.02.16 |
---|---|
결함 관리 / 애플리케이션 성능 분석 (0) | 2023.02.16 |
통합 테스트 / {테스트 케이스,테스트 시나리오,테스트 오라클,테스트 하네스} (0) | 2023.02.16 |
화이트박스, 블랙박스 테스트 / 개별 단계에 따른 애플리케이션 테스트 (0) | 2023.02.16 |
애플리케이션 테스트 / 애플리케이션 테스트 분류 (0) | 2023.02.16 |