트랜잭션

트랜잭션이란?

인가받지 않은 사용자로부터 데이터를 보장하기 위해 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. 분석 단계 -> 인터페이스 정의서

2. 명세 단계 -> 인터페이스 명세서

3. 설계 단계 -> 인터페이스 설계서

 

시스템 인터페이스 설계서

이 기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터, 업무, 송수신 주체 등이 정의된 문서. 시스템의 인터페이스 현황 파악을 위해 인터페이스 목록 및 각 인터페이스의 상세 데이터 명세, 각 기능의 세부 인터페이스 정보를 정의한 문서.

 

시스템 인터페이스 정의서

각 인터페이스 번호 당 인터페이스가 되는 데이터, 데이터 형식, 송수신 시스템의 정보 등을 구체화하는 문서.

 

인터페이스 명세서

데이터 송수신 시스템 간의 데이터 저장과 속성 등의 상세 내역 포함

 

인터페이스 명세서 주요 항목

- 인터페이스 ID / 인터페이스 명 / 오퍼레이션 명 / 오퍼레이션 개요 / 사전 조건 / 사후 조건 / 파라미터 / 반환 값

 

송수신 시스템 간 인터페이스 데이터 표준 확인 절차

데이터 인터페이스 입출력 의미 파악 -> 데이터 인터페이스 입출력 의미 파악을 통한 데이터 표준 확인 -> 인터페이스 데이터 항목 식별 -> 데이터 표준 최종 확인

 

인터페이스 절차

1. 인터페이스 데이터 전송 : 수신지 주소에 REST 방식으로 전달될 수 있으며 DB 커넥션을 이용하여  DB프로시저, 트리거 등을 활용하여 전송.

2. 인터페이스 데이터 수신 : 인터페이스 데이터 수신 후 데이터의 형식이 맞는지 점검하고 각 규칙을 사전에 정의하고 이를 활용함.

3. 인터페이스 데이터 파싱 : 인터페이스 객체는 파서를 이용해 변환하거나 인터페이스 테이블에서 선택

4.인 터페이스 데이터 검증 : 각 세부 데이터의 포맷과 논리적인 제약조건의 오류 검사

5. 후속 기능 수행 : 각 세부 데이터를 활용해 수신 시스템에서 정의된 동작 진행.

 

데이터 통신을 사용하는 인터페이스 구현 방법

인터페이스 객체 생성 구현 : 인터페이스 객체를 생성하기 위해 DB에 있는 정보를 SQL을 통해 선택한 후 JSON으로 생성.

인터페이스 객체 전송 후 전송 결과를 수신 측에서 반환받도록 구현 : 송신 측에서 JSON으로 작성된 인터페이스 객체를 AJAX 기술을 이용해 수신 측에 송신

 

인터페이스 개체를 사용하는 인터페이스 구현

송신 시스템의 인터페이스 테이블 : 송신 관련 정보를 관리하기 위한 항목과 송신 시스템에서 필요한 항목 구현

인터페이스 이벤트 발생 시 인터페이스 테이블에 인터페이스 내용이 기록되도록 구현

데이터 전송을 위해 DB 커넥션이 수신 측 인터페이스 테이블과 연계되도록 구현

프로시저, 트리거, 배치 작업 등의 방법을 통해 수신 테이블로 데이터를 전송하도록 구현.

 

수신 시스템의 인터페이스 테이블

수신 관련 정보를 관리하기 위한 항목과 수신 시스템에서 필요한 항목 구현

수신 측 시스템에서는 인터페이스 데이터를 읽은 후 사전에 정의된 데이터 트랜잭션을 진행할 수 있도록 구현

데이터를 읽을 때나 해당 트랜잭션이 진행될 때 오류가 발생하면 오류 코드 칼럼에 정의된 오류 코드와 오류 내용을 입력하도록 구현

 

인터페이스 기능 구현 기술

JSON (Javascript Object Notation)

속성-값 쌍 또는 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷.

AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷.

기계가 분석하고 생성하기에 용이.

 

XML (Extensible Markup Language)

HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어.

송수신 시스템 간 데이터 연계의 편의성을 위해 전송되는 데이터 구조를 동일한 형태로 정의.

인간과 기계 모두 이해할 수 있는 텍스트 형태로 마크업 포맷을 정의하기 위한 메타언어.

사용자가 직접 문서의 태그를 정의하며, 다른 사용자가 정의한 태그를 사용할 수 있다.

XML 프롤로그 + XML 요소

 

 AJAX (Asynchronous Javascript And XML)

자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술.

전체 페이지를 새로 로드하지 않고 필요한 부분의 데이터만 로드하는 기법.

 (AJAX 기술)

- XMLHttpRequest : 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API. 비동기 통신을 담당하는 자바스크립트 객체

- JavaScript : 객체 기반의 스크립트 프로그래밍 언어. 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 소유

- XML : HTML의 단점을 보완한 인터넷 언어. SGML의 복잡한 단점을 개선한 특수목적을 갖는 마크업 언어

- DOM : XML 문서를 트리 구조의 형태로 접근할 수 있게 해주는 API. 플랫폼/언어 중립적으로 구조화된 문서를 표현하는 객체 지향 모델

- XSLT : XML문서를 다른 XML 문서로 변환하는 데 사용하는 XML 기반 언어. W3C에서 제정한 표준으로 XML 변환 언어를 사용하여 XML 문서로 바꿔주며, 탐색하기 위해 XPath 사용

- HTML : 인터넷 웹 문서를 표현하는 표준화된 마크업 언어

- CSS : 마크업 언어가 실제 표시되는 방법을 기술하는 언어. 운영체제나 사용 프로그램과 관계없이 글자 크기, 글자체, 줄 간격, 색상 등을 자유롭게 선택할 수 있는 스타일 시트

 

REST (Representational State Transfer)

웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처.

Resource(자원), Method(처리), Message

 (특징)

- 클라이언트/서버 구조 : 클라이언트와 서버는 독립적으로 구현되어야 하며 서로 간 의존성은 축소되어야 함. 

- 무 상태성 : 상태 정보를 따로 저장하고 관리하지 않기 때문에 들어오는 요청만 단순 처리함.

- 일관된 인터페이스 : 특정 언어 및 기술에 종속되지 않고 모든 플랫폼에 사용 가능.

- 캐시 처리 가능 : HTTP가 가진 캐싱 기능 적용 가능.

- 자체 표현 구조 : API 메시지 자체만으로 API를 이해할 수 있는 구조.

 

시큐어 코딩 가이드 적용대상

- 입력데이터 검증 및 표현 / 보안 기능 / 시간 및 상태 / 에러 처리 / 코드 오류 / 캡슐화 / API 오용

 

DB 암호화 알고리즘

- 대칭 키 암호화 알고리즘 : 같은 암호 키

- 비대칭 키 암호화 알고리즘 : 공개키, 비밀키. 

- 해시 암호화 알고리즘 : 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성

 

DB 암호화 기법

- API 방식 : 애플리케이션 레벨에서 암호모듈을 적용하는 애플리케이션 수정 방식. 애플리케이션 서버에 암복호화, 정책 관리, 키 관리 등의 부하 발생.

- Plug-in 방식 : 암복호화 모듈이 DB서버에 설치되어 있음. DB서버에 암복호화, 정책 및 키 관리 등의 부하 발생.

- TDE 방식 : DB서버의 DBMS 커널이 자체적으로 암 복호화 기능을 수행하는 방식. 내장되어있는 암호화 기능 이용.

- Hybrid 방식 : API + Plug-In. DB서버와 애플리케이션 서버로 부하 분산

 

암호화 전송 보안 기술

- IPSec : IP 계층(3)에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용하여 양 종단 간 구간에 보안 서비스를 제공하는 터널링 프로토콜. 전송모드와 터널모드 존재. AH, ESP, IKE 주요 프로토콜. 정책 SPD, SAD.

