본문 바로가기

CS/데이터베이스

[데이터베이스 01] 용어 정리 및 장단점 등

  • 데이터베이스(Database) : 데이터와 관련된 컬렉션
  • 데이터(Data) : 암묵적인 의미를 가지고, 기록될 수 있는 알려진 사실들
  • Mini-world : 데이터베이스를 통해 구현하고자 하는 현실세계의 대상이다. 
    ex) 회사의 사원 정보, 도서관에 비치되어 있는 서적의 정보

 

DBMS(Database Management System)

 전산화 된 데이터의 생성 및 유지 작업에 사용되는 소프트웨어 패키지 혹은 시스템. 

DBS(Database System)

 DBMS을 이용하여 데이터를 가공하거나, 추가적인 어플리케이션을 통해 데이터를 가공하기 위한 시스템.


DBMS와 DBS의 차이

 DBMS는 데이터베이스 "자체" 와 관련된 작업을 수행하는데 사용되는 시스템으로, 일종의 데이터베이스를 위한 OS 역할을 수행하여 데이터의 무결성 보장, concurrency control 등의 작업을 수행한다. 흔히 SQL/NOSQL을 떠올리면 생각나는 MySQL, MSSQL, MongoDB 등이 DBMS에 속한다.

 반면 DBS는 본질이 데이터베이스 자체에 있다기 보다는 특정 DBMS의 기능을 이용하여 어떠한 데이터베이스를 관리하는 것을 목적으로 하는 시스템으로, DBMS을 통해 사원 정보나 도서 대출 기록 등을 관리하는 시스템이 있다면 이 것이 DBS에 속하며, 어플리케이션 + DBMS 소프트웨어 + database의 조합이라고 생각할 수 있다.

DBS의 구조

  • 어플리케이션 및 쿼리/프로그램
  • DBMS ( 쿼리/프로그램 처리 + stored data 접근 으로 구분 )
  • Database ( Metadata : 특정 데이터의 정의/틀; 스키마 + Stored Database: 순수한 데이터 )

통상적인 DBMS의 기능

  • 데이터베이스의 스키마를 정의함으로써 데이터의 타입, 구조, 제약조건 등을 설정 가능.
  • 일반적인 데이터를 컬럼에 대응되는 형태로 변환하여 데이터베이스 내로 로딩 하는 기능 존재.
  • 데이터베이스 작업 : 쿼리, Insertion, deletion, update ... 
  • Concurrent user(동시간대에 데이터베이스에 접근, 마치 동시에 수행되는 것 "처럼" 느끼도록 작업 처리. time-sharing) 에 대해 데이터베이스를 처리하고 공유하면서도 데이터의 일관성(consistent) 및 정확성(validation) 유지.

추가적인 DBMS의 기능

  • 허가되지 않은 접근에 대한 프로텍션 혹은 보안 수단.
  • 데이터베이스 시각화 툴 / 관리 툴 등 ex) Mysql workbench

데이터베이스에 대한 어플리케이션 활동

  • 쿼리 : 데이터의 다른 부분에 접근하며, 요청된 결과만을 가공.
  • 트랜잭션 : 데이터를 읽거나, 어떤 특정한 값으로 갱신(update) 하거나, 새로운 데이터를 생성하는 작업.
  • 권한(Authorization) : 특정 데이터에 대한 권한이 있는 User에게만 해당 권한을 줌.

 사용자의 요구사항이 변경됨에 따라 데이터베이스 역시 계속 변경되어야 하므로, 이를 관리하고 처리하는데 사용되는 어플리케이션 역시 계속 변화하게 된다.


데이터베이스의 3가지 레이어( 3 Level Layer )

  • Conceptual layer : 데이터베이스의 대상이 극도로 추상화된 레이어. entity 및 relation을 통해 표현한다.
    ex ) [학생][수업] 을 듣는다.
          [교사][학생] 을 관리한다.
          [교사][수업] 을 담당한다.
    "학교"라는 Mini-world 에는 [학생] [수업] [교사] 라는 엔티티가 존재하고, 이 엔티티들은 서로 relationship을 가진다. Conceptual layer 은 특정 데이터베이스에 종속된 문법을 사용하여 각 데이터간의 관계를 표현하는 대신 극도로 추상화된 형태로 관계성을 표현한다. 보통 E-R 모델을 이용하여 표현된다. 
  • Logical layer : Conceptual 레이어와 Physical 레이어의 중간 단계의 데이터 구조. 흔히 E-R Diagram 등의 그림을 통해 데이터베이스간의 관계를 나타낸다.

  • Physical layer : 데이터베이스를 연결하여 사용자가 요구하는 실제 작업을 수행하는 레이어로, 각 DBMS에 종속된 문법을 이용하여 데이터베이스를 표현할 수 있다. 

