데이터베이스 종류 ⭐⭐⭐

데이터베이스

1. 데이터베이스 개념

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

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

- 데이터베이스 정의

정의 설명
통합된 데이터 (Integrated Data) 자료의 중복을 배재한 데이터의 모임
저장된 데이터 (Stored Data) 저장 매체에 저장된 데이터
운영 데이터 (Operational Data) 조직의 업무를 수행하는 데 필요한 데이터
공용 데이터 (Shared Data) 여러 어플리케이션, 시스템들이 공동으로 사용하는 데이터

 

2. 데이터베이스 특성

특성 설명
실시간 접근성 (Real-Time Accessibility) 쿼리에 대하여 실시간 응답이 가능해야 함
계속적인 변화 (Continuous Evolution) 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지함
동시 공용 (Concurrent Sharing) 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함
내용 참조 (Content Reference) 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.

 

3. 데이터베이스 종류

① 파일 시스템 개념

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

- 종류

종류 개념
ISAM · Index 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)

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

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

- 종류 : IMS, System2000 등..

 

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

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

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

- 종류 : IDS, IDMS 등..

 

3. 데이터베이스 관리 툴

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

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

- 기능

기능 설명
데이터베이스 생성, 삭제 CREATE와 DROP 명령을 통해 데이터베이스 생성 및 삭제 기능
SQL 명령어 작성 및 실행 SELECT, INSERT, UPDATE, DELETE 명령을 통해 데이터를 조회, 입력, 수정, 삭제가 가능
상태 모니터링 받은 데이터양, 보낸 데이터양, 동시 연결 수, 실패한 시도 등의 상태 표시
사용자 계정 관리 최상위 레벨의 SYS 계정, SYS로부터 DBA 권한을 받은 SYSTEM 계정, 일반 사용자 계정 등의 관리가 가능
데이터베이스 내보내기 / 가져오기 데이터베이스 마법사를 통해 파일형태로 데이터 내보내기 / 가져오기 가능
환경설정 버퍼의 크기, 동시 접속 클라이언트 숫자, 스레드 숫자 등의 환경변수 설정

 


 

DBMS

1. DBMS 개념

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

- 저장되는 정보는 텍스트, 이미지, 음악 파일, 지도 데이터 등 매우 다양하며, SNS의 발달과 빅데이터의 폭넓은 활용으로 인해 데이터의 종류와 양은 급격히 증가 중이다.

 

2. DBMS 유형

유형 설명
키 - 값 DBMS · 키 기반 Get / Put / Delete 제공, 메모리 기반에서 성능 우선 시스템 및 빅데이터 처리 가능 DBMS
· Unique 한 키에 하나의 값을 가지고 있는 형태
· 예) Redis, DynamoDB

컬럼 기반 데이터 저장 DBMS · Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 DBMS
· 데이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Bigtable 기반으로 구현
· 예) HBase, Cassandra

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

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

 

3. DBMS 특징

특징 설명
데이터 무결성 부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않는 설징
데이터 일관성 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함없이 일정
데이터 회복성 장애가 발생하였을 시 특정 상태로 복구되어야 하는 설징
데이터 보안성 불법적인 노출, 변경, 손실로부터 보호되어야 하는 설징
데이터 효율성 응답 시간, 저장 공간 활용 등이 최적화되어 사용자, 소프트웨어, 시스템 등의 요구 조건을 만족시켜야하는 성질

 

4. 상용 DBMS 및 오픈 소스 기반 DBMS

상용 DBMS

- 상용 데이터베이스 관리시스템은 특정 회사에서 유료로 판매하는 시스템이다.

- 유지보수와 지원이 원활하다.

 

② 오픈 소스 기반 DBMS

- 오픈 소스 기반 데이터베이스 시스템은 오픈 소스 라이선스 정책을 준용하는 범위 내에서 사용이 자유롭다.

- 오픈 소스 기반 데이터베이스 관리 시스템 사용 시 고려 사항