- SSL/TLS : 전송계층(4)과 응용계층(7) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜. 익명모드, 서버인증모드, 클라이언트-서버인증 모드 존재. 클라이언트와 서버 간에 상호 인증, 암호 방식에 대해 협상을 거치는 특징. 특정 암호 기술에 의존하지 않고 다양한 암호 기술 적용. 443포트

- S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송. 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능. 서버 접속시 shttp://URL 사용

 

애플리케이션 보안 기능 적용

- 비인가자 접근 권한 관리

- 악의적 코드 삽입 금지

- 악의적 시도 시 에러 처리

 

DB 보안 기능 적용

- DB 접근 권한

- 악의적 코드 삽입 금지

- 민감 데이터 관리

- 악의적 시도 시 에러 처리

 

인터페이스 구현 검증 도구

- xUnit : 자바, C++, Net 등 다양한 언어를 지원하는 단위테스트 프레임워크. 소프트웨어의 함수나 클래스같은 서로 다른 구성 원소를 테스트할 수 있게 해주는 도구

- STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크. 각 테스트 대상 분상 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증 도구

- FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크. 사용자가 테스트 케이스 테이블을 작성하면 빠르고 편하게 자동으로 원하는 값에 대해 테스트할 수 있는 장점.

- NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN의 테스트 자동화 프레임워크

- Selenium : 다양한 브라우저 지원 및 개발언어를 지원하는 웹 어플리케이션 테스트 프레임워크.테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 도구 제공.

- watir : 루비 기반 웹 애플리케이션 테스트 프레임워크. 모든 언어 기반의 웹 애플리케이션 테스트와 브라우저 호환성 테스팅 가능

 

인터페이스 감시 도구

- 스카우터(SCOUTER) : 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈 소스 DB 모니터링 기능, 인터페이스 감시 기능 제공.

- 제니퍼(Jennifer) : 애플리케이션의 개발부터 테스트, 오픈, 운영, 안정화까지 전 생애주기 단계 동안 성능을 모니터링하고 분석해주는 APM 소프트웨어

 

인터페이스 오류 처리 방법

- 사용자 화면에서 오류를 인지하도록 구현하는 방법

- 인터페이스 오류 시스템 로그를 별도로 작성하여 파일로 보관하는 방법

- 별도 데이터베이스에 인터페이스 관련 오류 사항을 기록하는 방법.

 

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

7.1 SQL 응용  (0) 2022.09.28
6. 프로그래밍 언어 활용  (1) 2022.09.26
4.3. 내외부 연계 모듈 구현  (1) 2022.09.14
4.2 연계 메커니즘 구성  (0) 2022.09.14
4.1 연계 데이터 구성  (0) 2022.09.14

[ 생성자 패턴 ]

생성자 패턴은 필요 데이터를 모두 입력해주어야 처리 가능.

public class TestVO {
	private String name;
   	private int age;
    
    public TestVO (String name, int age) {
    	this.name = name;
        this.age = age;
    }

[ 빌더 패턴 ]

@Builder 붙여줘야함.

빌더 패턴은 필요한 데이터만 설정하여 동적으로 처리 가능하므로, 추가 변수가 있을 시 로직의 수정 없이 변수 추가 가능.

@Builder
public class TestVO {
	private String name;
   	private int age;
}
TestVO vo = TestVO.builder()
		.name("이름")
       	 	.age(29)
        	.build();

 

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

포스트맨  (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
Lombok (생성자 관련 어노테이션)  (0) 2022.09.28

화면이 전환될 때, 전환하는 행위를 Route로 칭한다.

SPA 제작 시 뷰에서 제공하는 유용한 라우팅 라이브러리가 Vue Router이다.

 

1. vue-router 설치

> npm i --save vue-router

 

2. router.js 추가

import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter); // vue 에서 vue router 를 사용하기 위해 알려줘야합니다.

const router = new VueRouter({
  mode: "history",
  routes: [
    { path: "/", component: Home },
    {
      path: "*",
      component: ErrorPage
    }
  ]
});

export default router;

 

3. main.js에 router 추가

import Vue from "vue";
import App from "./App.vue";
import router from "./router";

Vue.config.productionTip = false;

new Vue({
  router,
  render: h => h(App)
}).$mount("#app");

 

4. App.vue에 router-view 추가

<template>
  <div>
    <router-view/>
  </div>
</template>

<script>
export default {};
</script>

<style>
</style>

'Vue' 카테고리의 다른 글

vue - axios  (0) 2023.02.06
Vue 함수 구현 (computed / methods)  (0) 2022.09.06
Vue의 개념과 시작하기  (0) 2022.09.05

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

1) 데이터베이스 종류

