1. 개요

- 데이타베이스란, 상호 관련성 있는 대량의 데이터의 모음으로 컴퓨터에 저장될 수 있는 것을 뜻한다. 그 데이터는 반드시 구조화 되어 있을 필요는 없다. 데이터베이스는 컴퓨터과학의 주요 기초 분야이자 기초 시스템 소프트웨어이고 IT 분야에서 핵심적인 역할을 맡고 있어 실생활 다양한 분야에서 쓰이고 있으며 산업계의 요구도 매우 강력하다.

- DBMS(database management system)는 데이터베이스를 관리하는 소프트웨어로, 단순히 데이터베이스를 구축하거나 조작하는 기능만 있는 게 아니라 데이터 공유, 복구, 보안 등의 다양한 기능을 제공한다. 데이터베이스를 관리함에 있어 반드시 DBMS를 써야 하는 것은 아니지만, DBMS를 사용하면 데이터 추상화, 쉬운 데이터 접근, 데이터 중복 및 불규칙성에 대한 통제, 데이터 갱신의 원자성, 다수 사용자에 대한 동일성, 보안 등의 이점이 있다.

- 대규모의 DB 시스템을 운영하는 하드웨어의 경우, 과거에는 일반적 사용자들이 흔히 사용하는 PC보다는 훨씬 뛰어난 성능이 필요하다고 여겨져 이러한 목적에 특화된 하드웨어를 갖춰야 할 것으로 생각되었으나, 최근에는 특수목적의 칩셋을 개발하는 것보다 일반적인 컴퓨터에 쓰이는 것과 기능, 성능상으로 크게 다르지 않으면서도 그 수를 대량으로 운영하여(scale out) 병행처리를 함으로써 효율을 개선할 때 보다 저비용-고성능의 효율적인 DB 시스템을 구축할 수 있는 것으로 여겨진다.

2. ANSI/SPARC의 DB의 3단계 표현

- DB를 보는 관점에 따라 여러 단계로 구분할 수 있으며, 각 단계의 관점에 따라 DB의 구조 및 제약조건을 포괄하여 기술하는 개념을 스키마라 한다. ANSI/SPARC에서는 DB의 표현 방식에 대해 각 단계(level) 및 스키마(schema)를 크게 다음 세 가지로 나눈 모델을 제안한다.

  • 내부 단계(internal level) - 내부 스키마(internal schema): 데이터베이스가 실제로 하드웨어에 물리적으로 저장되어 있는 관점에서 본 것을 내부 단계, 그 구조를 기술한 것을 내부 스키마라 한다. 물리적 단계(physical level), 물리적 스키마(physical schema)라고도 한다.

    • 내부 스키마는 개념 스키마로 매핑될 수 있으며, 이런 매핑 관계를 스토리지 인터페이스(storage interface)라 한다.
  • 개념 단계(conceptual level) - 개념 스키마(conceptual schema): 보다 추상적으로, 내부 단계를 구성하는 각 요소의 구체적 의미나 요소 사이 관계 등에 주목하는 관점에서 본 것을 개념 단계, 그 구조를 기술한 것을 개념 스키마라 한다. 개념 단계를 논리적 단계(logical level), 개념 스키마를 논리적 스키마(logical schema) 또는 그냥 단순히 스키마(schema)라고도 한다.

    • 개념 스키마는 외부 스키마로 매핑될 수 있으며, 이런 매핑 관계를 어플리케이션 인터페이스(application interface)라 한다.
  • 외부 단계(external level) - 외부 스키마(external schema): 데이터베이스에 접속한 사용자가 실제로 볼 수 있는 외형이라는 관점에서 본 것을 외부 단계, 그 구조를 기술한 것을 외부 스키마라 한다. 외부 단계를 뷰 단계(view level), 외부 스키마를 뷰 스키마(view schema) 또는 subschema라고도 한다.

    • 데이터베이스에 접속한 사용자의 권한 등에 따라 각 사용자가 실제로 볼 수 있는 외부 스키마의 내용은 서로 달라질 수 있다.

- 보다 외부 단계 스키마의 변경 없이 내부 단계 스키마의 수정이 가능한 것을 데이터 독립성(data independence)이라 한다. 데이터 독립성이 보장되는 것은 DBMS를 사용하는 큰 이점 중 하나다.

  • 물리적 데이터 독립성: physical schema가 logical schema의 변경 없이 수정이 가능한 것

  • 논리적 데이터 독립성: logical schema가 view schema의 변경 없이 수정이 가능한 것

- 스키마 다이어그램(schema diagram): 스키마를 그래픽 형태로 표현한 것. 스키마를 설계하거나 DB 내 스키마의 구조를 파악하는 등의 용도로 사용된다.

- 스키마의 내용은 컴파일되어 카탈로그 또는 data dictionary에 저장되며, DB 관리자(DBA, database administration)가 이를 관리한다.

3. 데이터 언어(data language)

1) 데이터 정의어(data definition language, DDL)

- 데이터베이스 구조를 정의하고 변경하기 위해 사용한다.

2) 데이터 조작어(data manipulation language, DML)

- 사용자가 DBMS에 접근해서 직접 데이터를 수정/변경하거나 데이터를 가져오게 하는 수단으로서 사용한다. 크게 절차적 DML과 비절차적 DML로 나눌 수 있다.

  • 절차적 DML: 데이터를 가져오는 방식을 구체적으로 명시하는 (C와 같은) low level 언어. 한 명령어로 하나의 레코드만 가져올 수 있다(one record at a time).

  • 비절차적 DML: 가져올 데이터만을 알리고 그 방식은 시스템에 위임하고 구체적으로 명시하지 않는 high level 언어. 한 명령어로 여러 개의 레코드를 가져올 수 있다(a set of records at a time). 보다 추상적이기 때문에 흔히 query language라고 한다.

