모듈이란?

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

- 독립성

- 수많은 조합.

- 단독 컴파일

- 재사용

 

모듈화란?

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

 

모듈화 기법

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

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

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

 

공통 모듈 구현이란?

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

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

 

응집도 (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

쿼리 성능 개선

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

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

트랜잭션

트랜잭션이란?

인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위.

 

트랜잭션의 특성

- 원자성 (Atomicity) : Commit / Rollback. 트랜잭션을 구성하는 연산 전체가 모두 정상 실행되거나 모두 취소되어야 함.

- 일관성 (Consistency) : 시스템이 가지고있는 고정 요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함. 무결성. 동시성 제어.

- 격리성=고립성 (Isolation) : 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않아야 함.

- 영속성 (Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 함.

 

트랜잭션의 상태

- 활동 상태 (Active) : 초기 상태, 트랜잭션이 실행 중.

- 부분 완료 상태 (Partially Committed) : 마지막 명령문이 실행된 후.

- 완료 상태 (Committed) : 트랜잭션이 성공적으로 완료된 후.

- 실패 상태 (Failed) : 정상적인 실행이 더 이상 진행될 수 없을 때.

- 철회 상태 (Aborted) : 트랜잭션이 취소되고 DB가 트랜잭션 시작 전 상태로 환원된 상태.

 

TCL (Transaction Contorl Language)이란?

트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어

- COMMIT : 트랜잭션을 메모리에 영구적으로 저장하는 제어어. 트랜잭션 확정.

- ROLLBACK : 오류 발생 시, 오류 이전의 특정 시점 상태로 되돌려주는 제어어. 트랜잭션 취소.

- CHECKPOINT : ROLLBACK을 위한 시점을 지정하는 제어어.

 

병행제어란?

병행 제어는 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, DB 일관성 유지를 위해 상호 작용을 제어하는 기법.

 

병행제어 목적

- DB 공유 최대화

- 시스템 활용도 최대화

- DB 일관성 유지

- 응답시간 최소화

 

병행제어 미보장 시 문제점

- 갱신 손실(Lost Update) : 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생.

- 현황 파악오류(Dirty Read) : 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생.

- 모순성 (Inconsistency) : 두 트랜잭션이 동시에 실행되어 DB의 일관성 결여.

- 연쇄복귀 (Cascading Rollback) : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우, 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류.

 

병행제어 기법

- 로킹 (Locking) : 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법.로킹 단위가 작아지면 DB 공유도 및 로킹 오버헤드 증가.

- 낙관적 검증 (Optimistic Validation) : 트랜잭션이 어떠한 검증도 수행하지 않고 트랜잭션을 수행한 후, 트랜잭션 종료 시 검증을 수행하여 DB에 반영하는 기법.

- 타임 스탬프 순서 (Time Stamp Ordering) : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법.

- 다중버전 동시성 제어 (MVCC: Multi Version Concurrency Control) : 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법.

 

DB 고립화 수준(격리성 주요 기법)

다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도.

- Read Uncommitted : 한 트랜잭션에서 연산중인 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준.

- Read Committed : 연산이 완료될 때까지 연산 대상 데이터에 대한 읽기를 제한하는 수준.

- Repeatable Read : 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신 및 삭제를 제한하는 수준.

- Serializable Read : 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준.

 

회복 기법(영속성 주요 기법)

트랜잭션을 수행하는 도중 장애로 인해 손상된 DB를 손상되기 이전의 정상적인 상태로 복구시키는 작업.

- 로그 기반 회복 기법 - 지연 갱신 회복 기법(Deferred Update) : 트랜잭션이 완료되기 전까지 DB에 기록하지 않음.

- 로그 기반 회복 기법 - 즉각 갱신 회복 기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영.

- 체크 포인트 회복 기법(Checkpoint Recovery) : 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 기법.

- 그림자 페이징 회복 기법(Shadow Paging Recovery) : DB 트랜잭션 수행 시 복제본을 생성하여 DB 장애 시 이를 이용해 복구.

 

 

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

7.3 응용 SQL  (0) 2022.09.29
7-2 DDL | DML | DCL  (0) 2022.09.28
6. 프로그래밍 언어 활용  (1) 2022.09.26
5.인터페이스 설계  (0) 2022.09.22
4.3. 내외부 연계 모듈 구현  (1) 2022.09.14

표기법

- 카멜 표기법 : 식별자 표기 시 여러 단어가 이어지면 첫 단어 시작만 소문자로 표시하고, 각 단어의 첫 글자는 대문자로 지정하는 표기법 (inputFunc)

- 파스칼 표기법 : 식별자 표기 시 여러 단어가 이어지면 각 단어의 첫 글자는 대문자로 지정하는 표기법 (InputFunc)

- 스네이크 표기법 : 식별자 표기 시 여러 단어가 이어지면 단어 사이에 언더바를 넣는 표기법 (input_func)

- 헝가리안 표기법 : 접두어에 자료형을 붙이는 표기법 (nScore)

 

프로그래밍 언어의 유형 분류

개발 편의성에 따른 분류

- 저급 언어 : 기계가 이해할 수 있도록 만들어진 언어 (기계어 / 어셈블리어)

- 고급 언어 : 개발자가 소스 코드 작성 시 쉽게 이해할 수 있도록 작성된 언어 (C / C++ / JAVA / PYTHON)

 

실행하는 방식에 따른 언어 분류

- 명령형 언어 : 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식. 절차형 언어 (FORTRAN / COBOL / PASCAL / C)

- 객체 지향 언어 : 객체 간의 메시지 통신을 이용해 프로그래밍하는 방식 (JAVA / C++)

- 함수형 언어 : 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식 (LISP)

- 논리형 언어 : 논리 문장을 이용해 프로그램을 표현하고 계산을 수행하는 개념에 기반한 프로그래밍 방식 (프롤로그)

 

구현 기법에 따른 분류

- 컴파일 방식의 언어 : 고급 언어를 기계어로 번역하는 방식의 언어. 컴파일러에 의해 실행에 필요한 정보가 미리 계산되어 실행 속도가 높음 (FORTRAN / PASCAL / C / C++)

- 인터프리터 방식의 언어 : 고급 언어 명령문을 하나씩 번역하고 실행하는 방식의 언어. 프로그램 실행과 동시에 동작 (BASIC / 프롤로그 / LISP)

- 혼합형 방식의 언어 : 고급 언어를 컴파일하여 중간 언어로 변환 후, 인터프리터에 의해 번역을 실행하는 방식의 언어 (JAVA)

 

프로그래밍 언어별 특성

절차적 프로그래밍 언어 종류

- ALGOL : 알고리즘의 연구개발에 이용하기 위한 목적으로 생성. 절차형 언어로는 최초로 재귀 호출 가능.

- C : 유닉스에서 사용하기 위해 개발한 프로그래밍언어. 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된  프로그래밍 언어.

- BASIC : 교육용으로 개발되어 언어의 문법이 쉬움. 다양한 종류. 서로 다른 종류 사이의 소스 코드는 호환되지 않음.

- FORTRAN : 과학 계산에서 필수적인 벡터, 행렬 계산 기능 등이 내장된 과학 기술 전문 언어. 산술기호, 삼각 및 지수, 대수 함수 등 수학 함수 사용 가능.

 

객체 지향 프로그래밍 언어 종류

- C++ : C문법 + 객체 지향 프로그래밍 개념 + 일반화 프로그래밍을 위한 템플릿 기능. 원하는 많은 작업을 성능 하락이 없는 형태로 개발이 가능. 직접 신경 써야 하는 것들(메모리 관리)이 많은 언어라 개발 어려움.

- C# :  MS 개발. C++과 자바와 비슷한 문법. 자바와 달리 불안전 코드와 같은 기술을 통해 플랫폼 간 상호 운용성 확보.

- JAVA : 썬 마이크로 시스템즈가 개발한 객체 지향적 프로그래밍 언어. 자바 컴파일러는 자바로 작성된 프로그램을 바이트 코드라는 특수 바이너리 형태로 변환. 현재 웹 개발에 가장 많이 사용되는 언어.

- Delphi : 파스칼 문법에 여러 기능 추가. 윈도우 아래에서 모든 부분을 프로그래밍 할 수 있는 언어. 높은 생산성. 간결한 코드. C++과 비슷한 수준의 저수준 시스템 프로그래밍 가능.

 

스크립트 언어 종류

- PHP : 동적 웹 페이지를 만들기 위해 설계. PHP 코드를 HTML에 입력 시 웹 서버에서 해당 코드를 인식해 작성자가 원하는 웹 페이지를 생성할 수 있음. 인터페이스 방식의 자체 인터프리터 제공.

- Perl : 인터프리터 방식의 프로그래밍 언어. 실용성 모토. 불특정한 데이터 길이의 제약 없이 강력한 문자열 처리 기능 제공. C, sh 등 다른 프로그래밍 언어에서 뛰어난 기능을 도입.

- Python : 다양한 플랫폼에서 사용 가능. 라이브러리 풍부. 유니코드 문자열 지원. 다양한 언어의 문자 처리. 들여쓰기 사용하여 블럭 구분 문법. 다른 언어로 쓰인 모듈을 연결하는 언어.

- JavaScript : 객체 기반의 스크립트 프로그래밍 언어. 웹 브라우저 내에서 주로 사용. 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 존재. 브라우저마다 지원되는 버전 상이.

 

선언형 언어 종류

- 함수형 언어 (Haskell) : 패턴 맞춤, 커링, 조건제시법, 가드, 연산자 정의 등의 기능 존재. 재귀 함수나 대수적 자료형 지원.

- 함수형 언어 (LISP) : 수학 표기법을 나타내기 위한 목적. 트리 자료구조, GC, 동적 자료형과 인터프리터와 같은 개념 제시. 함수 호출 시 함수 이름 혹은 연산자가 첫 번째로 위치하여 피연산자가 이어 위치.

- 논리형 언어 (Prolog) : 논리식을 기반으로 객체 간의 관계에 관한 문제를 해결하기 위해 사용. 인공지능이나 계산 언어학 분야, 자연언어 처리 분야에서 사용. 

- 특수 분야 언어 (SQL) : RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어. DB관련 프로그램들이 SQL을 표준으로 채택.

 

객체 지향 프로그래밍

객체와 객체 간의 통신을 통해 프로그램 구현. 객체, 클래스, 메시지를 이용해 개발하는 방식.

객체 / 클래스 / 메시지로 구성. 

객체 : 개체, 속성, 메서드로 구성된 클래스의 인스턴스.

클래스 : 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀. 클래스를 통해 추상화된 자료형 제공.

메시지 : 객체 간의 통신

 

객체의 구성요소

개체 : 현실 세계에 보이는 본질. 

속성 : 자료 저장소 역할. 절차 지향 프로그래밍의 변수와 대응.

메서드 : 호출 단위. 절차 지향 프로그래밍의 함수와 대응.

 

모듈과 패키지

모듈 : 전역변수, 함수 등을 모아둔 파일

패키지 : 모듈을 디렉토리 형식으로 구조화한 라이브러리

 

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

7-2 DDL | DML | DCL  (0) 2022.09.28
7.1 SQL 응용  (0) 2022.09.28
5.인터페이스 설계  (0) 2022.09.22
4.3. 내외부 연계 모듈 구현  (1) 2022.09.14
4.2 연계 메커니즘 구성  (0) 2022.09.14

1) 연계 모듈 구현 환경 구성 및 개발

개발하고자 하는 응용 소프트웨어와 연계 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 연계 기능 구현.

EAI / ESB방식과 웹 서비스 방식으로 구분.

 

EAI란?

기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션.

각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높여줄 수 있으며 각 시스템 간의 확장성을 높여줌.

 

EAI 구성요소

- EAI 플랫폼 : 이기종 시스템 간 애플리케이션 상호 운영. 데이터의 신뢰성 있는 전송을 위한 메시지 큐와 트랜잭션 미들웨어 기능 수행. 대규모 사용자 환경 지원을 위한 유연성과 확장성 보장.

- 어댑터 : 다양한 패키지 애플리케이션 및 기업에서 자체적으로 개발한 애플리케이션을 연결하는 EAI의 핵심 장치로 데이터 입출력 도구.

- 브로커 : 시스템 상호 간 데이터가 전송될 때, 데이터 포맷과 코드를 변환하는 솔루션.

- 메시지 큐 : 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터를 송수신하는 기술.

- 비즈니스 워크플로우 : 미리 정의된 기업의 비즈니스 워크플로우에 따라 업무를 처리하는 기능.

 

EAI 구축 유형

- 포인트 투 포인트 : 가장 기초적인 애플리케이션 통합 방법으로 1:1 단순 통합방식. 솔루션을 구매하지 않고 개발자 간의 커뮤니케이션을 통해 통합 가능하다는 장점.

- 허브 앤 스포크 : 단일한 접점의 허브 시스템을 통해 데이터를 전송하는 중앙 집중식 방식. 허브 장애 시 전체 장애 발생.

- 메시지 버스 : 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식. 뛰어난 확장성과 대용량 테이터 처리 가능.

- 하이브리드 : 그룹 내는 허브 앤 스포크 방식을 사용하고, 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식. 그룹 내 환경에 맞는 작업이 가능.

 

ESB란?

기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처.

미들웨어를 중심으로 각각 프로토콜이 호환할 수 있도록 애플리케이션의 통합을 느슨한 결합 방식으로 지원하는 방식.

 

ESB 특징

서비스들을 컴포넌트화된 논리적 집합으로 묶는 핵심 미들웨어이며, 비즈니스 프로세스 환경에 맞게 설계 및 전개할 수 있는 아키텍처 패턴.

버스 방식으로 확장성, 유연한 아키텍처 구성이 가능.

 

EAI ESB
미들웨어(허브)를 이용해 비즈니스 로직을 중심으로 기업 내 애플리케이션을 통합 연계 미들웨어(버스)를 이용해 서비스 중심으로 서비스를 지원하기 위한 관련시스템과 유기적 연계
기업 내부의 이기종 응용 모듈간 통합 기업 간의 서비스 교환을 위해 표준 API로 통합
포인트 투 포인트, 허브 앤 스포크, 메시지 버스, 하이브리드 버스 방식의 분산형 토폴로지 구성
벤더 종속적 기술 적용 표준 기술 사용 (웹 서비스 / XML)
어댑터 / 브로커 / 메시지 큐 웹 서비스, 지능형 라우터, 포맷 변환, 개방형 표준
애플리케이션 간의 단단한 통합 서비스 간의 느슨한 통합
기업 내부망 기업 내부 + 기업 외부 채널망

 

EAI / ESB 방식 연계 모듈 환경 구축 절차

연계 DB 또는 계정 생성 -> 연계를 위한 테이블 생성 -> 연계 응용 프로그램 구현

 

웹 서비스란?

네트워크에 분산된 정보를 서비스 형태로 개방하여 표준화된 방식으로 공유하는 기술로써 서비스 지향 아키텍처 개념을 실현하는 대표적인 기술.

 

웹 서비스 유형

- SOAP(Simple Object Access Protocol) : HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜. 보통의 경우 원격 프로시저 호출(RPC: Remote Procedure Call)을 하는 메시지 패턴 사용.

네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청하고, 서버는 메시지를 즉시 응답.

 

- UDDI(Universal Description, Discovery and Integration) : 웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트리이자 표준. 서비스 제공자는 UDDI라는 서비스 소비자에게 이미 알려진 온라인 저장소에 그들이 제공하는 서비스 목록들을 저장하게 되고, 서비스 소비자들은 그 저장소에 접근함으로써 원하는 서비스들의 목록을 찾을 수 있게 됨. 알려진 송수신 시스템의 통합 구현에서는 서비스의 공개 및 검색과정이 필요 없기때문에 UDDI를 구축하지 않아도 됨.

 

- WSDL(Web Service Description Language) : 웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보가 기술된 XML형식으로 구현되어 있는 언어. SOAP와 XML 스키마와 결합하여 인터넷상에 웹 서비스를 제공하기 위해 사용되기도 함.

 

웹 서비스 방식 연계 환경 구축 및 구현 절차

실제 전송이나 전송 이력에 대한 기록 및 모니터링 기능 별도 구현 필요.

송수신 파일 경로 및 파일명 정의 -> 송신 연계 응용 프로그램 구현 -> 파일 전송 -> 수신 DB 반영 서비스 호출 처리 -> 수신 연계 응용 프로그램 구현

 

웹 서비스 방식 연계 모듈 구현

> 파일 전송 및 서비스 호출처리 구현은 웹 서비스 방식인 SOAP 및 WSDL을 활용한 XML 방식으로 구현.

> 수신 연계 응용 프로그램 구현은 송신 시스템에서 전달받은 XML의 정보를 추출하여 운영 DB에 INSERT하는 연계 응용 프로그램 작성.

 

IPC란?

운영체제에서 프로세스 간 서로 데이터를 주고받기 위한 통신 기술.

 

IPC 주요 기법

- 메시지 큐 : 메시지 또는 패킷 단위로 동작하여 프로세스 간 통신

- 공유 메모리 : 한 프로세스의 일부분을 다른 프로세스와 공유

- 소켓 : 클라이언트와 서버 프로세스 둘 사이에 통신을 가능하게 함

- 세마포어 : 프로세스 사이의 동기를 맞추는 기능 제공.

 

2) 연계 테스트 및 검증

