정보처리기사/정보처리기사 실기

[3] 데이터 입출력 구현 ⌨️

도토리즈 2023. 4. 8. 11:43

3-1. 논리 데이터 저장소 확인

 

[1] 데이터 모델

 

* 데이터 모델(Data Model) 개념 

: 현실 세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델 , 표시해야 할 요소 - 데이터 구조, 연산 , 제약조건

- 연산 (Operation) : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세 , 릴레이션을 조작하기 위한 관계 연산을 나타냄

- 구조 (Structure) : 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입간의 관계 , 데이터 구조 및 정적 성질 표현

- 제약조건 (Constraint) : 데이터베이스에 저장 될 수 있는 실제 데이터의 논리적인 제약 조건

 

* 데이터 모델 절차

: 요구사항 분석, 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델

- 요구사항 분석 : 도출된 요구사항 간 상충 해결, 범위를 파악하여 외부 환경과의 상호작요을 분석을 통해 데이터에 대한 요구 분석

- 개념적 설계 : 사용자 요구에 대한 트랜잭션 모델링, 현실 세계에 대한 인식을 추상적, 개념적으로 표현하여 개념적 구조를 도출하는 데이터 모델 ( 주요 산출물 : 개체 - 관계 다이어그램 )

- 논리적 설계 : 트랜잭션의 인터페이스를 설계, DBMS에 맞는 논리적 스키마를 설계 , 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현한 데이터 모델 ( 정규화 수행, 논리적 데이터베이스 구조로 매핑,  관계형 데이터베이스에서는 테이블을 설계하는 단계 )

- 물리적 설계 : 데이터모델을 특정 DMBS의 특정 및 성능을 고려하여 물리적인 스키마를 만드는 단계  , 논리 데이터 모델을 사용하고자 하는 각 DBMS의 특성을 고려하여 데이터베이스 저장 구조로 변환  (반 정규화, 테이블, 인덱스, 뷰, 파티션 등 객체 생성) 

 

[2] 논리 데이터 모델 검증

 

* 논리 데이터 모델링 개념

: 논리적 데이터 모델링은 업무의 모습을 모델링 표기법으로 형상화하여 사람이 이해하기 쉽게 표현하는 프로세스 , 개념 모델로부터 업무 영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델 

 

* 논리 데이터 모델링 종류

- 관계 데이터 모델 : 논리적 구조가 2차원 테이블 형태로 구성된 모델, 기본 키 (pk) 와 이를 참조하는 외래 키 (fk)로 관계 표현, 1:1 , 1:N, N:M관계를 자유롭게 표현

- 계층 데이터 모델 : 논리적 구조거 트리 형태로 구성된 모델, 상하관계가 존재(부모 - 자식 관계) , 1:N 관계만 허용

- 네트워크 데이터 모델 : 논리적 구조가 그래프 형태로 구성된 모델 , 상위와 하위 레코드 사이에 다대다(N:M) 관계를 만족하는 구조

 

* 관계 데이터 모델

: 데이터를 행과 열로 구성된 2차원 테이블 형태로 구성한 모델

(1) 구성요소

- 릴레이션(Relation) : 행과 열로 구성된 테이블

- 튜플(Tuple) : 릴레이션의 행에 해당되는 요소

- 속성(Attribute) : 릴레이션의 열에 해당되는 요소

- 카디널리티(Cardinality) : 튜플의 수 

- 차수 (Degree) : 속성의 수 

- 스키마(Schema) : 데이터베이스의 구조, 제약 조건 등의 정보를 담고 있는 기본적인 구조

- 인스턴스(Instance) : 생성된 스키마에 따라 생성된 테이블에 실제 저장된 데이터의 집합

(2) 관계 표현 

: 데이터간의 관계를 기본 키와 이를 참조하는 외래 키로 표현, 테이블 간의 관계를 1:1 , 1:N , N:M 목적에 맞게 표현

 

* 관계 대수

: 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어

 

* 관계 해석

: 튜플 관계 해석과 도메인 관계 해석을 하는 비 절차적 언어 , 프레디킷 해석에 기반한 언어이며 비 절차적 언어

 

* 논리 데이터 모델링 속성

: 개체, 속성, 관계로 구성

- 개체(Entitly) : 관리할 대상이 되는 실체 , 사물 또는 사건으로 정의 

- 속성(Attributes) : 관리할 정보의 구체적 항목 , 개체가 가지고 있는 요소 또는 성질

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

 

* 개체 - 관계 모델 개념(E-R)

: E-R모델은 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해 가장 널리 사용되고 있는 모델

- 개체 : 사각형(□) 

- 관계 : 마름모(◇)

- 속성 : 타원 (○)

- 다중 값 속성 : 이중타원(◎)

- 관계 - 속성 연결 : 선(ㅡ)

 

* 정규화

: 관계형 데이터의 중복성을 제거하여 이상 현상 방지, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정

 

* 이상현상

: 데이터의 중복성으로 인해 릴레이션을 좆가할 때 발생하는 비 합리적인 현상, 삽입 , 삭제, 갱신 이상이 있음

- 삽입 이상 : 저장 정보 시 해당 정보의 불필요한 세부사항을 입력해야 하는 걍우

- 삭제 이상 : 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우

- 갱신 이상 : 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

 

* 정규화의 단계

- 1정규형 : 도메인이 원자값

- 2정규형 : 부분 함수 종속 제거(완전 함수적 종속 관계)

- 3정규형 : 이행함수 종속 제거

- BCNF : 결정자 후보 키가 아닌 함수 종속 제거

- 4정규형 : 다중 값 종속 제거

- 5정규형 : 조인 종속 제거 

 

* 반 정규화

: 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복 , 통합, 분리 등을 수행하는 데이터 모델링의 기법

== 비 정규화, 역 정규화 

- 특징 : 반 정규화된 데이터는 성능 향상과 관리의 효율성 증가(장점) / 데이터의 일관성 및 정합성 저하, 유지를 위한 비용이 별도로 발생하여 성능에 나쁜 영향을 미칠 수 있음 (단점)

 

* 반 정규화 기법

: 테이블 병합 / 테이블 분할 , 중복 테이블 추가  , 컬럼 중복화 , 중복관계 추가


3-2. 물리 데이터 저장소 설계

 

[1] 물리 데이터 모델 설계

 

* 물리 데이터 모델링

: 물리 데이터 모델링은 논리 모델을 적용하고자 하는 기술에 맞도록 상세화 해가는 과정 ex ) CREATE TABLE ( ) 

 

* 변환 절차

: 개체를 테이블로 변환 , 속성을 컬럼으로 변환 , UID를 PK로 변환,  관계를 FK로 변환, 컬럼 유형과 길이 정의, 반 정규화 수행

 


 

[2] 물리 데이터 저장소 구성

 

* 참조 무결성 제약 조건 

: 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건, 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우, 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본키로 존재해야 한다. 

(1) 제한(Restricted) : 참조 무결성 원칙을 위배하는 연산을 거절

(2) 연쇄(Cascade) : 참조되는 릴레이션에서 튜플 삭제, 참조되는 릴레이션에서 이 튜플을 참조하는 튜플들도 함께 삭제하는 옵션

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

 

* 인덱스(Index)

: 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조 , 인덱스를 통해 전체 데이터의 검색 없이 필요한 정보에 대해 신속한 조회가 가능 

- 인덱스 컬럼 : 분포도가 좋은 컬럼은 단독적으로 생성, 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성, 가능 한 수정이 빈번하지 않은 컬럼을 선정

- 주의 : 지나치게 많은 인덱스는 오버헤드(Overhead)로 작용, 인덱스는 추가적인 저장 공간이 필요함을 고려

 

* 뷰(View)

: 뷰의 속성 및 고려 사항을 참고하여 설계
- 뷰의 속성 : REPLACE , FORCE , NOFORCE 등

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

 

