NoSQL에 대한 설명과 종류

까망새부리·2023년 5월 17일
0
post-thumbnail

NoSQL?

사람에 따라 No SQL, Not Only SQL, Non-Relational Operational Database SQL로 엇갈리는 의견들이 있지만, 현재 Not Only SQL로 풀어 설명하는 것이 다수를 차지하고 있다.

기존의 RDBMS보다 더 융통성이 있는 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공한다. 이를 통해서 NoSQL DB는 단순 검색 및 추가 작업에 있어서 매우 최적화된 Key-Value 저장 기법을 사용하여 응답속도, 처리 효율 등에 있어 뛰어난 성능을 보여준다.

RDBMS와 NoSQL의 차이

NoSQL이 DBMS라고 생각해서 RDBMS와 같은, 또는 떨어지지만 유사한 기능을 제공할것이라고 생각하면 큰 오산이다. NoSQL은 데이타를 저장한다. 그리고 Key에 대한 Put/Get만 지원한다. RDBMS로 치자면

Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)

Get : Select from TABLE where KEY=”key”*

만 딱 지원한다. 물론 제품에 따라서 기능에 대한 지원 범위는 다르기는 하지만, 공통적으로 고민해야 하는 기능은

  • Sorting (SQL의 Order By)
  • Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join)
  • Grouping (SQL문의 group by)
  • Range Query (where key>”start” and key<”end” 와 같이 일정 범위내의 내용을 쿼리해오는 기능)
  • Index (RDBMS에 Index를 지정하여 select query 성능을 높이는 기능)

이다. RDBMS에서는 너무나도 익숙하게 사용했던 기능들이기 때문에, 막상 이 기능들을 빼고 데이타를 다루고자 하면 매우불편하다.

NoSQL DB의 종류

NoSQL DB는 각 4가지 형태가 존재합니다. 각 DB는 형태에 따라 각자의 특성이 있어 상황에 맞게 DB를 선택을 해야한다.

NoSQL DB의 종류

  • Kye-value
  • Document based
  • Column based
  • Graph-based

1. Key-value store

Key와 Value 값으로 이루어진 데이터를 저장하며, 저장과 조회라는 원칙에 가장 충실한 형태의 DB이다.

Key-Value DB의 Key값은 고유한 값을 유지하고 있어야 하며, Value에 모든 데이터 타입을 허용하므로, 개발자들은 데이터 입력 단계에서 검증로직 구현을 제대로 구현해야 한다.

2. Document based store

Key-Value DB처럼 Key와 value 값을 저장하지만 Document는 Value값을 smi-structured entity (JSON, XML) 같은 표준 형식을 저장한다.

값을 저장하기 전에 schema를 별도로 정의하지 않으며, Document를 추가하면 그게 schema가 된다.

각 Document는 별도의 필드를 가질 수 있으며 개발자가 Application에서 데이터를 입력하는 단계에서 컬럼과 필드의 관리가 제대로 이루어지도록 보장하는 것이 중요하다. 예를 들면 필수 속성에 대한 관리도 Applicaiton 레벨에서 관리가 되어야 한다.

Document DB는 다음과 같은 목적으로 주로 사용된다.

  1. 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드
  2. 제품처럼 다양한 속성이 있는 데이터 관리
  3. 다양한 유형의 메타데이터 추적
  4. JSON 데이터 구조를 사용하는 Application
  5. 비정규화된 중첩 구조의 데이터를 사용하는 Application

3. Column based store

RDBMS 같이 행에 중점을 두는 것이 아닌 열에 중점을 둔 방식.

비슷한 속성 값, 같은 특성을 가진 대량의 데이터를 계산해야 하는 데이터 웨어하우스 등에 적합한 방식

4. Graph based store

데이터를 노드로 표현하며 노드 사이의 관계를 엣지로 표현하는 방식의 DB.

RDBMS보다 퍼포먼스가 좋고 유연하며 유지보수가 용이함.

참고자료

profile
배움을 찾는 사람이 되자!

0개의 댓글