데이터를 저장하는 용도로 쓰이는 RDB, NoSQL의 차이점을 데이터 관점에서 정리해보고자 합니다.
데이터를 저장 합니다.
파일시스템부터 RDB, NoSQL 까지의 스토리를 볼 수 있다고 생각하는데요.
그런 점에서 RDB의 필요이유, 사용이유들도 있는 만큼 NoSQL도 등장 배경이 있습니다.
각자 여러 장점이 있고, NoSQL과 데이터 관점에서 비교하면서 정리해 보고자 합니다.
(학습자로서 작성한 글입니다. 첨언도 감사히 받겠습니다.)
NoSQL과 차이 관점에서 RDB는
- 트랜잭션을 통해 데이터의 무결성을 보장합니다.
- 테이블 간 관계를 통한 조인 등의 복잡한 조건이 포함된 데이터 검색이 가능합니다.
데이터에도 종류가 있습니다.
RDB는 정형 데이터, NoSQL은 비정형 데이터를 저장 합니다.
정형 데이터는 구조화된 데이터로 정해진 구조에 맞춰 저장되는 데이터입니다.
여기서 정해진 구조는 스키마로, 스카마는 쉽게 보면, 테이블의 컬럼에 데이터 타입, NN 허용 여부 등이 정해진 걸 볼 수 있습니다.
비정형 데이터는 이미지, 동영상 등이 있을 수 있습니다.
영상의 길이가 다를 수 있겠지요.
RDB에서 스키마에 따른 정해진 데이터만 저장하기에 비정형 데이터는 비효율적일 수 있습니다.
SNS 등의 활발한 사용 증가 하는 요즘, 비정형 데이터가 증가한 상황에서 NoSQL이 RDB 보다 효율적으로 사용할 수 있습니다.
스키마와 트랜잭션 등을 포기했기 때문에 RDB의 강점인 안정성, 일관성 등을 유지하기 위한 기능들이 없이 비정형의 데이터를 저장하고 처리합니다.
RDB와 다른 기능으로 인한 NoSQL의 장점은 트랜잭션 등의 기능 없다보니 빠른 검색속도를 가지고 분산 저장 처리 등의 scale out이 장점입니다.
(NoSQL에서도 네오포제이 등은 RDB와 유사한점들이 있어서 제외하고 정리 하겠습니다.)
스키마 : 데이터 베이스 구조와 제약조건에 관한 전반적인 명세를 기술한 정보입니다.
정형데이터가 저장된다는 의미는, 저장 될 데이터에 대해 유효한 값만을 허용한다고 봅니다.
(예시는 이해 용도로만 생각해 주세요. 기술적으로 보완하는 등의 방법들이 가능하거나, RDB를 써도 추가 보완점들이 있을 수 있습니다.)
RDB에서의 의미가 있어서 사용되는 기능들이 비정형 데이터를 빠르게 처리하기 위해 감안되어 NoSQL을 사용합니다.
NoSQL은 데이터의 무결성의 보장이 안 되어 중복이 많다 보니, 조회 외의 update 등의 처리작업에는 비효율적입니다.
중복된 데이터로 데이터 자체도 비효율적으로 담고 있을 수 있지만, 정규화를 통해 관계를 갖고 분리된 테이블의 JOIN을 사용하고, 이상현상을 방지합니다.
- 이상현상은 삽입이상, 갱신이상, 삭제이상이 있습니다.
위 현상이 발생하면, 불필요하게 null이 추가 입력되야 한다거나, 중복이 발생한다거나, 다른 데이터 삭제로 인한 필요 데이터 까지 삭제되는 일이 발생합니다.
정규화를 통해 데이터들을 효율적으로 관리하고, 중요 데이터를 보관할 수 있습니다.
이런 기능들이 의미가 있어 정형데이터를 저장하는 RDB를 사용하지만,
비정형 데이터 처리면에서는 NoSQL의 장점이 있습니다.