본문 바로가기
혼공학습단 12기

[혼공S] 01 - 1 '데이터베이스 알아보기' 정리

by jaeheon0520 2024. 7. 1.

 

데이터베이스(Database, DB)를 한 마디로 정리한다면, '데이터의 집합'이라고 할 수 있다.

데이터베이스와 DBMS

데이터베이스와 이를 관리하는 소프트웨어인 DBMS의 관계를 알아보고, DBMS의 종류에 대해서 살펴보자.

 

DBMS의 정의

앞서 살펴본 것처럼 데이터베이스를 '데이터의 집합'이라고 정의한다면, 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS라고 한다, 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 한다.

 

그래서 마이크로소프트 사의 엑셀과 같은 프로그램은 '데이터의 집합'을 관리하고 운영한다는 차원에서 DBMS로 볼 수 있지만, 대용량 데이터를 관리하거나, 여러 사용자와 공유하는 개념과는 거리가 있어 DBMS라고 부르지 않는다.

 

DBMS의 종류

DBMS와 같은 소프트웨어는 특정 목적을 처리하기 위한 프로그램이다. 예를 들어 문서를 작성하기 위해서는 아래아 한글이나 워드, 표 계산을 위해서는 엑셀이나 켈크 같은 소프트웨어를 설치해야 한다.

 

마찬가지로 데이터베이스를 사용하기 위해서도 소프트웨어, 즉 DBMS를 설치해야 하는데 대표적으로 MySQL, 오라클, SQL 서버, MariaDB 등이 있다. 소프트웨어 각각의 사용 방법과 특징이 다르지만 특정 목적을 위해서는 어떤 것을 사용해도 무방하다.

 

DBMS 제작사 작동 운영체제 기타
MySQL Oracle Unix, Linux, Windows, Mac 오픈소스, 상용
MariaDB MariaDB Unix, Linux, Windows 오픈소스, MySQL 초기 개발자들이 독립해서 만듦
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이다. 우리가 사용할 MySQL과 같은 DBMS의 개념은 1973년에 최초로 에드거 프랭크 커드(E.F.Codd)라는 학자가 이론을 정립했다. 그 이후로 많은 DBMS 제품이 만들어졌고, 지금과 같이 안정적인 소프트웨어로 자리잡게 되었다.

 

DBMS는 데이터의 집합인 데이터베이스를 잘 관리하고 운영하기 위한 시스템 또는 소프트웨어를 말한다. DBMS에 데이터를 구축, 관리하고 활용하기 위해서 사용되는 언어가 SQL(Structured Query Language)이다. SQL을 사용하면 DBMS를 통해 중요한 정보들을 입력, 관리하고 추출할 수 있다.

 

즉 SQL 문을 잘 이해하고 사용해야만 DBMS를 원활하게 활용할 수 있다.

 

 

DBMS의 분류

DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류된다.

 

현재 사용되는 DBMS 중에는 관계형 DBMS가 가장 많은 부분을 차지하며, 우리가 사용할 MySQL도 관계형 DBMS에 포함된다.

 

계층형 DBMS

계층형 DBMS(Hierarchical DBMS)는 처음으로 등장한 DBMS 개념으로 1960년대에 시작되었다. 다음 그림과 같이 각 계층은 트리 형태를 갖는다. 

 

계층형 DBMS의 문제는 처음 구성을 완료한 후에 이를 변경하기가 상당히 까다롭다는 것이다. 또한 다른 구성원을 찾아가는 것이 비효율적이다. 예를 들어 재무2팀에서 회계팀으로 연결하려면 재무이사 -> 사장 -> 회계이사 -> 회계팀과 같이 여러 단계를 거쳐야 한다. 지금은 사용하지 않는 형태이다.

 

 

망형 DBMS

망형 DBMS(Network DBMS)는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 등장했다. 다음 그림을 보면 하위에 있는 구성원끼리도 연결된 유연한 구조이다.

 

예를 들어 재무2팀에서 바로 회계팀으로 연결이 가능하다. 하지만 망형 DBMS를 잘 활용하려면 프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하다는 단점이 존재한다. 역시 지금은 거의 사용하지 않는 형태이다.

 

 

관계형 DBMS

관계형 DBMS(Relational DBMS)는 줄여서 RDBMS라고 부른다. 우리가 사용할 MySQL뿐만 아니라, 대부분의 DBMS가 RDBMS 형태로 사용된다. RDBMS의 데이터베이스는 테이블이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열과 행으로 이루어져 있다.

 

RDBMS에서는 모든 데이터가 테이블에 저장된다. 이 구조가 가장 기본적이고 중요한 구성이기 때문에 테이블만 제대로 파악하면 RDBMS를 어느정도 이해했다고 할 수 있다.

 

DBMS에서 사용되는 언어: SQL

SQL(Structed Query Language)은 관계형 데이터베이스에서 사용되는 언어로, '에스큐엘' 또는 '시퀄'로 읽는다. 우리가 공부하고자 하는 관계형 DBMS (그중 MySQL)를 배우려면 SQL을 필수로 익혀야 한다. SQL이 데이터베이스를 조작하는 언어이긴 하지만 일반적인 프로그래밍 언어(C, Java, Python)와는 조금 다른 특성을 갖는다.

 

SQL은 특정 회사에서 만드는 것이 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있다. 이를 표준 SQL이라고 한다. 그런데 문제는 SQL을 사용하는 DBMS를 만드는 회사가 여러 곳이기 때문에 표준 SQL이 각 회사 제품의 특성을 모두 포용하지 못한다는 점이다. 그래서 DBMS를 만드는 회사에서는 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용한다.

 

다음 그림을 보면 3가지 DBMS 제품(오라클, SQL 서버, MySQL)이 모두 표준 SQL을 포함하고있지만, 추가로 자신만의 기능도 가지고 있다. 이렇게 변경된 SQL을 오라클은 PL/SQL, SQL 서버는 T-SQL, MySQL은 SQL로 부른다.