본문 바로가기
IT 기본지식

NoSQL이란 무엇인가? | 이점, 단점, SQL vs NoSQL

by 내기록 2022. 2. 12.
반응형

NoSQL 데이터베이스? 

비관계형 데이터베이스

특정 데이터 모델의 목적에 맞추어 구축되는 데이터베이스로 유연한 스키마를 가지고 있다.

 

https://www.guru99.com/nosql-tutorial.html

 

(1)DocumentDB - MongoDB
데이터를 json document 형태로 저장한다.
원하는 어떤 형태든 저장이 가능하며 데이터가 같은 모양일 필요가 없다.

 

(2)Key/valueDB - Cassandra, AWS Dynamo

Cassandra는 읽고, 쓰기가 매우 빠르다. 굉장히 많은 수의 아이템을 1초만에 쓸 수 있다.

그래서 애플이 cassandra를 이용해서 10PB 데이터 저장하고 있으며 넷플릭스, 우버, 인스타그램 등에서도 사용하고 있다.

검색엔진처럼 많은 양의 데이터를 빠르게 읽어야 하는 경우 좋다.

 

DynamoDB - serverless, distributed key/valueDB

듀오링고가 DynamoDB를 사용해서 매초 24,000개의 읽기 지원한다.

 

key-value DB는 엄청 빠르게 많이 써야하고 많이 읽어야할때 사용하면 좋다.

 

- Key/valueDB에서 생각해야 하는 점

SQL 처럼 쿼리를 할 수 없기 때문에 저장하기 전에 어떻게 얻을 것인지에 대한 고민이 필요하다.

 

(3)GraphDB - Tao, Neo4j

각 노드 사이의 관계를 알아야 할 때 사용한다.

페이스북과 같은 소셜 네트워크를 만들 때 고려하면 좋으며, 실제로 페이스북이 사용하는 수많은 DB중 하나이다. (Tao)

각각의 entity를 저장하고 이를 관계망으로 연결한다 (user1은 user2의 사진을 좋아하고, 둘은 친구다)

 

 

왜 사용하는가?

NoSQL 데이터베이스의 개념은 Google, Facebook, Amazon 과 같은 huge volumes of data를 다루는 회사들과 함께 유명해졌다.

RDBMS에 큰 용량의 데이터를 사용하면 응답 시간이 느려지는데, RDBMS에서는 느린 응답시간을 해결하기 위해 "scale up"을 한다. 

scale up은 하드웨어를 업그레이드 하는것으로 비용이 많이 든다는 단점이 있다.

 

scale-out은 고성능의 하드웨어를 사는 대신 여러 호스트로 분산하는 것으로 NoSQL 데이터베이스는 non-relational 하기 때문에 scale-out 하기에 좋다. 즉 Scalability에서 강점이 있다.

RDB는 ACID 특성과 transaction 이라는 특징때문에 scale-out 이 힘들다.

 

 

https://www.guru99.com/nosql-tutorial.html

 

 

이점

NoSQL 데이터베이스는 관계형 데이터베이스에 비해 많은 이점을 제공한다. NoSQL 데이터베이스는 데이터 모델이 유연하고 수평으로 확장되며 쿼리 속도가 매우 빠르다.

  • 유연한 데이터 모델
    NoSQL 데이터베이스는 일반적으로 매우 유연한 스키마를 가지고 있다. 유연한 스키마를 사용하면 요구 사항이 변경될 때 데이터베이스를 쉽게 변경할 수 있다. 신속하고 지속적으로 새로운 애플리케이션 기능을 통합하여 사용자에게 더 빠르게 가치를 제공할 수 있다.
  • 수평적 스케일링
    대부분의 SQL 데이터베이스는 현재 서버의 용량 요구 사항을 초과할 경우 수직으로 확장해야 한다(더 크고 더 비싼 서버로 마이그레이션). 반대로, 대부분의 NoSQL 데이터베이스는 수평 확장이 가능하므로 필요할 때마다 저렴한 상용 서버를 추가할 수 있다.
  • 빠른 쿼리
    NoSQL 데이터베이스의 쿼리는 SQL 데이터베이스보다 빠를 수 있다. 이유는? SQL 데이터베이스의 데이터는 일반적으로 정규화되므로 단일 개체 또는 엔터티에 대한 쿼리를 수행하려면 여러 테이블의 데이터를 조인해야 한다. 따라서 테이블 크기가 커지면 조인 비용이 커질 수 있다. 그러나 NoSQL 데이터베이스의 데이터는 일반적으로 쿼리에 최적화된 방식으로 저장된다. (함께 액세스하는 데이터는 함께 저장한다.) 쿼리에는 일반적으로 조인이 필요하지 않으므로 쿼리가 매우 빠르다.

 

단점

NoSQL 데이터베이스의 가장 자주 언급되는 단점 중 하나는 여러 문서에서 ACID(원자성, 일관성, 격리성, 내구성) 트랜잭션을 지원하지 않는다는 것이다. (최근에는 MongoDB같은 일부 DB는 다중 ACID 트랜잭션을 지원한다)

 

