DES AES
64비트 평문. 56비트 키 128비트 평문. 128비트 / 192비트 / 256비트 키
16라운드 10라운드 / 12라운드 / 14라운드
느림 빠름
두 개의 절반 단일 행렬
IBM 벨기에 암호학자

'정보처리기사' 카테고리의 다른 글

관계대수 | 관계해석  (0) 2022.10.27
8.3 배치 프로그램  (1) 2022.10.04
8.2 모듈  (0) 2022.10.04
8.1 형상 관리  (1) 2022.10.04
7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30

배치 프로그램이란?

사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법.

- 이벤트 배치 : 사전에 정의해 둔 조건 충족 시 자동 실행

- 온디맨드 배치 : 사용자의 명시적 요구가 있을 때마다 실행

- 정기 배치 : 정해진 시점에 정기적으로 실행

 

배치 스케줄러?

일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구.

- 스프링 배치 : 스프링의 3대 요소(DI / AOP / 서비스 추상화)를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션.

- 쿼츠 스케줄러 : 스프링에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러.

 

> 크론 표현식 사용 (초 분 시간 일 월 요일 연도)

'정보처리기사' 카테고리의 다른 글

관계대수 | 관계해석  (0) 2022.10.27
암호화 DES | AES  (0) 2022.10.05
8.2 모듈  (0) 2022.10.04
8.1 형상 관리  (1) 2022.10.04
7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30

모듈이란?

그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체.

- 독립성

- 수많은 조합.

- 단독 컴파일

- 재사용

 

모듈화란?

소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법.

 

모듈화 기법

- 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임.

- 메인 루틴 : 프로그램의 주요한 부분. 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴. 서브 루틴 호출.

- 서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출되는 루틴.

 

공통 모듈 구현이란?

기능을 분할하고 추상화하여 성능을 향상시키고, 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법.

모듈 간의 결합도는 줄이고, 응집도는 높인 공통 모듈 구현 권장.

 

응집도 (Cohesion) : 높을수록 좋은 품질 _ 우논시절통순기

우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적

1. 우연적 응집도 (Coincidental) : 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도.

서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행할 경우의 응집도.

 

2. 논리적 응집도 (Logical) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도.

 

3. 시간적 응집도 (Temporal) : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도.

 

4. 절차적 응집도 (Procedural): 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도.

 

5. 통신적 응집도 (Communication) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도.

 

6. 순차적 응집도 (Sequential) : 모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도.

 

7. 기능적 응집도 (Functional) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도.

 

 

결합도 (Coupling) : 낮을수록 좋은 품질 _ 자스제외공내

자료 < 스탬프 < 제어 < 외부 < 공통 < 내용

1. 자료 결합도 (Data) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도.

한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않음.

 

2. 스탬프 결합도 (Stamp) : 배열, 객체, 구조 등이 전달되는 경우의 결합도. 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도. 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미침.

 

3. 제어 결합도 (Control) : 한 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용해 통신하는 경우의 결합도. 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도.

 

4. 외부 결합도 (External) : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도. 외부 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도.

 

5. 공통 결합도 (Common) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도. 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도.

 

6. 내용 결합도 (Content) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도. 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도.

 

 

팬인 & 팬아웃

팬인 : 어떤 모듈을 제어하는 모듈의 수. 모듈 자신을 기준으로 모듈에 들어옴. 팬인이 높으면 재사용 측면에서 설계가 잘 됨. 단일 장애의 발생 가능. 관리 및 테스트 비용 증가.

 

팬아웃 : 어떤 모듈에 의해 제어되는 모듈의 수. 모듈 자신을 기준으로 모듈에서 나감. 팬아웃이 높으면 불필요한 모듈 호출 여부 검토 및 단순화 여부 검토 필요.

 

시스템 복잡도 최적화 : 높은 팬인. 낮은 팬아웃 설계.

 

공통 모듈 테스트

IDE 도구 활용하여 디버깅 수행.

- 화이트박스 테스트 : 응용 프로그램의 내부 구조와 동작 검사. 테스트 케이스를 다양하게 하여 테스트.

