Updated:

데이터베이스(database)는 일반적으로 하나 이상의 서로 관련이 되는 조직체들의 활동을 기술하는 데이터들의 모임이다. 예를 들어, 대학교의 데이터베이스는 다음에 관한 정보를 포함할 수 있다.
 • 개체(entitiy): 학생, 교수, 과목, 강의실 등
 • 개채들간의 관계(relationship): 학생이 과목을 등록, 교수가 과목을 강의, 과목의 강의실 등

데이터베이스 관리 시스템(database management system: DBMS)은 대규모의 데이터를 유지관리하고 이용하는 데에 도움이 되도록 설계된 소프트웨어이다. 대규모의 데이터를 유지관리하고 이용하는 데에 도움이 되도록 설계된 소프트웨어이다. DBMS를 사용하는 것에 대한 유일한 대안은 데이터를 파일에 저장하고 이를 관리하기 위해 주문형 코드를 작성하는 것이다.

데이터의 관리

웹사이트의 제1세대는 데이터를 전적으로 운영체제의 파일로 저장하였으나, 웹 브라우저를 통하여 접근되는 데이터를 저장하기 위해 DBMS를 사용하는 것이 점점 일반화되고 있다. 질의들은 웹에서 접근할 수 있는 양식을 통하여 생성되고 질의의 응답은 브라우저에서 쉽게 볼 수 있도록 HTML과 같은 마크업 언어를 이용하여 표현된다. 모든 데이터베이스 공급업체들은 인터넷상에서 연동이 더 적절하게 이루어질 수 있도옥 그들의 DBMS에 기능들을 추가하고 있다.
데이터베이스 관리는 더욱 더 많은 데이터가 온라인으로 연결되고 또 컴퓨터 네트워킹을 통해 훨씬 더 많이 접근될 수 있음에 따라 계속적으로 중요성을 더해 가고 있다. 대표적인 과제들로 멀티미디어 데이터베이스, 전자 도서관, 데이터 마이닝등이 있다. 상업적으로, 데이터베이스 관리 시스템은 가장 규모가 크고 제일 활발한 시장 부분 중의 하나이다. 따라서 데이터베이스 시스템의 학습은 여러 측면에서 충분히 할만한 가치가 있다.

파일 시스템과 DBMS의 비교

DBMS의 필요성을 이해하기 위해 다음과 같은 시나리오를 가정해보자. 어떤 회사가 직원, 부서, 제품, 판매 등에 대한 방대한 양의 데이터(예, 500GB)를 가지고 있다. 이 데이터는 여러 직원들에 의해 동시에 접근된다. 데이터에 관한 질문은 신속하게 대답되어야 하고 여러 사용자들에 의한 데이터의 변경은 일관성 있게 적용되어야 하며 데이터의 어떤 부분(예, 급여액)은 접근이 제한되어야 한다. 우리는 운영체제 시스템 파일에 데이터를 저장하여 이러한 데이터를 관리하는 것을 시도할 수 있다. 그러나 이러한 접근은 디스크같은 저장장치가 필요하고 모든 데이터 항목을 식별하는 방법을 프로그래밍, 복잡한 프로그램들을 작성해야하며 여러 사용자들에 의해 일관성 없이 데이터가 변경되는 것으로부터 데이터를 보호해야한다. 또한 시스템이 붕괴되면 데이터를 일관성이 있는 상태로 확실히 복구될 수 있어야하고 암호 식별 기능을 제공해야한다.
DBMS는 위 작업들을 더 쉽게 처리하도록 설계된 소프트웨어이다. 운영체제의 파일들보다는 DBMS에 데이터를 저장함으로써, 강력하고 효율적인 방법으로 데이터를 관리하기 위해 DBMS의 특징을 이용할 수 있다.

DBMS의 장점