· 기업들의 원가 절감 노력과의 상관관계 파악한다.
· 인공 지능, 클라우드, 빅데이터 등 새로운 기술의 증가에 따른 오픈 소스 데이터베이스 관리시스템의 대응 동향을 분석한다.
· 오픈 소스 진영에서 보안, 안정성에 대한 우려를 해결하고자 노력하는지를 조사한다.
· 정책적으로 오픈 소스 데이터베이스 관리시스템 활성화를 추진하는 사례를 정리한다.

 


 

데이터베이스 기술 트렌드

1. 빅데이터

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

 

빅데이터 특성

특성 설명
데이터의 양
(Volume)
· 페타바이드 수준의 대규모 데이터
· 빅데이터 분석 규모에 관련된 특성
· 디지털 정보량이 기하급수적으로 폭증하는 것을 의미

데이터의 다양성
(Variety)
· 정형, 비정형, 반정형의 다양한 데이터
· 빅데이터 자원 유형에 관련된 특성
· 로그, 소셜, 위치 등 데이터 유형이 다양해지는 것을 의미

데이터의 속도
(Velocity)
· 빠르게 증가하고 수집되며, 처리되는 데이터
· 빅데이터 수집, 분석, 활용 속도와 관련된 특성
· 가치 있는 정보 활용을 위해 실시간 분석이 중요해지는 것을 의미

 

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

구분 설명
비정형/반정형 데이터 수집 내, 외부 정제되지 않은 데이터를 확보, 이를 통해 필요 정보를 추출하여 활용하기 위해서 효과적으로 수집 및 전송하는 기술
예) 척와(Chukwa), 플럼(Flume), 스크라이브(Scribe)
정형 데이터 수집 내, 외부 정제된 대용량 데이터의 수집 및 전송 기술
예) ETL, FTP, 스쿱(Sqoop), 하이호(Hiho)
분산데이터 저장/ 처리 대용량 파일의 효과적인 분산 저장 및 분산 처리 기술
예) HDFS, 맵 리듀스
분산데이터 베이스 HDFS의 컬럼 기반 데이터베이스로 실시간 랜덤 조회 및 업데이트가 가능한 기술
예) HBase

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

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

 

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

구분 설명
빅데이터 분석 · 빅데이터를 분석하기 위한 데이터의 가공과 분류, 클러스터링, 패턴 분석을 처리하는 기술
· 데이터 가공을 위한 대표적인 솔루션에는 피그, 하이브가 있고, 데이터 마이닝을 위한 대표적인 솔루션에는 머하웃이 있음
빅데이터 실시간 처리 · 하둡 기반의 실시간 SQL 질의 처리와 요청된 작업을 최적화하기 위한 워크플로우 관리 기술
· 실시간 SQL 질의를 위한 대표적인 솔루션은 임팔라이고, 워크플로우 관리를 ㅜ이한 대표적인 솔루션은 우지가 있음
분산 코디네이션 · 분산 환경에서 서버들 간에 상호조정이 필요한 다양한 서비스를 분산 및 동시처리 제공 기술
· 분산 코디네이션을 위한 대표적인 솔루션은 주키퍼가 있음
분석 및 시각화 · 빅데이터 분석 기술을 통해 분석된 데이터의 의미와 가치를 시각적으로 표현하기 위한 기술
· 분석 및 시각화를 위한 대표적인 솔루션은 알이 있음

 

2. NoSQL(Not Only SQL)

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

 

② No SQL의 특성

특성 설명
Basically Available · 언제든지 데이터는 접근할 수 있어야 하는 속성
· 분산 시스템이기 때문에 항상 가용성 중시
Soft-State · 노드의 상태는 내부에 포함된 정보에 의해 결정되는 것이 아니라 외부에서 전송된 정보를 통해 결정되는 속성
· 특정 시점에서는 데이터의 일관성이 보장되지 않음
Eventually Consistency · 일정 시간이 지나면 데이터의 일관성이 유지되는 속성
· 일관성을 중시하고 지향

 

  DBMS 유형

유형 설명
Key-Value Store · 키 기반 Get / Put / Delete 제공하는 빅데이터 처리 가능 DB
· Unique 한 Key에 하나의 Value을 가지고 있는 형태
· 예) Redis, DynamoDB