데이터베이스란?

다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합.

데이터에 대한 효과적인 관리를 위해 자료의 중복성 제거, 무결성 확보, 일관성 유지, 유용성 보장 중요.

데이터베이스는 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터

- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임

- 저장된 데이터(Stored Data) : 저장 매체에 저장된 데이터

- 운영 데이터(Operational Data) : 조직의 업무를 수행하는 데 필요한 데이터

- 공용 데이터(Shared Data) : 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터

 

데이터베이스 특성

- 실시간 접근성 (Real-Time Accessibility) : 쿼리에 대해 실시간 응답 가능

- 계속적인 변화 (Continuous Evolution) : 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신 데이터 유지

- 동시 공용 (Concurrent Sharing) : 다수의 사용자가 동시에 같은 내용의 데이터를 이용 가능

- 내용 참조 (Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아닌, 사용자가 요구하는 데이터 내용으로 데이터를 찾음.

 

데이터베이스 관리 툴이란?

DB관리자들이 데이터베이스를 편리하고 쉽게 다룰 수 있도록 도와주는 도구.

오픈 소스 기반으로 무료로 사용할 수 있는 툴과 상용화로 비용을 지불해야 사용할 수 있는 툴이 존재.

DB 생성 및 삭제 / SQL 명령어 작성 및 실행 / 상태 모니터링 / 사용자 계정 관리 / DB 내보내기 및 가져오기 / 환경 설정

 

[데이터베이스 종류]

파일 시스템이란?

파일에 이름을 부여하고 저장이나 검색을 위하여 논리적으로 그것들을 어디에 위치시켜야 하는지 등을 정의한 뒤 관리하는 데이터베이스 전 단계의 데이터 관리 방식.

 

파일 시스템의 종류

- ISAM (Indexed Sequential Access Method) : 자료 내용은 주 저장부, 자료의 색인은 자료가 기록된 위치와 함께 색인부에 기록되는 시스템. 

- VSAM (Virtual Storage Access Method) : 대형 운영체제에서 사용되는 파일 관리시스템

 

관계형 데이터베이스 관리시스템(RDBMS : Relational Database Management System)

관계형 모델을 기반으로 하는 가장 보편화된 DBMS.

데이터를 저장하는 테이블의 일부를 다른 테이블과 상화 관계로 표시하며 상관관계 정리.

변화하는 업무나 데이터 구조에 대한 유연성이 좋아 유지 관리 용이.

Oracle / SQL Server / MySQL / Maria DB

 

계층형 데이터베이스 관리시스템(HDBMS : Hierarchical Database Management System)

데이터를 상하 종속적인 관계로 계층화하여 관리하는 DB

데이터에 대한 접근 속도가 빠르지만, 종속적인 구조로 인하여 변화하는 데이터 구조에 유연하게 대응하기 쉽지 않다.

IMS / System2000

 

네트워크 데이터베이스 관리시스템(NDBMS : Network Database Management System)

데이터의 구조를 네트워크상의 망상 형태로 표현한 데이터 모델.

트리 구조나 계층형 데이터베이스보다는 유연하지만 설계가 복잡한 단점.

IDS / IDMS

 

DBMS란?

데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어

 

DBMS 유형

- 키-값(Key-Value) DBMS : 키 기반 Get / Put / Delete 제공, 메모리 기반에서 성능 우선 시스템 및 빅데이터 처리 가능 DBMS. 유니크한 키에 하나의 값을 가지고 있는 형태.

Redis / DynamoDB

 

- 컬럼 기반 데이터 저장(Column Family Data Store) DBMS : Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 DBMS. 테이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Bigtable 기반으로 구현.

HBase / Cassandra

 

- 문서 저장(Document Store) DBMS : 값의 데이터 타입이 문서라는 타입을 사용하는 DBMS. 문서 타입은 XML, JSON과 같이 구조화 된 데이터 타입으로, 복잡한 계층 구조 표현이 가능.

MongoDB / Couchbase

 

- 그래프(Graph) DBMS : 시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 DBMS. 노드와 엣지로 특징되는 요소 특화. 노드 간 관계를 구조화하여 저장.

Neo4j / AllegroGraph

* 시맨틱 웹(Semantic Web)?

온톨로지를 활용하여 서비스를 기술하고, 온톨로지의 의미적 상호 운용성을 이용해 서비스 검색, 조합, 중재 기능을 자동화하는 웹.

* 온톨로지(Ontology)?

실세계에 존재하는 모든 개념들과 개념들의 속성, 그리고 개념들 간의 관계 정보를 컴퓨터가 이해할 수 있도록 서술해 놓은 지식베이스.

 

 

DBMS 특징

- 데이터 무결성 : 부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않음.

- 데이터 일관성 : 삽입 / 삭제 / 갱신 / 생성 후에도 저장된 데이터가 변함없이 일정.

- 데이터 회복성 : 장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질.

- 데이터 보안성 : 불법적인 노출, 변경, 손실로부터 보호되어야 하는 성질.

- 데이터 효율성 : 응답 시간, 저장 공간 활용 등이 최적화되어 사용자, 소프트웨어, 시스템 등의 요구 조건을 만족시켜야 함.

 

상용 DBMS란?

특정 회사에서 유료로 판매하는 시스템. 유지보수와 지원이 원활함.

 

오픈소스 기반 DBMS

오픈 소스 라이선스 정책을 준용하는 범위 내에서 자유로운 사용.

 

오픈소스 기반 DBMS 고려 사항

- 기업들의 원가 절감 노력과의 상관 관계파악.

- 인공 지능, 클라우드, 빅데이터 등 새로운 기술의 증가에 따른 오픈 소스 DBMS의 대응 동향 분석

- 오픈소스 진영에서 보안, 안정성에 대한 우려를 해결하고자 하는지 조사.

- 정책적으로 오픈소스 DBMS 활성화를 추진하는 사례 정리.

 

[ 데이터베이스 기술 트렌드 ]

빅데이터란?

시스템, 서비스, 조직 등에서 주어진 비용, 시간 내에 처리 가능한 데이터 범위를 넘어서는 수십 PB크기의 비정형 데이터.

 

빅데이터의 특성

- 양 : PB수준의 대규모 데이터. 디지털 정보량이 기하급수적으로 폭증. 분석 규모

- 다양성 : 정형 / 비정형 / 반정형의 다양한 데이터. 로그, 소셜, 위치 등 데이터의 유형이 다양해짐. 자원 유형

- 속도 : 빠르게 증가하고 수집 및 처리되는 데이터. 가치 있는 정보 활용을 위해 실시간 분석 중요. 수집 / 분석 / 활용 속도

 

빅데이터 수집, 저장, 처리 기술

- 비정형 / 반정형 데이터 수집 : 내·외부 정제되지 않은 데이터를 확보, 이를 통해 필요 정보를 추출하여 활용하기 위해 효과적으로 수집 및 전송하는 기술. 척와(Chukwa) / 플럼(Flume) / 스크라이브(Scribe)

 

- 정형 데이터 수집 : 내·외부 정제된 대용량 데이터의 수집 및 전송기술. ETL / FTP / 스쿱(Sqoop) / 하이호(Hiho)

 

- 분산데이터 저장 / 처리 : 대용량 파일의 효과적인 분산 저장 및 분산 처리 기술. HDFS / 맵 리듀스

* HDFS(Hadoop Distributed File System)이란?

대용량 데이터의 집합을 처리하는 응용 프로그램에 적합하도록 설계뙨 하둡 분산 파일 시스템.

* 맵 리듀스(Map Reduce)이란?

구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년에 발표한 소프트웨어 프레임워크.

 

- 분산데이터 베이스 : HDFS의 컬럼 기반 DB로 실시간 랜덤 조회 및 업데이트 가능. HBase

 

빅데이터 분석, 실시간 처리 및 시각화를 위한 주요 기술

- 빅데이터 분석 : 빅데이터 분석을 위한 데이터의 가공과 분류, 클러스터링, 패턴 분석을 처리하는 기술.

데이터 가공 솔루션 => 피그(Pig), 하이브(Hive) / 데이터 마이닝 솔루션 => 머하웃(Mahout)

 

- 빅데이터 실시간 처리 : 하둡 기반의 실시간 SQL 질의 처리와 요청된 작업을 최적화하기 위한 워크플로우 관리 기술.

실시간 SQL 질의 솔루션 => 임팔라(Impala) / 워크플로우 관리 솔루션 => 우지(Oozie)

 

- 분산 코디네이션 : 분산 환경에서 서버들 간에 상호조정이 필요한 다양한 서비스를 분산 및 동시처리 제공 기술.

분산 코디네이션을 위한 솔루션 => 주키퍼(Zookeeper)

 

- 분석 및 시각화 : 빅데이터 분석 기술을 통해 분석된 데이터의 의미와 가치를 시각적으로 표현하기 위한 기술.

분선 및 시간화를 위한 솔루션 => 알(R)

 

NoSQL(Not Only SQL)이란?

전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어로 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS.

 

NoSQL 특성

- Basically Available : 언제든지 접근할 수 있어야 함. 분산 시스템이기에 항상 가용성을 중시.

- Soft-State : 노드의 상태는 내부에 포함된 정보에 의해 결정되는 것이 아닌 외부에서 전송된 정보를 통해 결정됨. 특정 시점에서는 데이터의 일관성이 보장되지 않음.

- Eventually Consistency : 일정 시간이 지나면 데이터의 일관성이 유지되는 속성. 일관성을 중시하고 지향함.

 

NoSQL 유형

(DBMS 유형과 같음)

- Key-Value Store

- Column Family Data Store

- Document Store

- Graph Store

 

데이터 마이닝이란?

대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술. 대규모 데이터에서 의미 있는 패턴을 파악하거나 예측하여 의사결정에 활용하는 기법.

데이터 마이닝은 데이터의 숨겨진 정보를 찾아내어 이를 기반으로 서비스와 제품에 도입하는 과정.

통계분석은 가설이나 가정에 따른 분석, 검증을 하지만 데이터 마이닝은 수리 알고리즘을 활용하여 대규모 데이터에서 의미 있는 정보를 찾아냄.

 

데이터 마이닝 절차

목적 설정 -> 데이터 준비 -> 가공 -> 마이닝 기법 적용 -> 정보 검증

1. 목적 설정 : 데이터 마이닝을 통해 얻고자 하는 명확한 목적 설정. 목적에 따라 사용할 모델과 필요 데이터 정의.

2. 데이터 준비 : 거래정보, 웹로그 데이터, 고객 정보, 데이터 사용량, 소셜 데이터 등 다양한 데이터 활용. 사전에 운영 데이터 접근에 따른 부하 고려. 필요시 작업 서버에 저장하여 운영에 지장이 없도록 데이터를 준비하고 데이터 정제를 통해 데이터의 품질을 보장, 필요시 데이터 추가 등을 통해 충분한 양의 데이터  확보.

3. 가공 : 모델링 목적에 따라 목적 변수 정의. 필요한 데이터를 데이터 마이닝 소프트웨어에 적용할 수 있는 형식으로 가공 처리.

4. 마이닝 기법 적용 : 1단계의 명확한 목적에 맞도록 데이터 마이닝 기법을 적용하여 정보 추출.

5. 정보 검증 : 데이터 마이닝으로 추출된 정보를 검증함. 테스트 데이터와 과거 데이터를 활용하여 최적의 모델을 선정. 데이터 마이닝 결과의 업무 적용 보고서 작성 및 활용.

 

데이터 마이닝 주요 기법

- 분류 규칙 (Classification) : 과거 데이터로부터 특성을 찾아내어 분류모형을 만들어 이를 토대로 새로운 레코드의 결과 값을 예측하는 기법. 마케팅, 고객 신용평가 모형에 활용.

- 연관 규칙 (Association) : 데이터 안에 존재하는 항목들 간의 종속관계를 찾아내는 기법. 제품이나 서비스의 교차판매, 매장 진열, 사기 적발 등 다양한 분야에서 활용.

- 연속 규칙 (Sequence) : 연관 규칙에 시간 관련 정보가 포함된 형태의 기법. 개인별 트랜잭션 이력 데이터를 시계열적으로 분석하여 트랜잭션의 향후 발생 가능성 예측.

- 데이터 군집화 (Clustering) : 대상 레코드들을 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업으로 작업의 특성이 분류규칙과 유사. 정보가 없는 상태에서 데이터를 분류하는 기법. 분석대상에 결과값이 없으며 판촉활동이나 이벤트 대상을 선정하는데 활용.

 

데이터 마이닝은 텍스트 마이닝, 웹 마이닝과 함께 다양한 분야에서 활용됨.

* 텍스트 마이닝?

대량의 덱스트 데이터로부터 패턴 또는 관계를 추출하여 의미 있는 정보를 찾아내는 기법. 비정형·반정형 데이터에 대하여 자연어·문서 처리기술을 적용하여 의미있는 정보를 추출.

* 웹 마이닝?

웹으로부터 얻어지는 방대한 양의 정보로부터 유용한 정보를 찾아내기 귀해 분석하는 기법. 웹 자원으로부터 의미있는 패턴, 프로파일, 추세 등을 발견하기 위해 데이터 마이닝 기술을 응용한 것.

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

4.2 연계 메커니즘 구성  (0) 2022.09.14
4.1 연계 데이터 구성  (0) 2022.09.14
3.2 물리 데이터 저장소 설계  (0) 2022.09.13
3.1 데이터 모델  (0) 2022.09.13
2.2 UI 설계  (0) 2022.09.13

1) 물리 데이터 모델 설계