연계 테스트란?

송수신 시스템을 연계하였을 때 데이터의 정합성과 데이터 전송 여부에 대한 테스트.

사전에 테스트 케이스를 작성하고, 작성된 테스트 케이스를 활용하여 연계 테스트를 수행한 후 수행 결과를 검증하는 방식으로 진행.

 

연계 테스트 절차

연계 테스트 케이스 작성 -> 연계 테스트 수행 -> 연계 테스트 수행 결과 검증

 

[ 연계 테스트 케이스 작성 ]

단위 테스트 케이스

송수신 시스템 간 연계 데이터 정상 추출 여부, 데이터 형식 체크, 데이터 표준 준수 여부 등 테스트 가능하도록 작성.

 

통합 테스트 케이스

송수신 시스템 간에 연계 시나리오를 구성하여 다양한 결과가 나올 수 있도록 테스트 케이스 작성.

 

[ 연계 테스트 수행 ]

연계 테스트 케이스의 시험 항목 및 처리 절차대로 실제 연계 응용 프로그램을 실행하며 테스트 후 결과 확인.

송신용 연계 응용 프로그램과 수신용 연계 응용 프로그램 각각 단위 테스트 수행.

 

[ 연계 테스트 수행 결과 검증 ]

연계 테스트 수행 시 동작 단계별 오류 여부 체크, 오류 발생 시 정확한 분석을 통해 해당하는 부분에 대한 오류 수정.

