응용 SW 기초 기술 활용 - 데이터베이스 기초 활용하기
데이터 베이스
데이터베이스(Database) 개념
- 데이터 베이스는 다수의 인원, 시스템이 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합
- 데이터에 대한 효과적인 관리를 위해 자료의 중복성 제거, 무결성 확보, 일관성 유지, 유용성 보장이 중요
1. 데이터 베이스 종류
1) 파일 시스템(File System)
- 파일에 이름을 부여하고 저장이나 검색을 위하여 논리적으로 그것들을 어디에 위치시켜야 하는지 등을 정의한 뒤 관리하는
데이터베이스 전 단계의 데이터 관리 방식
* 파일시스템 종류
종류 | 설명 |
ISAM | - Indexed Sequential Access Method - 자료 내용은 주 저장부, 자료의 색인은 자료가 기록된 위치와 함께 색인부에 기록되는 시스템 |
VSAM | - Virtual Storage Access Method - 대형 운영체제에서 사용되는 파일 시스템 |
2) 계층형 데이터베이스 관리 시스템(HDBMS)
- 데이터를 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스
- 데이터에 대한 접근 속도가 빠르지만, 종속적인 구조로 인하여 변화하는 데이터 구조에 유연하게 대응하기가 쉽지 않다.
3) 망형 데이터베이스 관리 시스템(NDBMS)
- 데이터의 구조를 네트워크상 망상 형태로 논리적으로 표현한 데이터 모델
- 트리 구조나 계층형 데이터베이스보다는 유연하지만 설계가 복잡한 단점
4) 관계형 데이터베이스 시스템(RDBMS)
- 관계형 모델을 기반으로 하는 가장 보편화된 데이터베이스 관리 시스템
- 데이터를 저장하는 테이블의 일부를 다른 테이블과 상하 관계로 표시하며 상관관계를 정리
- 변화하는 업무나 데이터 구조에 대한 유연성이 좋아 유지 관리가 용이
5) RDBMS 종류
종류 | 설명 |
Oracle | - 오라클사에서 개발한 데이터베이스 관리시스템으로 유료 |
SQL Server | - 마이크로소프트사에서 개발한 관계형 데이터베이스 시스템 - 마이크로소프트사 제품이기 때문에 윈도즈 서버에서만 구동 - 마이크로소프트사의 개발언어인 C#등과 호환 |
My SQL | - 오라클의 관계형 데이터베이스 시스템 - 리눅스 ,유닉스, 윈도에서 모두 사용이 가능하고 오픈 소스 기반으로 개발 |
Maria DB | - MySQL 출신 개발자가 만든 데이터베이스로 MySQL과 완벽 호환 |
6) 데이터베이스 관리 툴
- 데이터베이스 관리 툴은 DB 관리자(DBA) 들이 데이터베이스를 편리하고 쉽게 다룰 수 있도록 도와주는 도구
- 오픈 소스 기반으로 무료로 사용할 수 있는 툴과 상용화로 비용을 지불해야 사용할 수 있는 툴이 존재
- 데이터베이스 관리 툴은 다음과 같은 기능을 제공
기능 | 설명 |
데이터베이스 생성, 삭제 | CREATE와 DROP 명령을 통해 데이터베이스의 생성 및 삭제 가능 |
SQL 명령어 작성 및 실행 | SELECT, INSERT, DELETE, UPDATE 명령어를 통해 데이터를 조회, 삽입, 삭제, 수정 가능 |
상태 모니터링 | 받은 데이터양, 보낸 데이터양, 동시 연결 수, 실패한 시도 등의 상태를 표시 |
사용자 계정 관리 | 최상의 레벨의 SYS 계정, SYS로부터 DBA권한으 받은 SYSTEM계정 일반 사용자 계정 등의 관리가 가능 |
데이터베이스 내보내기/가져오기 | 데이터베이스 마법사를 통해 파일 형태로 데이터 내보내기/가져오기 가능 |
환경 설정 | 버퍼의 크기, 동시 접속 클라이언트 숫자, 스레드 숫자 등의 환경 변수 설정 |
DBMS
1. DBMS(Data base Management System) 개념
- DBMS는 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어
- 저장되는 정보는 텍스트, 이미지, 음악 파일, 지도 데이터 등 매우 다양하며, SNS 발달과 빅데이터의 폭넓은 활용으로 인해 데이터의 종류와 양은 급증
2. DBMS 유형
- 관리하는 데이터의 형태 및 관리 방식에 따라 관계형 데이터베이스, 문서 저장 시스템, 그래프 데이터 베이스,
Key-value 스토어 등으로 구분
유형 | 설명 |
키-값(Key-Value) DBMS | - 키 기반 Get/Put/Delete 제공, 메모리 기반에서 성능 우선 시스템 및 빅데이터 기반 처리 가능 DBMS - Unique한 키에 하나의 값을 가지고 있는 형태 |
컬럼 기반 데이터 저장 (Column Family Data Store) |
- Key안에(Column, Value) 조합으로 된 여러 개의 필드를 갖는 DBMS - 테이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Bigtable 기반으로 구현 |
문서 저장(Document Store) DBMS | - 값(Value)의 데이터 타입이 문서(Document)라는 타입을 사용하는 DBMS - 테이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Bigtable 기반으로 구현 |
그래프(Graph) DBMS | - 시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 DBMS - 노드와 엣지로 특징되는 요소 특화 - 노드 간 관계를 구조화하여 저장 |
1) DBMS 특징
특징 | 설명 |
데이터 무결성 | 부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용 하지 않는 성질 |
데이터 일관성 | 삽입, 삭제 ,갱신, 생성 후에도 저장된 데이터가 변한없이 일정 |
데이터 회복성 | 장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질 |
데이터 보안성 | 불법적인 노출, 변경, 손실로부터 보호되어야 하는 서잊ㄹ |
데이터 효율성 | 응답 시간, 저장 공간 활용등이 최적화되어 사용자, 소프트웨어, 시스템 드으이 요구조건을 만족시켜야 하는 성질 |
2) 상용 DBMS 및 오픈 소스 기반 DBMS
(1) 상용 DBMS
- 상용 데이터베이스 관리시스템은 특정 회사에서 유료로 판매하는 시스템
- 유지보수와 지원이 원활
(2) 오픈 소스 기반 DBMS
- 오픈 소스 기반 데이터베이스 시스템은 오픈 소스 라이선스 정책을 준용하는 범위 내에서 사용이 자유로움
- 오픈 소스 기반 데이터베이스 관리 시스템 사용 시 고려사항은 다음과 같다
- 기업들의 원가 절감 노력과의 상관관계를 파악 - 인공 지능, 클라우드, 빅데이터 등 새로운 기술의 증가에 따른 오픈 소스 데이터베이스 관리 시스템의 대응 동향을 분석 - 오픈 소스 진영에서 보안, 안정성에 대한 우려를 해결하고자 노력하는지를 조사한다. - 정책적으로 오픈 소스 데이터베이스 관리시스템 활성화를 추진하는 사례를 정리 |
2. 관계형 데이터베이스 활용
(1) ERD(E-R Diagram) 개념
- ERD 는 업무 분석 결과로 도출된 실제(엔티티)와 엔티티 간의 관계를 도식화 한 다이어그램
- ERD로 요소 간 연관성을 도식화하여 데이터베이스 관리자, 개발자, 사용자 모두 데이터의 흐름과 연관성을 공통적으로 쉽게 확인 가능
(2) ER 모델
- ERD의 구성요소인 개체, 관계, 속성을 추출하기 위해서는 업무나 시스템에 대한 명확한 정의가 있어야 한다.
- ERD로 도식화 하기 전에 각 개체를 사각형, 화살표, 마름모로 표기한 형태를 ER 모델이라고 한다.
(3) Entity
- 엔티티는 사물 또는 사건으로 정의되며 개체라고 한다.
- 피터 첸 모델에서는 엔티티를 사각형으로 표시
- 까마귀발 모델에서는 엔티티를 표 형식으로 표시
(4) 속성 (atribute)
- 속성은 엔티티가 가지고 있는 요소 또는 성질
- 피터 첸 모델 에서는 속성을 타원형(o) 으로 표시한다.
- 까마귀발 모델에서는 속성을 원 내부에 표시
(5) 관계(Relationship)
- 두 엔티티 간의 관계를 정의
- 피터 챈 모델에서는 관계를 마름모
- 까마귀발 모델에서는
데이터베이스 관리
트랜잭션(Transaction)
- 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이자, 데이터베이스 시스템에서 하나의 논리적 기능을
정상적으로 수행하기 위한 작업의 기본 단위
특성
특성 | 설명 | 주요기법 |
원자성 (Atomicity) |
- 분해가 불가능한 작업의 최소단위 - 연산 전체가 성공 또는 실패 - 하나라도 실패할 경우 전체가 취소 |
commit/rollback 회복성 보장 |
일관성 (Consistency) |
- 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스 상태를 보존 | 무결성 제약조건 동시성 제어 |
격리성 (Isolation) |
트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가 | read Uncommit read Commit repeatable read serializable |
영속성 (Durability) |
성공이 완료된 트랜잭션 결과는 영속적으로 데이터베이스에 저장 | 회복기법 |
상태
상태 | 설명 |
활동 상태(Active) | 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태 |
부분 완료 상태(Partially Committed) | 마지막 명령문이 실행된 후에 가지는 상태 |
완료 상태(Committed) | 트랜잭션이 성공적으로 완료된 후 가지는 상태 |
실패 상태(Failed) | 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태 |
철회 상태(Aborted) | 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태 |
트랜잭션 제어
- 트랜잭션 제어언어는 TCL(Transaction Control Laguage) 이라고 하며, 트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어
명령어 | 핵심 | 설명 |
커밋(COMMIT) | 트랜잭션 확정 | 트랜잭션을 메모리에 영구적으로 저장 |
롤백(ROLLBACK) | 트랜잭션 취소 | 트랜잭션 내역을 저장 무효화 시킴 |
체크포인트(CHECKPOINT) | 저장 시기 결정 | ROLLBACK을 위한 시점 지정 |
데이터베이스 기본 연산