DBMS를 사용하여 데이터를 관리하게 되면 많은 장점들이 있다.

  • 데이터 독립성: 응용 프로그램들은 데이터의 표현과 저장에 대한 세부사항에 영향을 받지 않는 것이 이상적이다. DBMS는 이러한 세부사항을 은닉하는 데이터의 추상적인 관점을 제공한다.
  • 효율적인 데이터 접근: DBMS는 데이터를 효율적으로 저장하고 검색하기 위해 여러 종류의 정교한 기술들을 이용한다.
  • 데이터 무결성과 보안성: 데이터가 항상 DBMS를 통하여 접근되면, DBMS는 무결성 제약조건을 집행할 수 있다. 예를 들어, 한 직원의 급여 정보를 삽입하기 전에, DBMS는 해당 부서의 예산이 초과되지 않나 점검할 수 있다. 또한 DBMS는 여러 부류의 사용자들에게 무슨 데이터가 보여질 수 있는지를 주관하는 접근제어를 집행할 수 있다.
  • 데이터 관리: 여러 사용자들이 데이터를 공유할 때에, 데이터에 대한 관리를 중앙 집중화하여 데이터의 중복을 최소화하도록 데이터 표현을 조직화하고 효율적인 검색을 수행하기 위해 데이터의 저장을 세부적으로 조정하는 것이 상당한 개선을 가져올 수 있다.
  • 동시접근 및 손상복구: DBMS는 데이터의 동시접근을 계획하고 시스템의 붕괴로 인한 영향으로부터 사용자들을 보호한다.
  • 응용 개발 시간 감축: DBMS는 고수준의 데이터 인터페이스와 함께 신속한 응용 개발을 용이하게 한다.

DBMS에서 데이터의 명세 및 저장

DBMS의 사용자는 궁극적으로 어떤 실세계의 조직체와 관련이 되어 있으며, 저장될 데이터는 이 조직체의 여러 측면을 기술한다. 예를 들어, 대학교에는 학생들, 교수들, 과목들이 있으며, 대학 데이터베이스에 있는 데이터는 이러한 개체들과 그들간의 관계를 기술한다.
데이터 모델(data model)은 많은 저 수준의 저장에 대한 내용들을 감추고 고수준의 데이터를 기술하는 구성자들의 집합이다. DMBS는 사용자로 하여금 저장될 데이터를 데이터 모델에 의하여 정의할 수 있게 한다. 오늘날 대부분의 데이터베이스 관리 시스템은 관계 모델(relational data model)에 기반하고 있다.
의미적인 데이터 모델(semantic data model)은 추상적이고 고수준의 데이터 모델로서 사용자가 조직체에서 사용하는 데이터의 초기 명세를 더 쉽고 훌륭하게 작성할 수 있도록 한다. 의미적인 모델에 의한 데이터베이스 설계는 유용한 출발점이 되고, 그 다음으로 이 설계는 DBMS가 실제로 지원하는 데이터 모델에 의거하여 데이터베이스 설계로 변환된다. 광범위하게 사용되는 의미적인 데이터 모델인 개체-관계(entity-relationship: ER) 모델은 개체들과 그들간의 관계들을 도식적으로 나타낼 수 있게한다.

관계모델

이 모델에서 중요한 데이터 기술 구성자는 릴레이션이고, 릴레이션은 레코드들의 집합으로 간주된다. 어떤 데이터 모델에 의거한 데이터의 기술은 스키마(schema)라고 불린다. 관계모델에서, 한 릴레이션의 스키마는 릴레이션의 이름, 각 필드(에트리뷰트, 열)의 이름과 타입을 명세한다. 예를 들어, 대학 데이터베이스에서 학생 정보는 다음과 같은 스키마를 가진 릴레이션으로 저장될 수 있다.

Students(sid: string, name: string, login: string, age: integer, gpa: real)

이 스키마는 Students 릴레이션에 있는 각 레코드가 명시된 이름과 타입을 가지는 다섯 개의 필드를 자기고 있음을 말하고 있다. Students 릴레이션의 예제 인스턴스는 다음과 같다.

sid name login age gpa
53666 Jones jones@cs 18 3.4
53688 Smith smith@ee 18 3.2
53650 Smith smith@matg 19 3.8
53831 Madayan madayan@music 11 1.8
53832 Guldu guldu@music 12 2.1

