목차
1. RDB란 무엇일까?
2. NoSQL이란 무엇일까?
3. RDB와 NoSQL 차이점
1. RDB란 무엇일까?
RDB(Relational Database)는 관계형 데이터베이스라 부른다.
RDB는 데이터를 여러 테이블로 구조화한 방식으로 테이블들을 기본키(Primary Key) 또는 외래키(Foreign Key)를 통해 Join 할 수 있다. 이러한 고유한 식별자는 테이블들 사이의 다양한 관계를 나타낸다.
은행 이체를 예시로 들어보겠습니다.
만약 내가 1만 원을 내 계좌에서 다른 사람 계좌로 이체한다고 해보자.
이 돈은 내 계좌에서 빠져나가고, 다른 사람 계좌에 들어가는 것이다. 그리고 이 두 계좌는 서로 다른 표에 정보가 기록된다. 그리고 이 정보들은 정확해야 한다. 예를 들어, 내 계좌에서 1만 원을 빼갔는데, 다른 사람 계좌에는 5천 원만 들어가 있다면 문제가 생긴다.
그래서 RDB는 각 계좌에 고유한 번호를 준다. 이렇게 하면 각각의 정보를 제대로 연결해서 볼 수 있다. 그래서 우리는 정확한 이체 내역을 추적할 수 있게 된 것이다.
2. NoSQL이란 무엇일까?
NoSQL(Non-Relational Operational DataBase)은 비관계형 데이터베이스라 부른다.
NoSQL 데이터베이스는 JSON 문서와 같은 하나의 데이터 구조 안에 데이터를 보관하며, RDB와 달리 테이블 간 관계를 정의하지 않는다. 데이터 테이블은 그냥 하나의 테이블이며 테이블 간의 관계를 정의하지 않아 일반적으로 테이블 간 Join도 불가능하다. 또한, 정보가 다양한 서버에 복제 및 저장되며, 서버는 원격이거나 로컬일 수 있다. 그러므로 데이터의 가용성과 신뢰성이 유지된다. 데이터 중 일부가 오프라인 상태가 되어도 데이터베이스의 나머지 부분은 계속 실행될 수 있다.
RDB와 비교하기 위해 은행 이체로 예시를 들어보겠습니다.
이체하는 사람의 이름, 이체 금액, 받은 사람의 이름을 하나의 큰 상자에 넣는다고 생각해 보자.
이 상자에는 위 글과 관련된 정보가 모두 들어가 있다. 이 상자 안에는 이체하는 사람과 받는 사람의 이름과 이체 금액이 들어있지만, 이 정보들은 함께 모여있는 것이지 서로 직접적인 관계가 없다. 만약 우리가 이체하는 사람들이 많아진다면, 그냥 상자를 하나 더 추가하면 된다. RDB처럼 새로운 테이블을 만들거나 복잡한 과정을 거치지 않아도 된다. 한 상자에 모든 정보가 모여있으니 이체 정보를 빠르게 처리할 수 있고, 정보를 바로 꺼내서 사용할 수 있어 이체 과정이 빠르게 이루어질 수 있다.
이런 비관계형 데이터베이스 설계는 스키마가 필요하지 않으므로 일반적으로 비정형인 대규모 데이터 세트를 관리할 수 있는 신속한 확장성을 제공한다.
3. RDB와 NoSQL 차이점
1. 데이터 구조
- RDB : 관계형 데이터 모델을 기반으로 하는 데이터베이스 시스템이며, 테이블 형태로 저장되며, 관계를 유지하고 이를 사용하여 데이터를 저장하고 쿼리 한다.
- NoSQL : 비관계형 데이터 모델을 사용하며, 키, 값, 문서, 그래프 등의 다양한 데이터 모델을 사용하는 데이터베이스 시스템이며 다양한 형태로 저장된다.
2. 확장성
- RDB : 수직 확장에 적합하며, 단일 서버의 자원의 한계에 따라 성능이 결정된다.
- NoSQL : 수평 확장에 적합하며, 서버를 추가하여 처리 능력을 늘린다.
3. 일관성
- RDB : ACID(원자성, 일관성, 고립성, 지속성) 트랙잭션을 지원하여 데이터의 일관성을 보장한다.
- NoSQL : 일관성 모델에 따라 데이터 일관성을 제어한다.
따라서, 데이터 일관성이 중요한 시스템에서는 RDB가 적합하다.
4. 유연성
- RDB : 미리 정의된 데이터 스키마를 사용하므로, 데이터 구조 변경이 어렵다.
- NoSQL : 스키마 없이 데이터를 저장하므로, 데이터 구조를 변경할 수 있다.
5. 쿼리 언어
- MySQL, PostgreSQL, Oracle 등
- MongoDB, Cassandra, Redis 등