Programming

; develop a program

DataBase

[DB] DBMS 개요

Clloud_ 2022. 12. 27. 13:29
반응형

이번 포스팅에서는 데이터베이스와 DBMS에 대하여 공부를 해보고자 한다.

공부할 때 참고한 책: 이것이 MySQL이다.

 


DBMS과 데이터베이스

데이터베이스를 간단히 정의하면 '대용량의 데이터의 집합'을 체계적으로 구성해 놓은 것이라고 할 수 있다.

또한 데이터베이스는 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근이 가능해야 한다.

MySQL에서는 '데이터 베이스'를 자료가 저장되는 디스크 공간(주로 파일로 구성됨)으로 취급하기 때문에 '데이터의 저장공간' 자체를 의미하기도 한다.

 

DBMS(DataBase Management System)는 이 데이터 베이스를 관리 · 운영하는 역할을 하는 소프트웨어의 개념이다.

여러 명의 사용자나 응용 프로그램이 DBMS가 관리하는 데이터에 동시에 접속하고 데이터를 공유하게 된다.

즉, DBMS에서 데이터가 집중적으로 관리되고 있다는 의미이다.

 

종종 데이터베이스를 DBMS와 혼용해서 같은 용어처럼 사용하기도 한다.
바라보는 시각에 따라서 틀리지는 않지만, 현재 내가 배우고 있는 책에서는 데이터베이스를 '데이터의 집합' 또는 '데이터의 저장공간'으로 다루고, DBMS는 데이터베이스를 운영하는 '소프트웨어'를 의미한다.

 

DBMS에 데이터를 구축하고 관리하고 활용하기 위해서 사용되는 언어가 SQL(Structured Query Language)이다.

SQL을 사용하여 DBMS를 통해 중요한 정보들을 입력하고 관리하고 추출할 수 있다.

 

DBMS 개념도

 

위 사진에서는 DBMS를 MySQL로 표현했지만, MySQL 외에도 많이 사용되는 DBMS는 다음 표와 같다.

 

DBMS 제작사 운영 체제 기타
MySQL Oracle Unix, Linux, Windows, Mac 오픈 소스(무료), 상용
MariaDB MariaDB Unix, Linux, Windows 오픈 소스(무료)
PostgreSQL PostgreSQL Unix, Linux, Windows, Mac 오픈 소스(무료)
Oracle Oracle Unix, Linux, Windows 상용 시장 점유율 1위
SQL Server Microsoft Windows  
DB2 IBM Unix, Linux, Windows 메인 프레임 시장 점유율 1위
Access Microsoft Windows PC용
SQLite SQLite Android, iOS 모바일 전용, 오픈 소스(무료)

 


DBMS와 데이터베이스 특징

DBMS 또는 데이터 베이스는 다음과 같은 몇 가지의 중요한 특징을 가지고 있다.

 

데이터의 무결성

데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔던지 데이터에 오류가 있어서는 안 된다.

이 무결성(Integrity)을 위해서 데이터 베이스는 제약 조건이라는 특성을 가진다.

 

예를 들어, 학생 데이터에서 모든 학생은 학번이 반드시 있어야 하며, 각 학생의 학번은 서로 중복되면 안 되는 제약 조건이 있을 수 있다.

이 제약 조건을 지키면 학번만 알아도 그 학생이 어떤 학생인지 정확히 한 명의 학생이 추출될 수 있다.

즉, 학번은 무결한 데이터로 보장할 수 있기에 성적증명서, 재학증명서 등을 출력할 때 학번만 가지고도 정확히 자신의 것을 출력할 수 있다.

 


데이터의 독립성

데이터의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용 프로그램은 전혀 영향을 받지 않아야 한다.

즉, 서로 의존적 관계가 아닌 독립적인 관계여야 한다.

 

예를 들어, 데이터베이스가 저장된 디스크가 새것으로 변경되어도 기존에 사용하던 응용 프로그램은 아무런 변경 없이 계속 사용되어야 한다.

 

보안

데이터베이스 안의 데이터에 해당 데이터를 소유한 사람이나 데이터에 접근이 허가된 사람만 접근할 수 있어야 한다.

접근할 때도 사용자의 계정에 따라서 다른 권한을 가져야 한다.

 

데이터 중복의 최소화

동일한 데이터가 여러 개 중복되어 저장되는 것을 방지한다.

 

학교를 예를 들어, 학생 정보를 이용하는 교직원(학생처, 교무처, 과사무실 등)이 여러 명이 사용할 수 있다고 가정했을 때, 엑셀을 사용한다면 각 직원마다 별도의 엑셀 파일을 가지고 사용해야 한다.

그러면 한 명의 학생 정보가 각각의 엑셀 파일에 중복되어 관리된다.

이를 데이터베이스에 통합하면 하나의 테이블에 저장하고 공유함으로써 데이터 중복이 최소화된다.

 

응용 프로그램 제작 및 수정이 쉬워짐

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

 

데이터의 안정성 향상

대부분의 DBMS가 제공하는 백업 · 복원 기능을 이용함으로써, 데이터가 깨지는 문제가 발생할 경우에 원상으로 복원 또는 복구하는 방법이 명확해진다.

 


DBMS 분류

DBMS의 유형은 크게 계층형 DBMS, 망형 DBMS, 관계형 DBMS, 객체지향형 DBMS, 그리고 객체관계형 DBMS 등으로 분류된다.

