본문 바로가기
데이터베이스(DB)

[DB] 1장. 데이터 베이스

by whiteTommy 2024. 3. 29.

DB(DataBase)

: 서로 연관 있는 데이터의 모임. 이는 컴퓨터에 저장되어 있으며 용량이 방대하기 때문에 main memory에는 저장이 불가능하여 하드 디스크(또는 플래시 메모리)에 저장되어 있음. 이러한 데이터베이스를 관리하는 소프트웨어를 데이터베이스 관리 시스템(DBMS, database management system)이라고 한다.

 

  • DBMS : 사용자에게 데이터 관리에 필요한 기능을 제공한다. 이는 데이터를 define 하고 construct 하고 change 하고 delete 하고 approach 하고 manipulate 하는 기본적인 연산 기능을 제공한다. 또한, data abstraction, data independence, data security 등 사용자에게 데이터베이스 관리에 도움을 주는 다양한 기능을 제공한다.
  • DBS : DB와 DBMS를 함께 통칭하는 용어이다.

이들은 상호 대체적(interchangeable)으로 사용된다.

 

DBMS 이점

  • Data abstraction 
  • Easy accessing data : 데이터 접근을 위한 언어를 제공하고 편리한 사용자 인터페이스를 제공한다. 하지만, 화일(file) 시스템을 이용하여 데이터를 관리하는 경우에는 사용자가 직접 데이터 접근을 위한 각종 프로그램을 작성해야 한다.
  • Controlled data redundancy and inconsistency : 화일 시스템을 사용하게 되면, 데이터 중복이 발생하기 쉽고 이로 인해 데이터 간의 값이 서로 일치하지 않는 현상이 발생하기 쉽다.
  • Integrity constraint(IC) enforcement : 데이터가 만족하여야 하는 제약 조건은 화일 시스템 환경에서는 화일 접근 프로그램에 산재되며, 이 경우 데이터 제약 조건 관리가 용이하지 않다. 예를 들어, 학생의 학점 데이터는 0.0과 4.5 사이의 실수 값이어야 하며 다른 값이 들어와서는 안된다는 것이 IC를 의미한다.
  • Atomicity of updates : 데이터 갱신이 원자적으로 이루어져야 하며, 데이터 갱신 시에 갱신 연산이 부분적으로 데이터베이스에 반영되지 않음을 의미한다. 이가 반영되면 데이터베이스 상태가 불일치되거나 데이터베이스 제약 조건이 만족하지 않게 될 가능성이 있다.
  • Concurrent access by multiple users : 다수의 사용자가 동시에 동일 데이터베이스를 접근할 때, 이를 제어하는 기능을 제공한다.
  • Data security : 악의적인 데이터 접근으로부터 데이터를 보호하는 기능을 제공한다.
  • Data backup and recovery : 다양한 시스템 장애 발생에 대비하여 데이터 백업 및 회복 기능을 제공하여 데이터 손실을 방지한다.

 

화일 시스템(file systems)

: 운영 체제의 기능 중의 하나이다. 사용자에게 화일을 생성하고 제거하고, 열고 닫으며, 또한 그 내용을 읽고 쓸 수 있는 기능을 제공한다. 이를 이용하여 데이터베이스 관리를 할 수 있지만 이것 만으로는 효율적인 관리가 불가능하다.

 

 

인스턴스 및 스키마(Instance and Schemas)

데이터베이스의 스키마는 데이터가 저장되는 공간에 대한 논리적 또는 물리적인 구조. 프로그래밍에서 변수의 타입(type)에 대응되는 유사한 개념이다. 여기에서 실제 값을 인스턴스라고 한다. 이는 프로그래밍에서 변수의 값과 대응되는 유사한 개념이다.

 

추상화

문제 해결에 중요하지 않은 사항을 제거하여 사람들이 문제 핵심 속성에만 집중하도록 하는 것. 레벨에 따라 사용자에게 보이는 상세한 정도가 달라진다. 

  • Physical level : 레코드(recode)가 어떻게 물리적으로 저장되어 있는 지를 묘사하는 것. 데이터 필드 길이, 필드 간의 간격길이, 레코드의 전체 길이 등을 포함할 수 있다.
  • Logical level : 저장된 데이터와 데이터들 사이의 관계를 묘사하는 것. 논리적 관점에서의 추상화이다.
type professor = recode
	ID : string;
    name : string;
    department : string;
    salary : integer;
end;

professor는 하나의 레코드이고, professor 레코드는 ID(데이터는 string 타입), name(데이터는 string 타입), department(데이터는 string 타입), salary(데이터는 integer 타입) 등 4가지 구성요소로 이루어져 있음을 기술하는 것이다.

  • View level : 사용자에게 오직 관심 있는 데이터만을 추상화한다.

