[DB] 데이터베이스 시스템

6 분 소요

데이터, 정보, 지식

데이터가 모이면 정보가 되고 정보가 모이면 지식이 된다. 데이터(data)는 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값. 정보(information)는 데이터에 의미를 부여한 것. 지식(knowledge)은 사물이나 현상에 대한 이해.

일상생활의 데이터베이스

데이터베이스는 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것이다. 데이터베이스는 우리일상 대부분에 사용된다. 대학에서는 학생 정보를 담고 있는 학사 데이터베이스를, 은행에서는 신용 카드 거래내역 등을 데이터베이스에 저장하고, 병원에서는 진료 기록을 데이터베이스에 저장하고 그 외에도 쇼핑몰, 도서관 등 데이터베이스는 개인생활 및 공공분야의 모든 곳에 생성된다.

데이터베이스 개념 및 특징

데이터베이스 : 각 조직에서 사용하던 데이터를 모아서 통합하고 공유할 목적으로 구축된다.

데이터베이스 개념

  1. 통합된 데이터(integrated data) 여러 곳에서 사용하던 데이터를 통합해 하나로 저정한 데이터를 의미한다. 통합 시 데이터의 중복을 최소화하고 중복 저장으로 인한 데이터 불일치 현상을 없애는 것이 중요하다.

  2. 저장된 데이터(stored data) 문서로 보관된 데이터가 아니라 디스크, 테이프 같은 컴퓨터 저장장치에 저장된 데이터를 의미한다.

  3. 운영 데이터(operational data) 조직의 목적을 위해 사용되는 데이터를 의미. 조직의 목적과 관계없이 저장된 데이터나 단순 입출력 데이터같이 임시로 저장된 데이터는 운영 데이터에 속하지 않는다.

  4. 공용 데이터(shared data) 한 사람 또는 한 업무를 위해 사용되는 데이터가 아니라 공동으로 사용되는 데이터를 의미한다. 데이터는 어느 순간이라도 둘 이상의 프로그램 또는 여러 사람이 동시에 사용할 수 있다.

데이터 베이스의 특징

  1. 실시간 접근성(real time accessibility) 데이터베이스는 시릿간으로 서비스된다. 사용자가 데이터를 요청하면 수초 내에 결과를 서비스한다.

  2. 계속적인 변화(continuous change) 데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀐다. 데이터베이스는 insert, delete, update 등의 작업으로 바뀐 데이터 값을 저장한다.

  3. 동시공유(concurrent sharing) 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유. 동시는 병행이라고도 하며, 데이터베이스에 접근하는 사용자 데이터 요청 프로그램이 동시에 여러개 있다는 의미이다.

  4. 내용에 따른 참조(reference by content) 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조된다. 사용자가 원하는 데이터를 얻기 위해 데이터 값을 사용하여 조건을 제시하면 데이터베이스는 이에 해당하는 데이터를 검색해준다.

데이터베이스 시스템 구성

  • 데이터베이스 관리 시스템(Database Management System, DBMS) : 사용자와 데이터베이스를 연결시켜주는 소프트웨어로 주기억장치에 상주한다.
  • 데이터베이스(database) : 데이터베이스에서 ‘베이스’는 물건의 밑 부분이나 개념의 토대를 의미하는 것으로 데이터베이스는 데이터를 모아둔 토대를 말한다. 물리적으로 컴퓨터 내부의 하드디스크에 저장된다.
  • 데이터 모델(data model) : 데이터가 저장되는 기법에 관한 내용. 눈에 보이지 않는 논리적인 개념이다. 데이터가 저장되는 스타일을 나타낸다.

파일 시스템과 DBMS

데이터를 저장하는 방법

1. 데이터를 프로그램 내부에 저장하는 방법 데이터를 프로그램의 변수에 치환해 저장하는 방법이다. 프로그램의 문제점은 새로운 데이터가 생길 때마다 프로그램을 수정한 후 다시 컴파일하고, 새로운 컴파일된 프로그램을 실행시켜야 한다. 또 프로그램을 컴파일해 새로운 프로그램을 가동시키는 순간 검색 서비스를 중단해야 한다. 데이터를 프로그램 내부에 저장하는 방법은 데이터의 추가나 삭제 같은 변경 작업이 없다면 아무 문제가 없지만, 데이터는 항상 변경이 일어나기 때문에 문제가 일어난다.

