[DB01] 데이터베이스의 이해, 용어, 장점
해당 게시물은 한양대학교 컴퓨터소프트웨어학부 김상욱 교수님 데이터베이스시스템 온라인 강의를 듣고 정리한 자료입니다.
교수님 온라인 수업을 듣자... 잘 가르치신다고 유명하다 기대중...!
● 해당 강의의 목표
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는 많이 일어나지 않는다.