물리 데이터 모델링이란?

논리모델을 적용하고자 하는 기술에 맞도록 상세화해가는 과정.

 

물리 데이터 모델링 변환 절차

논리 -> 물리

1. 개체를 테이블로 변환

2. 속성을 컬럼으로 변환

3. UID를 기본키로 변환

4. 관계를 외래키로 변환

5. 컬럼 유형과 길이 정의

6. 반 정규화 수행

 

2) 물리 데이터 저장소 구성

테이블 제약 조건 설계

- 참조무결성 제약 조건

> 제한(Restricted) : 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건.

> 연쇄(Cascade)

> 널값(Nullify) : 참조되는 릴레이션에서 튜플 삭제하고 참조하는 릴레이션에서 해당 튜플을 참조하는 튜플들의 외래 키에 NULL값을 넣는 옵션.

 

인덱스란?

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

인덱스를 통해 전체 데이터의 검색 없이 필요한 정보에 대해 신속한 조회가 가능.

 

인덱스 적용 기준

인덱스 분포도가 10~ 15% 이내인 경우.

더보기

분포도 = (1/컬럼값의 종류) *100

분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수) *100

분포도가 범위 이상이더라도 부분처리를 목적으로 하는 경우 적용.

조회 및 출력 조건으로 사용되는 컬럼인 경우 적용.