송수신 연계 테이블을 통한 트랜잭션이 실패했을 경우, 프로세스 구간별로 예외 처리 방안 고려.

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

6. 프로그래밍 언어 활용  (1) 2022.09.26
5.인터페이스 설계  (0) 2022.09.22
4.2 연계 메커니즘 구성  (0) 2022.09.14
4.1 연계 데이터 구성  (0) 2022.09.14
3.3 데이터베이스 기초 활용하기  (0) 2022.09.14

1) 연계 메커니즘 정의

연계 메커니즘이란?

응용 소프트웨어와 연계 대상 모듈 간의 데이터 연계 시 요구사항을 고려한 연계방법과 주기를 설계하기 위한 매커니즘.

 

연계 메커니즘의 기능

데이터를 생성하여 전송하는 송신 시스템과 송신 데이터를 수신하여 DB에 반영하는 수신 시스템으로 구성.

송신 시스템은 운영 DB, App으로부터 연계 데이터를 연계 테이블 또는 파일로 생성하여 송신.

수신 시스템은 송신 시스템으로부터 전송된 데이터를 변환 처리 후 DB에 반영.

 

연계 방식

- 직접 연계 방식

연계 및 통합 구현이 단순하고 용이함. 개발 소요 비용 및 기간이 짧고 중간 매개체가 없어 데이터 연계 처리 성능이 좋음.