데이터베이스를 도입할 때의 주된 특징

  1.  DBMS 내에는 catalog(meta data, definition, SCHEMA 등 다양한 이름 존재) 가 존재하여, 특정 데이터베이스에 대한 데이터 구조 / 각 요소의 타입 / 제한 조건등을 저장한다. 이것들이 DBMS 소프트웨어가 다른 데이터베이스 어플리케이션과 작동할 수 있게 한다.
      SQL 계열 DBMS의 경우 스키마는 catalog 에, 일반적인 데이터는 특정한 데이터베이스 내에 구분되어 저장된다. 반면 NOSQL 계열은 meta-data 와 데이터의 정의를 key-value 형태로 함께 저장하기도 한다.
  2. DBMS는 프로그램과 데이터베이스를 독립시키는데, 이를 program-data independence라고 부른다. 구체적으로 물리적 데이터 독립 및 논리적 데이터 독립이 존재한다.
    1. 물리적 데이터 독립성 : logical, conceptual layer 에 영향을 주지 않고 물리적 수준만을 변경 (주로 업그레이드)
      ex) 데이터베이스를 다른 하드디스크로 이동하더라도 논리적 스키마에는 전혀 영향이 없음
    2. 논리적 데이터 독립성: 데이터베이스의 관리자가 논리적 스키마를 자유롭게 변경할 수 있도록 하여 최종 사용자의 액세스를 방해하지 않으면서도 기존 테이블에 필드를 추가할 수 있도록 함.
  3. 데이터 추상화 : Data Model은 인간이 이해하기 쉽도록 DBMS에 종속된 디테일을 숨기고, conceptual 한 정보만을 보이기 위해 사용되며, 프로그램들 역시 상세한 구현 대신 추상화 된 데이터 모델을 주로 사용하게 된다.
  4. 데이터에 대해 multiple view 를 제공하므로, 각각의 User은 데이터베이스 내 관심 영역만을 볼 수 있다.
  5. Multi-user Transaction Processing : 데이터베이스는 동시간대에 접속하는 User들(concurrent users)이 데이터를 읽거나 쓸 수 있도록 한다. 또한 Concurrency Control을 통해 각 트랜잭션이 제대로 성공하거나, 실패하여 중단될 수 있도록 보장한다. 데이터베이스 내 정보가 잘못처리되는 경우 Recovery System을  통해 트랜잭션 복구도 가능하다.

Database User

데이터베이스 유저는 2가지 분류로 나눌 수도 있다.

  1. 데이터베이스 어플리케이션을 디자인/개발/관리하거나, 실제로 데이터베이스 컨텐츠를 이용/조작하는 사람
    1. 데이터베이스 관리자 : 데이터베이스에 대한 접근 권한 관리, 모니터링, 리소스 관리, 효율성 분석 등 데이터베이스 관리와 관련된 많은 일을 수행하는 사람.
    2. 데이터베이스 디자이너 : 데이터베이스의 컨텐츠, 구조, 제약 조건, 함수, 트랜잭션 등을 정의하는 사람으로, 언급된 작업을 수행하기 위해서는 end-user 과 소통하고, 그들의 니즈를 파악할 필요가 있다.
    3. End-User: 데이터베이스로 가공된 정보를 실제로 이용하는 실사용자로, 쿼리 데이터를 이용하거나 업데이트한다. 쇼핑몰의 제품 정보를 불러오거나, 개인 정보를 수정하는 등의 작업 등 역시 엔드 유저가 은연중에 수행하는 데이터베이스와 관련된 일이라고 생각할 수 있다.
    4. 시스템 애널리스트, 어플리케이션 개발자, 비즈니스 애널리스트( 특정 학문 분야와 데이터베이스 지식을 가진 전문가 )
  2. DBMS 소프트웨어, 관련 툴 등을 디자인하고 관리하는 사람
    1. 시스템 디자이너/구현자 : DBMS 패키지나 모듈, 인터페이스 등을 디자인, 개발하는 사람들.
    2. 툴 개발자 : DBMS을 위한 툴을 개발하는 사람들.

데이터베이스 도입 시 장점

  1. 데이터 저장을 위한 개별적인 시스템을 개발할 필요가 없어, 해당 부분에 필요한 인력을 아낄 수 있음.
  2. 데이터에 대한 접근 권한을 제어할 수 있음. ( 악성 유저의 조작 방지 등 )
  3. Query Processing 을 위한 저장 구조 제공.
  4. 쿼리 최적화, 서비스 리커버리&백업
  5. 정의에 따라 데이터가 구현되므로 데이터의 무결성이 보장

등등 장점이 존재한다.

DBMS가 비추천되는 경우

  1. 하드 리얼타임 시스템(시간 제약조건이 매우 강한 경우)의 경우 DBMS를 이용하면 해당 어플리케이션의 제약조건을 만족하지 못하는 경우가 많으며, DBMS에서 관리하는 데이터베이스는 기본적으로 규모가 크기 때문에 상당한 오버헤드가 발생할 수 있음.
  2. 특수한 데이터(단백질의 구조) 등의 데이터는 일반적인 DBMS을 통해 모델링하고 사용하기에는 다루기 복잡할 수 있음.
  3. DBMS가 지원하지 않는, 특수한 연산을 요구하는 경우