본문 바로가기
Infra Engineering/DBMS

[DBMS] SQL과 NoSQL의 차이점

by DevBaek 2021. 9. 15.

SQL vs NoSQL

1. SQL

SQL이란 (Structured Query Language, 구조화 된 쿼리 언어) 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이며, 관계형 데이터베이스 관리 시스템에서 데이터의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안된 언어입니다.

2. RDBMS

SQL을 사용하는 DBMS는 사용자와 데이터 베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어 입니다. RDBMS는 관계형 데이터베이스 관리 시스템을 의미하며, 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터 베이스입니다. RDBMS에서의 저장 방식은 SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장합니다. 

특징

  • Data를 Column과 Row형태로 저장합니다.
  • 데이터의 분류, 정렬, 탐색속도가 비교적 빠릅니다.
  • Transaction을 통해 작업의 완정성을 보장합니다.
  • 만드시 설정된 스키마 규격에 맞춰야 합니다.
  • 부하의 분산이 어렵습니다.
  • 데이터간의 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용합니다.
  • 테이블간의 관계에서 외래 키를 이용한 테이블 간 join이 가능합니다.
  • 대표적으로는 MySQL, SQLite, Oracle 등이 있습니다.

3. NoSQL

NoSQL이란 (Not Only SQL) RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하고 있습니다. 또한 NoSQL에서는 테이블 간 관계를 정의하지 않습니다. NoSQL은 점점 빅데이터 등장으로 인해 데이터의 일관성을 포기하되 비용을 고려하여 여러 분산 환경에 데이터를 적재하는 Scale-Out을 목표로 등장하였습니다.

특징

  • SQL에서 데이터는 레코드라 칭하지만, NoSQL에서는 문서(documents)라고 칭합니다.
  • NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(같은 테이블)에 추가할 수 있습니다.
  • NoSQL의 documents에는 json 데이터와 비슷한 형태를 가지고 있습니다. 일반적으로 관련 데이터를 동일한 컬렉션에 저장합니다.
  • 데이터 적재 방식으로 인하여, 데이터가 중복되기에 불안정한 측면이 있습니다. (중복된 데이터가 수정될 경우, 모든 컬렉션에서 수행해야 합니다.)
  • 데이터간의 관계를 정의하지 않으므로 테이블간의 join이 불가능합니다.
  • 데이터 분산이 용이하며 성능 향상을 위한 Scale-up 뿐만 아니라, Scale-out또한 가능합니다.
  • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며, 데이터 구조 결정이 어려울 수 있습니다.

1. Key-Value Database

  • Key-Value Database 는 데이터가 Key와 Value의 쌍으로 저장됩니다. Key는 Value에 접근하기 위한 용도로 사용됩니다.
  • Value는 이미지나 비디오 등 다양한 데이터 형태가 담길 수 있습니다.
  • 간단한 API 제공할 만큼 질의의 속도가 굉장히 빠른 편입니다.
  • 대표적인 NoSQL Key-Value 모델에는 Redis, Riak, Amazon Dynamo DB 등이 있습니다.

2. Document Database

  • Document Database 데이터는 Key와 Document의 형태로 저장됩니다.
  • Value는 계층적인 형태인 Document로 저장됩니다.
  • 객체지향에서의 객체와 유사하며, 하나의 단위로 취급되어 저장됩니다.
  • 하나의 객체를 여러 개의 테이블에 나눠 저장할 필요가 없습니다.
  • 객체를 Document의 형태로 바로 저장 가능하기 때문에, 객체-관계 매핑이 필요하지 않습니다.
  • Key-Value 모델과 동일하게 검색에 최적화되어 있습니다.
  • 사용이 번거롭고 쿼리가 SQL과는 다른 점이 있습니다.
  • 질의의 결과가 Json이나 XML 형태로 출력됩니다.
  • 대표적인 NoSQL Key-Document 모델에는 MongoDB, CouthDB 등이 있습니다.

3, Wide Column Database

  • Column-family 모델 기반의 Database입니다.
  • Key-Value는 값을 이용해 필드를 결정했으나, 해당 모델은 키에서 필드를 결정합니다.
  • 키는 Row(키 값)와 Column-family, Column-name을 가지고 있습니다.
  • 연관된 데이터들은 같은 Column을 갖고 있습니다.
  • 저장된 데이터는 하나의 테이블로 표현이 가능하며, 질의는 Row, Column-family, Column-name을 통해 수행된다.
  • 대표적인 NoSQL Column-family 모델에는 HBase, Hypertable 등이 있습니다.

4. Graph Database

  • Graph Database 모델에서는 데이터를 Node와 Edge, Property와 함게 그래프 구조를 사용하여 데이터를 표현하고 저장합니다.
  • 개체와 관계를 그래프로 표현하므로, 관계형 모델이라고 할 수 있습니다.
  • 데이터 간의 관계가 탐색 키일경우에 적합합니다.
  • 소셜 네트워크에서 '친구의 친구'를 찾는 질의에 유용하고, 연관된 데이터를 추천해주는 엔진과 패턴인식 등 데이터베이스로도 적합합니다.
  • 대표적인 NoSQL Graph 모델에는 neo4j가 있습니다.

4. SQL vs NoSQL

구분 SQL NoSQL
수직적 확장 (서버의 성능 확장) 가능 가능
수평적 확장 (서버의 증설) 불가능 가능 (DB가 전체적으로 분산됨)
스키마 존재 (유연하지 않음) 미존재 (새로운 필드 추가 가능)
테이블 간의 관계 존재 (Join 사용) 미존재
데이터의 중복 없음 존재
적재 용량 비교적 낮음 대용량 적재 가능
데이터 저장 형식 Coulmn과 Row Key-Object

 

 

참조

댓글