시스템 간의 결합도가 높아 시스템 변경에 민감. 암·복호화 처리가 불가능. 연계 및 통합 가능한 시스템 환경이 제한적.

- 간접 연계 방식

서로 상이한 네트워크, 프로토콜 연계 및 통합이 가능. 인터페이스 변경 시에도 장애나 오류없이 서비스 가능. 보안이나 업무 처리 로직을 자유롭게 반영 가능.

연계 아키텍처 및 메커니즘이 복잡하여 성능 저하 요소가 존재함. 개발 및 적용을 위한 테스트 기간이 상대적으로 긺.

 

주요 연계 기술

- 직접 연계 : DB 링크 / DB 연결 / API 및 Open API / JDBC / 하이퍼 링크

> DB 링크 : DB에서 제공하는 DB 링크 객체 이용. 수신 시스템에서 DB 링크를 생성하고 송신 시스템에서 해당 DB 링크를 직접 참조하는 방식.

테이블명@DB링크명

 

> DB 연결 : 수신 시스템의 WAS에서 송신 시스템 DB로 연결하는 DB 커넥션 풀을 생성하고 연계 프로그램에서 해당 DB 커넥션 풀 명을 이용해 연결.

송신시스템의 Data Source = DB Connection Pool 이름

 

> API/Open API : 송신 시스템의 DB에서 데이터를 읽어서 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램. API 명과 입출력 파라미터 정보 필요.

 

