2. 관계형 DB(RDBMS)와 비관계형 DB(NoSQL)의 정의
1. 관계형 DB(RDBMS)와 비관계형 DB(NoSQL)의 정의
관계형 데이터베이스(RDBMS)는 데이터를 행과 열이 있는 격자 모양의 표(Table) 형태로 정리하고, 여러 테이블 간의 연관 관계를 바탕으로 데이터를 관리하는 시스템입니다.
비관계형 데이터베이스(NoSQL)는 전통적인 표 형태를 사용하지 않고, 데이터의 구조를 고정하지 않은 채 자유로운 형식(문서, 키-값, 그래프 등)으로 데이터를 저장하는 시스템입니다.
2. 두 가지 데이터베이스가 모두 필요한 이유
과거에는 RDBMS만으로도 대부분의 프로그램을 만들 수 있었습니다. 하지만 인터넷 서비스가 폭발적으로 성장하면서 다루어야 하는 데이터의 종류와 양이 완전히 달라졌고, 이에 따라 상호 보완적인 두 기술이 모두 필요해졌습니다.
실제 개발에서 해결하는 문제
RDBMS가 해결하는 문제 (정확성): 은행 송금이나 쇼핑몰 결제처럼 데이터의 단 1원, 단 한 글자도 틀리면 안 되는 상황에서, 엄격한 규칙을 적용해 데이터의 오류와 중복을 완벽히 차단합니다.
NoSQL이 해결하는 문제 (유연성과 속도): 소셜 미디어(SNS)의 실시간 댓글, 알림, 대규모 로그 데이터처럼 정해진 형식이 없고 초당 수만 건씩 쏟아지는 대용량 데이터를 막힘없이 빠르게 저장하고 확장합니다.
3. 반드시 알아야 할 핵심 개념
고정 스키마 (Fixed Schema): RDBMS에서 사용하는 개념으로, 데이터를 넣기 전에 표의 제목(열)과 데이터 종류를 미리 엄격하게 정해놓은 데이터 규칙 책입니다.
동적 스키마 (Dynamic Schema): NoSQL에서 사용하는 개념으로, 사전에 규칙을 정하지 않고 데이터가 들어올 때마다 서로 다른 구조의 데이터를 자유롭게 받아들이는 방식입니다.
수직 확장(Scale-up): 컴퓨터 자체의 성능(CPU, 메모리)을 더 좋은 것으로 업그레이드하여 DB 처리 능력을 높이는 방식입니다. (RDBMS가 주로 사용)
수평 확장(Scale-out): 저렴한 컴퓨터 여러 대를 네트워크로 연결하여 데이터를 분산 저장함으로써 DB 처리 능력을 높이는 방식입니다. (NoSQL이 주로 사용)
4. 함께 알아야 하는 주변 기초 개념
JSON (JavaScript Object Notation): NoSQL(특히 문서형 DB)에서 데이터를 저장할 때 가장 많이 쓰는 포맷으로,
{ "이름": "값" }형태로 이루어진 가볍고 읽기 쉬운 텍스트 형식입니다.조인 (Join): RDBMS에서 서로 분리되어 있는 두 개 이상의 표를 결합하여 하나의 데이터로 합쳐서 보여주는 연산입니다.
대규모 트래픽 (High Traffic): 웹사이트나 앱에 짧은 시간 동안 엄청나게 많은 사용자가 동시에 접속하여 서버에 부하를 주는 상태를 뜻합니다.
5. 데이터 저장 처리 흐름 비교
새로운 상품 정보(상품명, 가격, 그리고 일부 상품에만 있는 '색상' 옵션)를 저장할 때 두 시스템의 처리 단계 차이입니다.
관계형 DB (RDBMS)의 흐름
구조 검사: 데이터가 들어오면 미리 만들어 둔 상품 테이블의 열(상품명, 가격) 규격과 일치하는지 확인합니다.
예외 발생: 테이블에 '색상'이라는 열이 미리 만들어져 있지 않다면, RDBMS는 데이터 입력을 거부하고 에러를 발생시킵니다.
구조 수정 후 저장: 관리자가 테이블에 '색상' 열을 새로 추가하는 공사를 한 뒤에야 비로소 데이터가 저장됩니다.
비관계형 DB (NoSQL)의 흐름
구조 무시: 데이터가 들어오면 사전 검사 없이 데이터를 있는 그대로 받아들입니다.
즉시 저장: 어떤 상품은 [상품명, 가격]만 저장하고, 어떤 상품은 [상품명, 가격, 색상]을 동시에 넣어 하나의 서류 봉투(Document)처럼 곧바로 저장합니다.
6. RDBMS와 NoSQL의 구조 예시
동일한 회원 정보를 두 종류의 데이터베이스가 각각 저장하는 물리적 형태의 예시입니다.
RDBMS 예시 (표 형태)
user_id | name | age |
|---|---|---|
1 | 홍길동 | 25 |
NoSQL 예시 (JSON 문서 형태)
{
"user_id": 1,
"name": "홍길동",
"age": 25,
"hobbies": ["독서", "축구"]
}
7. 예시 구조 설명
RDBMS 구조: 고정된 표 형태입니다. 만약 홍길동에게 '취미(hobbies)' 데이터를 추가하고 싶다면, 테이블 전체에 '취미'라는 세로줄(Column)을 새로 파야만 입력할 수 있습니다. 나이가 없는 다른 회원이 오더라도 나이 칸을 비워둔 채(NULL) 공간을 차지해야 합니다.
NoSQL 구조: 자유로운 문서 형태입니다. 표 형식을 따르지 않기 때문에 홍길동 데이터에만 취미(hobbies) 배열을 바로 집어넣을 수 있습니다. 다른 회원의 데이터 구조가 이것과 완전히 달라도 상관없이 같은 공간에 저장됩니다.
8. 초보자가 자주 실수하는 오해와 비교
"NoSQL이 최신 기술이니 RDBMS보다 무조건 좋은가요?"
절대 아닙니다. 기술의 우열이 아니라 용도의 차이입니다. 실무에서는 서비스의 특성에 맞춰 두 가지를 철저히 구분하여 사용하며, 하나의 서비스 안에서 회원/결제는 RDBMS로 처리하고 알림/로그는 NoSQL로 나누어 동시에 쓰기도 합니다.
비교 항목 | 관계형 DB (RDBMS) | 비관계형 DB (NoSQL) |
|---|---|---|
데이터 구조 | 엄격함, 고정된 표 형태 | 자유로움, 다양한 형태(JSON 등) |
데이터 관계 | 테이블 간 조인(Join) 가능 | 기본적으로 조인 불가능 |
가장 큰 장점 | 데이터의 높은 정확성과 안정성 | 대용량 데이터 처리 및 빠른 확장 |
추천 명세 | 금융, 결제, 회원 관리 등 | SNS 실시간 피드, 로그, 빅데이터 등 |
9. 핵심 내용 요약
RDBMS는 명확한 규칙을 가진 표 형태로 데이터를 관리하여 정확성이 최우선인 서비스에 적합합니다. 반면 NoSQL은 고정된 규칙 없이 자유로운 형태로 데이터를 관리하여 정형화되지 않은 대량의 데이터를 빠르게 처리하고 시스템을 유연하게 확장해야 하는 서비스에 적합합니다.
10. 핵심 용어 정리
관계형 데이터베이스(RDBMS) = 데이터를 행과 열로 이루어진 표 형태로 저장하고 관리하는 데이터베이스 시스템
비관계형 데이터베이스(NoSQL) = 고정된 표 구조를 사용하지 않고 다양한 형태로 데이터를 저장하는 데이터베이스 시스템
고정 스키마 = 데이터베이스에 데이터를 입력하기 전에 미리 정해 놓아야 하는 엄격한 구조 규칙
동적 스키마 = 정해진 틀 없이 데이터 구조를 언제든지 자유롭게 변경하여 저장할 수 있는 방식
수평 확장 = 여러 대의 컴퓨터를 연결하여 데이터베이스의 전체 처리 능력을 키우는 방식
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD