관계형 데이터베이스(RDB)와 NoSQL의 차이: 데이터 모델·스키마·조인·일관성·확장 비교

관계형 데이터베이스(RDB)는 데이터를 행과 열로 이루어진 테이블로 나타내고 SQL로 질의합니다. 테이블끼리 조인한 복잡한 질의를 할 수 있고, 트랜잭션의 ACID 특성과 기본 키·외래 키 같은 제약으로 데이터의 무결성을 엄격하게 유지합니다. NoSQL은 관계형 데이터베이스가 아닌 데이터베이스를 통틀어 가리키는 말로, 키-값형, 문서형, 열 지향형(와이드 컬럼형), 그래프형 등이 있습니다. 대부분은 데이터 형식을 유연하게 하고 여러 서버에 분산해 규모를 늘리기 쉽게 하는 대신, 조인 같은 복잡한 질의나 엄격한 일관성의 일부를 포기합니다. 어느 쪽이 더 낫다기보다 데이터의 형태와 요구하는 성질에 따라 골라 씁니다.

비교 항목관계형 데이터베이스(RDB)NoSQL
데이터 표현 방식행과 열로 이루어진 테이블(릴레이션). 테이블끼리 공통 값(외래 키)으로 연결한다유형에 따라 다르다. 키와 값의 쌍, JSON 같은 문서, 열의 묶음, 정점과 간선으로 이루어진 그래프 등
스키마열 이름과 타입을 미리 정의한다. 바꿀 때는 ALTER TABLE 등으로 테이블 정의를 변경한다미리 엄격하게 정하지 않아도 되는(스키마리스) 제품이 많아, 항목이 다른 데이터도 같은 곳에 넣을 수 있다
질의표준 언어인 SQL로 조건 검색, 집계, 정렬 등을 선언적으로 쓸 수 있다제품별 API나 질의 언어를 쓰는 경우가 많다. SQL과 비슷한 언어를 갖춘 제품도 있다
테이블 조인JOIN으로 여러 테이블을 조합한 질의를 할 수 있다서툰 것이 많다. 함께 읽는 데이터를 하나의 문서나 값에 모아 두는 설계가 많다
트랜잭션과 일관성ACID 특성을 만족하는 트랜잭션으로 여러 행과 테이블의 갱신을 한꺼번에 확정할 수 있다하나의 키나 문서 단위의 갱신에 그치는 제품이나, 복제본 사이에서 갱신이 바로 맞춰지지 않는 결과적 일관성을 허용하는 제품이 많다. ACID 트랜잭션을 갖춘 제품도 있다
확장 방식서버 한 대의 성능을 높이는 스케일 업이 기본. 읽기는 복제본으로 분산할 수 있지만, 쓰기를 많은 서버로 나누기는 어렵다데이터를 키로 나누어 많은 서버에 분산하는 스케일 아웃이 쉽다
정규화정규화해 데이터 중복을 없애고 갱신 시의 이상을 막는다읽기 속도를 우선해 같은 데이터를 중복해서 두는 경우가 많다
적합한 용도회계, 재고, 수발주 등 무결성이 중요하고 데이터의 관계가 복잡한 업무 시스템접근이 매우 많은 웹 서비스의 세션과 캐시, 형태가 정해지지 않은 데이터, 대량의 로그, 사람이나 사물의 연결(그래프)

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

관계형 데이터베이스
돈이나 재고처럼 갱신 도중에 모순이 생기면 곤란한 데이터, 다양한 조건으로 조인·집계하고 싶은 데이터를 다룰 때 적합합니다. 많은 업무 시스템에서 표준적으로 쓰입니다.
NoSQL
데이터의 양이나 접근이 서버 한 대로는 부족할 만큼 많을 때, 데이터의 형태가 제각각이고 자주 바뀔 때, 키로 읽고 쓰기만 하는 단순한 조작이 중심일 때 적합합니다. 목적에 맞는 유형을 고르는 것이 중요합니다.

자주 묻는 질문

NoSQL은 'SQL을 쓰지 않는다'는 뜻인가요?

'Not only SQL(SQL만이 아니다)'의 뜻으로 설명되는 경우가 많으며, SQL을 부정한다기보다 관계형 데이터베이스 이외의 선택지를 통틀어 가리키는 말로 쓰입니다. 실제로 SQL과 비슷한 질의 언어를 쓸 수 있는 제품도 있습니다.

NoSQL에는 어떤 종류가 있나요?

대표적인 것은 4가지입니다. 키-값형은 키를 지정해 값을 읽고 쓰는 단순한 조작에 특화되어 있습니다. 문서형은 JSON 같은 중첩 구조를 가진 문서를 단위로 저장하며, 문서 안의 항목으로도 검색할 수 있습니다. 열 지향형(와이드 컬럼형)은 행마다 다른 열을 가질 수 있고, 대량의 데이터를 많은 서버에 분산해 쓰는 데 적합합니다. 그래프형은 정점과 간선으로 데이터의 연결을 나타내며, 연결을 따라가는 질의에 적합합니다.

CAP 정리는 이 비교와 어떤 관계가 있나요?