- 메서드 기반 테스트 : 공통 모듈의 외부에 공개된 메서드 기반의 테스트. 메서드에 서로 다른 파람 값을 호출하여 테스트.

- 화면 기반 테스트 : 화면에 직접 데이터 입력하여 테스트.

- 테스트 드라이버 / 테스트 스텁 활용 테스트 : 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우 수행.

테스트 드라이버 - 상위 모듈 없는 경우 / 테스트 스텁 - 하위 모듈 없는 경우.

 

 

'정보처리기사' 카테고리의 다른 글

암호화 DES | AES  (0) 2022.10.05
8.3 배치 프로그램  (1) 2022.10.04
8.1 형상 관리  (1) 2022.10.04
7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30
7.4 절차형 SQL  (1) 2022.09.30

형상 통제 : 형상 항목의 버전 관리를 위해 변경 여부와 변경 활동을 통제하는 활동.

 

형상 관리 : 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동.

 

형상 관리 목적

- 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성 확보 가능.

- 프로젝트 변경이 발생되었을 때 처리 메커니즘 제공.

대표적 메커니즘) 형상 관리대상 파악, 베이스라인 지정, 형상 관리, 접근 제어.

* 베이스라인 : 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준.

 

형상 식별 -> 형상 통제 -> 형상 감사 -> 형상 기록

 

형상 관리 도구 : 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위해 사용되는 도구.

 

소프트웨어 형상관리 도구 유형

- 공유 폴더 방식(RCS / SCCS) : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식

- 클라이언트/서버 방식(CVS / SVN) : 중앙에 버전 관리 시스템을 항시 동작시키는 방식

- 분산 저장소 방식 (GIT) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식

 

CVS : 서버와 클라이언트로 구성. 다수의 인원이 동시에 범용적인 운영체제로 접근 가능.

SVN : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와줌.

RCS : 소스 파일 수정 한 사람만 가능. 파일 잠금 방식

Bitkeeper : SVN과 비슷. 중앙 통제 방식. 대규모 프로젝트에서 빠른 속도를 낼 수 있음.

Git : 분산형 버전 관리 시스템. 대형 프로젝트에 효과적. 

Clear Case : 복수 서버, 복수 클라이언트 구조. 서버가 부족할 시 필요한 서버를 하나씩 추가하여 확장성 기함. 

 

'정보처리기사' 카테고리의 다른 글

8.3 배치 프로그램  (1) 2022.10.04
8.2 모듈  (0) 2022.10.04
7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30
7.4 절차형 SQL  (1) 2022.09.30
7.3 응용 SQL  (0) 2022.09.29

쿼리 성능 개선

DB에서 프로시저에 있는 SQL 실행 계획을 분석, 수정을 통해 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 작업. SQL 성능 개선을 통해 데이터 조작 프로시저의 성능 개선 가능.

 

쿼리 성능 개선 절차

문제 있는 SQL 식별 -> 옵티마이저 통계 확인 -> SQL문 재구성 -> 인덱스 재구성 -> 실행계획 유지관리

 

1) 문제 있는 SQL 식별 : APM 활용.

* APM(Application Performance Monitoring) : 안정적인 시스템 운영을 위해 부하량, 접속자 파악 및 장애진단 등을 목적으로 하는 성능 모니터링 도구 의미.

 

2) 옵티마이저 통계 확인 : SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DB 핵심 모듈

 

3) SQL문 재구성 : 범위가 아닌 특정 값 지정으로 범위를 줄여 처리속도를 빠르게 함. 옵티마이저가 비정상적인 실행계획 수립 시, 힌트로서 옵티마이저의 접근 경로 및 조인 순서를 제어함.

 

4) 인덱스 재구성 : 성능에 중요한 액세스 경로를 고려해 인덱스 생성. 실행 계획 검토하여 기존 인덱스의 열 순서 변경 및 추가.

 

5) 실행계획 유지관리 : DB 버전 업그레이드, 데이터 전환 등 시스템 환경의 변경 사항 발생 시에도 실행 계획이 유지되고 있는지 관리함.

 

