타자치는 문돌이 2024. 5. 29. 02:07

What is Database System?

데이터베이스

기업의 고객 정보나, 학교의 학생 정보처럼, 특정 기관은 자신이 필요한 정보를 저장해둔다. 이러한 정보를 데이터라고 한다.
데이터베이스는 데이터의 모임이다. 정보는 텍스트, 숫자, 이미지 등 다양한 형식이며, 데이터베이스를 통해 이를 체계적으로 저장하고, 읽기, 쓰기, 수정 등이 가능하다.

| student_id | student_name   | student_age | student_dept      |
|------------|----------------|-------------|-------------------|
|    1       |   John Doe     |     20      |  Computer Science |
|    2       |   Jane Smith   |     22      |  Mathematics      |
|    3       |   Sarah Johnson|     21      |  Physics          |
|    4       |   Michael Brown|     23      |  Biology          |
|    5       |   Emily Wilson |     20      |  Chemistry        |

DBMS (Database Management System)

DBMS는 데이터베이스를 관리하는 프로그램으로 편리하고 효율적으로 데이터를 정의, 조작, 제어, 관리, 복구하는 역할을 한다.
Oracle, MySQL, MongoDB와 같은 제품을 DBMS라고 한다.


데이터베이스 시스템

데이터베이스 시스템은 서로 관계가 많고, 중요한(가치 있는) 데이터의 집합을 관리하기 위한 도구이다.

  • Data
  • Hardware
  • Software
  • Users
    로 구성되어 있다.

Data

데이터베이스가 저장하는 데이터이다.

Hardware

데이터는 물리적인 저장장치에 저장되어 있다. 하드 디스크나, SSD와 같은 보조 저장장치에 저장되고, CPU와 RAM을 사용해 DBMS를 구동한다.

Software

DBMS. 사용자가 데이터베이스 시스템의 Hardware에 쉽고 편하게 접근할 수 있도록 돕는다.

Users

사용자에는

  • 일반 사용자 : 개발자가 개발한 프로그램을 사용하는 과정에서 데이터베이스의 정보를 읽거나 쓰는 사용자이다.
  • 프로그래머 : 데이터베이스와 프로그램을 연결해 프로그램을 구현하는 사용자
  • DBA (Database Administrator) : 데이터베이스의 관리자로 DB를 설계, 구현, 유지보수 하는 일을 담당한다.

Purpose of Database Systems

데이터베이스 이전 세대에는 정보를 파일 시스템을 이용해 저장했다. 시스템은 정보를 다양한 파일로 저장하고, 각 파일은 파일에 맞는 프로그램을 사용해 읽기와 쓰기가 가능했다.
그러나 파일 시스템은

  • Data Redundancy and Inconsistency
    • 파일 구조가 다양하고, 읽고 쓸 때 특정 프로그램이 필요하다.
    • A와 B가 모두 가지고 있어야 하는 중복 데이터 D를 한쪽에서 수정한다면, 같아야 할 D의 내용이 다를 수 있다.
  • Difficulty in Accessing Data
    • 파일 시스템에서 파일의 특정 정보를 사용한 데이터가 필요하다면 이를 추출하기 위한 프로그램을 새로 짜야 한다.
  • Data Isolation
    • 파일이 다양하고, 정보가 여러 파일에 나뉘어 저장된 경우도 많기 때문에 원하는 정보를 위한 프로그램을 짜기가 어렵다.
  • Integrity Problems
    • "계좌의 잔고는 0보다 커야 한다"와 같은 데이터의 제한 조건은 데이터를 작성하는 프로그램에 내재되어야한다. 따라서 조건을 추가하기 어렵다.
  • Atomic Problems
    • 컴퓨터 시스템은 에러가 나는 경우가 있다. 데이터를 조작하다 에러가 나는 경우, 데이터는 조작 전 상태이거나, 조작된 상태이어야지, 연산 중인 상태면 안 된다. (계좌이체를 하는데 계좌 A에는 돈이 빠져나갔으나, 계좌 B에 돈이 안 들어가는 일이 있으면 안 된다..) 그러나 파일 시스템은 이러한 경우에 취약하다.
  • Concurrent-Access Anomalies
    • 시스템의 성능을 위해 많은 시스템은 데이터 동시 접근을 허용한다. 그러나 동시에 같은 파일에 접속할 경우 문제가 있을 수 있다.
    1. 두 프로세스가 동시에 데이터를 수정하면, 한 프로세스가 수정을 완료하기 전 다른 프로세스가 데이터를 수정해 첫 수정이 사라진다.
    2. 한 프로세스가 데이터를 읽을 때 다른 프로세스가 수정한다면, 읽은 데이터와 실제 데이터는 불일치한다.
      파일 시스템은 이러한 문제를 막기 위한 장치가 부족하다.
  • Security Problem
    • 파일에 대한 접근 권한을 특정 사람에게 파일에 대해서만 제공하기 어렵다.