Students 릴레이션의 각 행은 한 명의 학생을 기술하는 레코드이다. 학생들의 모임에 대해 무결성 제약조건(integrity constraint)을 명시함으로써 좀 더 정확하게 기술할 수 있다. 무결성 제약조건은 한 릴레이션에 있는 레코드들이 반드시 만족해야 하는 조건들이다. 예를 들어, 각 학생은 유일한 sid 값을 갖는다고 명시할 수 있다.

DBMS의 추상화 단계

DBMS내에 있는 데이터는 다음과 같이 세단계의 추상화로 기술된다.


데이터베이스의 기술은 이 세 단계의 각각에 대한 스키마로 구성된다: 개념 스키마, 물리적 스키마, 외부 스키마.
데이터 정의어(Data Definition Language: DDL)는 외부 스키마와 개념 스키마를 정의하기위해 사용된다. 모든 DBMS 공급업체들은 물리적인 스키마를 기술하기 위한 SQL 명령어들을 지원하지만, 이 명령어들은 SQL 언어 표준의 일부가 아니다. 개념 스키마, 외부 스키마, 물리적인 스키마에 관한 정보는 시스템 카탈로그(system catalog)에 저장된다.

개념 스키마
개념 스키마(논리적 스키마)는 DBMS의 데이터 모델에 의하여 저장되는 데이터를 기술한다. 관계 DBMS에서, 개념 스키마는 데이터베이스에 저장되는 모든 릴레이션들을 기술한다. 예를 들어, 학생과 교수와 같은 개체에 관한 정보와 학생이 과목을 등록하는 것과 같은 관계에 관한 정보를 포함한다. 릴레이션들을 선택하고 각 릴레이션의 필드들을 선택하는 작업이 항상 쉬운 것은 아니며, 좋은 개념 스키마를 만들어 내는 과정을 개념적 데이터베이스 설계(conceptual database design)라고 한다.

물리적 스키마
물리적 스키마는 추가적인 저장의 세부사항들을 명시한다. 물리적 스키마는 개념 스키마로 기술되어 있는 릴레이션들이 보조기억장치에 실제로 어떻게 저장되는가를 명시한다. 물리적 스키마는 데이터가 일반적으로 어떻게 접근되는가에 대한 이해를 기반으로 하여 결정되고 좋은 물리적 스키마를 만들어 내는 과정을 물리적 데이터베이스 설계(physical database design)라고 한다.

외부 스키마
외부 스키마는 개별 사용자들이나 사용자 그룹들 수준에서 그들의 주문에 따라 데이터 접근이 되도록 한다. 데이터베이스는 저장된 릴레이션들로 이루어지는 하나의 집합이기 때문에 개념 스키마와 물리적 스키마는 각각 하나씩만 존재하지만, 외부 스키마는 여러 개가 존재한다. 각 외부 스키마는 특정 사용자 그룹의 목적에 맞도록 만들어지며 개념 스키마로 부터 만들어지는 하나 이상의 (view)와 릴레이션으로 이루어진다.

데이터 독립성

DBMS를 사용하는 것의 매우 중요한 장점은 DBMS가 데이터 독립성(data independence)을 제공한다는 점이다. 사용자들은 데이터의 논리적인 구조의 변경, 또는 저장될 릴레이션들의 선택의 변경으로부터 보호될 수 있다. 이러한 특성을 논리적 데이터 독립성(logical data independence)이라고 한다. 한편, 개념 스키마는 데이터의 물리적인 저장의 세부적인 변화로부터 사용자들을 격리한다. 이러한 특성을 물리적 데이터 독립성(physical data independency)이라고 한다.

DBMS에서의 질의

DBMS에 저장되어 있는 데이터에 관한 질문을 질의(query)라고 한다. DBMS는 질의들이 작성될 수 있는 질의어(query language)라고 하는 특수한 언어를 제공한다. 관계모델의 매우 매력적인 특징은 그것이 강력한 질의어를 지원한다는 점이다. 관계해석(relational calculus)은 수학적인 논리에 바탕을 둔 일종의 정형 질의어로서, 이 언어로 작성된 질의들은 직관적이며 정확한 의미를 갖는다. 관계대수(relational algebra)는 또다른 정형 질의어로서 릴레이션을 조작하기 위한 연산자들의 모임에 기반을 두고 있는데, 표현력에서 관계 해석과 동등하다.