CAP 정리는 여러 서버에 복제본을 두는 분산 데이터베이스가 네트워크가 분단되었을 때 일관성(어느 서버에서 읽어도 최신 값이 반환됨)과 가용성(모든 요청에 응답함)을 동시에 완전히 만족할 수 없음을 보인 것입니다. NoSQL 제품에는 가용성을 우선하고, 시간이 지나면 복제본이 맞춰지는 결과적 일관성을 채택한 것이 많습니다.

하나의 시스템에서 둘 다 쓰는 경우도 있나요?

자주 있습니다. 예를 들어 주문이나 결제처럼 무결성이 중요한 데이터는 관계형 데이터베이스에 두고, 로그인 중인 사용자의 정보(세션)와 자주 읽는 데이터의 캐시는 키-값형에, 상품 설명처럼 형태가 제각각인 데이터는 문서형에 두는 식으로 나누어 씁니다.

이해도 확인

NoSQL이라고 불리는 데이터베이스 중 키-값형의 특징으로 일반적으로 올바른 것은?

  1. A표끼리의 조인이나 부질의를 포함한 복잡한 SQL을 관계형 데이터베이스보다 빠르게 처리할 수 있다
  2. B데이터를 쓰기 전에 모든 열의 이름과 형을 스키마로 엄격하게 정의해야 한다
  3. C키를 지정하여 값을 읽고 쓰는 단순한 조작에 특화되어 있어 여러 서버에 분산하여 규모를 넓히기 쉽지만, 표의 조인 같은 복잡한 질의에는 적합하지 않다
정답과 해설 보기

정답: C. 키를 지정하여 값을 읽고 쓰는 단순한 조작에 특화되어 있어 여러 서버에 분산하여 규모를 넓히기 쉽지만, 표의 조인 같은 복잡한 질의에는 적합하지 않다

NoSQL은 관계형 데이터베이스 이외의 데이터베이스를 통틀어 가리키는 말로, 키-값형, 문서형, 열 지향형(와이드 컬럼형), 그래프형 등이 있습니다. 키-값형은 키(식별자)와 값의 쌍을 저장하고, 키를 지정하여 값을 꺼내는 단순한 조작에 특화되어 있습니다. 데이터를 키로 나누어 여러 서버에 분산하기 쉬우므로, 접근량이 매우 많은 웹 서비스에서 로그인 중인 이용자의 정보(세션) 등을 저장하는 데 사용됩니다. 그 반면 값의 내용에 의한 검색이나 표의 조인 같은 복잡한 질의는 서툴러서 애플리케이션 쪽에서 궁리해야 합니다. 값의 형식을 미리 엄격하게 정해 둘 필요가 없는(스키마리스) 제품이 많은 것도 특징입니다. 또한 분산된 복제본 사이에서 갱신이 바로는 맞춰지지 않는 결과적 일관성을 허용하는 제품도 있습니다.

여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?

  1. A서버 간 네트워크가 분단되었을 때는 어느 서버에서 읽어도 최신 값이 반환되는 일관성과 모든 요청에 응답하는 가용성을 동시에 완전히 만족할 수 없다
  2. B일관성, 가용성, 분단 내성의 세 가지는 적절히 설계하면 항상 동시에 만족할 수 있다
  3. C분단 내성이란 서버 간 네트워크가 분단되지 않도록 회선을 이중화하는 것을 말한다
정답과 해설 보기

정답: A. 서버 간 네트워크가 분단되었을 때는 어느 서버에서 읽어도 최신 값이 반환되는 일관성과 모든 요청에 응답하는 가용성을 동시에 완전히 만족할 수 없다

CAP 정리는 분산된 데이터베이스가 일관성(Consistency: 어느 서버에서 읽어도 최신 쓰기의 결과가 반환된다), 가용성(Availability: 고장 나지 않은 서버는 모든 요청에 응답을 반환한다), 분단 내성(Partition tolerance: 서버 간 통신이 끊겨도 시스템으로서 계속 동작한다)의 세 가지를 동시에 모두 완전하게는 만족할 수 없음을 보인 것입니다. 네트워크 분단은 현실에서 피할 수 없으므로, 요점은 분단이 일어났을 때 일관성을 우선하여 일부 요청에 대한 응답을 멈출지, 가용성을 우선하여 오래된 값을 반환하는 것을 허용하고 응답을 계속할지를 골라야 한다는 것입니다. 분단이 일어나지 않았을 때는 일관성과 가용성을 둘 다 만족할 수 있습니다. NoSQL 제품 중에는 가용성을 우선하여 시간이 지나면 복제본이 맞춰지는 결과적 일관성을 채택한 것이 많습니다. 분단 내성은 회선을 이중화하는 것이 아니라 분단이 일어나도 동작을 계속하는 성질입니다.

관계형 데이터베이스의 표를 정규화하는 주된 목적은?

  1. A표의 수를 줄여서 어떤 검색이든 조인 없이 빠르게 할 수 있게 하는 것
  2. B데이터를 암호화하여 허가받지 않은 이용자가 읽지 못하게 하는 것
  3. C데이터의 중복을 없애고, 갱신했을 때 내용이 서로 어긋나는 등의 이상을 막는 것