옵티마이저

SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부 핵심엔진.

SQL 처리경로 = 실행 계획

 

옵티마이저 유형

규칙기반 옵티마이저(RBO) 비용기반 옵티마이저(CBO)
통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택하는 옵티마이저
규칙(우선 순위) 기반 비용(수행 시간) 기반
인덱스 구조, 연산자, 조건절 형태 등으로 평가 레코드 개수, 블록 개수, 평균 행 길이, 컬럼 값의 수, 컬럼 값 분포, 인덱스 높이, 클러스터링 팩터 등으로 평가
사용자가 원하는 처리경로로 유도하기가 쉬움 옵티마이저의 이해도가 낮아도 성능보장이 가능

 

SQL 수행과정 내 옵티마이저 역할

- 쿼리 변환(Query Transformer) : SQL을 좀 더 일반적이고 표준화된 형태로 변환.

- 비용 산정(Estimator) : 쿼리 명령어 각 단계의 선택도, 카디널리티, 비용 계산. 실행계획 전체에 대한 총비용을 계산.

- 계획 생성(Plan Generator) : 하나의 쿼리를 수행 시 후보군이 될 만한 실행계획들을 생성해내는 역할.

 

힌트 사용

SQL 성능 개선의 핵심 부분으로 옵티마이저의 실행 계획을 원하는 대로 변경할 수 있게 함.

옵티마이저가 항상 최선의 실행계획을 수립할 순 없기에 명시적 힌트를 통해 실행계획을 변경함.

 

SQL문 재구성

특정 값 지정 / 별도 SQL 사용 / 힌트 사용 / HAVING 미사용 / 인덱스만 질의 사용

 

인덱스 재구성

자주쓰는 컬럼 선정 / SORT 명령어 생략 / 분포도 고려 / 변경 적은 컬럼 선정 / 결합 인덱스 사용

 

'정보처리기사' 카테고리의 다른 글

8.2 모듈  (0) 2022.10.04
8.1 형상 관리  (1) 2022.10.04
7.4 절차형 SQL  (1) 2022.09.30
7.3 응용 SQL  (0) 2022.09.29
7-2 DDL | DML | DCL  (0) 2022.09.28

일반적인 개발 언어처럼 SQL 언어에서도 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어.

 

종류

- 프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합

- 사용자 정의 함수 : 일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 SQL

- 트리거 : DB 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 SQL

 

DBMS_OUTPUT 패키지 종류

- DBMS_OUTPUT.PUT(문자열) : 개행없이 문자열을 출력하는 프로시저

- DBMS_OUTPUT.PUT_LINE(문자열) : 문자열 출력 후 개행하는 프로시저

 

[ 프로시저 ]

일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합

 

[ 프로시저 구성 ]

선언부 (DECLARE) : 프로시저의 명칭, 변수와 인수 그리고 그에 대한 데이터 타입을 정의하는 부분.

시작/종료부 (BEGIN / END) : 프로시저의 시작과 종료를 표현하며, BEGIN/END가 쌍을 이룸. 

제어부 (CONTROL) : 순차적 처리. 조건문과 반복문을 이용한 문장 처리

SQL : DML 사용 및 DDL TRUNCATE사용

예외부 (EXCEPTION) : 예외 처리 정의하는 처리부

실행부 (TRANSACTION) : DBMS 적용 또는 취소 여부 결정하는 처리부

 

[ 프로시저 문법 ]

- IN : 운영체제에서 프로시저로 값을 전달하는 모드.

- OUT : 프로시저에서 처리된 결과를 운영체제로 전달하는 모드.

- INOUT : IN과 OUT의 두 가지 기능을 동시에 수행하는 모드.

 

[ 사용자 정의 함수 ]

일련의 SQL 처리를 수행하고, 수행 결과를 단일값으로 반환할 수 있는 절차형 SQL.

기본적인 사항은 프로시저와 동일. 종료 시 단일 값을 반환한다는 점에서 반환 부분만 프로시저와 다름.

 