2. 파일 시스템을 사용하는 방법 데이터를 프로그램과 분리해 별도의 파일에 저장하는 방법이다. 파일은 프로그램과 분리되 컴퓨터의 디스크에 저장된다. 컴퓨터가 꺼진 상태에도 데이터 값을 유지한다. 데이터가 변경되어도 데이터를 파일에 별도로 저장하여 운영하기 때문에 프로그램 자체를 수정하지 않아도 된다. 따라서 고객은 24시간 서비스를 제공받을 수 있지만 두가지 문제가 있다. 첫째, 데이터 구조가 바뀌는 문제, 불편함이 있다. 데이터 구조를 바꾸기 위해서는 프로그램을 수정하여 새로운 데이터 구조를 정의하고 다시 컴파일하는데 컴파일된 프로그램을 다시 시작하려면 서비스를 일시 중단해야 한다. 둘째, 같은 파일을 두개의 프로그램이 공유하는 문제이다. 데이터를 book.dat 파일에 저장했을 때 프로그램 두개가 같은 dat파일을 접근할 때 다른 한개의 프로그램은 오류 메시지를 만나고 잠시 중지해야 한다.

3. DBMS를 사용하는 방법 데이터는 데이터 정의와 데이터 값으로 구성된다. 데이터 정의와 데이터 값을 DBMS라는 소프트웨어가 관리하는 방법으로 앞서 두가지 문제점을 모두 해결할 수 있다.

구분 파일 시스템 DBMS
데이터 중복 데이터를 파일 단위로 저장하므로 중복 가능성 높음 DBMS를 이용해 데이터를 공유하기 때문에 중복 가능성 낮음
데이터 일관성 데이터의 중복 저장으로 일관성이 결여됨 중복 제거로 데이터의 일관성 유지
데이터 독립성 데이터 정의와 프로그램의 독립성 유지 불가능 데이터 정의와 프로그램의 독립성 유지 가능
관리기능 보통 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 등을 수행
프로그램 개발 생산성 나쁨 짧은 시간에 큰 프로그램을 개발할 수 있음
기타 장점 별도의 소프트웨어 설치가 필요 없음 데이터 무결성 유지, 데이터 표준 준수 용이

데이터베이스 시스템의 구성

데이터베이스 시스템은 데이터베이스, 데이터베이스 관리 시스템, 데이터 모델의 세가지로 구성된다. 데이터베이스는 하드디스크에 저장된 데이터, DBMS는 주기억장치에 저장된 소프트웨어, 데이터 모델은 눈에 보이지 않는 논리적인 개념으로 데이터가 저장되는 기법에 관한 내용이다. 이외에도 데이터베이스 시스템을 이해하기 위해서는 데이터베이스 언어, 데이터베이스 사용자에 대해 알아야 한다.

1. 데이터베이스 언어 데이터베이스 시스템은 데이터베이스 전용 언어인 SQL(Structured Query Langauage)을 사용한다. SQL은 데이터 정의어(DDL, Data Definition Language), 데이터 조작어(DML, Data Manipulation Language), 데이터 제어어(DCL, Data Control Language)로 구성된다. 데이터 정의어는 저장된 테이블 구조를 정의(create, alter, drop ..) 데이터 조작어는 데이터를 검색, 삽입, 삭제, 수정하는 데 사용(insert, delete, update) 데이터 제어어는 데이터의 사용 권한을 관리(grant, revoke..)