이처럼, 각 레벨마다 기술하는 추상화 방법은 데이터베이스 시스템마다 또한 데이터 모델마다 상이하다. 하지만, 한 장소에 저장되어 있는 데이터베이스를 추상화하고 있다.

 

 

3단계 스키마 구조

: 데이터베이스에 대한 3단계의 추상화가 성립되면, 추상화에 따른 데이터베이스 스키마가 생성되고, 그 결과 3단계 구조가 만들어진다. 각 레벨에 따른 스키마는 View Schema, Logical Schema, Physical Schema로 명명된다. 각 스키마는 스키마 간의 변환을 이용하여 레벨에 따른 데이터 뷰를 제공하게 된다.

 

Data Independence

  • Physical data independence : 논리적인 스키마 변화 없이 물리적으로 스키마를 변화할 수 있는 기능 
  • Logical data independence : 뷰 스키마 변화 없이 논리적 스미카를 변화할 수 있는 기능

데이터베이스 내부 구조 등의 변화로 물리적 스키마 변경이 발생하여도 물리적 데이터 독립성에 의하여 논리적 스키마에 변화가 없으며, 논리적 스키마의 변경이 발생하여도 논리적 데이터 독립성에 의하여 뷰 스키마의 변화가 없게 된다. 그러므로 이 경우 기존에 개발된 프로그램이 수정 없이 계속 사용될 수 있음을 의미한다.

 

Data Model

:  데이터, 데이터 관계성, 데이터 의미, 데이터 제약 조건 등을 추상적으로 기술하는 명세 또는 개념이다.

  • Relational data model : 관계형 데이터 모델은 일반적으로 인지하고 있는 테이블(relation) 형식이다.

  • Object-relational data model : 관계형 데이터 모델을 기반으로 객체지향 요소를 부분적으로 도입한 것.
  • Object-oriented data model
  • Entity-Relationship data model(for database design)
  • XML (Extensible Markup Lauguage) : 문서 교환을 위한 표준 기술로 사용되는 웹 관련 기술
  • Network data model, Hierarchical data model : 현대 사회에서 더 이상 사용되지 않음(Legacy system)

 

Database Design

: 데이터베이스 구조를 설계하는 작업으로, 사용자 요구사항을 분석하여 요구사항을 충족하는 좋은 스키마를 생성하는 것.

  • Logical Design
  • Physical Design

DB Design 결과인 Schema는 처음에 생성한 이후에는 변경이 용이하지 않으므로 중요한 과정이다.

 

ER 데이터 모델(Entity-Relationship data model)이 데이터 베이스 설계에 가장 널리 사용되는 방식이다.

 

ER 데이터 모델은 두 가지 요소(개체와 관계성)로 데이터베이스를 표현한다. 개체는 서로 구분이 되는 것(thing, object)이며, 관계성(relationship)은 개체 간의 관계를 표현한다.

 예를 들면, Student라는 개체 존재하고, sID(학번), name(이름), totalCredit(총수강학점수) 속성(attribute)을 갖는다.

이는 Course라는 개체와 "학생이 과목을 수강한다"라는 의미의 Takes 관계성(relationship)이 존재한다.

 

 

한편, DBMS는 User들이 Database에 대하여 원하는 바를 표현하기 위해서 데이터베이스 언어를 제공한다. 여기에 가장 많이 사용되는 언어는 SQL lauguage이다.

 

아래는 교수번호가 22222인 교수이름을 검색하는 SQL 언어 예시이다.

Select name
from professor
where pID = '22222';

 

아래는 교수번호가 22222인 교수가 가르치는 강의 이름을 검색하는 SQL 언어 예시이다.

Select title
from teaches, course
where teaches.cID = course.cID and pID = '22222';

 

 

DBMS 기능

  • Query processing : 질의어 처리, 권한 부여 및 철회, 인증 등의 기능을 담당한다.
  • Storage manager : 데이터 저장, 검색뿐만 아니라 화일 구조, 색인, 트랜잭션 관리 등의 업무를 담당한다. 이는 디스크에 존재하는 데이터베이스와 데이터 사전을 관리한다.

 

Data Dictionary

: DBMS에서 메타 데이터(데이터에 대한 데이터)를 저장하는 장소이며 데이터베이스 스키마에 대한 데이터, 제약 조건에 대한 데이터, 접근 권한에 대한 데이터 등 다양한 데이터가 관리되고 있다.

 

Transaction Management

: 데이터베이스 applicaiton에서 하나의 논리적인 기능을 수행하는 데이터베이스 기본 연산의 순서

  • Concurrency control manager : 데이터 베이스의 일치를 확실하게 하기 위해 동시성을 제어한다.
  • Recovery manager : fail이 발생해도 데이터베이스가 일치한 상태로 남겨두도록 하는 복구 기능이다.

'데이터베이스(DB)' 카테고리의 다른 글

[DB] 4장. 오라클 실습  (1) 2024.04.07