* 클러스터(Cluster)

: 대상이 되는 범위(모집단)의 요소를 몇 개 모은 단위체 , 적용 기준 및 고려사항을 참고하여 설계

- 적용 기준 :  인덱스의 단점을 해결한 기법으로, 분포도가 넓을수록 유리 , 액세스 효율 향상을 위한 물리적 저장 방법, 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약 가능, 대량의 범위를 자주 액세스 하는 경우에 적용 

- 고려사항 : 검색 효율 높여주나 입력, 수정, 삭제 시 부하 증가 , UNION, DISTINCT, ORDER BY, GROUP BY 가 빈번한 컬럼이면 검토 대상

, 처리 범위가 넓어 문제가 발생하는 경우에는 단일 테이블 클러스터링 고려, 조인이 많아 문제가 되는 경우 다중 테이블 클러스터링 고려

 

*파티션(Partition)

: 파티션의 종류, 장점 확인

- 파티션 종류 : 레인지 파티셔닝(=범위 파티셔닝) , 해시 파티셔닝, 리스트 파티셔닝(=목록 파티셔닝), 컴포지트 파티셔닝(=조합 파티셔닝), 라운드 로빈 파티셔닝

 

(1) 레인지 파티셔닝

- 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법

- 손쉬운 관리 기법을 제공하여 관리 시간의 단축 가능

 

(2) 해시 파티셔닝

- 파티션 키의 해시 함수 값에 의한 파티셔닝 기법

- 균등한 데이터 분할 가능, 질의 성능 향상 가능

 

(3) 리스트 파티셔닝

- 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법 , 데이터가 많은 sql에서 컬럼의 조건이 많이 들어오는 경우 유용

 

(4) 컴포지트 파티셔닝

- 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합하는 파티셔닝 기법, 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산 할 수 있다.

 

(5) 라운드로빈 파티셔닝

- 라운드 로빈 분할로 회전하면서 새로운 행이 파티션에 할당하는 방식

 

- 장점 : 성능 향상, 가용성 향상, 백업 가능, 경합 감소 등 

 

* 디스크 구성 설계

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

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

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

 


[3] 데이터베이스 기초 활용하기

 

* 데이터베이스 종류 

: 데이터베이스는 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합, 데이터에 대한 효과적인 관리를 위해 자료의 중복성 제거, 무결성 확보, 일관성 유지, 응용성 보장이 중요

- 정의 : 통합 , 저장, 운영, 공용 데이터

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

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

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

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

 

* 데이터베이스 특성

: 실시간 접근성, 계속적인 변화, 동시 공용, 내용참조 

- 실시간 접근성 : 쿼리에 대하여 실시간 응답이 가능해야 함

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

- 동시 공용 : 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함

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

 

* 데이터베이스 종류

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

 

(2) 관계형 데이터베이스 관리 시스템(RDBMS): 관계형 모델을 기반으로 하는 가장 보편화된 데이터베이스 관리 시스템 , 데이터를 저장하는 테이블의 일부를 다른 테이블과 상하 관계로 표시하며 상관관계를 정리 ex) oracle, mysql, maria db 등 

 

(3) 계층형 데이터베이스 관리 시스템(HDBMS) : 데이터를 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스 ex ) ims, system2000

 

(4) 네트워크 데이터베이스 관리 시스템: 네트워크 DBMS는 데이터의 구조를 네트워크 상의 망상 형태로 표현한 데이터 모델 , 트리 구조나 계층형 데이터베이스보다는 유연하지만 설계가 복잡한 단점이 있음 ex) ids, idms 등 

 

* DBMS(Data Base Management System) 

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

 

* DBMS 유형

: 데이터의 형태 및 관리 방식에 따라 관계형 데이터베이스 , 문서 저장 시스템, 그래프 데이터베이스 , Key -Value 스토어 등으로 구분

- key - value dbms :