트랜잭션 관리

여러 사용자들이 데이터배이스를 동시에 접근(및 수정)하게 되면, DBMS는 충돌을 피하기 위하여 그들의 요청을 신중하게 순서적으로 처리해야 한다. 또한 DBMS는 시스템이 붕괴된 후 재시동될 떄에 모든 데이터(와 처리 중에 있던 응용들의 상태)를 일관적인 상태로 복원하는 것을 보장함으로써 사용자들을 시스템 손상의 영향으로부터 보호하여햐 한다.
트랜잭션은 DBMS에서 사용자 프로그램의 일회 실행이다(동일 프로그램을 여러 번 실행하는 것은 여러 개의 트랜잭션을 생성하게 된다). 트랜잭션은 DBMS가 보는 변경의 기본 단위이다.

트랜잭션의 동시 수행

DBMS의 중요한 임무 중 하나는 각 사용자가, 다른 사람들이 동일한 데이터를 동시에 접근하고 있다는 사실을 아무 지장 없이 무시할 수 있도록 데이터의 동시접근을 계획하는 것이다.
잠금 프로토콜(locking protocol)은 여러 트랜잭션들의 연산들이 인터리브하더라도, 실제 효과는 어떤 직렬 순서에 따라 모든 트랜잭션들을 수행하는 것과 동일하다는 것을 보장하기 위해, 각 트랜잭션이 준수해야 하는 규칙들의 모임이다. 잠금(lock)은 데이터베이스 객체에 대한 접근 제어에 사용되는 메카니즘이다. 두 가지 종류의 잠금이 DBMS에 의해 일반적으로 지원된다. 한 객체에 대한 공용 잠금(shared lock)은 동시에 두 개의 다른 트랜잭션들에 의하여 소유될 수 있으나, 한 객체에 대한 전용 잠금(exclusive lock)은 다른 트랜잭션들이 이 객체에 어떠한 잠금도 소유할 수 없도록 한다.

미완료 트랜잭션과 시스템 붕괴

트랜잭션들이 완료되기 전에 시스템이 붕괴되는 등 여러 가지 이유로 중단되는 수가 있다. DBMS는 이렇게 완료되지 않은 트랜잭션들에 의해 수행된 변경들이 데이터베이스로부터 제거되는 것을 보장해야 한다. 이를 수행하기 위하여, DBMS는 데이터베이스에 쓴 모든 기록 작업에 대한 로그(log)를 유지관리한다. 각 기록 작업은 그 내용이 데이터베이스에 반영되기 전에 로그에 기록되어야 하는데, 이 점은 로그의 매우 중요한 성질이다. 만약 시스템이 데이터베이스에는 변경을 하였으나 그 변경이 로그에 기록되기 직전에 붕괴한다면, DBMS는 그 변경을 찾아낼 수 없어, 취소할 수 없을 것이다. 이 특성을 로그 우선 기록(write-Ahead Log, WAL)이라 한다.
로그는 성공적으로 완료된 트랜잭션에 의해 수행된 변경들이 시스템 붕괴 때문에 손실되지 않는다는 것을 보장하기 위해서도 사용된다. 시스템이 한번 붕괴된 이후에 데이터베이스를 일관된 상태로 복구하는 작업은 느리고 더딘 작업니다. 붕괴시점 이전에 완료된 모든 트랜잭션들의 효과는 모두 복구되고 완료되지 못한 트랜잭션들의 효과는 취소되는 것을 DBMS가 보장해야하기 떄문이다. 붕괴로부터 복구하기 위하여 요구되는 시간은 적당량의 정보를 디스크에 주기적으로 강제 출력함으로써 감소될 수 있다. 이러한 주기적인 연산을 검사점(checkpoint)이라고 한다.

댓글남기기