Part1. 데이터베이스 시스템의 개념
Chapter 01. 데이터베이스 시스템의 개념
데이터베이스와 데이터베이스 시스템
데이터, 정보, 지식
데이터가 모이면 정보가 되고, 정보가 모이면 지식이 된다. 데이터는 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값을 말하고, 정보는 데이터에 의미를 부여한 것을 말하며, 지식은 사물이나 현상에 대한 이해를 말한다. 예를들어 에베레스트 산의 높이는 데이터에, 에베레스트산의 지리적인 특성을 설명한 것은 정보에, 에베레스트산에 올라가는 가장 좋은 방법을 소개하는(정보를 포함한) 보고서는 지식에 해당된다.
검색과 변경 빈도에 따른 데이터베이스 유형
| 유형 | 검색 빈도 | 변경 빈도 | 특징 |
|---|---|---|---|
| 유형 1 | 적다 | 적다 | 1. 검색이 많지 않아 데이터베이스를 구축할 필요 없음. 2. 보존가치가 있는 경우에 구축. ex) 공룡 데이터베이스 |
| 유형 2 | 많다 | 적다 | 1. 사용자 수 보통 2. 검색은 많지만, 데이터에 대한 변경은 적음 ex) 조서 데이터베이스 |
| 유형 3 | 적다 | 많다 | 1. 예약 변경/취소 등 데이터 변경은 많지만, 검색은 적음 2. 실시간 검색 및 변경이 중요함 ex) 비행기 예약 데이터베이스 |
| 유형 4 | 많다 | 많다 | 1. 사용자 수 많음 2. 검색도 많고, 거래로 인한 변경도 많음 ex) 증권 데이터베이스 |
데이터베이스는 저장된 데이터의 양이 많고, 실시간 검색이 많은 분야일수록 활용도가 높다.
데이터베이스는 조직에 필요한 정보를 얻기 위하여 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것이다.
데이터베이스의 개념
-
통합된 데이터(integrated data) : 여러 곳에서 사용하던 데이터를 통합하여 하나로 저장한 데이터를 의미. 통합 시 중요한 점은 각자 사용하던 데이터의 중복을 최소화함으로써 중복 저장으로 인한 데이터 불일치 현상을 없애는 것이다.
-
저장된 데이터(stored data) : 문서가 아닌 디스크, 테이프같은 컴퓨터 저장장치에 저장된 데이터. 사람의 눈으로 직접 볼 수는 없지만 컴퓨터 프로그램을 이용하여 디스플레이하거나 인쇄물로 출력할 수 있다.
-
운영 데이터(operational data) : 조직의 목적을 위해 사용되는 데이터를 의미. 업무를 위해 검색을 할 목적으로 저장된 데이터. 목적에 관계없이 저장된 데이터나 단순 입출력 데이터같이 임시로 저장된 데이터는 운영 데이터에 속하지 않는다.
-
공용 데이터(shared data) : 공동으로 사용되는 데이터를 의미. 데이터는 어느 순간이라도 둘 이상의 프로그램 또는 여러 사람이 동시에 사용할 수 있다.
데이터베이스의 특징
-
실시간 접근성(real time accessibility) : 데이터베이스는 실시간으로 서비스된다. 수 초 내에 결과를 서비스한다.
-
계속적인 변화(continuous change) : 데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀐다. 데이터베이스는 삽입, 삭제, 수정 등의 작업으로 바뀐 데이터 값을 저장한다.
-
동시공유(concurrent sharing) : 서로 다른 업무 또는 여러 사용자에게 동시 공유한다. 동시는 병행이라고도 하며, 데이터베이스에 접근하는 사용자 데이터 요청 프로그램이 동시에 여러개 있다는 의미이다.
-
내용에 따른 참조(reference by content) : 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조된다. 사용자가 원하는 데이터를 얻기 위해 데이터 값을 사용하여 조건을 제시하면 데이터베이스는 이에 해당하는 데이터를 검색해 준다. -> 정보를 가지고 검색?
데이터베이스 시스템의 구성
-
DBMS(데이터베이스 관리 시스템) : 데이터를 관리하는 소프트웨어 시스템으로 주기억장치에 상주하면서 사용자와 데이터베이스를 연결시켜준다. ex) 오라클, MySQL …
-
데이터베이스 : 데이터를 모아둔 토대. 물리적으로는 컴퓨터 내부의 하드디스크에 저장된다.
-
데이터 모델 : 데이터가 저장되는 기법에 관한 내용으로 눈에 보이지 않는 논리적인 개념.
데이터베이스 시스템의 발전
정보 시스템의 발전
- 파일시스템 : DBMS가 없는 시스템으로, 데이터는 파일 단위로 저장되며 파일을 다루는 파일 서버가 있다.
- 데이터베이스 시스템 : DBMS를 도입하여 데이터를 통합 관리하는 시스템이다.
- 웹 데이터베이스 시스템 : 데이터베이스를 웹 브라우저에 사용하도록 제공하는 시스템이다. 웹 서버와 JSP, PHP, 웹 데이터베이스 연동 언어들을 사용한다.
- 분산 데이터베이스 시스템 : 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템으로 대규모 응용 시스템에 사용된다.
파일 시스템과 DBMS
파일 시스템과 DBMS의 비교
DBMS는 파일 시스템에 비해 CPU와 주기억장치 등 컴퓨터 자원을 많이 사용하지만 SQL 언어를 사용하여 응용 프로그램이 데이터에 쉽게 접근 할 수 있다. 즉 프로그래머가 해야 할 파일 관리를 DBMS를 통해 쉽게 할 수 있다.
| 구분 | 파일 시스템 | DBMS |
|---|---|---|
| 데이터의 정의 | 응용 프로그램 | DBMS |
| 데이터 저장 | 파일 시스템 | 데이터베이스 |
| 데이터 접근 방법 | 응용 프로그램이 파일에 직접 접근 | 응용 프로그램이 DBMS에 파일 접근을 요청 |
| 사용 언어 | 자바, C++, C 등 | 자바, C++, C 등과 SQL |
| CPU/주기억장치 사용 | 적음 | 많음 |
DBMS의 장점
데이터를 많이 다루는 프로그램을 빨리 개발할 수 있고, 데이터 구조가 변경되어도 데이터의 독립성을 유지할 수 있다. 또 복구, 보안, 무결성 유지 등의 기능도 수행한다.
| 장점 | 설명 |
|---|---|
| 데이터 중복 최소화 | DBMS를 이용하여 데이터를 공유하기 때문에 중복 가능성 낮음 |
| 데이터 일관성 유지 | 중복 제거로 데이터의 일관성이 유지됨 |
| 데이터 독립성 유지 | 데이터 정의와 프로그램의 독립성 유지 가능 |
| 관리 기능 제공 | 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 등을 수행 |
| 프로그램 개발 생산성 향상 | 짧은 시간에 큰 프로그램을 개발할 수 있음 |
| 기타 | 데이터 무결성 유지, 데이터 표준 준수 용이 |
데이터베이스 시스템의 구성
데이터베이스 언어
데이터베이스 시스템은 데이터베이스 전용 언어인 SQL(Structured Query Language)를 사용한다. SQL의 핵심 조작어 중 데이터를 검색하는 질의(query)문이다. 질의문은 SELECT-FROM-WHERE 구조로 되어 있다.
//BOOK 테이블에서 모든 도서이름과출판사를 검색하시오.
SELECT bookname, publisher
FROM Book;
//가격이 10,000원 이상인 도서이름과 출판사를 검색하시오.
SELECT bookname, publisher
Form Book
WHERE price >= 10000;
SQL
데이터베이스 시스템에 사용하는 전용 언어.
- 데이터 정의어 : CREATE, ALTER, DROP 문과 같이 DBMS에 저장된 테이블의 구조를 정의한다.
- 데이터 조작어 : SELECT, INSERT, DELETE, UPDATE 문과 같이 데이터를 검색, 삽입, 삭제, 수정하는데 사용한다.
- 데이터 제어어 : GRANT, REVOKE 문과 같이 데이터의 사용 권한을 관리한다.
데이터베이스 사용자
-
일반 사용자 : 은행의 창구 혹은 관공서의 민원 접수처 등에서 데이터를 다루는 업무를 하는 사람. 응용 프로그래머가 작성한 프로그램을 이용하는 사람이다.
-
응용 프로그래머 : 일반사용자가 사용할 수 있도록 프로그램을 만드는 사람이다. 응용 프로그래머는 자바, C, JSP 등의 프로그래밍 언어와 SQL을 사용하여 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 로직을 개발한다. 응용프로그래머는 데이터베이스를 이용하여 문제를 해결하는 프로그램을 작성하는 사람이다.
-
SQL 사용자 : SQL을 사용하여 업무를 처리하는 IT 부서의 담당자로, 응용 프로그램으로 구현되어 있지 않은 업무를 SQL을 사용하여 처리한다. 주로 데이터 검색, 데이터 구조 변경, 데이터에 관한 통계 처리 등 데이터를 모니터링 하는 업무를 하거나 보고서 형태로 만들어 상부에 보고하는 업무를 한다. SQL 질의를 작성하거나 SQL을 이용하여 프로그램을 작성하는 사람이다.
-
데이터베이스 관리자(DataBase Administrator, DBA) : 데이터베이스 운영 조직의 데이터베이스 시스템을 총괄하는 사람이다. DBA는 데이터 설계, 구현, 유지보수의 전 과정을 담당한다. 또한 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등 제반 업무를 맡는다.
DBMS
DBMS는 사용자와 데이터베이스를 연결시켜주는 소프트웨어.
| 기능 | 설명 |
|---|---|
| 데이터 정의 | 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행 |
| 데이터 조작 | 데이터를 조작하는 소프트웨어(응용 프로그램)가 요청하는 데이터의 검색, 삽입, 수정, 삭제 작업을 지원 |
| 데이터 추출 | 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출 |
| 데이터 제어 | 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어 백업과 회복, 동시성 제어 등의 기능을 지원 |
데이터 모델
데이터 모델은 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것으로, 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지를 결정한다. 가장 많이 사용되는 데이터모델은 관계데이터모델(relational data model)이다.
-
포인터 사용 : 계층 데이터모델, 네트워크 데이터 모델 : 포인터 값을 데이터에 저장하는 방법이다. 데이터를 직접 찾아갈 수 있어서 프로그램 속도는 빠르지만, 포인터를 다루는 프로그래밍을 해야하기 때문에 응용 프로그램 개발 속도면에서 느리다는 단점이 있다. (포인터는 주소를 의미한다.). 계층 데이터 모델은 실무에서 잘 안씀.
-
속성 값 사용 : 관계 데이터 모델 : 속성값을 데이터에 직접 저장하는 방법. 데이터를 찾을 대는 값을 이용하여 알아낸다. 포인터를 사용하는 방법보다 속도는 조금 느리지만, 개념이 쉽고 프로그램 개발이 빠르기 때문에 관계 데이터 모델을 비롯한 많은 데이터베이스 시스템에서 이 방법을 사용한다. 직접적인 포인터는 없고 값을 이용하여 관계를 찾아간다. 실무에서 많이 쓴다.
-
객체식별자 사용 : 객체 데이터 모델 : 객체의 고유 식별자를 테이블에 저장하는 방법. 실무에서 잘 안 씀
데이터베이스의 개념적 구조
1975년 ANSI(American National Standard Institue)에서 데이터베이스를 개념적으로 이해하기 위해 데이터베이스 구조에 관한 안을 만들었다. 이 안은 데이터베이스를 보는 관점(view)을 세 단계로 분리한 것으로, 3단계 데이터베이스 구조(3-layer database architecture)라고 부른다. 각 단계의 스키마 용어는 조직이나 구조를 의미한다.
-
외부 단계 : 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미한다. 여러개의 외부 스키마가 있을 수 있다. 외부 스키마는 서브 스키마라고도 부르며, 뷰의 개념이다. 예로 학생처의 학생정보, 교무처의 수강정보 등은 전체 데이터베이스의 일부분으로 각 부서의 사용자들에게만 필요한 부분 각각의 스키마라고 할 수 있다.
-
개념 단계 : 전체 데이터베이스의 정의를 의미한다. 통합 조직별로 하나만 존재하며 DBA가 관리한다. 즉 하나의 데이터베이스에는 하나의 개념스키마가 있다. 개념 스키마는 저장 장치에 독립적으로 기술되며, 데이터의 관계, 제약사항, 무결성에 대한 내용이 포함된다. 예로 학생정보, 수강정보 등을 모두 모은 대학 전체 데이터베이스를 뜻한다. (딱 1개.)
-
내부 단계 : 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법의 표현이다. 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함된다. 내부 스키마는 하나이다. 예로 전체 데이터베이스가 실제 하드디스크에 저장되는 물리적인 구조를 뜻한다. (저장되는데 관련된 정보, 어떤식으로 저장할 것인지.)
- 외부/개념 매핑 : 사용자의 외부스키마와 개념 스키마 간의 매핑(사상)으로 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킨다.
- 개념/내부 매핑 : 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킨다.
데이터 독립성
3단계 데이터베이스 구조의 특징은 데이터 독립성이다.(외부-개념-내부. 서로 영향력을 끼치지 않는다.) 데이터 독립성에는 두 가지가 있다.
-
논리적 데이터 독립성(logical data independence) : 외부 단계와 개념 단계 사이의 독립성으로, 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
-
물리적 데이터 독립성(physical data independence) : 개념 단계와 내부 단계 사이의 독립성으로, 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다.
Comments