> JDBC : 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결. DBMS 유형, DBMS 서버 IP와 포트, DB 인스턴스 정보 필요

* 인스턴스(Instance)?

객체지향 프로그래밍에서 해당 클래스의 구조로 컴퓨터 저장 공간에서 할당된 실체.

 

> 하이퍼 링크 : 현재 페이지에서 다른 부븐으로 가거나 전혀 다른 페이지로 이동하게 해주는 속성

 

- 간접 연계 : 연계 솔루션 (EAI) / Web Service 및 ESB / 소켓

> 연계 솔루션(EAI) : 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션. 송수신 시스템에 설치되는 어댑터를 이용.

 

> Web Service / ESB : 웹 서비스가 설명된 WSDL과 SOAP 프로토콜을 이용한 시스템 간 연계

* WSDL(Web Services Description Language)?

웹 서비스명, 제공 위치, 메시지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보가 기술된 XML 형식으로 구현되어 있는 언어.

* SOAP(Simple Object Access protocol)?

HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜.

 

> 소켓 : 소켓을 생성하여 포트를 할당하고, 클라이언트의 요청을 연결하여 통신.

TcpServer.listen();

 

커넥션 풀(Connection Pool)?

DB와 연결된 커넥션을 미리 만들어 Pool 속에 저장해두고 필요할 때 커넥션을 풀에서 가져다가 쓰고 다시 풀에 반환하는 기법.

