본문 바로가기

CS/데이터베이스

[Database] NoSQL 이해하기

NoSQL이란?

Non Relational Operation Database SQL의 줄임말로 관계형 데이터베이스가 아닌 SQL을 의미하였지만, SQL뿐만 아닌 여러 기능들도 부가적으로 지원한다는 Not Only SQL로 일반화되었다. 관계형 데이터베이스의 고정된 스키마 구조, 수평적 확장의 불가, 복잡한 조인 작업 등의 불편한 점들이 존재했다. 이러한 단점으로 인해 NoSQL이 등장하게 되었다. NoSQL 데이터베이스는 데이터 모델을 유연하게 변경할 수 있었고, 수평적 확장, 불필요한 Join을 최소화할 수 있다. 

  • 유연성 : 스키마 선언 없이 필드의 추가 및 삭제가 자유로운 Schema-less 구조
  • 확장성 : Scale-Out에 의한 서버 확장 용이
  • 고성능 : 빅데이터 처리에 특화. 대용량 데이터를 처리하는 성능이 뛰어남
  • 가용성 : 여러 대의 백업 서버 구성 가능하여 장애발생 시에도 무중단 서비스 가능

NoSQL의 대표적인 4 종류

Key-Value 데이터베이스

  • Key와 Value로 구성된 배열구조의 데이터베이스로 NoSQL 데이터베이스 중 가장 단순한 구조
  • 빠른 읽기/쓰기 연산을 지원하며, 주로 캐싱, 세션 저장 등에 사용
  • 값에 모든 데이터 타입을 허용하기에, 데이터 입력단계에 검증 로직 필요
  • Redis, Memcahced, DynamoDB

Document 데이터베이스

  • 필드-값 형태로 구성된 데이터를 문서 형태로 저장하며, JSON 또는 BSON형식을 사용
  • 값을 저장하기 전에 schema를 별도로 정의하지 않고, 문서를 추가하면 그것이 schema
  • 유연한 스키마를 가지고 있어 필드를 동적으로 추가하거나 변경할 수 있음
  • MongoDB, CouchDB

Column-family 데이터베이스

  • Column과 Row와 같이 RDB에서 사용하는 동일한 용어를 사용하여 스키마 정의
  • 데이터를 테이블이 아닌 열(Column)로 저장하며, 각 열은 스키마를 가질 수 있음
  • Column은 이름과 값으로 구성, Row는 각기 다른 칼럼으로 구성 가능
  • 대용량 데이터, 읽기와 쓰기 성능, 고가용성을 위해 설계

Graph 데이터베이스

  • 데이터를 Node와 Edge로 표현하는 그래프 형태로 저장
  • 복잡한 관계와 네트워크 구조를 효과적으로 표현하고 쿼리 할 수 있음
  • Neo4j

관계형 데이터베이스와 NoSQL 비교

항목 Relational Database NoSQL
데이터 모델 테이블 기반 데이터 모델
- 테이블 간의 관계, 엔티티를 정의
- 정규화에 의한 설계를 기본으로 함
다양한 모델 지원(key-value, document)
- 반정규화에 의한 설계를 기본으로 함

스키마 - 고정된 스키마 사용
- 테이블 설계 단계에서 스키마를 설계하며, 이 후의 스키마 수정은 번거로움
- 동적인 스키마로 필요에 따라 데이터 모델을 동적으로 변경 가능
- 비정형화 스키마구조로 미리 스키마를 선언하지 않음
확장성 Scale-Up Scale-Out
인터페이스 SQL을 통해 데이터 CRUD 가능 쿼리 외 다양한 API를 통한 데이터 CRUD 가능
일관성 모델 ACID 트랜잭션 BASE 모델
용도 - 정형화된 데이터와 트랜잭션 처리가 중요한 경우
- 복잡한 관계를 가진 데이터 처리 및 분석이 필요한 경우
- 대용량 및 실시간 데이터 처리가 필요한 경우
- 유연한 데이터 모델링이 필요한 경우
구조 단일 서버에서 운영되는 중앙집중형 구조 여러 서버 간에 데이터를 분산하여 처리 가능

 

ACID와 BASE

속성 BASE ACID
적용분야 NoSQL RDBMS
범위 시스템 전체에 대한 특성 트랜잭션에 한정
일관성측면 약한 일관성 강한 일관성
중점사항 Availability ‘Commit’에 집중
시스템측면 성능에 초점 엄격한 데이터관리
효율성 쿼리 디자인이 중요 테이블 디자인이 중요