인덱스 자동생성 기본키와 Unique 키의 제약 조건을 사용할 경우 적용.

 

인덱스 컬럼 선정

분포도가 좋은 컬럼은 단독 생성!

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

결합 인덱스는 구성되는 컬럼 순서 선정에 유의.

가능한 한 수정이 빈번하지 않은 컬럼으로 선정.

 

인덱스 설계 시 고려사항

지나치게 많은 인덱스는 오버헤드 작용.

인덱스는 추가적인 저장 공간이 필요함을 고려.

넓은 범위를 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킬 수 있음에 유의.

인덱스와 테이블의 저장 공간을 적절히 분리될 수 있도록 설계.

 

뷰 속성

- REPLACE : 뷰가 이미 존재하는 경우 재생성

- FORCE : 본 테이블의 존재 여부에 관계없이 뷰 생성

- NOFORCE : 기본 테이블이 존재할 때 뷰 생성

- WITH CHECK OPTION : 서브 쿼리 내의 조건을 만족하는 행만 변경

- WITH READ ONLY : 데이터 조작어 작업 불가

 

뷰 설계 시 고려 사항

뷰 사용에 따라 수행속도에 문제 발생 가능.

뷰의 조건은 최적의 액세스 경로를 사용할 수 있도록!

 

클러스터의 적용 기준