DB에 연결하기 위해서 매번 커넥션 객체를 생성할 때마다 많은 시스템 자원이 소요되는 문제 해결을 위해 커넥션 풀 기법 활용.

 

JDBC(Java Database Connectivity)?

JDBC는 DB에서 자료를 조회하거나 업데이트하기 위해 자바에서 DB에 접속할 수 있도록 하는 자바 API.

Java Application / JDBC API / JDBC Driver Manager / JDBC Driver로 구성.

 

API(Application Programming Interface)?

API는 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스.

API는 어떤 응용프로그램에서 데이터를 주고받기 위한 방법 의미.

어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떤 방식으로 정보를 요청해야 하는지, 그리고 어떤 데이터를 제공 받을 수 있을지에 대한 규격을 정해놓은 인터페이스.

 

소켓(Socket)?

네트워크를 경유하는 프로세스 간 통신의 접속점으로 소켓을 통해 클라이언트와 서버 프로그램 사이에 데이터 송수신 가능.

IP 주소와 포트번호가 합쳐진 네트워크 상에서 서버 프로그램과 클라이언트 프로그램이 통신할 수 있도록 해주는 교환 기술.

두 소켓이 연결되면 서로 다른 프로세스끼리 데이터 전달 가능.

두 소켓이 연결된 것을 세션이라 칭함.

 

