본문 바로가기

[전공] 데이터베이스

[DB] 데이터베이스, 스키마, SQL

데이터베이스는 기본적으로 데이터를 모아놓은 집합을 말한다. 컴퓨터가 있는 어디에서나 데이터가 발생한다. 그렇다면 그 데이터들을 잘 활용하기 위해서 어딘가에 잘 정리해서 모아놓아야 하는데, 이러한 역할을 하는 것이 데이터베이스이다. 우리가 쓰고 있는 주소록 또한 데이터베이스로 이미 관리되고 있다.

 

DBMS (DataBase Management System)


다소 추상적인 개념이라서 많이 헷갈릴 수 있을 것 같다. 데이터베이스는 앞서 말했듯이 세상 어디에서나 발생하는 데이터를 모아서 저장할 수 있는 저장소 개념이다. 하지만 데이터베이스만 있을 경우 이를 관리하기 위한 도구가 존재하지 않으면 무용지물이기 때문에 데이터베이스를 관리하기 위한 데이터베이스 관리 시스템, 즉 DBMS가 필요해지게 된 것이다. DBMS는 서로 연관된 데이터 모음에 접근할 수 있는 응용프로그램들을 포함하며, 이것을 편리하고 효과적으로 이용할 수 있도록 하는 환경을 제공한다.

 

우리가 수업에서 예시로 들게 될 데이터베이스는 학교 입장에서 가장 접근하기 좋은 학교 데이터베이스이다. 학교 데이터베이스에서는 새로운 학생 정보를 추가하거나, 교육 과정에 대한 정보를 등록하는 등의 상황이 발생하는데, 이러한 작업은 DBMS가 등장하기 이전에 File System으로 처리되었다.

 

Drawbacks of File Systems


파일 시스템으로 데이터를 처리하게 될 경우 여러가지 문제점이 발생할 수 있는데, 이는 다음과 같다.

 

  • 데이터 중복(Redundancy)과 비일관성(Inconsistency)
    • 학생 데이터를 필요로 하는 대상이 여러 명이라면 그 대상 수 만큼 데이터 중복이 발생하며, 각각의 데이터 파일이 따로 수정될 경우 일관성을 유지하기 어렵다.
  • 데이터 접근에 대한 어려움
    • 저장된 데이터에 접근하기 위한 프로그램이 있어야 하며, 이는 여러 포맷으로 저장되어 있을 수 있다.
  • 데이터의 고립(Isolation)
    • 파일로 데이터를 관리할 경우 중복되는 여러 파일들과 포맷들이 서로 독립적이기 때문에 일관성 문제를 야기할 수 있다.
  • 무결성 문제(Integrity)
    • 데이터의 무결성이란, 저장된 데이터의 정확성, 일관성, 유효성을 의미하는 것으로, 예를 들면 학생의 나이가 음수가 된다는 것은 무결성에 문제가 발생했다고 할 수 있다.
  • 데이터 업데이트 시 원자성(Atomicity) 보증 불가
    • 하나의 transaction은 쪼개지지 않고 다른 작업에 의해 방해받지 않아야 하는데 파일 시스템으로 데이터를 관리할 경우 이러한 원자성을 보장받을 수 없다.
  • 동시다발적 접근(Concurrent access)에 대한 취약성
    • 바로 앞에서 기술했듯이 transaction에 대한 원자성이 보장되지 않기 때문에 동시다발적으로 접근할 경우 동작에 간섭을 받을 가능성이 있다. 간섭이 발생할 경우 일관성 문제가 발생할 수 있다.
  • 보안 문제(Security problems)
    • 파일 시스템으로 데이터를 관리하게 되면 해당 데이터에 접근 가능한 대상을 제어하거나 기타 보안과 관련된 기능을 제공하기 어렵다.

 

Schemas and Instances


스키마와 인스턴스의 관계는 객체지향 프로그래밍에서의 클래스와 인스턴스의 관계로 비유될 수 있다. 실제로 저장되는 데이터의 청사진, 즉 데이터의 포맷을 결정짓는다. 이러한 스키마는 logical schema와 physical schema로 나눌 수 있다. 참고로 이 둘은 독립적이라고 한다. (아직 이해못함)

