관계형 데이터베이스와 비관계형 데이터베이스 차이에 대하여
관계형 데이터베이스와 비관계형 데이터베이스의 차이를 알아보자!
지금까지 과제를 진행해오며 사용한 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에 비해 설정해줘야 할 것들이 많다고 느껴졌다. 하지만 그만큼 테이블 간의 참조를 통해 데이터 간의 관계를 명확히 정의할 수 있고, 복잡한 쿼리나 데이터 무결성을 유지할 수 있다는 점에서 강력한 도구임을 알게 되었다.