ACID와 BASE는 데이터베이스가 데이터를 구성하고 조작하는 방법을 결정하는 데이터베이스 트랜잭션 모델이다. 데이터베이스가 높은 일관성과 높은 가용성 두 가지를 모두 충족할 수는 없다. 이것은 아키텍처의 차이 때문이라고 볼 수 있다. SQL 데이터베이스는 ACID 모델을 기반으로 구조화되는 반면, NoSQL 데이터베이스는 BASE 아키텍처를 사용한다. 가용성보다 일관성을 우선시하는 ACID 모델과 가용성을 우선시하는 BASE 모델을 비교해 보자.

ACID

데이터의 일관성, 신뢰성 및 예측 가능성이 요구되는 경우에 이상적이다. 

ACID 트랜잭션에 궁금하다면?

 

Atomicity(원자성)

트랜잭션을 구성하는 연산들이 완벽히 실행되거나 하나도 실행되지 않아야 하는 all or nothing 방식을 의미. 트랜잭션이 하나의 단계라도 실패하면 전체 트랜잭션이 롤백되어야 함.

 

Consistency(일관성)

트랜잭션이 성공적으로 수행된 후에 데이터베이스가 항상 일관된 상태를 유지해야 함을 의미

 

Isolation(격리성)

현재 수행 중인 트랜잭션이 완료될 때까지 트랜잭션이 생성한 중간 연산결과에 다른 트랜잭션이 접근할 수 없음을 의미

 

Durability(지속성)

영속성이라고도 하며 트랜잭션이 성공적으로 완료된 후 데이터베이스에 반영한 수행 결과는 어떠한 경우에도 손실되지 않고 영구적이어야 함을 의미 

 

BASE

가용성과 성능을 중시하는 데이터베이스 모델로 구조화되지 않은 대용량 데이터의 분석처리에 적합하다. 

 

Basically Available(기본 가용성)

기본 가용성이란 사용자가 언제든 데이터베이스에 동시에 접근할 수 있음을 의미한다. Master 서버의 장애 발생에도 여러 Slave 서버가 있기 때문에 가용성을 보장할 수 있다.

 

Soft State(소프트 상태)

소프트 상태는 모든 노드가 항상 최신의 데이터를 유지하지 않을 수 있다는 개념이다. 대신 시스템의 상태는 외부 트리거나 입력이 없어도, 시간이 지남에 따라 변할 수 있는 일시적 또는 임시 상태를 가질 수 있다는 것을 의미한다.

 

Eventually Consistent(최종 일관성)

서버의 구조 상 모든 서버의 데이터가 동시에 일관성을 유지할 수 없다. 하지만 최종적으로는 모든 서버에 데이터가 복제되기에 결국은 일관성이 유지된다고 본다.

 

DBMS 선택 전략


참고한 사이트

 

[NoSQL 데이터베이스별 특징]

Key-Value, Document 등 NoSQL 데이터베이스별 특성에 따라 우리 애플리케이션에 맞는 데이터베이스는 무엇일지 고민해보자.

jaemunbro.medium.com

 

 

개발자가 NoSQL 데이터베이스를 선호하는 이유

NoSQL 데이터베이스는 변화하는 요구사항에 빠르게 적응하기에 애자일 개발 방법론에 자연스럽게 부합합니다.

www.oracle.com

 

 

ACID 데이터베이스 대 BASE 데이터베이스 - 데이터베이스 간의 차이점 - AWS

CAP 정리에 따르면 데이터베이스는 일관성, 가용성 및 파티션 내성이라는 세 가지 특성 중 두 가지를 보장할 수 있습니다. ACID 및 BASE 데이터베이스 모델 모두 파티션 내성을 제공합니다. 따라서

aws.amazon.com

 

지식덤프

1) 다양한 형태의 DBMS가 공존하는 빅데이터시대에는 데이터와 트랜잭션 성격에 적합한 DBMS 선택이 필요 2) DBMS를 선택할 때는 트랜잭션의 완전성, 스키마고정성, 비용, 데이터의 양, 처리속도. 성

jidum.com

 

 

mongoDB Story 1: mongoDB 정의와 NoSQL : NHN Cloud Meetup

mongoDB는 NoSQL 데이터베이스 중 도큐먼트 유형의 데이터베이스로 인기가 높은 제품입니다. 1부에서는 mongoDB를 이해하기 위한 배경으로 NoSQL의 개념 및 관계형 데이터베이스와의 차이점을 소개합

meetup.nhncloud.com

 

'CS > 데이터베이스' 카테고리의 다른 글

[Database] MongoDB 이해하기  (1) 2024.01.03
[DATABASE] 인덱스란?  (1) 2023.10.26
Key of Database  (0) 2022.08.17
Transaction  (0) 2022.08.16