먼저 데이터베이스에 대한 개념을 정리하겠다.
데이터베이스란?
사전적 의미로는 어렵게 생각하지 않아도 된다.
정보 데이터를 디지털화하여 만든 집합소라고 생각하면 된다. 개인적인 정보 저장 외에도 기업, 정부와 같은 조직 사이에서도 공유하고 관리할 수 있도록 설계한다.
데이터베이스 자체로는 보관소의 역할을 하고, 여기에 DBMS라는 소프트웨어를 얹어서 검색과 데이터 추가, 삭제와 같은 연산을 한다.
DBMS란?
DataBase Management System (DBMS)는 데이터베이스에 CRUD 작업을 가능하게 한다.
- Create: 데이터베이스 생성 및 레코드 추가
- Read: 데이터베이스 정보 회수 및 조회
- Update: 데이터베이스 정보 수정 및 업데이트
- Delete: 데이터베이스 정보 삭제
CRUD는 데이터베이스를 다루는 작업을 할 때 (백엔드 서버 또는 모니터링 시스템) 필수적인 요소이다. 따라서 각 DBMS 별로 특징과 활용도를 알아두면 적재적소에 활용할 수 있다.
DBMS에도 여러 종류가 있고, 크게 두 갈래로 나눌 수 있다.
RDBMS
RDBMS는 Relational DBMS이다. 정보를 테이블로 분류하고, 각 테이블마다 정보의 요소(Attribute)를 나타내는 컬럼(Column)과 하나의 데이터를 나타내는 단위인 레코드(Record. 또는 튜플(Tuple)이라고 한다.)로 구성된다.
테이블에는 각 레코드를 고유하게 표현하는 대표키(Primary Key)가 있으므로 중복된 데이터를 구별할 수 있고, 다른 테이블과 연관 관계를 가진 요소를 표현하는 외래키(Foreign Key)로 다른 테이블과의 관계도 명시할 수 있다.
여기서 나타나는 RDBMS의 가장 큰 특징은 바로 데이터 무결성 (Data Integrity)이다. 데이터를 고유한 키로 구분하고, 다른 테이블과의 연관 관계에서 제약 조건(Constraint)을 걸어서 의도하지 않은 데이터 삭제 및 변조를 예방할 수 있다.
RDBMS에는 MySQL, PostgreSQL, MariaDB, AWS Aurora DB, Oracle DB 등 다양한 종류가 있다.
이러한 RDBMS 프로그램에서는 데이터의 CRUD 연산과 데이터베이스 테이블 생성 및 수정, 데이터베이스 유저 관리 등을 수행할 수 있는 SQL(Structured Query Language)이라는 프로그래밍 언어를 사용한다. 여기에서 SQL까지 다루게 되면 글이 너무 길어지니, 지금은 SQL이라는 언어만 소개하고 넘어가겠다.
NoSQL
NoSQL 데이터베이스는 말 그대로 SQL을 사용하지 않는 데이터베이스이다. 이러한 NoSQL 데이터베이스는 종류별로 데이터를 보관하는 방식이 다르고, 접근하는 방식이 다르기 때문에 사용하는 데이터베이스마다 개별로 사용법을 알아두어야 한다.
NoSQL에는 대표적으로 MongoDB, Redis, AWS Dynamo DB가 있고 이번에는 이 중에 제일 잘 알려진 MongoDB를 기준으로 간단하게 소개해보겠다.
MongoDB에서는 테이블 대신 Document와 Document의 집합인 Collection으로 데이터를 보관한다. Document는 MongoDB에서 부여하는 고유한 ID값으로 구분할 수 있고, Document 내부에는 JSON 데이터 형식으로 자유롭게 정보를 저장할 수 있다. Collection은 이러한 Document의 집합, 즉 테이블의 역할을 수행한다.
NoSQL 데이터베이스의 특징으로는 빠른 연산 성능이다. 데이터 간의 복잡한 관계 연산이나 무결성 제약 조건을 포기한 대가로 RDBMS와 비교하여 굉장히 빠른 조회 및 삽입 연산이 가능하다. 하지만 데이터 무결성이 보장되지 않고, 데이터가 쉽게 수정될 수 있기 때문에 안정적이고 오류에 민감한 서비스에는 사용하기 어렵다.
어떤 DBMS를 사용해야 할까?
오늘은 이렇게 두가지 DBMS에 대해 알아보았다. 두 특징을 한 번 마무리 정리해보자면
| RDBMS | NoSQL | |
| 데이터 구조 | 엄격한 스키마, 테이블 구조 | 유연한 구조 (JSON/Document 등) |
| 장점 | 데이터 무결성, 제약 조건 | 높은 확장성, 빠른 읽기/쓰기 성능 |
| 추천 서비스 | 금융, 결제, 회원 관리 등 오류가 없어야 하는 서비스 | SNS, 실시간 채팅/로그, 빅데이터 등 대용량 연산이 필요한 서비스 |
어떤 DBMS를 사용해야하는지에 대한 정답은 없다. 서비스에 완벽하게 들어맞는 데이터베이스를 구축할 수는 없기 때문이다. 따라서 DBMS의 특징을 잘 알아두고, 내가 관리하는 데이터의 특성에 따라 데이터베이스를 선택하면 된다.
꼭 하나의 DBMS를 사용해야하는 법도 없다. 회원관리는 RDBMS로, 실시간 채팅 및 로그 관리는 NoSQL 데이터베이스로 사용하는 유연한 아키텍처도 고민해볼 법 하다.
'코딩 > 하루 1 CS' 카테고리의 다른 글
| [하루 1 CS] 데이터베이스 4 - 데이터베이스 설계 과정 (0) | 2026.06.16 |
|---|---|
| [하루 1 CS] 데이터베이스 3 - 테이블의 연관 관계 (0) | 2026.06.15 |
| [하루 1 CS] 데이터베이스 2 - 테이블의 키 (0) | 2026.06.13 |
| [하루 1 CS] 시작 (0) | 2026.06.11 |