본문 바로가기
( ´・・)/개발

[DB] Database, DBMS, SQL의 개념 - 데이터베이스 이해하기

by shinsangah 2023. 3. 14.

 

[데이터베이스 이해하기] Database(DB), DBMS, SQL의 개념

 

데이터베이스는 IT 분야 뿐만 아니라 다른 분야에서도 보편적으로 사용하는 용어가 되었습니다.

우리의 삶이 데이터베이스와 직/간접적으로 연관되어 있다고 생각해도 무방할 정도입니다.

데이터베이스가 대체 무엇이길래 여기저기 모든 것에 연관되어 있고 비전공자까지 관심을 가지는지

데이터베이스의 개념과 SQL의 관계에 대해 알아보겠습니다.

 

✍ 3줄 요약 KeyPoint

  • 데이터베이스(Database, DB)란?
  • 데이터의 저장소. 데이터들의 집합.
  • DBMS(Database Management System, 데이터베이스 관리 시스템)란?
  • 데이터베이스를 운영하고 관리하는 SW(소프트웨어)
  • 계층형, 망형, 관계형 DBMS 중 대부분의 DBMS가 테이블로 구성된 관계형 DBMS(RDMBS)형태로 사용됨.
  • SQL(Structured Query Language)란?
  • 구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어.
  • 표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있음.
  • SQL만 잘하게 되면 대부분은 DBMS를 빠르게 습득 가능, 무난하게 알 수 있다.
  • 관련 자격증도 있고 매우 중요하고, 잘 사용되고 있다.

그런데, SQL 말 드럽게 안듣는다. X표 띄우면서 계속 안된다고 한다. 그런게 답답해서 새로 만든게 '비관계형 DB' 이다.

 


💾데이터베이스(Database, DB)란?

 

데이터베이스를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있습니다.

데이터베이스에는 일상생활 대부분의 정보가 저장되고 관리됩니다.

오늘 보내거나 받은 카카오톡 메시지, 인스타그램에 등록한 사진, 버스/지하철에서 찍은 교통카드,

카페에서 구매한 아이스 아메리카노 등의 정보가 모두 데이터베이스에 기록됩니다.

 

 

💾DBMS란?

데이터베이스를 ‘데이터의 집합’이라고 정의한다면,

이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS(Database Management System)라고 합니다.

다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 합니다.

 

가까운 예로 은행의 예금 계좌는 많은 사람들이 가지고 있습니다.

여러 명의 예금 계좌 정보를 모아 놓은 것이 데이터베이스입니다.

은행이 가지고 있는 예금 계좌 데이터베이스에는 여러 명이 동시에 접근할 수 있습니다.

예금 계좌 주인, 은행 직원, 인터넷 뱅킹, ATM 기기 등에서 모두 접근이 가능하니까요.

이러한 것이 가능한 이유는 바로 DBMS가 있기 때문입니다.

 

💾DBMS의 종류

DBMS와 같은 소프트웨어는 특정 목적을 처리하기 위한 프로그램입니다.

예를 들어 문서를 작성하기 위해서는 아래한글(HWP)이나 워드(Word), 표 계산을 위해서는 엑셀(Excel)이나 캘크(Calc),

멋진 사진을 편집하려면 포토샵(PhotoShop)이나 김프(Gimp)와 같은 소프트웨어를 설치해야 합니다.

 

마찬가지로 데이터베이스를 사용하기 위해서도 소프트웨어, 즉 DBMS를 설치해야 하는데

대표적으로 MySQL, 오라클(Oracle), SQL 서버, MariaDB 등이 있습니다.

소프트웨어 각각의 사용 방법과 특징이 다르지만 특정 목적을 위해서는 어떤 것을 사용해도 무방합니다.

 

대표적인 DBMS의 특징입니다. SQL 공부가 처음이라면 이중에서 비교적 쉬우면서

실무에서도 인기가 많은 MySQL이라는 소프트웨어를 설치해서 사용할 것을 추천합니다.

 

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의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational),

객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류됩니다.

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

 

💾계층형 DBMS

계층형 DBMS(Hierarchical DBMS)는 처음으로 등장한 DBMS 개념으로 1960년대에 시작되었습니다.

아래 그림과 같이 각 계층은 트리tree 형태를 갖습니다. 사장 1명에 이사 3명이 연결되어 있는 구조입니다.

계층형 DBMS의 문제는 처음 구성을 완료한 후에 이를 변경하기가 상당히 까다롭다는 것입니다.

또한 다른 구성원을 찾아가는 것이 비효율적입니다. 예를 들어 재무2팀에서 회계팀으로 연결하려면

재무이사 → 사장 → 회계이사 → 회계팀과 같이 여러 단계를 거쳐야 합니다. 지금은 사용하지 않는 형태입니다.

 

 

 

💾망형 DBMS

망형 DBMS(Network DBMS)는 계층형 DBMS의 문제점을 개선하기 위해 1970년대에 등장했습니다.

다음 그림을 보면 하위에 있는 구성원끼리도 연결된 유연한 구조입니다.

예를 들어 재무2팀에서 바로 회계팀으로 연결이 가능합니다.

하지만 망형 DBMS를 잘 활용하려면 프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하다는 단점이 존재합니다.

역시 지금은 거의 사용하지 않는 형태입니다.

 

 

 

💾관계형 DBMS

관계형 DBMS(Relational DBMS)는 줄여서 RDBMS라고 부릅니다. MySQL뿐만 아니라,

대부분의 DBMS가 RDBMS 형태로 사용됩니다.

 

RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며,

이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있습니다.

키와 값의 관계를 테이블화 시킨 원칙을 토대로 DB를 구성합니다.

 

