본문 바로가기

# 03/RDBMS

DBMS 개요

반응형

데이터베이스를 '데이터의 집합'이라고 정의한다면 DBMS(DataBase Management System)는 이 데이터베이스를 관리, 운영하는 역할로 데이터베이스를 운영하는 '소프트웨어'로 정의할 수 있다.


데이터베이스의 중요한 특징

1. 데이터의 무결성 - 데이터베이스 안의 데이터는 어떤 경로를 통해 들어 왔던지 데이터에 오류가 있어서는 안된다. 이를 위해 제약 조건이라는 특성을 갖는다.(예, 학생정보 조회 위한 학번)

2. 데이터의 독립성 - 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용프로그램은 전혀 영향을 받지 않아야 한다. 즉, 서로 의존적 관계가 아닌 독립적인 관계여야 한다.

3. 보안 - 데이터에 접근이 허가된 사람만 접근할 수 있어야 한다.

4. 데이터 중복의 최소화 - 동일한 데이터가 여러 개 중복되어 저장되는 것을 방지한다.

5. 응용프로그램 제작 및 수정이 쉬워짐 - 기존 파일시스템을 사용할 때는 각각 파일의 포맷에 맞춰 개발해야 하는 응용프로그램을 데이터베이스를 이용함으로써 통일된 방식으로 응용프로그램 작성이 가능해지고, 유지보수 또한 쉬워진다.

6. 데이터의 안전성 향상 - 백업, 복원 기능으로 데이터가 깨지는 문제가 발생할 경우에 원상으로 복원또는 복구 가능.


데이터베이스의 발전

> 오프라인으로 관리 - 종이에 연필 기록

> 파일시스템의 사용 - 컴퓨터 파일에 기록 저장. 대개 하나의 응용프로그램마다 하나의 데이터 파일이 할당. 즉, 어떤 기능을 구현하기 위해서 기능의 개수만큼 데이터 파일의 숫자가 생겨야 한다. 데이터의 양이 많아지면 데이터의 중복으로 인한 불일치가 발생된다. 이러한 불일치가 파일시스템의 큰 문제점 중 하나이다. 그러나 파일 시스템은 소량의 데이터를 처리하기에는 처리 속도가 DBMS 보다 훨씬 더 빠르며 별도의 추가비용이 들지 않기에 아직도 많이 사용된다.

> 데이터베이스 관리시스템 - 파일 시스템의 단점을 보완하고 대량의 데이터를 보다 효율적으로 관리하고 운영하기 위해서 사용되기 시작한 것. DBMS(DataBase Management System). 데이터를 구축하고 관리하고 활용하기 위해서 사용되는 언어가 SQL(Structured Query Language).


DBMS 분류

계층형(Hierarchical) DBMS, 망형(Network) DBMS, 관계형(Relational) DBMS, 객체지향형(Object-Oriented) DBMS, 객체관계형(Object-Relational) DBMS 등으로 분류된다. 관계형 DBMS가 가장 많은 부분을 차지한다.


계층형 DBMS

처음으로 나온 DBMS 개념으로 1960년대에 시작되었는데, 각 계층은 트리형태를 가지며 1:N 관계를 갖는다. 계층형의 문제는 처음 구축한 이후에는 그 구조를 변경하기가 상당히 까다롭다는 것이다. 또, 주어진 상태에서의 검색은 상당히 빠르지만, 접근의 유연성이 부족해서 임의의 검색에는 어려움이 따른다.


망형 DBMS

계층형 DBMS의 문제점을 개선하기 위해 1970년대에 시작되었으며 1:1, 1:N, N:M(다대다) 관계가 지원되어 효과적이고 빠른 데이터 추출이 가능해졌다. 하지만, 계층형과 마찬가지로 매우 복잡한 내부 포인터를 사용하고 프로그래머가 이 모든 구조를 이해해야만 프로그램의 작성이 가능하다는 단점이 존재한다.


관계형 DBMS

시초는 1969년 E.F.Codd라는 학자가 수학 모델에 근거해서 고안하면서 시작되었다. RDBMS의 핵심 개념은 데이터베이스는 테이블(릴레이션 또는 엔티티라고도 불린다.)이라 불리는 최소 단위로 구성되어 있고 이 테이블은 하나 이상의 열로 구성되어 있다는 것이다. 

정보를 여러 개의 테이블로 나누어서 저장함으로써 불필요한 공간의 낭비를 줄이고 데이터의 저장의 효율성을 보장해 줄 수 있다. 또, 이렇게 나뉜 테이블의 관계를 기본 키와 외래 키를 사용해서 맺어 줌으로써, 두 테이블을 부모와 자식의 관계로 묶어 줄 수 있다.

장점은 다른 DBMS에 비해서 업무가 변화될 경우에 쉽게 변화에 순응할 수 있는 구조이며 유지보수 측면에서도 편리한 특징을 가지고 있다. 가장 큰 단점은 시스템 자원을 많이 차지해서 시스템이 전반적으로 느려지는 것이나 하드웨어의 급속한 발전으로 인해 많이 보완되고 있다.


NoSQL(Not only SQL)

관계형 데이터베이스에 있는 기능 일부를 버려서 성능(처리 속도)을 높이고 있다. 대량의 데이터를 고속으로 처리해야 하는 웹 서비스와 잘 맞아서 최근 자주 이용되고 있다.



SQL 개요

SQL(Structured Query Language)은 관계형 데이터베이스에서 사용되는 언어로 '에스큐엘' 또는 '시퀄'로 읽는다.

특징

1. DBMS 제작 회사와 독립적이다.

 > SQL은 모든 DBMS 제작회사에 공통적으로 공개되고 각 제작회사는 이 표준 SQL에 맞춰서 DBMS를 개발한다. 그러므로 표준 SQL은 대부분의     DBMS 제품에서 공통적으로 호환된다.

2. 다른 시스템으로 이식성이 좋다.

 > SQL 표준은 서버용, 개인용, 휴대용 장비에서 운영되는 DBMS마다 상호 호환성이 뛰어나 다른 시스템으로 이식하는 데 문제 없다.

3. 표준이 계속 발전한다.

4. 대화식 언어이다.

 > 바로 질의하고 결과를 얻는 대화식 언어로 구성되어 있다.

5. 분산형 클라이언트/서버 구조이다.

 > 클라이언트에서 질의를 하면 서버에서 그 질의를 받아서 처리한 후, 다시 클라이언트에게 전달하는 구조를 가진다.


단, 모든 DBMS의 SQL문이 완벽하게 동일하지는 않다.


소프트웨어와 데이터베이스의 관계

시스템을 여러가지 소프트웨어와 조합해서 만드는 작업을 SI(System Integration)라고 한다. 소프트웨어는 운영체제, 미들웨어, 애플리케이션으로 구분할 수 있다. 이 3가지 소프트웨어는 계층성이 있으며 한 레이어의 소프트웨어가 동작하지 않으면 상위 레이어의 소프트웨어는 사용할 수 없다. DBMS는 '미들웨어'에 위치한다. 

OS와 DBMS는 기능에 대한 표준 규칙을 따르고 있고 어느 정도의 이식성이 있기 때문에 하나의 조합에서 다른 조합으로 시스템 변경이 가능한데 이것을 '마이그레이션(Migration)'이라고 한다.

반응형

'# 03 > RDBMS' 카테고리의 다른 글

데이터베이스 아키텍처  (0) 2019.02.09
데이터베이스 비용  (0) 2019.02.08
TiberoDB*  (0) 2019.02.06
VoltDB  (0) 2019.02.06
TiDB  (0) 2019.02.06