[ 사용자 정의 함수 구성 ]

선언부 (DECLARE) : 사용자 정의 함수의 명칭, 변수와 인수 그리고 그에 대한 데이터 타입을 정의하는 부분.

시작/종료부 (BEGIN / END) : 사용자 정의 함수의 시작과 종료를 표현하며, BEGIN/END가 쌍을 이룸. 

제어부 (CONTROL) : 순차적 처리. 비교 조건에 따라 블록 또는 문장을 실행.

SQL : 조회 용도 SELECT문. DML은 사용 불가

예외부 (EXCEPTION) : 예외 처리 정의하는 처리부

반환부 (RETURN) : 호출문에 대한 함수값 반환

 

[ 트리거 ]

DB에서 삽입, 갱신, 삭제 등의 이벤트가 발생 시 관련 작업이 자동으로 수행되는 절차형 SQL. 이벤트는 전체 트랜잭션 대상과 각행에 의해 발생하는 경우 모두를 포함할 수 있으며, 테이블과 뷰, DB 작업을 대상으로 정의함.

특정 테이블에 대한 데이터 변경을 시작점으로 설정 후, 그와 관련된 작업을 자동적으로 수행하기 위해 트리거 사용.

일반적으로 이벤트와 관련된 테이블의 데이터 삽입, 추가, 삭제 작업을 DBMS 가 자동적으로 실행시키는데 활용.

데이터 무결성 유지 및 로그 메시지 출력 등의 별도 처리를 위해 트리거 사용.

 

프로시저와 사용자 정의 함수와 기본 문법 같음.

반환값이 없고 DML을 주된 목적으로 한다는 점에서 프로시저와 유사.

EVENT 명령어를 통해 트리거 실행을 위한 이벤트를 인지함. 외부 변수 IN / OUT이 없다는 점에서 프로시저와 사용자 정의 함수와 다름.

 

[ 트리거 종류 ]

행 트리거 : 데이터 변화가 생길 때마다 실행

문장 트리거 : 트리거에 의해 단 한 번 실행

 

[ 트리거 구성 ]

- 선언부 (DECLARE) : 트리거의 명칭 정의

- 이벤트부 (EVENT) : 트리거가 실행되는 타이밍 및 이벤트를 명시하는 부분

- 시작/종료부 (BEGIN / END) : 트리거의 시작과 종료를 표현하는데 필수.

- 제어부 (CONTROL) : 순차적 처리. 비교 조건에 따라 블록 또는 문장 실행. 조건따라 반복 실행.

- SQL : DML 주 사용. TRUNCATE 사용. TCL 사용 불가.

- 예외부 (EXCEPTION)

 

[ 트리거 문법 ]

- BEFORE : 테이블명에 대한 삽입 / 갱신 / 삭제를 수행하기 전에 트리거가 실행하도록 지정하는 명령.

- AFTER : 테이블명에 대한 삽입 / 갱신 / 삭제가 성공적으로 실행되었을 때만 트리거가 실행하도록 지정하는 명령.

 

 

 

 

 

'정보처리기사' 카테고리의 다른 글

8.1 형상 관리  (1) 2022.10.04
7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30
7.3 응용 SQL  (0) 2022.09.29
7-2 DDL | DML | DCL  (0) 2022.09.28
7.1 SQL 응용  (0) 2022.09.28

집계 함수

여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수

- GROUP BY

- HAVING

- COUNT

- SUM / AVG

- MAX / MIN

- STDDEV : 표준 편차 계산

- VARIAN : 분산 계산

 

그룹 함수

소그룹 간의 소계 및 중계 등의 중간 합계 분석 데이터를 산출하는 함수

- ROLLUP : 중간 집계 값 산출.

- CUBE : 결합 가능한 모든 값에 대한 다차원 집계 생성.

- GROUPING SETS

 

윈도 함수 (= OLAP 함수)

데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 기능

- 순위 함수 : RANK(2위 2위 4위 ...) / DENSE_RANK(2위 2위 3위 ...) / ROW_NUMBER(2위 3위 4위 ...)

 

 

