3-2/데이터베이스시스템

[DB01] 데이터베이스의 이해, 용어, 장점

dotudy 2024. 9. 12. 23:31

해당 게시물은 한양대학교 컴퓨터소프트웨어학부 김상욱 교수님 데이터베이스시스템 온라인 강의를 듣고 정리한 자료입니다.

 

교수님 온라인 수업을 듣자... 잘 가르치신다고 유명하다 기대중...!

 

● 해당 강의의 목표

1. 데이터베이스의 기본적인 개념을 잘 이해한다.

2. 관련된 용어들을 잘 이해한다. 

· Database / DBMS / Database system

· Characteristics of a database

· Users of database systems

· DBMS features

 

 

◆ Overview

Data란?

컴퓨터 시스템 내에 의미를 가지고 저장될 수 있는 사실이다.

ex) names, addresses, phone numbers...

 

Database란?

논리적으로 관련된 data끼리의 집합

ex) phone book for a company

 

Mini-world란?

실제 world의 일부 측면, database를 build하는 대상

ex) 한양대학교 database에는 김상욱 교수님이 있지만 김상욱 교수님이 안경을 썼나 안 썼나에 대한 정보는 저장되지 않는다.

 

Database Management System (DBMS)란?

프로그램들의 집합(software), 사용자가 매우 쉽게 database를 만들고 관리할 수 있게끔 하는 소프트웨어

 

Database System란?

DBMS + Database

◆ Structure of Database System

원통 - HD표시 (secondary disk에 database 저장)

DBMS - 사용자 database 관리

Meta-Data - 사용자 data 개수, 각각의 길이, Attribute 개수 등 사용자 data를 관리하기 위해 DBMS가 필요한 별도의 data 저장, Meta-Data를 저장하는 곳을 Syatem Catalog라고도 부름.

 

DBMS - Storage Engine: 두 HD 관리

            - Query(SQL) Engine: 사용자가 Storage Engine을 이해하고 사용하기 어렵기 때문에 간단한 인터페이스를 통해 사용자가 DBMS를 사용하도록 명령어 제공. (교수님은 뚝딱! 이라고 부름)

HY-IN = 포탈 내용에 대한 고유의 코드 + DBMS를 부르는 코드 

◆ An Example of a Database System

University database

- Information concerning students, courses, professors and grades... 

- Relationships among them

 

Data records

- Student (name, studentnumber, class, major)

- Course (coursenumber, credithours, department)

- Section (sectionIdentifier, coursenumber, semester, year, instructor)

- Grade_Report (studentnumber, sectionIdentifier, grade)

- Prerequisite (coursenumber, prerequisitenumber)

◆ Characteristics of the Database

자기 자신을 기술하는 특성을 갖는다.

- Meta-data: database의 구조적인 특성에 대한 정보, 사용자 data를 관리하기 위해서 필요한 data

- System Catalog: meta-data를 저장하는 공간

- Database system은 사용자 data뿐 아니라 meta-data까지 관리하고 있다. 

 

프로그램 코드 내에서 variable로 관리할 수 있지만 database system은 database내에서 meta-data형태로 자신의 구조를 관리한다.

 

프로그램과 data는 나눠져 있다. data의 변경에 프로그램이 큰 영향을 받지 않는다.

- self-describing하는 특성 때문에 사용자의 data 구조가 바뀌더라도 meta-data에 반영되므로 프로그램 자체는 바뀌지 않아도 된다. 

ex) 사용자의 주소 field 길이가 30이었는데 50으로 늘리고 싶으면 meta-data를 변경하면 된다. 만약 이가 코드 내에 반영되어 있었다면 코드를 고쳐야한다. DBMS를 통해 '30->50 바꿔줘' 하면 되는데 코드를 바꾸려면 그 부분을 찾아서 직접 바꿔야되니 심각한 문제가 된다. 

- 프로그램과 data 간의 독립이 형성되어 프로그램 관리가 쉬워진다. 

 

데이터 추상화

- data가 실제로 어떻게 저장되어 있는지 감춰준다. 

- data model을 통해서 conceptual view만 제공해서 사용자가 database를 쉽게 관리할 수 있도록 돕는다.

 

data의 다양한 view를 제공한다.

- View: 실제로 저장되어 있는 data 형태를 가상 data로 바꿔서 보여준다. 같은 database라도 사용자 별로 바라보는 관점이 다르기 때문에 사용자 별로 자신이 원하는 형태로 볼 수 있게끔 하여 편리성을 높인다.

 

data의 공유

- database는 하나만 존재하는데 여러 사용자가 접근할 수 있다. 

- 일관성의 문제를 막아주는 concurrency control(동시성 제어)도 제공한다.

◆ Example of Multiple Views

새로운 view를 이러한 형태로 제공할 수 있다. 원래 저장되어 있던 것들을 이용해서 가상의 table을 만들어 보여줄 수 있다.

◆ Users of Database Systems

한양대학교 모든 운영에 관련된 data를 확인할 수 있음

 

System analyst

