Updated:

1 minute read

정의

  • 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합


역사

  • 1950년대에 군비의 집중적·효율적 관리를 위해 컴퓨터를 활용한 도서관 개념을 개발하면서 이를 ‘데이터의 기지’라는 뜻의 데이터베이스로 부름
  • 이후 1965년 시스템 디벨로프사가 2차로 개최한 ‘컴퓨터 중심 데이터베이스 시스템’이라는 심포지엄에서 처음 사용


설명

  • 데이터베이스만으로는 할 수 있는게 거의 없고 관리 시스템(DBMS)과 통합되어 제공


특징

  • 동시 공유
  • 계속적인 변화
  • 중복 최소화
  • 실시간 접근성
  • 내용에 의한 참조


보안

  • 3요소
    • 무결성(integrity)
    • 가용성(availability)
    • 기밀성(confidentiality)
  • 접근제어, 암호화 등을 통해 3요소를 만족시켜야 함


설계

  • 요구 조건 분석
    • 어떤 데이터베이스를 만들지 결정
  • 개념적 설계
    • ERD 설계
  • 논리적 설계
    • 스키마 설계
  • 물리적 설계
    • 저장 알고리즘 등 물리적 장치와 연관된 부분을 설계
  • 구현
    • 데이터 삽입
  • 운영 및 개선


종류

  • 관계형(Relational)
    • 데이터의 종속성을 관계로 표현
    • 데이터를 행과 열이라는 표 형태로 저장
    • 컬럼의 구조와 데이터의 관계가 스키마로 사전 정의
    • SQL을 이용하여 데이터 질의
    • 단점
      • 스키마 수정이 어려움
      • 2차원 표 형태이기에 트리 구조의 객체 형태를 표현하기에는 맞지 않음
  • 객체형(Object)
    • 객체지향 프로그래밍 언어처럼 데이터베이스에 객체 개념을 구현
    • 쿼리 사용법이 복잡
  • NoSQL
    • 집합-지향(Aggregate-oriented) 모델
      • 키-값형(Key-value)
        • 데이터를 키(Key)와 값(Value)의 쌍으로 매핑
        • value에 어떠한 형태든 데이터를 넣을 수 있음
        • RDBMS에 비해 가볍고, 빠르고, 다루기 쉬움
        • 데이터의 그룹화나 정렬 기능은 부족
        • 값에 대한 쿼리 불가능
        • Memcached, Riak, Redis, Amazon Dynamo DB, LevelDB 등
      • 문서형(Document)
        • 계층 형태의 문서를 저장하는 데이터베이스
        • 관계형과 달리 하나의 객체를 여러 개의 테이블에 나누어서 저장하지 않고 하나로 저장 가능
        • 문서에 대해 쿼리 가능
        • 2차원 초과 데이터 입력 시
          • 관계형은 정규화가 필요
          • 문서형은 인덱스의 하위 구조로 입력 가능
        • 문서 구조 표현 여부
          • 키-값형은 표현 불가능
          • 문서형은 표현 가능
        • 구조 강제 여부
          • 객체형은 강제(타입에 맞게 데이터를 삽입해야 함)
          • 문서형은 다른 구조 입력 가능
        • MongoDB, CouchDB, MarkLogic 등
      • 컬럼 패밀리형(Column Family)
        • 컬럼들의 묶음을 지원하는 데이터베이스
        • HBase, Cassandra, Hypertable 등
    • 그래프(Graph)
      • 실제 세계의 데이터를 관계와 함께 표현하기 위해 디자인된 데이터베이스


RDBMS와 NoSQL

  • 어느 한쪽을 대체하기 위한 것이 아닌 상호 보완할 수 있는 데이터베이스이므로 목적에 맞게 사용하는 것이 중요
  • 수정할 일이 거의 없는 경우에는 ACID 지원이 필요하지 않으므로 꼭 RDBMS를 사용할 필요가 없음
  • 데이터의 일관성이 보장되어야 하거나 여러번의 수정 혹은 조인 연산이 필요한 데이터라면 RDBMS