연계 매커니즘 수행 절차

연계데이터 추출 및 생성 -> 코드 매핑 및 데이터 변환 -> 연계 테이블 또는 파일 생성 -> 로그 기록 -> 연계 서버 또는 송수신 어댑터 -> 전송 단계 -> 운영 DB에 연계 데이터 반영

 

2) 연계 장애 및 오류 처리 구현

연계 장애 및 오류 유형

연계 시스템 로그, 송수신 시스템 연계 프로그램 로그 등을 확인하여 상세 오류 원인을 분석하고 해결 방안을 결정하여 수행함.

- 연계 시스템 오류 : 연계 서버의 실행 여부 및 송수신, 전송 형식 변환 등의 오류. 서버의 기능과 관련된 장애 및 오류

- 연계 프로그램 오류 : 데이터 추출을 위한 DB 접근 시 권한 불충분(송신). 운영 DB에 반영하기 위한 DB접근 권한 불충분(수신). 데이터 변환 및 반영 시 예외 처리 미처리(공통)

- 연계 데이터 오류 : 송신 시스템에서 추출된 연계 데이터가 유효하지 않은 값으로 인한 오류

 

연계 장애 사례 및 처리 방안

각 장애 상황 사례와 처리 방안을 이해하여 장애 상황을 빠르게 대응할 수 있음.

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

5.인터페이스 설계  (0) 2022.09.22
4.3. 내외부 연계 모듈 구현  (1) 2022.09.14
4.1 연계 데이터 구성  (0) 2022.09.14
3.3 데이터베이스 기초 활용하기  (0) 2022.09.14
3.2 물리 데이터 저장소 설계  (0) 2022.09.13

1) 연계 요구사항 분석

연계 요구사항 분석이란?

서로 다른 두 시스템·장치·소프트웨어를 이어주는 중계 역할을 하는 연계시스템과 관련된 요구사항을 분석하는 과정.

사용자 인터뷰 및 면담을 통해 식별되고 시스템 구성도, 테이블 정의서, 코드 정의서 등을 참고함.

- 분석 기법 : 인터뷰 / 체크리스트 / 설문지 / 델파이 기법 / 브레인스토밍 등

- 분석 참고 문서 : 코드 정의서 / 테이블 정의서 / 응용 프로그램 구성도 / 시스템 구성도 등

 

연계 요구사항 분석 참고문서

- 개체 정의서 : DB 개념 모델링 단계에서 도출한 개체의 타입과 관련 속성, 식별자 등의 정보를 개괄적으로 명세화한 정의서. 논리 DB명 / 엔티티명 / 엔티티 설명 / 주식별자 / 슈퍼타입 엔티티명

 

- 테이블 정의서 : 논리 및 물리 모델링 과정에서 작성하는 설계 산출물. 테이블을 구성하는 컬럼들의 특성, 인덱스, 업무 규칙을 문서화한 것. 컬럼의 특성은 컬럼명, 데이터 타입, 길이, 널값 여부, 키값 여부, 디폴트 값 등을 의미.

 

- 인터페이스(연계) 명세서 : 인터페이스(연계) 정의서에 장성한 인터페이스 ID별로 송수신하는 데이터 타입, 길이 등 인터페이스 항목을 상세하게 작성.

 

