본문 바로가기
데이터베이스

NoSQL(Not Only SQL) 에 대해서

by 연어바케트 2024. 5. 26.
반응형

NoSQL데이터베이스는 관계형 데이터베이스와는 다른 방식으로 데이터를 저장하고 관리하며, 비관계형 데이터베이스다.

 

등장 배경

NoSQL 데이터베이스가 등장하게 된 배경에는 기본적으로 관계형 데이터베이스가 가지는 한계를 극복하고자 한것 이다.

한계에 아래와 같이 몇가지 주요 이유가 있다. 

  1. 빅 데이터 처리
    1. 데이터 양의 급증 : 인터넷, 소셜미디어 등 다양한 소스에서 엄청난 양의 데이터가 생성되면서 기존 RDBMS로는 이러한 빅 데이터를 효율적으로 저장하고 처리하는 데 한계가 있었음.
    2. 확장성 문제 : RDBMS는 수직적확장(Scale up)에 적합하지만, 수평적 확장(Scale out)에는 한계가 있음.
  2. 비정형 데이터의 증가
    1. 데이터 구조의 다양화 : 전통적인 RDBMS는 정형화된 스키마에 기반한 데이터를 처리하는 데 최적화되어 있다, 그러나 Json, XML, 이미지, 동영상 등 비정형 데이터의 증가.
    2. 동적 스키마 지원 : NoSQL데이터베이스는 스키마가 동적으로 변할 수 있어 다양한 형태의 데이터를 유연하게 처리할 수 있음.

 

NoSQL 모델

  • 키-값 저장소: Redis, Amazon DynamoDB
  • 문서 저장소: MongoDB, CouchDB
  • 컬럼 저장소: Apache Cassandra, HBase
  • 그래프 저장소: Neo4j, Amazon Neptune

 

NoSQL 특징

  1. 스키마 유연성
    1. 동적 스키마 : NoSQL 데이터베이스는 미리 정의된 스키마가 없거나 유연한 스키마를 지원하여 데이터 구조가 동적으로 변경될 수 있다. 이는 비정형 데이터나 반정형 데이터 처리에 용이하다.
  2. 수평적 확장성
    1. 분산 아키텍처 : NoSQL데이터베이스는 여러 서버에 데이터를 분산하여 저장하고 처리할 수 있어 수평적 확장이 용이하다. 이는 빅 데이터와 높은 트래픽을 처리하는 데 적합하다.
    2. 자동 샤딩 : 데이터를 여러 노드에 자동으로 분배하는 샤딩 기법을 사용하여 확장성을 높일 수 있다. 

 

NoSQL단점

  1. 제한된 일관성 보장
    1. 최정 일관성 : 많은 NoSQL 데이터베이스는 즉각적인 일관성을 보장하지 않고, 최종 일관성을 제공한다. 이는 일시적으로 데이터 불일치를 허용하므로, 특정 애플리케이션에서는 문제가 된다. 
    2. 복잡한 일관성 처리 : 분산 환경에서 일관성을 유지하는 것이 복잡하고 어려울 수 있으며, 이를 해결하기 위한 추가적인 코드 작성과 설정이 필요하다. 
  2. 데이터 모델링의 복잡성
    1. 데이터 중복 : NoSQL 데이터베이스는 종종 정규화를 사용하지 않기 때문에, 데이터 중복이 발생할 수 있다. 이는 저장소 사용량을 증가 시키고, 데이터 일관성 문제를 초래할 수 있다. 
    2. 복잡한 데이터 모델링 : 각 NoSQL 데이터베이스의 특성에 맞는 데이터 모델링 기법을 익혀야 하며, 이는 관계형데이터베이스의 정규화된 스키마 설계와는 다른 접근 방식을 요구한다. 
  3. 제한된 트랜잭션 지원 
    1. ACID 트랜잭션 부재 : 많은 NoSQL데이터베이스는 RDBMS에서 제공하는 ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션을 완전히 지원하지 않는다 이는 복잡한 트랜잭션이 필요한 애플리케이션에서 제약이 될 수 있다. 
    2. 트랜잭션 범위 제한 : 일부 NoSQL 데이터베이스는 단일 문서나 키-값 쌍에 대해서만 트랜잭션을 지원하며, 다중 문서나  테이블 간 트랜잭션은 지원하지 않을 수 있다.

 

CAP 이론과 일관성

CAP 이론은 분산 컴퓨팅 시스템에서 세 가지 속성 중 두 가지만 보장할 수 있음을 설명한다.

  1. Consistency (일관성): 모든 노드가 같은 시점에 같은 데이터를 보여줌.
  2. Availability (가용성): 모든 요청이 응답을 받을 수 있음.
  3. Partition Tolerance (파티션 허용성): 네트워크 분할이 발생해도 시스템이 계속 동작함.

NoSQL 데이터베이스는 이 세 가지 속성 중 특정 애플리케이션의 요구사항에 따라 일관성을 다르게 처리한다.

 

NoSQL의 일관성 모델

  1. 강한 일관성 (Strong Consistency):
    • 모든 노드가 항상 같은 데이터를 보여준다. 이는 RDBMS에서 트랜잭션 일관성 모델과 유사하다.
    • 예: HBase는 강한 일관성을 보장한다.
  2. 약한 일관성 (Weak Consistency):
    • 즉각적인 일관성을 보장하지 않는다. 데이터는 일정 시간이 지나야 일관성을 갖게 된다.
    • 예: Amazon DynamoDB의 기본 설정은 약한 일관성을 가진다.
  3. 최종 일관성 (Eventual Consistency):
    • 일정 시간이 지나면 모든 노드가 일관된 데이터를 갖게 됩니다. 즉, 데이터가 일시적으로 불일치할 수 있지만, 결국 일관된 상태로 수렴한다.
    • 예: Cassandra와 Couchbase는 기본적으로 최종 일관성을 제공한다.

 

참고


https://terms.naver.com/entry.naver?docId=6559347&cid=59277&categoryId=69439

반응형

댓글