Column Family Data Store · Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 DB
· 데이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Bigtable 기반으로 구현
· 예) HBase, Cassandra

Document Store · Value의 데이터 타입이 Document라는 타입을 사용하는 DB
· 문서 타입은 XML, JSON, YAML과 같은 구조화된 데이터 타입으로, 복잡한 계층 구조 표현 할 수 있음
· 예) MongoDB, Couchbase

Graph Store · 시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 DB
· 예) Neo4j, AllegroGraph

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

 

3. 데이터 마이닝

① 데이터 마이닝 개념

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

· 데이터 마이닝은 대규모 데이터에서 의미 있는 패턴을 파악하거나 예측하여 의사결정에 활용하는 기법이다.

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

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

 

② 데이터 마이닝 절차

단계 절차 설명
1단계 목적 설정 · 데이터 마이닝을 통해 얻고자 하는 명확한 목적 설정
· 목적에 따라 사용할 모델과 필요 데이터 정의
2단계 데이터 준비 · 거래정보, 웹로그 데이터, 고객 정보, 데이터 사용량, 소셜 데이터 등 다양한 데이터 활용
· 사전에 운영 데이터 접근에 따른 부하 고려
· 필요시 작업 서버에 저장하여 운영에 지장이 없도록 데이터 준비
· 데이터 정제를 통해 데이터의 품질을 보장하고, 필요시 데이터 추가 등을 통해 충분한 양의 데이터 확보

3단계 가공 · 모델링 목적에 따라 목적 변수 정의
· 필요한 데이터를 데이터 마이닝 소프트웨어에 적용할 수 있는 형식으로 가공 처리
4단계 마이닝 기법 적용 · 1단계의 명확한 목적에 맞도록 데이터 마이닝 기법을 적용하여 정보 추출
5단계 정보 검증 · 데이터 마이닝으로 추출된 정보 검증
· 테스트 데이터와 과거 데이터를 활용하여 최적의 모델 선정
· 데이터 마이닝 결과의 업무 적용 보고서 작성 및 활용

 

③ 데이터 마이닝 주요 기법 :  텍스트 마이닝, 웹 마이닝과 함께 다양한 분양에서 활용되고 있다.

* 텍스트 마이닝 : 대량의 텍스트 데이터로부터 패턴 또는 관계를 추출하여 의미 있는 정보를 찾아내는 기법

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

주요 기법 설명
분류 규칙 · 과거 데이터로부터 특성을 찾아내어 분류모형을 만들어 이를 토대로 새로운 레코드의 결과 값을 예측하는 기법
· 마케팅, 고객 신용평가 모형에 활용
예) 우수 고객의 분류 모형 구축으로 마케팅 활용
연관 규칙 · 데이터 안에 존재하는 항목들 간의 종속관계를 찾아내는 기법
· 제품이나 서비스의 교차판매, 매장 진열, 사기 적발 등 다양한 분야에서 활용
예) 넥타이 구매고객의 50% 이상이 셔츠를 구매한다는 정보 분석을 통해 매장의 상품 진열
연속 규칙 · 연관 규칙에 시간 관련 정보가 포함된 형태의 기법
· 개인별 트랜잭션 이력 데이터를 시계열적으로 분석하여 트랜잭션의 향후 발생 가능성 예측
예) A품목을 구매한 회원이 B품목을 구매할 확률은 75%
데이터 군집화 · 대상 레코드들을 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업으로 작업의 특성이 분류규칙과 유사
· 정보가 없는 상태에서 데이터를 분류하는 기법
· 분석대상에 결괏값이 없으며, 판촉활동이나 이벤트 대상을 선정하는 데 활용

예) 고객의 지역/연령/성별에 따른 차별화 홍보전략

 


TEST  →  정답은 드래그!

정답 종류
DBMS 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리 할 수 있는 기능들을 제공하는 응용 프로그램이다. 

 

 

 

 

※ 해당 글은 수제비 2022 도서 참고하였습니다.

 

