포스트

18. DB 개념 & 설계

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

  • 다중 스레드 기반의 안정적이고 고성능을 추구하는 아키텍처를 기반

이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.