- 최종 사용자(end user)들의 요구(업무의 특성)를 분석한다.

- 인터뷰 등을 통해 운영에 필요한 모든 data들을 파악한다.

ex) 교수, 학생, 교직원 각각 본인이 관여하는 업무가 있고 이 시스템을 사용할 사람들

 

Database designer

- system analyst가 가져온 저장될 data들의 후보를 토대로 실제로 저장되어 할 data를 판단한다.

- data들의 집합을 어떻게 구조화할 것인지 판단한다. (성능과 논리를 고려)

 

Application programmer

- 사용자에게 어떻게 인터페이스를 만들고 기능을 제공할지 프로그램들을 구현한다.

- DBMS에 대한 구조도 알고 있어야한다.

 

Database administrator (DBA)

- database system이 잘 운영되고 있는지 모니터링한다.

ex) 우리 학교 내에 소속되어 있어야함.

 

End users

- 프로그램을 통해서 자신의 일에서 database를 접근할 일이 있는 사람들

◆ Workers behind the Scene

DBMS system designer and implementer 

- DBMS 자체를 디자인하고 개발하여 하나의 software를 만든다.

- 높은 연봉...! system에 대해 굉장히 잘 아는 사람들..

 

Tool developer

- DBMS 위에 올라가는 소프트웨어를 만든다. database를 좀 더 효과적으로 접근할 수 있도록 만드는 툴

 

Operators and maintenance personnel

- 전체 시스템을 종합적으로 관찰하는 사람

ex) 정보 통신처

◆ DBMS Features

Controlling Redundancy

- Redundancy: 같은 data가 두 개 이상의 위치에 저장되는 것

- 문제: 저장공간(disk, SSD)을 낭비하고, data의 일관성이 없어진다.

ex) 친구들의 전화번호를 노트에 써서 가지고 다닐 때 학교에 두고 다닐 때가 있으니 copy를 해서 학교와 집에 각각 두고 다녔다. 그래서 집에서 전화번호를 update하면 학교에 있는 노트는 예전 전화번호를 가지고 있게 된다. 

- DBMS가 처리해준다.

 

권한이 없는 접근은 제한한다.

- 권한에 의해서 관리되는 소프트웨어이다.

ex) 친구가 내 성적을 보지 못하게 한다.

 

Persistent storage for program objects

- data를 디스크에 저장해서 프로그램의 종료와 관련 없이 data가 유지되도록 한다. 

 

Multiple user interfaces

- database를 접근하는 방법이 굉장히 다르다.

- SQL, programming interface, GUI 등 사용자의 knowledge 수준에 따라서 database에 접근하는 다양한 방법을 제공한다.

 

data간의 복잡한 관계를 표현할 수 있는 기능을 제공한다.

- entity간의 관계를 표현하는 다양한 방식을 제공해서 실제로 나타나는 관계의 특징들을 잘 관리한다.

 

enforcing integrity constraints

- Integrity: 무결성. 우리가 저장하는 database는 결함이 없어야한다. data가 특정 조건을 만족해야지 결함이 없는 것이다.

- DBMS는 그 조건을 정의할 수 있다. 항상 integrity constraints가 만족되도록 점검한다.

ex) 직원의 정년이 65세라면 직원의 나이가 65세 넘어가는 사람이 없어야한다. 조건을 age<=65라고 정의하고 직접 DBMS가 그 integrity contraint를 계속 점검한다.

 

Backup and recovery

- Backup: 시스템이 가끔 문제가 생길 때 하드디스크가 깨질 때 등 문제가 생길 때를 대비하여 database의 copy를 계속 새롭게 남겨두어야한다.  

- Recovery: 시스템의 malfuction이 일어났을 때 database를 원래의 상태로 돌려준다. backup 이후에 저장된 데이터들까지 복구할 수 있게끔 메커니즘을 제공한다.

- 매우 어렵고 복잡도가 매우 크다. -> 높은 연봉~

◆ Advantages of Using the DBMS

fopen, fread.... 등으로 data 관리할 때에 비해 DBMS의 장점

- 프로그램 개발 시간을 줄여준다.

- up-to-date 정보를 update해준다.

- Economy of scale: 사용자가 많아질수록 DBMS에 대한 부담이 줄어든다.

  When Not to Use a DBMS

Overhead of DBMS

- 초기 비용이 크다.

- 복잡한 SW라 시간이 많이 걸린다. 간단한 프로그램과 같은 경우 굳이 필요없는 기능을 쓰고 있을 수도 있다.

 

More desirable to use regular files

- data의 구조가 매우 단순하고 앞으로 바뀔 가능성이 없을 경우

- Very strict real-time requirements 마감시간이 정해져 있을 때 (적국에서 미사일 공격을 했을 때 10초내에 미사일이 떨어진다면 10초가 real-time requirement이다.)DBMS가 overhead가 크기 때문에 고려해야한다.

- 여러사람이 database에 접근할 필요가 없는 경우, update가 굳이 필요없는 경우 

ex) 검색 엔진 - 많은 사람들이 사용하지만 update는 많이 일어나지 않는다.