관계형 데이터베이스와 비관계형 데이터베이스 차이에 대하여
관계형 데이터베이스와 비관계형 데이터베이스의 차이를 알아보자!
지금까지 과제를 진행해오며 사용한 FireBase
와 Supabase
가 있다. 이번에 Supabase
를 사용하면서 관계형 데이터베이스에 대해 간략히 알게되었는데, 관계형 데이터베이스와 비관계형 데이터베이스의 개념에 대해 알아보았다.
관계형 데이터베이스 (RDBMS)
관계형 데이터베이스는 테이터를 테이블에 저장한다. 이 테이블은 행(레코드)과 열(필드)로 구성되며, 여러 테이블간에 관계를 설정할 수 있음. 데이터를 조회하거나 조작할 때, SQL(Structured Query Language)
이라는 언어를 사용한다.
1-1) 구조
-
테이블
: 데이터가 저장되는 기본 단위로, 행과 열로 구성된다. -
행
: 데이터의 한 레코드(한 줄)를 나타내며, 예를들면 유저 한 명의 정보를 저장함 -
열
: 각 레코드의 속성을 나타내며, 예를 들면 유저의 이름, 이메일 등을 저장함 -
관계
: 테이블 간의 연결을 통해 데이터를 연관 시킨다.
1-2) 예시
아래의 예시가 대표적인 관계형 데이터 베이스이다.
- MySQL
- PostgreSQL
- Oracle
- SQL Server
1-3) 특징
-
스키마
: 데이터를 저장하기 전에 테이블 구조와 데이터 유형을 미리 정의해야 한다. -
정규화
: 데이터를 중복 없이 효율적으로 저장하기 위해 테이블을 분리하고, 관계를 정의한다. -
트랜잭션
: 데이터의 일관성과 무결서을 보장하는 ACID 특성(원자성,일관성,고립성,지속성)을 지원한다.
1-4) 비유
관계형 데이터베이스는 엑셀 스프레드시트에 비유할 수 있다.
- 엑셀에서 정보를 관리할 때, 각 시트가 하나의 테이블이라고 생각해본다.
- 시트에는 행과 열이 있어서, 데이터가 정확한 칸에 맞춰짐
- 여러 시트(테이블) 간의 관계를 설정하면, 다른 시트에 있는 데이터를 연결해 *함수로 계신할 수 있다. 이처럼 관계형 데이터베이스도 데이터를 구조화하고 테이블 간의 복잡한 관계를 처리할 수 있음
비관계형 데이터베이스 (NoSQL)
비관계형 데이터베이스는 데이터를 유연한 형식으로 저장한다. 테이블과 같은 고정된 형식이 없고 문서, 키-값, 그래프, 열등 다양한 방식으로 데이터를 저장할 수 있음
2-1) 구조
-
문서(Document)
: JSON이나 XML과 같은 형식으로 데이터를 저장한다. -
키-값(Key-value)
: 하나의 키와 그에 대응하는 값으로 데이터를 저장한다. -
그래프(Graph)
: 노드와 엣지로 구성된 데이터 구조로, 데이터 간의 관계를 그래프로 표현한다. -
열(Column)
: 각 데이터 항목을 개별적으로 저장하는 구조로, 대규모 데이터 처리에 효율적이다.
2-2) 예시
아래의 예시가 대표적인 비관계형 데이터베이스이다.
- MongoDB
- Redis
- Firebase
2-3) 특징
-
유연한 스키마
: 사전 정의된 스키마가 없어서 데이터를 자유롭게 추가 변경이 가능함 -
확장성
: 수평적 확장이 용이해 대규모 데이터 처리에 적함함 -
데이터 모델
: JSON, XML, 바이너리 형식으로 데이터를 저장할 수 있음
2-4) 비유
비관계형 데이터베이스는 메모장에 비유할 수 있음
- 메모장은 자유롭게 글을 쓰고, 필요한 정보를 언제든 추가하거나 수정이 가능함
- 페이지(문서)에 무슨 내용이 들어갈지 정해진 규칙이 없음. 데이터를 저장할 때 유연하고, 필요에 따라 쉽게 구조를 변경할 수 있음
차이점
-
구조
- 관계형 데이터베이스: 테이블 구조(행과 열)을 따름.
- 비관계형 데이터베이스: 문서,키-값,그래프 등 다양한 구조가 있음
-
스키마
- 관계형 데이터베이스: 데이터를 저장하기 전에 엄격한 스키마를 정의
- 비관계형 데이터베이스: 유연한 스키마로 데이터를 자유롭게 추가 및 수정 가능
-
확장성
- 관계형 데이터베이스: 주로 수직적 확장(서버를 업그레이드)
- 비관계형 데이터베이스: 수평적 확장(서버를 여러 대 추가)이 용이함
-
관계
- 관계형 데이터베이스: 테이블 간의 복잡한 관계를 쉽게 표현 가능 (조인)
- 비관계형 데이터베이스: 데이터를 독립적으로 저장하므로 복잡한 관계 표현에 덜 적합
각 데이터베이스는 언제 사용할까
둘의 데이터 베이스의 색깔이 완전 다르고, 장단점 또한 있기에 어떤 상황이냐에 따라 다르게 선택할 수 있는 것 같다.
4-1) 관계형 DB
- 복잡한 쿼리와 조인이 필요한 경우: 여러 테이블 간의 관계를 자주 활용해야 할 때
- 데이터 물결성이 중요한 경우: 엄격한 스키마와 트랜잭션이 필요한 상황
- 비유: 여러 시트(테이블) 간의 계산과 데이터를 연결해야 하는 *엑셀 스프레드시트 작업과 유사함
4-2) 비관계형 DB
- 대규모 데이터를 처리해야하는 경우: 많은 양의 데이터를 빠르게 저장하고 검색하고 싶을 때
- 유연한 데이터 구조가 필요한 경우: 데이터를 자주 수정하거나 다양한 형식의 데이터를 저장할 때
- 비유: 필요한 내용을 마음대로 기록하고 수정할 수 있는 )메모장*과 유사함
마무리
이번에 처음 사용해본 관계형 데이터베이스인 Supabase
는 이전에 사용했던 Firebase
에 비해 설정해줘야 할 것들이 많다고 느껴졌다. 하지만 그만큼 테이블 간의 참조를 통해 데이터 간의 관계를 명확히 정의할 수 있고, 복잡한 쿼리나 데이터 무결성을 유지할 수 있다는 점에서 강력한 도구임을 알게 되었다.