3) 데이터 제어어(data control language, DCL)

- DB가 무결성(integrity), 보안(security), 병행 수행(concurrency), 회복(recovery) 등을 보장하도록 하는 기능을 수행하도록 하는 언어. DBA가 이러한 언어를 사용하여 DB를 관리한다.

4. DB의 사용자

  • 일반 사용자(end user): DB의 내용을 삽입/수정/삭제하는 작업을 주로 수행하는 사용자들. 비절차적 DML을 사용한다.

  • 응용 프로그래머(application programmer): DB를 활용하는 프로그램을 개발하는 사용자들. DB의 기능을 최대한 활용하는 동시에 데이터 언어가 지원하지 않는 기능을 지원하는 프로그램을 개발하기 위해 host language를 주로 사용하여 개발하되 DML을 안에 삽입하는 식으로 사용한다.

  • DBA(database administrator): DB 시스템을 총괄하는 관리자로서, DB 시스템의 안정적이고 효율적 운영에 관한 총체적 책임이 있다. DB 시스템의 실질적 사용뿐 아니라 수많은 사용자들이 DB 시스템을 사용하는 데 있어 느끼는 고충 등의 이슈에도 대응할 책임이 있다. DB 사용에 있어서는 주로 DB를 정의, 설계하고 DB의 구조, 보안 등에 관한 각종 정책을 수립하고 제어하는 사용자들이다. DDL, DCL을 사용한다.

5. DBMS의 구성요소

  • DDL 컴파일러: 스키마를 명세하는 DDL을 처리하여 스키마를 DB 내 카탈로그 형태로 저장한다.

  • 쿼리 처리기(query processor): (비절차적)DML을 처리하여 이의 수행을 위한 object code를 생성한다.

  • 전처리기(precompiler): host language에 삽입된 DML을 분리해내 이를 DML 컴파일러에 전달하고, 나머지 코드는 host langugage의 컴파일러에 전달한다.

  • 트랜잭션 관리자(transaction manager): 트랜잭션이 DB에 접근하는 과정에서의 권한, 무결성 등의 문제를 처리한다. 병행 수행, 회복 등의 기능도 수행한다.

6. 데이터 모델과 DBMS

- 특정 업무 목적의 데이터베이스 구축을 위해 그 업무에서 필요로 하는 데이터가 무엇인지를 분석하고 그에 관한 schema를 구성하는 것을 데이터 모델링이라 하며, (1)업무에서 실제로 사용할 정도로 추상화 수준이 높은 개념적 데이터 모델링, (2)개념적 데이터 모델을 통해 업무의 구체적인 흐름을 따라가는 업무 중심의 논리적 데이터 모델링, (3)논리적 데이터 모델을 실제 하드웨어에서 구현하는 물리적 데이터 모델링 세 단계로 나뉜다.

- 특히 논리적 데이터 모델을 구성하는 방식에 따라 관계형(행과 열을 지닌 표의 형태로 데이터를 관리), 객체형, 문서형(간단한 문법으로 키-밸류 사이 관계를 지정하되 일반적인 문서와 같은 형태로 데이터를 관리) 등의 데이터 모델이 있다. DBMS 중 오라클 데이터베이스, 마이크로소프트 SQL 서버(MS SQL), MySQL, PostgreSQL 등이 관계형 데이터베이스를 다루는 DBMS(RDBMS)이다. 이러한 DBMS의 기능을 사용할 수 있게 하는 언어로 QUEL, LDL, SQL 등이 있으나 이들은 주로 SQL(structured query language)라는 언어를 지원한다. 반대로 SQL을 지원하지 않는 DBMS들을 통틀어 NoSQL이라고 지칭하며, NoSQL에는 문서형 데이터베이스를 다루는 DBMS인 MongoDB 등이 있다.

- 오라클 데이터베이스는 많은 대기업에서 사용하여 글로벌 DB 시장 점유율 1위를 기록 중이며, 다양한 OS를 지원하고 DBMS의 유지보수를 오라클이 직접 책임진다는 장점이 있다. MS SQL은 마이크로소프트에서 서비스하는 DBMS로서 윈도우에 특화되어 있다는 특징이 있다. MySQL은 과거 무료 오픈소스 DBMS의 대명사였으며 현재도 오픈소스로 무료 서비스를 제공하나 현재 오라클에 인수된 상태이며, 오라클이 MySQL에 대한 권리를 행사할 가능성이 있어 대안으로 여러 오픈소스 DBMS가 새로 등장하고 있다.

7. 데이터베이스 설계

- 어떤 기능을 갖고 어떤 엔티티를 어떤 방식으로 저장하는 데이터베이스를 구축할 것인지(개념적 데이터베이스)부터 schema를 어떻게 정의해 데이터베이스를 구축할 것인지(논리적 데이터베이스), 물리적 장치를 어떠한 방식으로 제어해 데이터베이스를 구축할 것인지(물리적 데이터베이스)를 결정하는 것을 통틀어 데이터베이스 설계라 한다.

- 어떤 식으로 schema를 정의할지는 DB 시스템 성능에 중요하므로 현재 구축할 DB가 어떤 기능을 어떤 성능으로 지원해야 하는지를 중점적으로 고려하여 DB를 설계할 필요가 있다.

* 이 자료는 http://www.kocw.net/home/cview.do?cid=d549f8570583094b 이 링크의 강의 내용을 정리한 자료입니다.