RDB vs NoSQL

sally·2022년 9월 20일
0

데이터를 저장하는 용도로 쓰이는 RDB, NoSQL의 차이점을 데이터 관점에서 정리해보고자 합니다.

데이터를 저장 합니다.

파일시스템부터 RDB, NoSQL 까지의 스토리를 볼 수 있다고 생각하는데요.
그런 점에서 RDB의 필요이유, 사용이유들도 있는 만큼 NoSQL도 등장 배경이 있습니다.

각자 여러 장점이 있고, NoSQL과 데이터 관점에서 비교하면서 정리해 보고자 합니다.
(학습자로서 작성한 글입니다. 첨언도 감사히 받겠습니다.)

NoSQL과 차이 관점에서 RDB는

  • 트랜잭션을 통해 데이터의 무결성을 보장합니다.
  • 테이블 간 관계를 통한 조인 등의 복잡한 조건이 포함된 데이터 검색이 가능합니다.


데이터에도 종류가 있습니다.

RDB는 정형 데이터, NoSQL은 비정형 데이터를 저장 합니다.

정형 데이터는 구조화된 데이터로 정해진 구조에 맞춰 저장되는 데이터입니다.
여기서 정해진 구조는 스키마로, 스카마는 쉽게 보면, 테이블의 컬럼에 데이터 타입, NN 허용 여부 등이 정해진 걸 볼 수 있습니다.

비정형 데이터는 이미지, 동영상 등이 있을 수 있습니다.
영상의 길이가 다를 수 있겠지요.

RDB에서 스키마에 따른 정해진 데이터만 저장하기에 비정형 데이터는 비효율적일 수 있습니다.
SNS 등의 활발한 사용 증가 하는 요즘, 비정형 데이터가 증가한 상황에서 NoSQL이 RDB 보다 효율적으로 사용할 수 있습니다.

스키마와 트랜잭션 등을 포기했기 때문에 RDB의 강점인 안정성, 일관성 등을 유지하기 위한 기능들이 없이 비정형의 데이터를 저장하고 처리합니다.
RDB와 다른 기능으로 인한 NoSQL의 장점은 트랜잭션 등의 기능 없다보니 빠른 검색속도를 가지고 분산 저장 처리 등의 scale out이 장점입니다.
(NoSQL에서도 네오포제이 등은 RDB와 유사한점들이 있어서 제외하고 정리 하겠습니다.)



RDB는 NoSQL과 다르게 안정성과 일관성을 어떻게 유지 할까요?

스키마 : 데이터 베이스 구조와 제약조건에 관한 전반적인 명세를 기술한 정보입니다.

정형데이터가 저장된다는 의미는, 저장 될 데이터에 대해 유효한 값만을 허용한다고 봅니다.
(예시는 이해 용도로만 생각해 주세요. 기술적으로 보완하는 등의 방법들이 가능하거나, RDB를 써도 추가 보완점들이 있을 수 있습니다.)

  • varchar(50) : 1000개의 영어알파벳이 저장 될 수 없습니다.
    • 게시글 등에서 다양한 글과 정보들이 입력 될 수 있는데요.
    • 이 때 악의적인 프로그래밍 연산관련된 스크립트가 입력되어 DB나 시스템에서 글작성 외의 의미 갖거나 시스템 연산에 적용되어 시스템 장애나 보호되야 할 사용자의 정보 노출등의 위험도가 높아집니다.
    • 간단하게 짧은 단위의 데이터 입력값만을 허용하면, 그런 위험도는 낮아지겠죠.
  • 유효한 값이 들어옴으로써, 정해진 데이터들이 유지될 때, 일관성을 가질 수 있습니다.
    • 만일, 제가 계좌 잔액 10000원이 있고, 로또 당첨되어 10억 입금 요청을 했을 때, 계좌 잔액은 10억 10000원이 됩니다.
    • 그런데 시스템 장애로 1000원만 남아있다면 어떨까요?
    • 트랜잭션은 중간 연산결과 과정에서의 불확실성을 없애거나, 장애 발생시 원복 상태로 우선 돌리거나, 입력된 데이터의 지속성을 위해 장애 발생시 후에도 저장된 데이터를 유지하게 해줍니다.

RDB에서의 의미가 있어서 사용되는 기능들이 비정형 데이터를 빠르게 처리하기 위해 감안되어 NoSQL을 사용합니다.


NoSQL은 데이터의 무결성의 보장이 안 되어 중복이 많다 보니, 조회 외의 update 등의 처리작업에는 비효율적입니다.

중복된 데이터로 데이터 자체도 비효율적으로 담고 있을 수 있지만, 정규화를 통해 관계를 갖고 분리된 테이블의 JOIN을 사용하고, 이상현상을 방지합니다.

  • 이상현상은 삽입이상, 갱신이상, 삭제이상이 있습니다.

위 현상이 발생하면, 불필요하게 null이 추가 입력되야 한다거나, 중복이 발생한다거나, 다른 데이터 삭제로 인한 필요 데이터 까지 삭제되는 일이 발생합니다.

정규화를 통해 데이터들을 효율적으로 관리하고, 중요 데이터를 보관할 수 있습니다.



이런 기능들이 의미가 있어 정형데이터를 저장하는 RDB를 사용하지만,
비정형 데이터 처리면에서는 NoSQL의 장점이 있습니다.

profile
sally의 법칙을 따르는 bug Duck

0개의 댓글