Logical schema

논리적 스키마는 데이터베이스의 전반적인 논리적 구조를 결정한다. 가령 "데이터베이스는 고객 정보와 은행 계정, 그리고 그들의 관계로 구성된다" 와 같은 논리적 구조 말이다. 저장되는 값의 포맷과 비슷하다고도 할 수 있다.

Physical schema

데이터베이스의 전반적인 물리적 구조, 즉 실제로 어떻게 저장할 것인가에 대한 것을 의미한다.

Instance

특정 시간에 저장된 실제 내용을 의미한다.

Physical data independence

논리적, 물리적 스키마의 독립성을 얼마나 잘 유지하는지에 대한 개념으로, 둘 중 어느 파트가 수정되었을 때 다른 하나의 파트에 심각한 영향을 끼쳐서는 안된다. 즉 독립성을 잘 지켜야 한다.

 

Data Models


데이터 모델의 정의는 다음을 설명하는 방식의 모음이다.

  • 데이터(data)
  • 데이터 간의 관계(data relationship)
  • 데이터의 의미(data semantics)
  • 데이터 제약조건(data constraints)

 

그런데 스키마에 대한 설명을 듣고 데이터 모델에 대한 설명을 들으면 둘의 차이를 이해하기 힘들 수 있다. 너무 모호하지 않은가? 내가 이해한 바로는(역시 객체지향 개념에 비유해서) 앞서 스키마와 인스턴스의 관계를 클래스와 인스턴스의 관계로 비유했었다. 그런데 클래스 역시 UML과 같은 표현 방식으로 더 상위 레벨에서의 설계를 필요로 하지 않는가? 따라서 데이터 모델은 객체지향 개념에서 UML로 비유할 수 있다. UML이 정해지면 클래스가 정해지듯이 데이터 모델이 정해지면 스키마가 정해진다.

 

데이터 모델의 종류는 다음과 같다.

  • Relational model
    • 데이터를 표로 구성하는 방식을 사용하며, 오늘날 거의 모든 데이터베이스가 이 방식을 채택하여 사용한다.
  • Entity-Relationship model
    • ER model이라고 부르며, 데이터베이스 설계에 주요하게 사용된다.
  • Object-based data models
    • 객체지향(Object-Oriented) 개념과 Object-relational model의 개념을 합친 개념이다.
  • Semi-structured data model: XML

 

SQL (Structured Query Language)


SQL이란, 데이터베이스를 정의하고 관리하기 위해 특정한 목적을 가지고 만들어진 "질의 언어"이다. 데이터베이스에서 "질의"란, "검색"과 동일한 의미를 가진다. 왜냐하면 데이터베이스에게 특정한 조건을 가진 데이터에 대해서 질의할 경우 해당 조건을 만족하는 데이터를 검색해서 유저에게 제시할 것이기 때문이다. SQL은 데이터베이스를 정의하기 위한 DDL과 관리하기 위한 DML로 나눠진다.

 

Data Definition Language (DDL)

스키마를 어떻게 정의할 것인지에 대한 언어이다. DDL 컴파일러는 data dictionary에 저장된 테이블을 생성한다. data dictionary란 메타데이터, 즉 데이터를 설명하는 데이터를 포함하는데, 이는 다음과 같다.

  • 데이터베이스 스키마
  • 일관성 제약조건(Integrity constraints): primary key
  • 소유자, 즉 누가 데이터에 접근할 수 있는지에 대한 정보

Data Manipulation Language (DML)

데이터에 접근하고 데이터를 관리하기 위한 언어로, 질의 언어이다. 앞서 설명했듯 질의라는 단어는 검색과 동일하기 때문에 데이터를 검색하기 위한 언어라고 보아도 무방하다.

 

DML은 선언적 언어(declarative)라고 할 수 있다. 다른 말로는 비 절차적(non-procedural) 언어라고 표현할 수 있다. 이는 어떤 데이터를 검색할지에 대해서 "선언"할 뿐이지 그 데이터를 가져오는 상세한 과정에 대한 지시는 포함하지 않기 때문에 절차와는 상관이 없다는 의미이다.