'정보처리기사' 카테고리의 다른 글

7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30
7.4 절차형 SQL  (1) 2022.09.30
7-2 DDL | DML | DCL  (0) 2022.09.28
7.1 SQL 응용  (0) 2022.09.28
6. 프로그래밍 언어 활용  (1) 2022.09.26

웹 브라우저가 WAS에 Servlet 요청 시, WAS는 HttpServletRequest 객체를 생성하여 요청 시 전달 받은 정보를 저장한다. 그리고, 웹브라우저에 응답시 응답할 내용을 담아 보내기 위해 HttpServletResponse 빈 객체를 생성하여 Servlet에게 전달한다.

 

[WAS_Web Application Server]

웹 서버 + 웹 컨테이너 _ 웹 서버에서 요청을 받아 컨테이너로 전송함.

HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어.

DB와 연결하여 데이터를 주고 받거나 데이터 조작이 필요한 경우와 같이 동적인 데이터를 처리함.

 

[Web Server]

이미지나 단순 HTML 문서와 같은 정적 컨텐츠를 처리함.

 

[Web Container]

JSP와 Servlet을 실행시킬 수 있는 소프트웨어.

웹 서버에서 JSP를 요청하면 WAS(톰캣)에서 JSP 파일을 Servlet으로 변환하여 컴파일 수행 후, 수행 결과를 웹 서버에 전달.

 

[HttpServletRequest]

HttpServletRequest는 Http의 요청 정보를 서블릿에 전달하기 위한 목적으로 사용됨.

헤더에 대한 정보, 파라미터, 쿠키, URI 및 URL 등 정보를 읽을 수 있는 메서드를 가짐.

 

[HttpServletResponse]

HttpServletResponse는 ContentType, 응답코드, 응답메시지 등을 담을 수 있음.

 

 

'웹개발 지식' 카테고리의 다른 글

포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02
SQL 컬럼 복사 방법  (0) 2022.10.20
Lombok (생성자 관련 어노테이션)  (0) 2022.09.28
생성자 패턴 | 빌더 패턴  (0) 2022.09.21

@NoArgsConstructor

파라미터가 없는 기본 생성자 만들어줌.

 

@AllArgsConstructor(access = AccessLevel.PUBLIC)

모든 필드에 대한 생성자를 자동으로 생성해줌. AccessLevel 설정 필수!

 

@RequiredArgsConstructor

final 필드에 대한 생성자를 자동으로 생성해줌.

 

'웹개발 지식' 카테고리의 다른 글

포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02
SQL 컬럼 복사 방법  (0) 2022.10.20
HttpServletRequest | HttpServletResponse  (0) 2022.09.29
생성자 패턴 | 빌더 패턴  (0) 2022.09.21

DDL (Data Definition Language) _ 데이터 정의어

데이터를 담는 그릇을 정의하는 언어.

테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어들.

 

DDL 대상

도메인 / 스키마 / 테이블 / 뷰 / 인덱스

** 스키마

- 외부 스키마 : 사용자 및 개발자의 관점. 사용자 뷰. 서브 스키마 

- 개념 스키마 : DB 전체적인 논리적 구조. 전체적인 뷰. 개체간의 관계, 제약 조건, 접근 권한, 무결성, 보안에 대한 정의.

- 내부 스키마 : 물리적 저장장치의 관점. 실제 DB에 저장될 레코드 형식 정의. 저장 데이터 항목의 표현 방법 및 내부 레코드의 물리적 순서 등 표현.

 

DDL 명령어

- 생성 : CREATE

- 수정 : ALTER

- 삭제 : DROP / TRUNCATE

 

DML (Data Manipulation Language) _ 데이터 조작어

DB에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어.

 

DML 명령어

- 조회 : SELECT

- 삽입 : INSERT

- 갱신 : UPDATE

- 삭제 : DELETE

 

DCL (Data Control Language) _ 데이터 제어어

DBA가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 사용하는 제어용 언어.

 