- 인터페이스 명세서 구성요소 : 송수신 시스템 간의 인터페이스 방식, 주기 등을 기록한 현황. 인터페이스 ID / 최대 처리 횟수 / 데이터 크기(평균/최대) / 시스템 정보 / 데이터 정보

 

연계 요구사항 분석 절차

시스템 현황 확인 -> 정의서 확인 -> 체크리스트 적상 -> 인터뷰 및 면담 -> 연계 요구사항 분석서 작성

1. 시스템 현황 확인 : 송수신 시스템의 하드웨어 구성, 시스템 소프트웨어 구성, 네트워크 현황 확인.

2. 정의서 확인 : 송수신 시스템에서 연계하고자 하는 데이터 관련 테이블 정의서 및 코드 정의서 확인.

3. 체크리스트 작성 : 질의 사항을 시스템 관점과 응용 관점에서 연계 분석 체크리스트 작성.

4. 인터뷰 및 면담 : 사용자 인터뷰 및 면담을 수행하고 회의록 작성.

5. 연계 요구사항 분석서 작성 : 연계 시스템 구성 및 데이터 식별에 해당하는 내용에 요구사항 ID를 부여하고 요구사항 분석서 작성.

 

연계 시스템의 구성

연계 시스템은 송수신시스템으로 구성. 연계 방식에 따라 중계 서버를 둘 수 있음.

- 송신 시스템 : 연계할 데이터를 DB와 App으로부터 연계 테이블 또는 파일 형태로 생성하여 송신하는 시스템.

- 수신 시스템 : 수신한 연계 테이블 또는 파일의 데이터를 수신 시스템에서 관리하는 데이터 형식에 맞게 변환하여 DB에 저장하거나 App에서 활용할 수 있도록 제공하는 시스템.

- 중계 서버 : 송수신 시스템 사이에서 데이터를 송수신하고 연계 데이터의 송수신 현황을 모니터링 하는 시스템. 연계 데이터의 보안 강화 및 다중 플랫폼 지원 등 가능.

 

2) 연계 데이터 식별 및 표준화

연계 데이터 식별 정보

- 대내외 구분 정보 / 기관명 / 시스템 ID / 한글명 / 영문명 / 시스템 설명 / 시스템 위치 / 네트워크 특성 / 전용 회선 정보 / IP 및 URL / Port / Login / DB정보 / 담당자 정보

 

연계 데이터 표준화

인터페이스 시스템 사이에서 교환되는 데이터는 규격화된 표준 형식을 정의하여 사용.

인터페이스 설계 단계에서 송수신 시스템 사이에 전송되는 표준 항목과 업무처리 데이터, 공통 코드 정보 등을 누락 없이 식별하고 인터페이스 명세서를 작성.

 

인터페이스 시스템의 데이터 표준

- 인터페이스 데이터 공통부 : 인터페이스 표준 항목을 포함.

- 인터페이스 데이터 개별부 : 송수신 시스템에서 업무 처리에 필요한 데이터 포함

- 인터페이스 데이터 종료부 : 전송 데이터의 끝을 표시하는 문자를 포함하여 종료 표시

 

송수신 전문 구성

- 전문 공통부(고정) => 전문 길이(10Byte) / 시스템 공통(246Byte) / 거래 공통(256Byte)

- 전문 개별부(가변) => 데이터

- 전문 종료부(고정) => 전문 종료(2Byte)

 

연계 데이터 식별 및 표준화 절차

연계 범위 및 항목 정의 -> 연계 코드 변환 및 매핑 -> 연계 데이터 식별자와 변경 구분 추가 -> 연계 데이터 표현 방법 정의 -> 연계 정의서 및 명세서 작성

 

 

 

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

4.3. 내외부 연계 모듈 구현  (1) 2022.09.14
4.2 연계 메커니즘 구성  (0) 2022.09.14
3.3 데이터베이스 기초 활용하기  (0) 2022.09.14
3.2 물리 데이터 저장소 설계  (0) 2022.09.13
3.1 데이터 모델  (0) 2022.09.13

+ Recent posts