18. DB 개념 & 설계
데이터베이스
데이터
- 현실 세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값
정보
- 데이터를 의사 결정에 유용하게 활용
개념
특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임
여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임
정의
통합 데이터 | Integrated Data
- 검색의 효율성을위해 중복이 최소화된 데이터의 모임
저장 데이터 | Stored Data
- 컴퓨터가 접근 가능한 저장 매체에 저장된 데이터
운영 데이터 | Operational Data
- 조직의 목적을 위해 존재 가치가 확실하고 반드시 필요한 데이터
공유 데이터 | Shared Data
- 여러 응용 프로그램들이 공동으로 사용하는 데이터
특징
실시간 접근성 | Real Time Accessibility
- 사용자의 질의에 대하여 즉시 처리하여 응답
계속적인 변화 | Continuous Evolution
- 삽입, 삭제, 갱신을 통하여 항상 최근의 정확한 데이터를 유지
동시 공유 | Concurrent Sharing
- 여러 사용자가 동시에 원하는 데이터를 공유
내용에 의 한 참조 | Content Reference
- DB에 있는 데이터를 주소가 아닌 내용에 따라 참조
데이터의 독립성 | Independence
논리적 : 데이터의 논리적 구조를 변경시키더라도, 응용 프로그램은 변경되지 않음
물리적 : 새로운 물리적 구조를 도입하더라도, 응용 프로그램에는 영향을 주지 않음
생명 주기
분석 -> 설계 -> 구현 -> 운영 -> 감시 및 개선
데이터 언어
데이터 정의어 | Data definition Language
DB의 구조, 데이터 형식, 접근 방식 등 DB의 구조와 변경 목적으로 사용하는 언어
DB의 논리적, 물리적 구조를 정의 및 변경
Schema에 사용되는 제약 조건을 정의
데이터 조작어 | Data Manipulation Language
데이터 처리를 위한 응용 프로그램과 DB 관리 시스템 간의 인터페이스를 위한 언어
데이터의 검색, 삽입, 삭제, 갱신 연산 등을 포함한 집합
데이터 제어어 | Data Control Language
- 보안 및 권한 제어, 무결성, 회복, 병행 제어를 위한 언어
Schema
정의
DB의 구조와 제약조건에 관해 전반적인 명세를 기술한 것
개체의 특성을 나타내는 속성(Attribute)과 속성들의 집합으로 이루어진 개체(Entity), 개체 사이에 존재하는 관계(Relation)에 대한 정의와 이들이 유지해야 할 제약조건들을 기술한 것
스키마는 Data Dictionary에 저장
3계층 Schema
외부 스키마 | External Schema
- DB의 논리적 구조 정의, 사용자 뷰
- 전체 DB의 한 논리적 부분으로 서브 스키마라고도 함
- 하나의 DB에는 여러 개의 외부 스키마가 존재 가능
- 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공유 가능
- 질의어(SQL)을 이용하거나 C, JAVA 등의 언어를 사용하여 DB에 접근
개념 스키마 | Conceptal Schema
- DB의 전체적인 논리적 구조, 전체 뷰
- 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 DB로 하나만 존재
- DB File에 저장되는 데이터의 형태를 나타내는 것으로, 단순히 스키마라고 하면 개념 스키마를 의미
- 데이터의 접근 권한, 보안 정책, 무결성 규칙에 대한 명세를 정의
내부 스키마 | Internal Schema
- 물리적 저장장치의 입장에서 본 DB 구조, 저장 스키마
- 실제로 DB에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타냄
DB 관리 시스템 | DBMS
정의
DB를 조작하는 별도의 소프트웨어
DBMS를 통해 DB를 관리하여 응용 프로그램들이 DB를 공유하고, 사용할 수 있는 환경을 제공
DB를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색하고 저장하는 기능 제공
응용 프로그램들이 DB에 접근할 수 있는 인터페이스를 제공하고, 장애에 대한 복구 기능, 사용자 권한에 따른 보안성 유지 기능 등을 제공
기능
데이터 정의
- 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능
데이터 조작
- 특정한 데이터를 검색하기 위한 질의, DB의 갱신, 보고서 생성 기능
데이터 제어
- 데이터 무결성(Integrity)
- 무결성 : 데이터의 삽입, 삭제, 갱신 연산이 수행된 뒤에도 데이터 값은 제약조건을 만족해야 하는 조건
- 보안(Security) & 권한(Authority) 검사
- 동시성 제어(Concurrency Control)
데이터 공유
- 여러 사용자와 프로그램이 DB에 동시에 접근하도록 하는 기능
데이터 보호
- 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템 보호
데이터 구축
- DBMS가 관리하는 기억장치에 데이터를 저장하는 기능
유지 보수
- 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능
장점&단점
장점
데이터 중복 최소화
데이터 독립성 확보
데이터를 동시 공유
데이터 보안 향상
데이터 무결성 유지
장애 발생 시 회복 가능
단점
많은 비용
백업과 회복 방법이 복잡
종류
계층형 | Hierarchical DB
데이터 간의 관계가 트리 형태의 구조
데이터를 세그먼트(레코드) 단위로 관리하며 세그먼트 간 계층을 트리구조로 관리
구조가 간단하고 구현, 수정, 검색이 쉽지만 부모 자식간에 N:N(다 대 다) 관계 처리가 불가능하고, 구조 변경이 어려움
네트워크형 | Network DB
계층형 DB의 단점을 보완하여 데이터 간 N:N 구성이 가능한 망 형 모델
계층 구조에 링크를 추가하여 유연성과 접근성을 향상
구조가 복잡해 유지보수가 어려움
Owner-Member 관계를 가짐
CODASYL이 제안한 것으로, CODASYL DBTG 모델이라고도 함
관계형 | Relational DB
키와 값으로 이루어진 데이터들을 행과 열로 구성된 테이블 구조로 단순화시킨 모델
SQL(Structured Query Language)를 사용하여 데이터를 처리
객체 지향형 | Object-Oriented DB
객체지향 프로그래밍 개념에 기반하여 만든 DB 모델
정보를 객체의 형태로 표현
객체지향 프로그래밍 개념(클래스, 상속 등)을 사용할 수 있음
비정형 데이터들을 DB화 할 수 있도록 하기 위해 만들어진 모델
객체 관계형 | Object-Relational DB
관계형 DB에 객체 지향 개념을 도입하여 만든 DB 모델
객체지향 개념을 지원하는 표준 SQL을 사용할 수 있고, 데이터 타입도 관계형 DB보다 더 다양하게 추가
NoSQL
Not Only SQL의 줄임말로 SQL뿐만 아니라 다양한 특성을 지원한다는 의미
데이터 간에 관계를 정의하지 않는 비관계형(non-relational) DB 모델로 기존의 DBMS의 복잡도와 용량의 한계를 극복하기 위한 목적으로 만들어짐
비정형 데이터처리에 유리하지만 스키마 변경이 불가능해 데이터값에 문제가 발생하면 감지가 어려움
sharding을 지원, 가용성(Availability)과 확장성(Scalability)을 중요시
BigTable, Cassandra등이 대표적
NewSQL
RDBMS의 SQL과 NoSQL의 장점을 결합한 관계형 모델
트랜잭션 지원 및 확장성과 고 가용성을 모두 만족시키려는 목적에서 만들어진 DB 모델
DB 설계 개요
정의
요구조건에서부터 DB 구조를 도출해내는 과정
데이터들을 효과적으로 관리하기 위하여 DB의 구조를 조직화하는 작업
목적
이해관계자의 데이터 관점 요구사항에 대한 정확한 이해 및 추상화
데이터를 중심으로 한 이해관계자 간의 원활한 의사소통 수단
고려사항
제약조건
- 저장된 데이터 값이 만족해야될 주어진 조건
DB 무결성
- 데이터 삽입, 삭제, 갱신 연산이 수행된 뒤에도 데이터 값은 제약조건을 만족해야 하는 조건
일관성
- 저장된 두 데이터 값 또는 특정 질의에 대한 응답들에 모순성 없이 일치하는 특성
회복
- 시스템에 장애가 발생했을 때 장애 발생 직전의 일관된 데이터 상태로 돌아가는 기법
보안
- 불법적인 데이터의 변경이나 손실 또는 노출에 대한 보호
효율성
- 응답 시간의 단축, 저장공간의 최적화, 시스템 생산성이 포함
DB 확장성
- 시스템 운영에 영향을 주지 않으면서 새로운 데이터를 계속적으로 추가 가능한 기법
DB 설계 단계
1. 요구조건 수집 및 분석
DB의 사용자, 사용목적, 사용범위, 제약조건 등에 대한 내용을 정리하고 명세서를 작성(요구사항 정의서)
트랜잭션 유형, 트랜잭션 실행빈도와 같은 동적 DB 처리 요구조건 정의
2. 개념적 설계
현실세계를 데이터 관점으로 추상화 단계
DBMS에 독립적 스키마 설계
DB의 개념적 스키마 구성(E-R Diagram)
개체와 개체사이의 관계성을 이용하여 데이터를 트랜잭션 모델링 및 정의
3. 논리적 설계
자료를 컴퓨터가 이해할 수 있도록 특정 DBMS의 논리적 자료 구조로 변환하는 과정(스키마 평가 및 정제)
특정 데이터모델(계층형, 관계형, 객체지향형 등)을 적용한 설계(목표 DBMS에 맞는 스키마 설계)
DB의 논리적 스키마 생성(릴레이션 스키마)
관계형 DB인 경우 이 단계에서 테이블을 설계하고, 정규화 과정
트랜잭션 인터페이스 설계
4. 정규화
5. 물리적 설계
특정 DBMS의 물리적 구조와 내부적인 저장구조, 분산형태, 데이터 타입의 특징, 인덱스의 특징 등을 구체화하는 설계단계(인덱스 구조)
레코드 집중의 분석 및 설계
오브젝트, 접근방법, 트랜잭션분석, 인덱스, 뷰, DB 용량 설계
DB의 물리적 스키마 생성
트랜잭션 세부 설계
6. DB 튜닝
구현
- 목표 DBMS의 DDL로 기술된 명령문을 컴파일하고, 실행시켜 DB 스키마 생성
RDBMS | Relational
ORACLE
미국 오라클사의 RDBMS
대규모 DB를 지원
MSSQL, MYSQL보다 대량의 정보관리를 할 때에 가장 좋은 성능
고성능 트랜잭션 처리를 제공하여 속도가 빠름
MSSQL
미국 MS에서 개발한 RDBMS
윈도우 기반의 IIS 서버에서 주로 사용
MYSQL
세계에서 가장 많이 쓰는 오픈소스의 RDBMS
다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원
크기가 큰 데이터 집합도 아주 빠르고 효과적으로 처리
DB2
미국 IBM의 RDBMS
다중 스레드 기반의 안정적이고 고성능을 추구하는 아키텍처를 기반