수제비- IT 커뮤니티 (정보처리기사... : 네이버 카페

수제비-수험생 입장에서 제대로 쓴 비법서(정보처리기사, 정보처리기능사, 빅데이터 분석기사 등 시리즈)

cafe.naver.com

 

물리 데이터 모델 설계 ⭐⭐⭐

물리 데이터 모델링 개념

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

· 예시 : DDL을 이용해 데이터 모델 정의

CREATE TABLE TEST(
	t_id		INT PRIMARY KEY,
    td_id		INT REFERENCES TEST_DETAIL(td_id),
    t_name		VARCHAR(20),
    reg_date	DATETIME
);

CREATE TABLE TEST_DETAIL(
	td_id		INT PRIMARY KEY,
    td_contents	VARCHAR(1000),
    stert_date	DATETIME,
    end_date	DATETIME,
    reg_date	DATETIME,
    udt_date	DATETIME
);

 


 

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

순서 절차 변환방법
1 개체를 테이블로 변환 · 일반적으로 테이블명과 개체명을 동일하게 하는 것을 권고
· 개체는 한글명을 사용
· 테이블은 코드 가독성을 위해 영문명을 사용

2 속성을 컬럼으로 변환 · 개발자와 사용자 간 표준화된 약어를 사용하도록 권고
· SQL 예약어 사용은 피해야함
· SQL 문장 가독성을 높이기 위해 컬럼 명칭은 되도록 짧은 것을 권고
· 컬럼명으로 복합단어를 사용 할 경우 미리 정의된 표준에 의해 명명

3 UID를 기본키로 변환 · 개체의 UID에 해당하는 모든 속성에 대해 기본키로 선언
· Not Null, Unique등의 제약 조건을 추가로 정의
· 관계에 의한 외래키가 기본키에 포함될 수 있음

4 관계를 외래키로 변환 · 외래키명은 기본키 이름 그대로 사용하나 다른 의미를 가질 경우 변경 가능
· 순환 관계에서 자신의 기본키는 외래키로 정의
5 컬럼 유형과 길이 정의 · 적절한 유형을 정의하고, 데이터의 최대길이를 파악하여 길이를 설정
데이터 유형 설명
CHAR2 최대 2000바이트의 고정길이 문자열 저장 가능
VARCHAR2 최대 4000바이트의 가변길이 문자열 저장 가능
NUMBER 38 자릿수의 숫자 저장 가능
DATE 날짜 값을 저장
BLOB, CLOB 바이너리(Binary), 텍스트 데이터 최대 4gb까지 저장
6 반 정규화 수행 · 시스템 성능 향상과 개발 및 운영의 단순화를 위해 데이터 모델을 통합
* 상세 설명 : https://chlee21.tistory.com/214

 


 

물리 데이터 저장소 구성 ⭐

: 물리 데이이터 저장소 구성을 위해 DBMS를 선정한 이후의 활동으로 구성된다.

 

테이블 제약조건(Constraint) 설계

1. 참조무결성 제약조건

- 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건

- 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우, 참조하는 외래키의 값은 항상 참조되는 릴레이션의 기본키로 존재한다.

내용 설명
제한(Restricted) · 참조무결성 원칙을 위배하는 연산을 거절하는 옵션
· 예 : 참조되는 릴레이션의 튜플을 삭제하면 삭제 연산을 수행하지 않고 거절
연쇄(Casecade) · 참조되는 릴레이션에서 튜플을 삭제하고, 참조되는 릴레이션에서 이 튜플을 참조하는 튜플들도 함께 삭제하는 옵션
널 값(Nullify) · 참조되는 릴레이션에서 튜플을 삭제하고, 참조되는 릴레이션에서 NULL 값을 넣는 옵션
· 만일 릴레이션을 정의할 때 참조하는 릴레이션에서 NULL 값이 들어갈 애트리뷰트에 'NOT NULL'이라고 명시되어 있다면 삭제 연산을 거절한다.

- 참조 무결성 제약 조건 SQL 문법(삭제시)

ALTER TABLE 테이블 ADD
FOREIGN KEY (외래키)
REFERENCES 참조테이블(기본키)
ON DELETE [ RESTRICT | CASCADE | SET NULL ];

 


 

인덱스(Index) 설계

1. 인덱스 개념

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

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

 

2. 인덱스 적용 기준

- 인덱스 분포도가 10~15% 이내인 경우 아래 수식을 참고한다.

· 분포도 = (1 / (컬럼 값의 종류)) × 100
· 분포도 = (컬럼 값의 평균 Row 수) / (테이블의 총 Row 수)  × 100

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

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

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

* 분포도 : 특정 컬럼의 데이터가 테이블에 평균적으로 분포되어 있는 정도

 

3. 인덱스 컬럼 선정

- 분포도가 좋은 컬럼은 단독적으로 생성한다.

- 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성한다.

- 결합 인덱스는 구성되는 컬럼 순서 선정(사용빈도, 유일성, 정렬 등)에 유의한다.

- 가능한 한 수정이 빈번하지 않은 컬럼을 선정한다.

 

4. 설계 시 고려 사항

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

- 인덱스는 추가적인 저장 공간이 필요함을 고려해야 한다.

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

 

 


 

뷰(View) 설계

1. 뷰 속성

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

 

2. 뷰 설계 시 고려 사항

- 뷰 사용에 따라 수행속도에 문제가 발생할 수 있다.

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

 


 

클러스터(Cluster) 설계 :  대상이 되는 범위의 요소를 몇 개 모은 단위체

1. 적용 기준

- 인덱스의 단점을 해결한 기법, 분포도가 넓을수록 유리

- 액세스 효율 향상을 위한 물리적 저장 방법

- 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약이 가능

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

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

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

 

2. 클러스터 설계 시 고려 사항

- 검색 효율은 높여주나 입력, 수정, 삭제 시는 부하가 증가함을 고려

- UNION, DISTINCT, ORDER BY, GROUP BY가 빈번한 컬럼, 수정이 자주 발생하지 않는 컬럼이면 검토 대상

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

 


 

파티션(Partition) 설계

1. 파티션의 종류

종류 설명
레인지 파티셔닝
( = 범위 파티셔닝)
· 연속된 숫자나 날짜를 기준으로 하는 파티셔닝 기법
· 손쉬운 관리 기법을 제공하여 관리 시간의 단축이 가능
· 예) 우편번호, 일별, 월별, 분기별 등의 데이터에 적합
해시 파티셔닝 · 파티션 키의 해시 함수 값에 의한 파티셔닝 기법
· 균등한 데이터 불할이 가능하고 질의 성능이 향상 가능
· 예) 파티션을 위한 범위가 없는 데이터에 적합
리스트 파티셔닝
( = 목록 파티셔닝)
· 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법
· 분포도가 비슷하고 데이터가 많은 SQL에거 컬럼의 조건이 많이 들어오는 경우 유용함
· 예) 한국, 일본, 중국 → 아시아 / 노르웨이, 스웨덴, 핀란드 → 북유럽 
컴포지트 파티셔닝
( = 조합 파티셔닝)
· 레인지, 해시, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합한 파티셔닝
· 큰 파티션에 대한 I/O 요청을 여러 파티션으로 분산할 수 있다.
· 예) 레인지 파티셔닝할 수 있는 컬럼이나, 파티션이 너무 커서 효과적으로 관리할 수 없을 때 유용
라운드로빈 파티셔닝 · 라운도로빈 분할로 회전하면서 새로운 행이 파티션에 할당하는 방식
· 파티션에 행의 고른 분포를 원할 때 사용

 