현제 사용되는 DBMS 중에는 관계형 DBMS가 가장 많은 부분을 차지하며, 일부 멀티미디어 분야에서 객체지향형이나 객체관계형 DBMS가 활용되고 있는 추세이다.

 

계층형 DBMS

처음으로 나온 DBMS 개념으로 1960년대에 시작되었는데 각 계층은 트리형태를 가지며 1:N 관계를 갖는다.

계층형 DBMS(Hierarchical DBMS)의 문제는 처음 구축한 이후에는 그 구조를 변경하기가 상당히 까다롭다는 것이다.

또한 주어진 상태에서의 검색은 상당히 빠르지만, 접근의 유연성이 부족해서 임의의 검색에는 어려움이 따른다.

 

계층형 구조

 


망형 DBMS

망형 DBMS(Network DBMS)는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 시작되었으며 1:1, 1:N, N:M(다대다) 관계가 지원되어 효과적이고 빠른 데이터 추출이 가능해졌다.

하지만 계층형과 마찬가지로 매우 복잡한 내부 포인터를 사용하고 프로그래머가 이 모든 구조를 이해해야만 프로그램의 작성이 가능하다는 단점이 여전히 존재한다.

 

망형 구조

 


관계형 DBMS

관계형 DBMS(Relational DBMS: RDBMS)의 시초는 1969년 E.F.Codd라는 학자가 수학 모델에 근거해서 고안하면서 시작되었다.

RDBMS의 핵심 개념은 "데이터베이스를 테이블(Table)이라 불리는 최소 단위로 구성되어 있다. 그리고 이 테이블은 하나 이상의 열로 구성되어 있다."라고 생각하면 된다.

관계형 DBMS에서 모든 데이터는 테이블에 저장되므로 테이블이라는 구조가 RDBMS의 가장 기본적이고 중요한 구성이 된다.

 

관계형 구조

 

테이블은 데이터를 효율적으로 저장하기 위한 구조이다.

정보를 저장하기 위해 하나의 테이블이 아닌 여러 개의 테이블로 나누어서 저장함으로써 불필요한 공간의 낭비를 줄이고 데이터 저장의 효율성을 보장해 줄 수 있다.

또 이렇게 나뉜 테이블의 관계를 기본 키(Primary Key)와 외래 키(Foreign Key)를 사용하여 맺어 줌으로써, 두 테이블을 부모와 자식의 관계로 묶어 줄 수 있다.

추후에 부모 테이블과 자식 테이블을 조합하해서 결과를 얻고자 할 경우에는 SQL의 JOIN 기능을 이용하면 된다.

 

장점

다른 DBMS에 비해서 변화에 쉽게  순응할 수 있는 구조

유지보수 측면에서도 편리한 특성을 가진다.

대용량 데이터의 관리와 데이터 무결성의 보장을 잘해준다.

동시에 데이터에 접근하는 응용 프로그램을 사용할 경우 적합하다.

 

단점

시스템 자원을 많이 차지하여 시스템이 전반적으로 느려진다.

(최근 하드웨어의 급속한 발전으로 보완되고 있는 추세)

 


객체지향형 DBMS

객체지향 데이터베이스(Object-Oriented DBMS: OODBMS)는 데이터 베이스에 객체 지향 개념을 도입하여 만들어진 모델이다.

계층(Class)에 따라 데이터 구조를 표현하고 데이터와 그 조작 절차를 함께 다룬다.

 

장점

복잡한 정보 구조의 모델링 가능

 

단점

안전성 및 성능의 검정 미미

 


객체관계형 DBMS

객체 관계형 데이터베이스(Objected-Relational DBMS: ORDBMS)는 기존의 관계형 데이터 베이스 (RDBMS) 로서의 안정된 성능에 기반하면서 동시에 객체 지향 모델의 특징을 추가한 모델이다.

 

OODBMSORDBMS는 객체에 대해 관점의 차이를 보인다.

첫째, 데이터의 저장 및 접근 방법에 대한 관점의 차이이다.

OODBMS는 모든 정보를 객체 형태로만 저장하고 모든 객체 정보가 유일한 객체 식별자(OID: Object Identifier)를 사용할 것을 주장한다.

반면, ORDBMS는 정보가 테이블 형태 또는 객체 형태로 저장되도록 하고 주된 키(PK: Primary Key) 사용을 주장한다. 또한 PK가 없을 시에만 OID 사용을 주장한다.

 

둘째, 프로그래밍 언어와 데이터 베이스 언어에 대한 관점의 차이를 보인다.

OOBBMS에서는 객체의 접근 및 다른 객체로의 이동시 객체 지향 프로그래밍 언어나 다른 참조 기법을 이용하기 때문에 객체 간의 포함 관계를 갖는 복합 객체를 효율적으로 저장할 수 없다.

반면, ORDBMS는 값에 기반한 데이터 접근 방식을 가지기 때문에 데이터 접근 시 참조 정보 기반의 모든 접근을 지원한다.

 

장점

RDBMS의 안정성과 OODBMS의 장점

 

단점

표준화 지연으로 제품 간 차이 존재 및 혼란 야기

 


반응형

'DataBase' 카테고리의 다른 글

[DB] SQL 개요  (0) 2022.12.28