- 데이터베이스 시스템의 정의
- 데이터베이스 시스템의 목적
- 데이터의 View
- 관계형 데이터베이스
- 데이터베이스 언어
- 데이터베이스 설계
- 데이터베이스 시스템의 역사
by Prof. Chang Hwan Lee
1. 데이터베이스 시스템의 정의
- Data Base (DB): 계산된 데이터 집합
- Data Base Management System (DBMS): 데이터에 접근하는 소프트웨어 (오라클, ....)
- Data Base System (DBS): 특정 기업의 정보를 포함 (DB + DBMS + 하드웨어 + 네트워크 + …)
- 데이터가 있는 곳에는 DB Application이 있다.
ex) 은행 - 고객정보, 계좌, 신용카드거래, …)
- 데이터(Data)를 가공하여 정보(Information)이 된다.
- Data는 정보의 벽돌 / Information은 데이터의 의미
ex) Data: 투어 중인 밴드의 티켓 판매 / Information: 지역, 장소별 판매 레포트 -> 어느 장소가 적절한지
2. 데이터베이스 시스템의 목적
- File System의 단점 (-> DB의 장점)
- 데이터의 의존성
- 매번 바뀌는 데이터로 프로그램 수정이 이루어진다
- 데이터의 중복과 불일치
- 각 유저는 다른 데이터 포맷을 쓰고, 여러 File 포맷에서 다른 Files에 중복이 일어난다
- 데이터 접근에 어려움
- 한 쿼리문은 한 프로그램이 된다 (SQL vs C)
- 무결성 문제
- 제약 조건을 추가하거나 수정하기 어렵다
ex) account balance > 0
- 업데이트의 Atomicity
- 인출-입금 등과 같은 명령에서 중간의 Failures가 없도록 atomic하게 All or None을 구현해야 한다
- 다중 사용자의 동시 접근
ex) 두 사용자가 동시에 reading, updating
- 보안문제
- 그럼 DB의 단점은?
- DBMS에 대한 의존성
- 비쌈
- 느림
3. 데이터의 View
- DB Architecture의 3 Level (Levels of Abstraction)
- Physical Level: 어떻게 저장되어 있는지 -> HW, OS
- Logical Level: DB의 데이터와, 데이터 사이의 Relationships
- 사람이 이해하기 편한 데이터 구조 (table, tree, graph, class, …)
- View Level: one user/application의 one view
- Logical Level의 부분
- 데이터 유형의 세부 정보나 보안 정보를 숨긴다
- Schema와 Instance
- Physical Data의 의존성
- Physical schema(level)를 수정해도, Logical schema(level)과 Application은 변하지 않는다
4. 관계형 데이터베이스
- Object-oriented (class) model
- 복잡한 데이터를 표현할 수 있지만, DB 언어로 비효율적이다
- Hierarchical model (Tree)
- 각 부모가 자식을 가지는 구조이다
- 장점
- 간단하다
- 보안성 / 무결성
- 데이터 독립성
- 효율성
- 단점
- 쿼리 언어에 효율적이지 못하다
- Network model (Graph)
- 각 record가 여러 부모를 가지는 구조이다
- 장점
- 데이터의 유동성 있는 접근
- 보안성 / 무결성
- 데이터 독립성
- 효율성
- 단점
- 구조적 독립성에 결함이 있다
- NoSQL/Hadoop/MapReduce는 한 서버에 저장하기에 데이터가 너무 많아 인터넷 밖에서 처리해야 한다
- DB Design model/tool은 E-R data model
-> Relational Database Model (가장 많이 쓰임)
- 공통의 Entity 특성을 공유하는, 관련 Tables
- 구조적 독립성
- Logical Data Independence는 physical schema를 변경하지 않고 데이터를 변경할 수 있는 DBMS 속성이다.
- 이로 인해, 기존 application program을 다시 작성하지 않고도, 새 E-R을 CRUD 할 수 있다.
- 관리가 수월하다 / 임시 쿼리 기능 SQL / DMS
- HW, SW 오버헤드 / “islands of information”
5. 데이터베이스 언어
1. DDL; Data Definition Language
create table account (
account-number char(10),
balance integer
)
- data의 metadate (schema, 구조와 접근방법, 제약조건, 인증정보, …)
2 DML; Data Manipulation Language
- Procedural: 사용자가 필요한 데이터와 방법을 지정하는 언어 (C, C++, Java, …)
- Declarative; non-procedural: 절차가 아닌 필요한 데이터를 지정하는 언어 (SQL, Prolog, …)
- 쉽고 편리하지만 not optimal 하다
- SQL
select instructor.ID, department.building
from instructor, department
where instructor.dept name = “physics”
- Application은 DB와 (1) SQL에 내장된 확장언어나 (2) API (ODBC/JDBC)로 접근한다
- 또한 SQL 쿼리가 내장된 언어(C, C++, Java, …)로 입출력, 네트워크 통신 등 작업을 하게 된다
- Application programs: 이런 식으로 DB와 상호작용하는 프로그램
6. 데이터베이스 설계
- 우리는 Logical Design을 결정하고, Physical Design은 DBA(Administer)나 DB performance로 고민한다
- The Entity-Relationship Model (가장 많이 쓰임)
ex) Entity: 고객, 계좌 / Relationship: 계좌 A-101은 SNUPI가 개설했다
- E-R software diagram으로 만들면, 자동적으로 DB가 build된다 (logical level)
- Storage manager: OS 데이터(DB, Application program) 와 쿼리 간에 인터페이스 제공
(Transaction Management: DB의 일관성을 보장하기 위해 동시 transaction의 상호작용을 제어)
(Database Users: 시스템과의 사용 방식에 따라 분류)
- Database Administrator: Physical schema 정의, 수정, …
- DB Architecture는 컴퓨터 시스템(Centralized/Client-server/Parallel; multi-processor/Distributed) 에 영향을 받는다
7. 데이터베이스 시스템의 역사
'DB' 카테고리의 다른 글
[DB][데이터베이스] 7-1. DB Design / DB 설계 (0) | 2021.11.29 |
---|---|
[DB][데이터베이스] 5. Advanced SQL / 고급 sql (0) | 2021.11.26 |
[DB][데이터베이스] 4. Intermediate SQL / 중간 단계의 sql (0) | 2021.11.26 |
[DB][데이터베이스] 3. SQL / sql의 기본 문법 (0) | 2021.10.28 |
[DB][데이터베이스] 2. E-R / Entity와 Relationship (0) | 2021.10.08 |