NoSQL 데이터베이스의 데이터 모델은 일반적으로 데이터 중복을 줄이는 것이 아니라 쿼리에 최적화되어 있으므로 NoSQL 데이터베이스는 SQL 데이터베이스보다 클 수 있다. 하지만 스토리지는 현재 매우 저렴하기 때문에 대부분이 이를 사소한 단점으로 간주하며 일부 NoSQL 데이터베이스도 스토리지 공간을 줄이기 위해 압축을 지원한다.

 

선택한 NoSQL 데이터베이스 유형에 따라 단일 데이터베이스에서 모든 기능을 충족하지 못할 수 있다. 예를 들어, 그래프 데이터베이스는 데이터의 관계를 분석하는 데 탁월하지만 범위 쿼리와 같은 일상적인 데이터 검색에 필요한 것을 제공하지 않을 수 있다. NoSQL 데이터베이스를 선택할 때 사용 사례를 잘 파악해서 무엇이 더 나은 옵션인지 고려해야 한다.

 

 

SQL vs NoSQL

SQL NoSQL
관계형 비관계형
구조화된 쿼리 언어를 사용하며 미리 정의된 스키마를 가지고 있다 비정형 데이터에 대한 동적 스키마가 있다
수직 확장이 가능 scale up 수평 확장이 가능 scale out
테이블 기반 Document,키-값,그래프 또는 와이드 컬럼 저장소
다중 레코드 트랜잭션에 좋다 문서나 JSON 같은 비정형 데이터에 좋다
다중 레코드 ACID 트랜잭션을 지원한다  다중 레코드 ACID 트랜잭션을 지원하지 않는다
(MongoDB 같은 일부는 지원한다)

 

 


(참고)

 

작동 방식

데이터의 액세스 및 관리를 위해 다양한 데이터 모델을 사용함

큰 데이터 볼륨, 짧은 지연 시간과 유연한 데이터 모델이 필요한 어플리케이션에 최적화 되어있음

 

예) 서적 데이터베이스를 위한 스키마 모델 구축

- 관계형 데이터베이스 : 서적 레코드는 정규화되어 테이블에 보관, 관계는 기본 및 외래키 제약 조건으로 정의

서적 테이블 스키마 :ISBN, 책 제목, 에디션 번호

저자 테이블 스키마 : 저자ID, 저자명 ........ 

 

관계형 모델은 중복성을 줄이기 위해 정규화되고 일반적으로 저장에 최적화된 데이터베이스.. 테이블 사이에서 참조 무결성 실현

 

- NoSQL 데이터베이스 : 서적레코드는 보통 JSON 문서로 저장되고 각 서적에 대한 저자 정보 등의 항목이 속성으로 저장됨

 

사용 이유

  • 유연성 : 유연한 스키마를 제공하여 빠르며 반정형 및 비정형 데이터 처리에 좋다
  • 확장성 : NoSQL은 일반적으로 강력한 서버를 쓰는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되어 있다. 
  • 고성능 : 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스보다 뛰어난 성능
  • 고기능성 : 각 데이터 모델에 맞춰 API와 데이터 유형을 제공한다.

 

BASE 속성

SQL에 ACID가 있다면 NoSQL에는 BASE가 있다.

 

  • Basically Available (가용성) 
    • 데이터는 항상 접근 할 수 있다
    • 다수의 스토리지에 복사본을 저장한다
    • 주 서버가 안되더라도 백업서버가 동작해서 항상 접근이 가능하다.
  • Soft-state (독립성)
    • '노드의 상태는 내부에 포함된 정보에 의해 결정되는 것이 아니라 외부에서 전송된 정보를 통해 결정된다'
    • 외부에서 보내진 정보에 의해 결정된다. 즉, 떨어진 노드 간의 데이터 업데이트는 데이터가 노드에 도달한 시점에 갱신된다.
    • 밖에서 받은 정보로 상태를 업데이트 한다.
  • Eventually Consistency (결과적 일관성)
    • 일정 시간이 결과되면 데이터의 일관성을 유지한다. 즉, 일시적으로 일관성이 지켜지지 않을 수 있다.
      (시스템 부하, 네트워크 속도 등의 외부 요인으로)
    • 서버가 여러 대인 분산시스템에서 데이터를 조회했을 때 일부 서버는 변경된 데이터가 조회되고 나머지는 변경되지 않은 데이터가 조회될 수 있다.
      이때 데이터의 일관성을 위해서 모든 서버에 결과값을 질의하고 N개 이상이 같은 값을 반환할 때 사용자에게 결과를 제공한다.

 

 

용어

 

https://www.researchgate.net/figure/SQL-vs-MongoDB-terms_fig4_340622952

 

 

References

https://aws.amazon.com/ko/nosql/

https://www.guru99.com/nosql-tutorial.html

https://ojava.tistory.com/129

https://www.youtube.com/watch?v=Q_9cFgzZr8Q&t=281s 

https://m.blog.naver.com/jeonghj66/221488308779

https://www.integrate.io/blog/the-sql-vs-nosql-difference/

https://www.mongodb.com/nosql-explained/nosql-vs-sql

반응형

댓글