한글이나 워드에서 표를 만들었던 경험이 있을텐데요, 이 표의 모양이 바로 테이블입니다.

친구의 카카오톡 아이디, 이름, 연락처 등 3가지 정보를 표, 즉 테이블로 만들면 다음과 같습니다.

 

 

RDBMS에서는 모든 데이터가 테이블에 저장됩니다.

이 구조가 가장 기본적이고 중요한 구성이기 때문에 RDBMS는 테이블로 이루어져 있으며,

테이블은 열과 행으로 구성되어 있다는 것을 파악했다면 RDBMS를 어느정도 이해했다고 할 수 있습니다.

 


💾SQL: DBMS에서 사용하는 언어

 

SQL(Structured Query Language)은 관계형 데이터베이스에서 사용되는 언어로,

‘에스큐엘’ 또는 ‘시퀄’로 읽습니다. 관계형 DBMS 중 MySQL를 배우려면 SQL을 필수로 익혀야 합니다.

SQL이 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 갖습니다.

 

SQL은 특정 회사에서 만드는 것이 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있습니다.

이를 표준 SQL이라고 합니다. 그런데 문제는 SQL을 사용하는 DBMS를 만드는 회사가 여러 곳이기 때문에

표준 SQL이 각 회사 제품의 특성을 모두 포용하지 못한다는 점입니다. 그래서 DBMS를 만드는 회사에서는

되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용합니다.

 

 

다음 그림을 보면 3가지 DBMS 제품(오라클, SQL 서버, MySQL)이 모두 표준 SQL을 포함하고 있습니다.

그래서 표준 SQL을 익히면 대부분의 DBMS에 공통적으로 적용할 수 있습니다.

각 DBMS는 추가로 자신만의 기능도 가지고 있어서 이렇게 변경된 SQL을

오라클은 PL/SQL, SQL서버는 T-SQL, MySQL은 SQL로 부릅니다. 

 

 

 

 

ref. https://hongong.hanbit.co.kr

 


 

💾DB의 종류

💾관계형 (SQL) vs 비관계형(NoSQL)

 

관계형 DB - 관계형, Relational DBMS (SQL)

 

  • RDBMS는 SQL을 사용하는 DB입니다.
  • 구조화된 질의응답형이다.
  • 즉, RDBMS는 테이블로 구성이 된다.
  • 먼저 테이블이 구성되고 테이블의 구조에 맞추어 데이터가 들어가기 때문에
  • DB를 구성하기 전에 스키마라 불리는 DB의 구조, 관계, 제약 사항에 대한 정의가 필요하다.
  • 사실 예전엔 컴퓨터가 느리고 용량이 작아 이런 구조가 아니면 속도, 용량면에서 답이 없었다고 한다.
  • 그런데, SQL 말을 드럽게 안들음. X 표 띄우면서 계속 안된다고 함.
  • 그런게 답답해서 새롭게 만든게 ‘비관계형 DB’

 

관계형 DB - 관계형, Relational DBMS (SQL) 장점

 

  • 구조화가 명확하게 되어있어서 예외가 없음.
  • 데이터 입, 출력 속도가 매우 빠릅니다.
  • 신뢰성이 매우 높음.

관계형 DB - 관계형, Relational DBMS (SQL) 장점

 

  • DB의 구조 변경이 매우 어려움.
  • → 빅데이터 등에는 사용이 어려움 (새로운 키가 추가되면 전체 스키마 변경 필요)

 

비관계형 DB - 비관계형, Non Relational DBMS (NoSQL)

 

  • SQR을 사용하지 않는 모든 DB를 통칭합니다.
  • ex) 한국어 vs 비한국어 (= 영어, 프랑스어, 스페인어 등)
  • 대표적으로 문서형, 그래프형, 키밸류형, 와이드컬럼형 등이 있습니다.
  • 약간 컴퓨터언어와 일맥 상통하는 부분으로 특정 목적에 맞는 DB가 존재합니다.
  • ex) html → 웹 개발 / 파이썬 → 인공지능 / Swift → 앱

 

비관계형 DB - 비관계형, Non Relational DBMS (NoSQL) 장점

 

  • 보통 대용량 데이터 처리에 효율적
  • DB의 구조 변경이 쉽고, 확장성이 뛰어남
  • 복잡한 데이터 구조의 표현이 가능

 

비관계형 DB - 비관계형, Non Relational DBMS (NoSQL) 단점

 

  • 데이터 자체가 크면 전체 데이터를 일부 읽어서 처리해야 하므로
  • 데이터가 크면 속도가 저하되는 문제 발생

 

 

 

Document : 객체를 무한히 많이 저장할 수 있는 데이터다. 그런걸 Document 라고 함.

Graph : 그래프형 데이터베이스는 ○가 데이터이고, 데이터끼리의 관계도 저 선에 저장시킬 수 있다.

              이 짓을 왜하냐면 예를 들어, 요즘 SNS에서 편하게 쓸 수 있다. 친구 목록에 관계가 많으면

              누가 좋아요 누르면, 이 선에다가 저장을 통해서 효율적으로 처리 가능한 독특한 형태를 띄고있다.

Key-Value : 로봇청소기에 많이 쓴다. 몇 분 몇 초에 충돌남. 이런 것.

Wide-Column : 널럴한 SQL 조건을 따지지 않고 넣어준다. 많이 쓰인건 모르겠음.

 

=> 일단, Document만 잘 생각해보고 알면 된다고 한다.

 

 

✏️

백엔드에서는 MySQL을 배울거고, 왠만한 데이터 처리는 MySQL로 처리가 가능하다고 한다.

그래서 MySQL 이용해서 기본적으로 사용하고, 관계형 데이터에 친숙해질 때쯤에 React 때 비관계형인 MONGO DB를 배울 것이다.