와 같은 문제가 있었다. 이 문제에 대한 해결책으로 데이터베이스 시스템이 개발되었다.
따라서 데이터베이스는 다음과 같은 특징이 있다.

  • 독립성 (Independency) : 응용 프로그램과 독립적으로 데이터를 관리한다.
  • 무결성 (Integrity) : 데이터베이스 시스템은 데이터의 정확성과 일관성을 보장한다.
  • 보안성 (Security) : 계정과 권한을 통해 데이터를 보호한다.
  • 일관성 (Consistency) : 제약 조건을 통해 데이터를 일관되게 유지한다.
  • 중복 최소화 (Minimum Duplication) : 데이터의 중복을 최소화한다.

Some Database Concepts

Data Model

데이터와 데이터의 관계, 의미, 제한 등을 어떤 형태로 저장할 것인지, 그리고 어떻게 접근할 것인지에 대한 모형을 의미한다.
예를 들어 학생의 정보를

| student_id | student_name   | student_age | student_dept      |
|------------|----------------|-------------|-------------------|
|    1       |   John Doe     |     20      |  Computer Science |
|    2       |   Jane Smith   |     22      |  Mathematics      |
|    3       |   Sarah Johnson|     21      |  Physics          |
|    4       |   Michael Brown|     23      |  Biology          |
|    5       |   Emily Wilson |     20      |  Chemistry        |

이렇게 표 형태로 저장할 수도 있고,

[
 {
 "student_id": 1,
 "student_name": "John Doe",
 "student_age": 20,
 "student_dept": "Computer Science"
 },
 {
 "student_id": 2,
 "student_name": "Jane Smith",
 "student_age": 22,
 "student_dept": "Mathematics"
 },
    ...
]

이렇게 Semi-Structure로도 저장할 수도 있다.

전자처럼 데이터를 관계의 표로 저장하는 모델을 Relational Model이라고 한다.
이 외에도 Entity-Relationship Model, Object-Base Model, Semi-Structure Model 등 다양한 모델이 있지만, 포스트에선 데이터베이스에서 자주 사용하는 Entity-Relationship Model(데이터를 Entity의 Relationship으로 표현)에 대해 주로 다룰 것이다.


View of Data

데이터베이스에는 다양한 정보가 들어있다. 그러나 항상 모든 데이터가 필요한 것은 아니다.
데이터베이스는 하나 이상의 테이블이나 다른 View에서 정보를 추출해 가상의 테이블을 만들어 보여주는데, 이를 View라고 한다.


Instance and Schema

Schema는 프로그래밍 언어의 데이터 타입, Instance는 변수와 비슷하다.

  • Logical Schema : 데이터베이스의 전체적인 논리적 구조 (학생의 정보와 학부의 정보와 둘의 관계)
  • Physical Schema : 데이터베이스의 물리적 구조
  • Instance : 특정 시점에 데이터베이스에 들어있는 내용

Database Design

데이터베이스의 구조를 정하는 과정이다.

  • Logical Design : 데이터베이스의 Schema를 정하는 과정 - 어떤 Relation Schema가 좋은 Schema인가
  • Physical Design : 데이터베이스의 Physical Layout을 정하는 과정

Languages

데이터베이스를 다루기 위한 언어는 아래 두 가지 특성을 가진다.

Data Definition Language (DDL)

데이터베이스의 Schema를 정의할 수 있다.
DDL 컴파일러는 Data Dictionary에 Table Template을 만들어 저장하고, Data Dictionary는 메타데이터를 보관한다. (Schema, 제약, Primary Key, 권한)

create table instructor (
    ID char(5),
    name varchar(20),
    dept_name varchar(20),
    salary numeric(8,2))

Data Manipulation Language (DML)

데이터베이스에 접근하고 데이터를 수정할 수 있다.
DML에는 두 종류가 있는데

  • Procedural DML : 어떤 데이터가 필요하고 어떻게 접근해야 하는지 알려줘야 한다.
  • Declarative DML : 접근 방식은 명시하지 않고, 어떤 데이터가 필요한지만 알면 된다.

데이터베이스에 특정한 정보를 요청하는 것을 Query라고 한다.

자주 사용하는 언어로는 SQL이 있으며, 3단원에서 다룰 것이다.


Database Application Architecture

데이터베이스 Application은 주로 2 티어나 3 티어 Architecture를 사용한다.

  • 2 티어 : 클라이언트 쪽의 애플리케이션이 서버의 데이터베이스에 직접 접근한다.
  • 3 티어 : 클라이언트는 Front End와 같이 작동하고 데이터베이스에 직접 접근하지는 않는다.


Database Administrator

Database Administrator (DBA)는 데이터베이스 시스템의 관리자이다.
주로 하는 일로는

  • Schema 정의
  • Storage Structure와 접근 방법 정의
  • Schema 수정
  • 접근 권한 설정
  • 백업
  • 루틴 유지보수
  • 여유 공간 관리
  • 모니터링

등이 있다.

 

 

DB - 0. Index