2. 데이터베이스 사용자

  • 일반 사용자 : 응용 프로그래머가 작성한 프로그램을 이용해 데이터베이스에 접근해 사용한다. 보통 특별한 지식 없이 데이터베이스에 접근해 데이터의 검색, 삽입, 삭제, 수정 작업을 한다. 따라서 일반 사용자는 자신이 DBMS를 이용하는지 알지 못한다.

  • 응용 프로그래머 : 일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람이다. 자바, C, JSP 등의 프로그래밍 언어와 SQL을 사용해 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 로직을 개발한다. 특별히 데이터베이스 프로그래머라고 말하기도 한다.

  • SQL 사용자 sql을 사용해 업무를 처리하는 it부서의 담당자로, 응용프로그램으로 구현되어 있지 않은 업무를 sql을사용해 처리한다. 주로 데이터 검색, 데이터 구조 변경, 데이터에 관한 통계 처리 등 데이터를 모니터링하는 업무를 하거나 보고서 형태로 만들어 상부에 보고하는 업무를 한다.

  • 데이터베이스 관리자(DBA, Database Administrator) 데이터베이스 운영 조직의 데이터베이스 시스템을 총괄하는 사람. DBA는 데이터 설계, 구현, 유지보수 전 과정을 담당한다. 또한 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터전체 파악 및 관리, 데이터 이동 및 복사 등 제반 업무를 맡는다.

3. DBMS 사용자와 데이터베이스를 연결시켜주는 소프트웨어. 데이터베이스 사용자가 데이터베이스를 생성, 공유, 관리할 수 있도록 지원해주는 총체적인 역할을 한다.

4. 데이터 모델 데이터 모델은 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것으로, 데이터베이스에 데이터를 어떻게 구조화되어 저장되는지를 결정. 가장 많이 사용되는 모델은 관계 데이터 모델(relational data model)이다.

  • 포인터 사용 : 계층 데이터 모델, 네트워크 데이터 모델
  • 속성 값 사용 : 관계 데이터 모델
  • 객체식별자 사용 : 객체 데이터 모델

데이터베이스의 개념적 구조

3단계 데이터베이스 구조. - 외부 단계, 개념 단계, 내부 단계로 나누어진다. 각 단계를 설명하는데 사용하는 용어 ‘스키마’는 그리스어에서 유래된 단어로 조직이나 구조를 의미한다.

  1. 외부단계 - 사용자가 보는 데이터 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미. 여러개의 외부 스키마가 있을 수 있다. 외부 스키마는 서브 스키마라고도 하며, 뷰의 개념이다. 대학 데이터베이스를 예로 들면 학생처의 학생 정보, 교무처의 수강 정보 등은 전체 데이터베이스의 일부분으로 각 부서의 사용자들에게만 필요한 각각의 스키마라고 할 수 있다.
  2. 개념단계 - 전체데이터 전체 데이터베이스의 정의를 의미. 통합 조직별로 하나만 존재하며 DBA가 관리. 즉 하나의 데이터베이스에는 하나의 개념 스키마가 있다. 개념 스키마는 저장장치에 독립적으로 기술되며 데이터와 관계, 제약사항, 무결성에 대한 내용이 포함.

  3. 내부 단계 - DBMS가 보는 데이터 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법을 표현. 내부 스키마는 하나이며 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함된다.

DBMS는 매핑(사상)을 통해 각 단계 간 대응 관계를 정의한다.

  • 외부/개념 매핑 : 사용자의 외부 스키마와 개념 스키마 간의 매핑으로 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당하는지 대응시킨다.
  • 개념/내부 매핑 : 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킨다.

데이터 독립성

3단계 데이터베이스 구조의 특징은 데이터 독립성이다. 데이터 독립성은 하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 하는 것이다. 일반 사용자는 사용자별로 외부 스키마가 있고, DBA는 일반 사용자의 외부 스키마에 영향을 주지 않고 개념 스키마나 내부 스키마의 물리적인 저장 방법을 바꿀 수 있다. 데이터 독립성에는 두가지가 있다.

  • 논리적인 데이터 독립성(logical data independence) 외부 단계와 개념 단계 사이의 독립성으로 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원. 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념이다. 예를들어 스키마의 테이블을 생성하거나 변경해도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없다.

  • 물리적 데이터 독립성(physical data independence) 개념단계와 내부 단계 사이의 독립성으로 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원. 예를들어 성능 개선을 위해 물리적 저장장치를 재구성할 경우 개념 스키마나 응용프로그램 같은 외부 스키마에 영향이 없다. 물리적 독립성은 논리적 독립성보다 구현하기 쉽다.