정답과 해설 보기

정답: C. 데이터의 중복을 없애고, 갱신했을 때 내용이 서로 어긋나는 등의 이상을 막는 것

정규화는 열 사이의 함수 종속(어떤 열의 값이 정해지면 다른 열의 값이 하나로 정해지는 관계)에 근거하여 표를 분할하고, 같은 사실이 여러 곳에 기록되지 않게 하는 설계 절차입니다. 예를 들어 사원 표의 각 행에 부서명까지 적어 두면, 부서명을 바꿀 때 그 부서 사원의 행을 모두 고쳐 써야 하며, 고쳐 쓰다가 빠뜨리면 내용이 서로 어긋납니다(갱신 이상). 그 밖에도 사원이 아직 없는 부서를 등록할 수 없다(삽입 이상), 마지막 한 명의 사원을 삭제하면 부서 정보까지 사라진다(삭제 이상) 같은 문제가 생깁니다. 부서 정보를 부서 표로 나누어 두면 부서명은 한 곳만 고치면 됩니다. 한편 표가 나뉘는 만큼 검색할 때 조인이 늘어나므로, 정규화하면 검색이 빨라진다고는 할 수 없습니다.

  1. 읽기가 대부분을 차지하는 집계용 데이터베이스에서 정규화한 표를 일부러 하나로 합쳐 같은 데이터를 중복해서 갖게 하는 설계(반정규화)를 하는 경우가 있다. 이 설계의 장점과 단점의 조합으로 올바른 것은?
  2. 트랜잭션이 가져야 할 ACID 특성 중 '계좌 A에서 출금하여 계좌 B에 입금하는 이체 처리가, 도중에 장애가 일어나도 둘 다 수행되거나 전혀 수행되지 않거나 둘 중 하나가 된다'는 성질은?

데이터베이스 기초 문제 풀기

주요 용어 설명

관계형 데이터베이스(Relational Database)
데이터를 행과 열로 이루어진 표(관계, 릴레이션)로 나타내고, 표끼리를 공통의 값으로 연관 지어 다루는 데이터베이스. RDB라고도 한다. SQL로 질의와 갱신을 수행하며, 기본 키나 외래 키 등의 제약으로 데이터의 정합성을 유지한다.
NoSQL
관계형 데이터베이스 이외의 데이터베이스의 총칭. 키-값형, 문서형, 열 지향형, 그래프형 등이 있다. 여러 서버에 분산하여 규모를 넓히기 쉽고 데이터 형식을 유연하게 할 수 있는 제품이 많은 반면, 표의 조인 같은 복잡한 질의나 엄밀한 일관성은 서툰 경우가 많다.
SQL
관계형 데이터베이스에서 표의 정의, 데이터의 검색·추가·갱신·삭제, 권한의 제어 등을 수행하기 위한 표준 언어. ISO/IEC(일본에서는 JIS)로 규격화되어 있다. SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, GRANT 등의 문이 있다.
트랜잭션(Transaction)
데이터베이스에 대한 일련의 처리를 묶어서 하나의 단위로 다루는 것. COMMIT으로 처리 결과를 확정하고, ROLLBACK으로 시작 전의 상태로 되돌린다. 원자성·일관성·고립성·지속성(ACID 특성)을 만족하도록 DBMS가 락이나 로그를 사용하여 관리한다.
ACID 특성(ACID Properties)
트랜잭션이 만족해야 할 4가지 성질의 머리글자. 원자성(Atomicity: 모두 실행되거나 전혀 실행되지 않거나), 일관성(Consistency: 정합성 제약을 계속 만족한다), 고립성(Isolation: 동시에 실행해도 서로 간섭하지 않는다), 지속성(Durability: 커밋한 결과는 장애가 나도 사라지지 않는다).
정규화(Normalization)
관계형 데이터베이스의 표를 열 사이의 함수 종속에 근거하여 분할하고, 같은 사실이 여러 곳에 기록되지 않게 하는 설계 절차. 데이터의 중복을 없애고 갱신 이상·삽입 이상·삭제 이상을 막는다. 제1정규형부터 제3정규형, 보이스-코드 정규형 등의 단계가 있다.
기본 키(Primary Key)
표 안의 한 행을 유일하게 식별하기 위한 열 또는 열의 조합. 값이 중복되지 않고 NULL을 포함하지 않는다는 제약을 가진다. 행을 유일하게 식별할 수 있는 최소한의 열 조합(후보 키) 중에서 하나를 골라 기본 키로 한다.
외래 키(Foreign Key)
다른 표의 기본 키(또는 유일한 열)를 참조하는 열. 참조 대상에 존재하는 값이나 NULL만 넣을 수 있다는 참조 무결성 제약에 의해, 존재하지 않는 행을 가리키는 데이터가 들어가는 것을 막는다. 참조 대상의 행을 삭제·갱신했을 때의 동작(거부, 연쇄 삭제 등)도 지정할 수 있다.

관련 비교