DCL 명령어

- 사용 권한 부여 : GRANT (GRANT 권한 ON 테이블 TO 사용자;)

- 사용 권한 취소 : REVOKE (REVOKE 권한 ON 테이블 FROM 사용자;)

 

도메인

하나의 속성이 가질 수 있는 원자값들의 집합. 속성의 데이터 타입과 크기, 제약조건 등의 정보.

 

스키마

DB의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조

 

테이블

데이터를 저장하는 항목인 필드들로 구성된 데이터의 집합체.

 

논리 테이블로서 사용자에게 테이블과 동일.

- 논리적 데이터 독립성 제공 : DB에 영향을 주지 않고 애플리케이션이 원하는 형태로 데이터에 접근 가능.

- 데이터 조작 연산 간소화 : 애플리케이션이 원하는 형태의 논리적 구조를 형성하여 데이터 조작 연산 간소화.

- 보안 기능(접근제어) 제공

- 뷰 변경 불가

 

인덱스

검색 연산의 최적화를 위해 DB 내 값에 대한 주소 정보로 구성된 데이터 구조.

데이터를 빠르게 찾을 수 있는 수단이자 테이블에 대한 조회 속도를 높여주는 자료 구조.

테이블의 특정 레코드 위치를 알려주는 용도로 사용.

PK컬럼은 자동으로 인덱스 생성.

인덱스가 없을 경우, 테이블 풀 스캔을 함.

인덱스 생성 시, 데이터를 빠르게 찾을 수 있음.

 

- 순서 인덱스 : 데이터가 정렬된 순서로 생성되는 인덱스. B-Tree 알고리즘 활용.

- 해시 인덱스 : 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스. 데이터 접근 비용이 균일, 튜플 양에 무관.

- 비트맵 인덱스 : 각 컬럼에 적은 개수 값이 저장된 경우 선택하는 인덱스. 수정 변경이 적을 경우 유용.

- 함수기반 인덱스 : 수식이나 함수를 적용하여 만든 인덱스.

- 단일 인덱스 : 하나의 컬럼으로만 구성한 인덱스. 주 사용 컬럼이 하나일 경우 사용.

- 결합 인덱스 : 두 개 이상의 컬럼으로 구성한 인덱스. Where 조건으로 사용하는 빈도가 높은 경우 사용.

- 클러스터드 인덱스 : PK 기분으로 레코드를 묶어 저장하는 인덱스. 저장 데이터의 물리적 순서에 따라 인덱스 생성. 특정 범위 검색 시 유리.

 

- 인덱스 범위 스캔 : 인덱스 루트 블록에서 리프블록까지 수직적으로 탐색한 후 리프 블록을 필요한 범위만 스캔하는 방식

- 인덱스 전체 스캔 : 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식

- 인덱스 단일 스캔 : 수직적 탐색만으로 데이터를 찾는 스캔 방식

- 인덱스 생략 스캔 : 선두 컬럼이 조건 절에 빠졌어도 인덱스를 활용하는 스캔 방식

 

조인

- Inner Join

- Outer Join

 > Left Outer Join

 > Right Outer Join

 > Full Outer Join

- Cross Join

- Self Join

 

집합 연산자

- UNION : 중복 행이 제거된 쿼리 결과를 반환하는 집합 연산자.

- UNION ALL : 중복 행이 제거되지 않은 쿼리 결과를 반환하는 집합 연산자. 중복 허용.

- INTERSECT : 두 쿼리 결과에 공통적으로 존재하는 결과를 반환하는 집합 연산자.

- MINUS : 첫 쿼리에 있고 두 번째 쿼리에는 없는 결과를 반환하는 집합 연산자.

'정보처리기사' 카테고리의 다른 글

7.4 절차형 SQL  (1) 2022.09.30
7.3 응용 SQL  (0) 2022.09.29
7.1 SQL 응용  (0) 2022.09.28
6. 프로그래밍 언어 활용  (1) 2022.09.26
5.인터페이스 설계  (0) 2022.09.22

+ Recent posts