인덱스의 단점 해결.

액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법

분포도가 넓을수록 유리. 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약 가능

대량의 범위를 자주 액세스하는 경우 적용

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

여러 개의 테이블이 빈번하게 조인을 일으킬 때 활용

 

클러스터 설계 시 고려사항

검색 효율은 높여주지만 입력, 수정, 삭제 시에 부하 증가.

UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 컬럼이면 검토 대상.

수정이 자주 발생하지 않는 컬럼은 검토 대상.

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

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

 

파티션의 종류

- 레인지 파티셔닝 : 연속적인 숫자나 날짜를 기준으로 하는 기법. 손쉬운 관리 기법으로 시간 단축 가능

- 해시 파티셔닝 : 파티션 키의 해시 함수 값에 의한 기법. 균등한 데이터 분할 가능. 질의 성능 향상 가능

- 리스트 파티셔닝 : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 기법. 분포도 비슷하고 데이터가 많은 SQL에서 컬럼의 조건이 많이 들어오는 경우 유용.

- 컴포지트 파티셔닝 : 2개 이상의 파티셔닝 결합하는 기법. 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산 가능.

- 라운드로빈 파티셔닝 : 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당하는 방식. 파티션에 행의 고른 분포를 원할 때 사용.

 

파티션의 장점

- 성능 향상 : 데이터 액세스 범위를 줄여 성능 향상

- 가용성 향상 : 전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상

- 백업 가능 : 분할 영역을 독립적으로 백업하고 복구 가능

- 경합 감소 : 디스크 스트라이핑으로 입출력 성능 향상. 디스크 컨트롤러에 대한 경합 감소

 

디스크 구성 설계

- 정확한 용량을 산정하여 디스크 사용의 효율 높임.

- 업무량이 집중되어 있는 디스크를 분리하여 설계.

- 입출력 경합을 최소화하여 데이터의 접근 성능 향상.

- 디스크 구성에 따라 테이블스페이스 개수와 사이즈 등 결정.

- 파티션 수행 테이블은 별도 분류.

 

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

4.1 연계 데이터 구성  (0) 2022.09.14
3.3 데이터베이스 기초 활용하기  (0) 2022.09.14
3.1 데이터 모델  (0) 2022.09.13
2.2 UI 설계  (0) 2022.09.13
2.1 UI 요구사항 확인  (1) 2022.09.13

+ Recent posts