-
데이터베이스 1. Introductiondatabase 2019. 9. 5. 17:07
학교에서 데이터베이스 과목을 들으면서 정리한 내용입니다
데이터베이스 관련 용어
- DB: 데이터의 모음
- DBMS (Database Management System): 데이터베이스를 정의하고 설계하고 관리할뿐만 아니라 많은 기능들을 제공하는 소프트웨어의 모음이다.
- DBS (Database System): DB + DBMS
위 용어들은 문맥에 따라서 혼용해서 사용한다.
DBMS의 장점
파일 시스템과 비교해서 이점이 되는 부분이다.
- Data Abstraction: 복잡하고 다양한 데이터를 단순하게 만들어서 사용자가 효율적으로 작업할 수 있도록 한
- Easy accessing data: 효율적으로 데이터에 접근 (DB 언어를 사용)
- Controlled data redundancy and inconsistency: 데이터의 중복과 불일치를 제어
- Integrity constraint enforcement: 예컨대 학년은 1부터 4의 정수만 오도록 하는 제약을 쉽고 강력하게 지원
- Atomicity of updates: 업데이트하는 과정에 시스템 실패가 발생하면 해결해야함. 송금하는 과정에서 실패하면 이체가 성공적으로 이루어지거나 아예 송금 실패로 처리해야함
- Concurrent access by mulitple users: 한 계좌에서 두 사람이 100달러씩 끝날 때 남은 잔고가 concurrency를 잘 처리해서 정확하게 표시해야함
- Data security
- Data backup and recovery
파일 시스템
방대한 양의 파일을 open, close, read, write, lseek 등을 이용해서 처리할 때 사용자가 일일이 구현하고 유지보수해야함. DBMS를 이용하면 모두 구현이 되어있어 효율적으로 작업할 수 있다
데이터 추상화, 데이터 모델
인스턴스와 스키마
프로그래밍 언어의 타입과 변수에 해당한다
- 스키마
논리적, 물리적 구조를 정의한다. 프로그래밍 언어의 타입에 해당한다. View Schema, Logical Schema, Physical Schema가 있다. 학생 데이터를 저장하고 관리하기 위해서는 학생 스키마를 정의해야한다.
- 인스턴스
특정 시점의 데이터베이스의 내용이다. 프로그래밍 언어의 변수에 해당한다. 학생 스키마에 따른 학생 레코드를 만들 수 있는데 그 전체에 해당하는 것을 인스턴스라고 한다.
데이터 추상화의 레벨
- physical level: 물리적으로 레코드가 어디에 저장되는지
- logical level: 데이터 사이의 관계와 저장되는 데이터에 대해
- view level: 사용자가 관심 있는 부분만 보여줌 (보안과 관련)
추상화, 세 개의 레벨 도표
스키마 구조
physical schema > logical schema > view schema 순으로 복잡하다.
데이터 독립성
스키마 간의 Independence를 지원하지 않는다면 physical schema를 변경하면 다른 스키마도 모두 변경해야함 (바람직하지 않고 비용이 많이 듬)
데이터 모델
데이터 베이스에 저장해야 하는 데이터, 데이터와 데이터 간의 관계 데이터. DB에 저장하기 위해서는 표현을 해야한다. 데이터를 표현하기 위한 도구이다.
-
Relation data model
-
Object-relational data model
-
Object-oriented data model
-
Entity-Relationship data model (for database design)
-
XML (for semi-structured data)
관계 예제
학생이라는 데이터를 표현하기 위해서는 Relation으로 표현한다. (다른 말로하면 table)
각 칼럼은 학생이 가지는 속성을 표현한다.
객체관계형 데이터 모델
객체관계형 데이터 모델은 간단히 설명하면 기존의 관계형 모델에 객체지향 개념을 추가한 것이다. 따라서 표현력이 크다.
XML (Extensible Markup Language)
hyper text와 같은 웹 관련 데이터들이 많이 생겨나면서 데이터가 방대해져 이러한 데이터를 잘 표현할 수 있는 포맷이 필요해짐
WWW 컨소시엄에서 만들었다
데이터베이스 설계
데이터베이스의 전체 구조를 설계하는 것을 말한다. 데이터를 저장하기 위해서 각각의 스키마를 표현할 필요가 있다.
스키마를 정의하는 것은 논리적 스키마와 물리적 스키마가 있다. 설계는 DB 시스템 성능에 매우 중요하다.
데이터베이스 설계 접근
- ER Model (Entity Relationship)
실세계에 존재하는 데이터를 Entity와 관계로 바라보고 네모나 줄이나 다이아몬드 같은 도형으로 표현한다. 최종 결과물로 ER 다이어그램이 산출된다. 여기서 이에 맞는 데이터베이스 스키마를 만든다.
- 정규화 이론 (Normalization Theory)
정규화 이론으로 데이터베이스 설계가 잘되었는지 판단할 수 있다.
ER 다이어그램 예제
데이터베이스 시스템
데이터베이스 언어
- 데이터를 검색하기 위해서는 데이터베이스 언어가 필요하다.
- Query라고 한다. QUEL, SQL 등이 있다.
- SQL이 가장 많이 쓰인다.
SQL 예제
SELECT name from professor where pID = '1234'
- 애플리케이션에서 DB에 접근하는 방법
1. embedded SQL을 사용한다.
2. Application Programming Interface (OOBC/JDBC) 등을 사용한다.
DBMS 컴포넌트
DBMS는 매우 크고 복잡한 소프트웨어다. 다양한 컴포넌트로 세분화할 수 있다. 크게 다음 두가지가 있다.
- Query Processor
- Storage Manager
단순화한 데이터베이스 시스템
데이터 딕셔너리 (data dictionary, data directory)
데이터를 기술하는 데이터 (메타데이터)
-
database schema
-
integrity constraints
-
authorization
-
statistical data
트랜잭션 관리
일련의 데이터베이스 operation이다. (논리적인 단위)
사용자가 질의문을 생성하면 트랜잭션을 만들게 된다.
DBMS에서 이러한 트랜잭션을 동시에 처리해야한다. (concurrency control)
데이터베이스 사용자
- 일반적인 사용자 (Naive users)
- 애플리케이션 개발자
- 데이터베이스 분석가
- 데이터베이스 관리자 (DBA)
데이터베이스 관리자 (Database Administrator)
- 데이터베이스 시스템을 총괄한다.
- 스키마와 스토리지 구조등을 정의한다.
- 스키마를 변경할 수 있다.
- 보안, 권한
데이터베이스 시스템 구조
- 중앙화
- 분산화
- 클라이언트-서버
- parallel (multi-processor)
데이터베이스 시스템의 역사
- 1950, 1960년대: 마그네틱 테이프, 펀치카드
- 1970년대: network, hierarchial 데이터 모델. E.Codd가 Relational Data Model를 만듬
- 1980년대: 상업용 DBMS (오라클), 객체지향 데이터베이스 시스템
- 1990년대: emergence of web commerece
- 2000년대: XML standards
- 2010년대: 빅데이터(하둡 등), giant data storage system
댓글