일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- monopolyqueue
- dataindependency
- dbms
- lightweightproces
- db
- 머신러닝
- humaninterfaceguide
- databasesystems
- SupportVectorMachine
- conceptualdatamodeling
- softmargin
- Datastructure
- multilevelfeedbackqueue
- SVM
- 자료구조
- entity-relationshipmodel
- react native #rn #리액트네이티브 #hook #hooks #훅 #navigation #네비게이션 #usenavigate
- database
- xv6
- threeschemaarchitecture
- 운영체제
- softmarginsvm
- ML
- MachineLearning
- copyonwrite
- human-interface-guide
- mlfq
- 기계학습
- OperatingSystem
- databasemanagementsystem
- Today
- Total
leehyogum의 트러블슈팅
[Database Systems] Data, Database, Database Management System (DBMS) 본문
[Database Systems] Data, Database, Database Management System (DBMS)
leehyogum 2024. 9. 12. 17:08Data
- 컴퓨터 system 내에 저장될 수 있는 의미를 가지는 사실
Database
- 논리적으로 관련되어있는 data들의 집합
Mini-world
전체 측면(Real world)가 아닌 일부 정보(Mini world)를 database에 저장한다.
ex) 한양대 DB에는 김상욱 교수님의 전체 정보가 아닌 운영에 필요한 일부 정보만 저장된다.
Database Management System (DBMS)
- 사용자가 database를 쉽게 만들고 관리하게 해주는 software
Database System
- Database + DBMS ( + application program )
Database System의 구조
DBMS는 크게 두 파트로 나누어진다.
Software to Process Queries / Programs
Query(SQL) engine: 사용자가 storage engine을 이해하고 프로그램을 짜는 것은 어려우므로 간단한 interface로 사용자가 DBMS를 다룰 수 있게 하는 명령어를 제공하는 부분
Software to Access Stored Data
Storage engine: metadata, userdata를 관리하는 부분
이 software를 통해 DB를 관리한다.
DB는 secondary storage (hard disk)에 저장된다.
Database System에 저장되는 DB도 크게 두 파트로 나누어 진다.
(꼭 물리적으로 여러 disk에 분리되어 저장되는 것은 아니고, 단순히 구분되어 저장된다.)
User data: 사용자가 관리를 필요로 하는 데이터
Meta data: 사용자 DB를 관리하기 위해 DBMS가 필요로 하는 데이터
ex) user data 개수, 각각의 길이, attribution 개수 등
Meta data가 저장되는 공간을 system catalog라고 한다.
DBMS는 사용자 data를 관리하기 위한 software이고, 사용자 data를 관리하기 위한 metadata도 함께 관리한다.
Database System = DBMS + DB + application programs
application에서 다뤄야 하는 데이터들은 매우 많다. application program에서 그 data들을 효과적으로 저장, 검색하는 것을 어렵다.
→ DBMS를 이용해서 한다. 따라서 전체 프로그램 내에는 자신 고유의 code와 DBMS를 부르는 code가 존재한다. 따라서 application program을 Database system에 속해있다고 하는 경우도 있다.
Database의 특징
1. Self-describing nature
- Database는 user data 뿐만 아니라 metadata 형태로 자기 자신의 구조적인 특징을 나타내는 정보를 저장한다.
- metadata는 DBMS 내의 System Catalog에 저장된다.
2. Insulation between program and data
DB의 self-describing 특징 때문에 나타나는 특징이다.
database의 정보를 프로그램 내의 변수에 저장하는게 아니라 database 내에 metadata 형태로 가지고 있다.
→ user data structure가 바뀌어도 바뀐게 프로그램이 아닌 metadata에 반영된다.
→ metadata만 바뀌고 프로그램은 바뀌지 않는다.
ex) 사용자의 주소 field 최대 길이를 30에서 50으로 바꾸어도 그 변경사항은 program이 아닌 metadata에만 반영된다. 만약 코드 내에 최대 길이가 나타나있다면 코드를 고쳐야 한다.
program과 data의 단절이 일어나기 때문에 application의 관리가 더 쉬워진다.
3. Data abstraction
사용자 data가 실제로 어떻게 저장되어있는지 detail은 숨긴다.
ex) data가 어디에 저장되고, 몇 byte인지 등의 정보는 숨긴다.
사용자가 어떤 데이터를 가지고 있는지 Data model의 형태로 conceptual하게 보여주어 database를 쉽게 관리하게 해준다.
4. Support multiple view of the data
- View: 실제로 저장되어있는 database로부터 끄집어내온 virtual한 data
- 같은 database여도 사용자별로 바라보는 관점이 다르므로 사용자들의 관점에 따라 같은 database의 서로 다른 view를 제공하여 사용자에게 편의성을 제공한다.
disk에 이런 database들이 저장되어 있을 때, view를 통해 아래 사진처럼 사용자가 원하는 형태로 보여줄 수 있다.
COURSE table과 PREREQUISITE table의 경우 실제 disk 내에선 함께 존재하지 않지만 사용자가 원한다면 COURSE_PREREQUISITES table같은 가상의 view를 제공하여 함께 볼 수 있게 해준다.
5. Sharing of data
- database는 disk에 하나만 존재한다.
- 여러 사용자가 하나의 database를 공유하고 동시에 접근할 수 있다.
- 여러 사용자가 동시에 접근하면 동시성 문제가 발생할 수 있다. 따라서 DBMS는 동시성 제어기능을 제공한다.
DBMS의 특징
1. Controlling redundancy
- Redundancy: 같은 데이터가 여러 location에 저장되는 것
- 공간이 낭비되고, 여러 위치에 존재하는 같은 데이터들이 서로 다른 값을 가질 수 있어 일관성을 해친다는 문제점이 있다.
- DBMS는 redundancy를 제어하여 위와같은 문제를 해결한다.
2. Restricting unauthorized access
- DBMS 내에 존재하는 security and authorization sub-component들을 이용해 권한에 의해 관리한다.
3. Persistent storage for program objects
- DB는 disk에 저장된다. DBMS는 DB를 사용하는 응용 소프트웨어가 종료되어도 그 프로그램에서 관리하는 data object들은 휘발되지 않고 영구적으로 저장되도록 한다.
4. Multiple user interfaces
DB를 접근하는 여러 방식을 제공한다.
ex) Query language, Programming interface, GUI 등
5. Representing complex relations among data
- entity간의 관계를 표현하는 다양한 방식을 제공하여 실세계에서 나타나는 관계의 특징을 관리한다.
6. Enforcing integrity constraints
DB에는 결함이 없어야 한다. 따라서 DB가 integrity constraint를 만족해야 결함이 없다고 정의한다.
DBMS는 integrity contraint를 정의할 수 있는 기능과 DB가 integrity constraint를 만족하는지를 점검하는 기능을 제공한다.
ex) 정년이 65세인 회사 DB ⇒ DBMS에 age ≤ 65인 entity만 존재해야 한다고 정의하고 DBMS가 age > 65인 entity가 있는지 점검한다.
7. Backup and recovery
Backup: DBMS가 다루는 DB의 복사본을 일반적인 프로세스 중간중간에 생성한다.
→ malfunction이 일어난 경우에도 원래 상태로 돌아갈 수 있도록 한다.
Recovery: malfunction이 일어났을 때 backup되어있는 최신의 상태로 회복하고 backup 이후의 업데이트도 반영한다.
DBMS 사용의 이점
DBMS를 사용하지 않으면 fopen 등의 함수로 file에 데이터를 직접 써야한다.
이러한 경우와 비교했을 때 DBMS 사용의 이점은 다음과 같다.
- data management를 위한 programming이 필요 없으므로 개발 시간이 단축된다.
- 모든 유저가 database를 공유하므로 한 유저가 database에 업데이트를 하면 그 DB를 사용하는 모든 유저에게 보여 최신의 정보를 이용할 수 있다.
DBMS 사용의 단점
- DBMS는 매우 무거우므로 좋은 하드웨어가 필요하고, DBMS software 구매를 위한 비용이 들 뿐 아니라 사용을 위한 교육이 필요하다. 따라서 초기 비용이 높다.
- security, concurrency control, integrity constraints 등의 기능을 제공해 computational cost가 DBMS를 사용하지 않았을 때에 비해 상대적으로 높다.
따라서 다음과 같은 경우에는 DBMS를 사용하지 않는 것이 이득일 수 있다.
- 단순해서 변하지 않는 program
- data 구조가 변하지 않으면 굳이 DBMS의 self describing nature를 이용하는 metadata가 없어도 프로그램에 변화가 일어나지 않는다.
- 매우 엄격한 실시간 requirement가 있는 프로그램
- DB에 여러 유저의 접근이 없거나 여러 유저가 접근해도 업데이트가 없는 프로그램