2. 파티션의 장점

속성 설명
성능 향상 · 데이터 액세스 범위를 줄여 성능 향상
가용성 향상 · 전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상
백업 가능 · 분할 영역을 독립적으로 백업하고 복구가능
경합 감소 · 디스크 스트라이핑으로 입출력 성능을 향상
· 디스크 컨트롤러에 대한 경합의 감소
* 디스트 스트라이핑 : 성능 향상을 위해 데이터를 1개 이상의 디스크 드라이브에 저장하여 드라이브를 병렬로 사용할 수 있는 기술

 


 

디스트 구성 설계

· 정확한 용량을 산정하여 디스크 사용의 효율을 높인다.

· 업무량이 집중되어 있는 디스크를 분리 설계한다.

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

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

· 파티션 수행 테이블은 별도로 분류한다.

 

 

 

 

※ 해당 글은 수제비 2022 도서 참고하였습니다.

 

수제비- IT 커뮤니티 (정보처리기사... : 네이버 카페

수제비-수험생 입장에서 제대로 쓴 비법서(정보처리기사, 정보처리기능사, 빅데이터 분석기사 등 시리즈)

cafe.naver.com

 

 

소프트웨어 개발 방법론

소프트웨어 생명주기 모델

1. 개념

 - 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

 - 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것

 

2. 프로세스 ( 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수 )

 - 요구사항 분석 : 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 정의하는 단계

  └  기능 요구사항, 비기능 요구사항  

 - 설계 : 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계

  └  시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계

 - 구현 : 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하여 실제 프로그램을 작성하는 단계

  └  인터페이스 개발, 자료 구조 개발, 오류 처리

 - 테스트 : 예상과 실제결과의 차이를 검사, 평가 단계

  └  단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트

 - 유지보수 : 시스템 인수되고 설치된 후 일어나는 모든 활동

  └  예방, 완전, 교정, 적응 유지보수

 

3. 모델 종류

종류 설명
폭포수 모델
(Waterfall Model)

· 개발시 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어감
· 선형 순차적 모형, 고전적 생명주기 모형
· 요구사항 변경 어려움
절차 타당성 검토 → 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
프로토타이핑 모델
(Prototyping Model)
· 고객이 요구한 주요기능을 프로토타입으로 구현하여, 고객의 피드백을 반영
· 요구사항 분석 용이, 타당성 검증가능
· 프로토타입 폐기에 따른 비용 증가
나선형 모델
(Spiral Model)

· 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발
· 위험분석, 반복개발
·
위험성 감소와 변경에 유연한 대처
·
단계 반복에 따른 관리 어려움  
절차 계획 및 정의 → 위험 분석 → 개발 → 고객평가 
반복적 모델
(Iteration Model)
· 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
· 병행 개발로 인한 일정 단축 가능
· 병행 개발에 따른 관리 비용 증가

 


 

소프트웨어 개발 방법론

1. 개념

- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

- 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론

 

2. 종류

종류 설명
구조적 방법론 ·  전체 시스템을 기능에 나누어 개발, 이를 통합하는 분할과 정복 접근 방식의 방법론
·  프로세스 중심의 하향식 방법론
·  나씨 슈나이더만 차트 사용 : 논리의 기술에 중점을 둔 도형식 표현방법
정보공학 방법론 · 정보시스템 개발에 필요한 관리 절차와 작업 기법을 쳬계화
객체 지향 방법론 · '객체'라는 기본 단위로 시스템을 분석 및 설계
컴포넌트 기반 방법론(CBD) · 컴포넌트를 조립해서 하나의 새로운 응용프로그램 작성
· 개발시간 단축 - 생산성 향상, 확장성, 재사용성
애자일 방법론 · 절차보다는 사람 중심, 변화에 유연 신속 적응하면서 효율적인 시스템 개발
제품 개발 방법론 · 특정 제품에 적용하고 싶은 공통된 기능을 정의 개발, 임베디드 S/W작성에 유용

 

3. 애자일 : 절차보다는 사람중심, 변화에 유연 신속 적용, 즉시 피드백을 받아 유동적 개발

- 유형

  XP : 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질 향상을 위한 방법론

     XP 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중

     XP 12가지 기본원리

기본원리 설명
짝 프로그래밍  개발자 둘이서 짝 코딩
공동 코드 소유  시스템에 있는 코드는 누구든 언제든 수정 가능
지속적인 통합 (CI)  매일 여러번 소프트웨어 통합, 빌드
계획 세우기  고객 요구 비즈니스 가치 정의, 개발자가 필요한 것이 무엇인지, 어떤 부분에서 지연 여부를 알려줌
작은 릴리즈  작은 시스템을 먼저 만들고, 짧은 단위 업데이트
메타포어  공통적인 이름 체계와 시스템 서술서를 통해 의사소통을 원활
간단한 디자인  요구사항에 적합한 가장 단순한 시스템을 설계
테스트 기반 개발 (TDD)  작성하는 프로그램에 대한 테스트 먼저 수행, 테스트를 통과하도록 실제 코드 작성
리팩토링  프로그램 기능을 바꾸지 않으면서, 코드의 중복제거, 단순화
40시간 작업  개발자 실수 방지를 위해 일주일 40시간 이상 일하지 말아야 함
고객 상주  개발자 질문에 즉각 대응을 위해 고객 풀타임 상주
코드표준  효과적인 공동 작업을 위해 코딩 표준 정의


   린(Lean) : 토요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질 향상을 위한 방법론

     린 7가지 가치 : 낭비제거, 품질 내재화, 지식창출, 늦은 확정, 빠른 인도, 사람존중, 전체 최적화

  ③ 스크럼(SCRUM) : 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 중심 방법론

     백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 스프린트 회고, 번 다운 차트

 

 


 

객체 지향 분석 방법론 ( OOA : Object Oriented Analysis )

1. 개념 : 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 속성과 연산, 관계를 정의

 

2. 종류

- OOSE(Object Oriented Software Engineering) : 유스케이스를 모든 모델의 근간으로 활용되는 방법론, 야콥스

- OMT(Object Modeling Technology) : 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링, 럼바우

  └ 분석 절차  : 객체 - 동적 - 기능
  └ 객체 모델링 (Object, Information)  : 객체 다이어그램, 객체들 간의 관계 정의하여 ER 이어그램을 만드는 과정까지의 모델링
  └ 동적 모델링 (Dynamic) : 상태 다이어그램, 시간의 흐름에 따라 객체들의 동적인 행위를 표현
  └ 기능 모델링 (Functional) : 자료흐름도(DFD), 프로세스들의 자료 흐름을 중심으로 처리과정 표현 

- OOD(Object Oriented Design) : 설계 문서화를 강조하여 다이어그램 중심으로 개발, 부치

 

 

 


 

비용산정, 일정관리 모형

비용산정 모형 : 소프트웨어 비용 산정 방식

1. 분류

- 하향식 산정방법 : 경험이 많은 전문가에게 비용산정

  └ 전문가 판단
  └ 델파이 기법  : 전문가의 경험적 지식을 통한 문제 해결 및 미래예측을 위한 기법

- 상향식 산정방법 : 세부적인 요구사항과 기능에 따라 비용산정

  └ 코드라인수(LoC) 모형, Man Month 모형, COCOMO 모형, 푸트남 모형, 기능점수(FP) 모형

 

2. 종류

종류 설명
코드라인수(LoC) 모형 ·  원시 코드 라인수의 낙관치, 중간치, 비관치 측정하여 예측치를 구해 비용산정
Man Month 모형 ·  한 사람이 1개월동안 할 수 있는 일의 양을 기준으로 비용산정
·  (Man Month) = (LoC) / (프로그래머 월간 생산성) 
·  (프로젝트 기간) = (Man Month) / (프로젝트 인력)
COCOMO 모형 ·  보헴이 제안한 모형으로 프로그램 규모에 따라 비용산정
·  조직형(Organic) : 5만 라인 이하
·  반분리형(Semi) : 30만 라인 이하
·  임베디드형(Embedded) : 30만 라인 이상
푸트남 모형 ·  개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
기능점수(FP) 모형 ·  소프트웨어 기능을 증대시키는 요인별로 가중치를 부여햐여 비용산정

 


 

일정 관리 모델 :  프로젝트가 일정 기한 내에 완료될 수 있도록 관리하는 모델

1. 종류 (주,펄,중)

- 주 공정법(CPM)  : 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
  └ 주 공정(임계경로) : 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로
- PERT  : 일의 순서를 계획적으로 정리하기 위한 수렴 기법. 비관치, 중간치, 낙관치 이용
- 중요 연쇄 프로젝트 관리(CCPM) : 주 공정 연쇄법으로 자원 제약사항을 고려하여 일정 작성

 


TEST  →  정답은 드래그!

정답 문제
소프트웨어 생명주기
(SDLC)
시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.
폭포수 모델 소프트웨어 개발시 각 단계를 확실히 마무리 지은 후에 다음단계로 넘어가는 가장 오래된 생명주기 모델이다.
나선형 모델 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델이다.
소프트웨어 개발 방법론 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
구조적 방법론 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식을 사용하는 방법론이다.
나씨-슈나이더만 차트 구조적 프로그래밍 표현을 위해 논리의 기술에 중점을 둔 도형식 표현 방법으로 연속, 선택, 반복 등의 제어 논리 구조로 표현한다.
애자일 방법론 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론이다.
XP 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론으로 5가지 가치와 12개의 실천항목이 존재한다.
지속적인 통합(CI) 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리이다.
메타포어 XP의 12가지 기본원리 중 하나로 공통적인 이름체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리이다.
테스트 기반 개발(TDD) 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리이다
스크럼 애자일 방법론 중 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론이다.
스프린트 스크럼 방법론에서 2~4주의 짧은 개발 기간으로 반복적 수행하는 개발 품질을 향상시키는 프로젝트 수행법이다.
번 다운 차트 스크럼 방법론에서 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트이다.
리팩토링 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성 한다는 원리이다.
LoC 모형 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측지를 구하고 이를 이용하여 비용을 산정하는 방식이다.
Man Month 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식이다.
COCOMO 모형 보헴이 제안한 모형으로 프로그램 규모에 따라 비용을 산정하는 방식으로, 규모에 따라 조직형, 반 분리형, 임베디드형으로 나뉜다.
푸트남 모형 소프트웨어 개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식으로, 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력분포도를 기초로 한다.
델파이 기법 비용산정 모형 중 하향식 산정방법이며, 전문가의 경험적 지식을 통한 문제 해결 및 미래예측을 위한 기법이다.
기능 점수 모형(FP 모형) 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식이다.
주 공정법 일정관리 모델 중에서 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법이며, 모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드와 노드 간을 연결을 통해 공정을 계산하기 위한 액티비티로 표기한다.
PERT 일정관리 모델 중에서 일의 순서를 계획적으로 정리하기 위한 수렴기법으로 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 기법이다.
데이터 흐름도(DFD) 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타낸 그림으로, 시스템 분석과 설계에서 매우 유용하게 사용되는 다이어그램이다.
자료 사전(DD) 자료 요소, 자료 요소들의 집합, 자료의 흐름, 자료저장소의 의미와 그들 간의 관계, 관계 값, 범위, 단위들을 구체적으로 명시하는 사전이다.
릴리즈노트 조직의 최종사용자인 고객과 잘 정리된 릴리즈 정보를 공유하는 문서이다.
헤더 릴리즈 노트 작성 항목 중 문서 이름, 제품 이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등의 정보이다.
재현 항목 릴리즈 노트 작성 항목 중 버그 발견에 따른 재현 단계 기술이다.
사용자 영향도 릴리즈 노트 작성 항목 중 버전 변경에 따른 최종 사용자 기준의 기능 및 응용 프로그램상의 영향도 기술이다.
노트 릴리즈 노트 작성 항목 중 소프트웨어 및 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 메모이다.
면책조항 릴리즈 노트 작성 항목 중 회사 및 표준 제품과 관련된 메시지, 프리웨어 및 불법 복제 방지, 중복 등 참조에 대한 고지 사항이다.

 

 

 

 

 

 

 

※ 해당 글은 수제비 2022 도서 참고하였습니다.

 

수제비- IT 커뮤니티 (정보처리기사... : 네이버 카페

수제비-수험생 입장에서 제대로 쓴 비법서(정보처리기사, 정보처리기능사, 빅데이터 분석기사 등 시리즈)

cafe.naver.com

 

+ Recent posts