키 기반 get, put , delete 제공, 메모리 기반에서 성능 우선 시스템 및 빅데이터 처리 가능 dbms ex) Redis, DynamoDB

- 컬럼 기반 데이터 저장 :

key 안에(column, value) 조합으로 된 여러 개의 필드를 갖는 DBMSex) HBase , Cassandra

- 문서 저장 :

value값의 데이터 타입이 문서(Document)라는 타입을 사용하는 dbms , 문서타입은 xml, json과 같이 구조화 된 데이터 타입으로 복잡한 계층 구조 표현 가능 ex) MongoDB, Couchbase

- 그래프 :

시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 dbms , 노드간의 관계를 구조화하여 저장 ex) Neo4j, AllegroGraph 

 

*DBMS 특징

- 무결성 : 동일한 내용에 대해서 서로 다른 데이터 저장 허용 X

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

- 회복성 : 장앵가 발생하였을 시 특정 상태로 복구되어야 하는 성질- 보안성 : 불법적인 노출, 변경, 손실로부터 보호

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

 

* 빅데이터(Big data)

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

 

* 빅데이터의 특성(3V)

- Volumn(양) : 페타바이트 수준의 대규모 데이터, 데이터 분석 규모에 관련된 특성 

- Variety (다양성) : 정형, 비정형, 반정형의 다양한 데이터 , 로그, 소셜, 위치 등 데이터 유형이 다양해지는 것을 의미

- Velocity (속도) : 빠르게 증가하고 수집되며, 처리되는 데이터, 빅데이터의 수집, 분석, 활용 속도와 관련된 특성 

 

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

- 비정형 / 반정형 데이터 수집 : 내-외부 정제되지 않은 데이터 확보, 이를 통해 필요 정부를 추출하여 활용하기 위해서 효과적으로 수집 및 전송하는 기술

- 정형 데이터 수집 : 내-외부 정제된 대용량 데이터의 수집 및 전송 기술

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

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

--맵 리듀스 : 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 우히나 목적으로 제작

 

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

- 분석 : 데이터 가공, 분류 , 클러스터링, 패턴분석 처리 => pig , hive, 데이터마이닝 -> mahout (머하웃)

- 실시간 처리 : 하둡 기반의 실시간 sql 질의 처리와 요청된 작업(impala)을 최적화 하기 위한 워크플로우 관리 기술 (oozie)

 - 분산 코디네이션 : 상호 조정이 필요한 다양한 서비스를 분산 및 동시처리 -> zookeeper(주키퍼)

- 분석 및 시각화 : 데이터의 의미와 가치를 시각적으로 표현하기 위한 기술 -> r(알)

 

* NoSql

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

- 특성 : 언제든지 접근 가능, 분산 시스템 => 가용성 중시, 노드 상태 => 외부에서 전송된 정보를 통해 결정, 데이터의 일관성 유지

- 유형 : dbms 유형과 동일

 

* 데이터 마이닝(Data Mining) 

: 대규모로 저장된 데이터 안에서 체계적으로 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술

==> 대규모 데이터에서 의미있는 패턴을 파악하거나 예측하여 의사결정에 활용

 

* 데이터마이닝 주요 기법 

: 분류  / 연관 / 연속 / 데이터 군집화

- 분류(Classification) : 과거 데이터로부터 특성을 찾아내어 분류 모형을 만들어 이를 토대로 새로운 레코드의 결과 값을 예측하는 기법

- 연관(Association) : 데이터 안에 존재하는 항목들 간의 종속관계를 찾아내는 기법

- 연속(Sequence) : 연관 규칙에 시간 관련 정보가 포함된 형태의 기법

- 데이터 군집화(Clustering) : 대상 레코드를 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업, 분류규칙과 유사 

 

* 텍스트 마이닝 

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

 

* 웹 마이닝

: 웹으로부터 얻어지는 방대한 양의 정보로부터 유용한 정보를 찾아내기 위하여 분석하는 기법