새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.

2 분 소요

📌 2025-02-21 TIL

1. 오늘의 학습 주제

  • NoSQL의 사용의 의미를 알아보자

2. NoSQL과 문제 해결

문제 인지

기존 관계형 데이터베이스는 데이터를 테이블 형태로 저장하고, 데이터를 설명하기 위한 메타데이터를 별도로 저장하여 관리합니다.

그러다보니 정형화된 스키마를 요구하고 됩니다. 하지만 애플리케이션이 복잡해지고 데이터의 양이 폭발적으로 증가하면서 관계형 데이터베이스로는 한계가 있습니다.

정형화된 데이터가 아니라 비정형 데이터가 폭발적으로 증가하게 됩니다.

스마트기기, 웨이러블, 스마트폰이 서버에 전달하는 데이터를 얼마나 소유하고 정보로 가공하는 것이 가치가 되는 시대가 되었습니다.

문제 발생

관계형 데이터베이스의 철학과 특징으로 문제가 발생됩니다.

  1. 확장성의 한계 : 수직 확장에 의존해 서버의 성능을 높이는 방식이라 비용이 많이 들고 한계가 있습니다.
  2. 유연성 부족 : 스키마가 고정되어 데이터 모델 변경 비용이 비싸며, 데이터 형태가 다양할 때 비효율적입니다.
  3. 성능 저하 : 대용량의 데이터 처리와 빅데이터 분석에 적합하지 않아서 속도가 느려지거나 병목 현상이 생깁니다.

문제 원인 파악

관계형 데이터베이스는 ACID 트랜잭션을 보장하기 위해 데이터 일관성에 집중합니다.

하지만 이때문에 수평 확장이 어렵고 , 데이터 모델 변경에 유연하지 않습니다.

특히 분산 환경에서 확장성과 고성능 읽기/쓰기 작업에 적합하지 않습니다.

해결 원칙 수립

CAP 이론에 따라 NoSQL는 일관성, 가용성, 분할 내성 중 두가지를 선택해 성능을 최적화합니다.

수평 확장을 가능하게 하고, 스키마 유연성을 제공해 데이터를 다양한 형태로 저장하고 관리할 수 있어야합니다.

분산 환경에서 고성능 읽기/쓰기 작업을 지원해야합니다.

문제 해결

NoSQL은 관계형 데이터베이스 의 한계를 극복하기 위해 등장한 데이터베이스로 다음과 같은 특징이 있습니다.

  1. 수평 확장: 서버를 추가해 성능을 높이는 방식으로, 대규모 트래픽과 데이터를 효율적으로 처리한다.
  2. 유연한 스키마: 스키마가 고정되지 않아 데이터 구조 변경이 유연하다.
  3. 고성능 읽기/쓰기: 분산 저장 및 인덱싱 기법으로 빠른 데이터 엑세스가 가능하다.

구현 기술

  1. 키-값 저장소
    • 예) 레디스, DynamoDB
    • 특징: 키와 값 쌍으로 데이터 저장하며, 빠른 읽기/쓰기 기능 제공, 캐싱 또는 세션관리에 적합
  2. 문서 지향 데이터베이스(Document)
    • 몽고DB, CouchDB
    • 특징: JSON또는 BSON형식으로 문서를 저장. 객체와 데이터 매핑이 쉬워 유연한 스키마 사용이 가능하다.
  3. 칼럼 기반 데이터 베이스(Column)
    • 카산드라,Hbase
    • 특징: 데이터를 컬럼 단위로 저장해 대규모 읽기/쓰기에 강점이 있다.
  4. 그래프 데이터베이스(Graph)
    • 노드와 엣지 형태로 데이터 관계를 저장. 소셜 네트워크, 추천시스템에 적합

구현의 한계와 트레이드 오프

일관성(Consistency)과 가용성(Availability)

NoSQL은 CAP이론에 따라 일관성보다는 가용성이나 분할 내성을 선택하는 경우가 많다

이는 실시간 데이터 정확성보다는 서비스 가용성을 중시하기 때문에 일관성 문제가 생길 수 있습니다

데이터 및 트랜잭선

NoSQL은 조인 연산이 없거나 복잡하고, ACID 트랜잭션을 완벽하게 보장하지 않는 경우가 많습니다. 따라서 데이터 정합성이 중요한 금융, 회계 시스템에는 부적합할 수 있습니다.

학습 곡선 및 유지보수

NoSQL마다 데이터 모델링이 다르고, 쿼리 언어가 SQL과 달라서 학습 곡선이 높다

또한 기술 스택이 다양해지면 유지보수가 어려워 질 수 있다.

정리

NoSQL은 확장성, 성능, 유연성을 해결하기 위해 등장했습니다.

CAP 이론에 기반해 가용성분할 내성을 중시하며, 수평 확장고성능 읽기/쓰기를 제공합니다.

하지만 일관성데이터 정합성이 중요한 시스템에는 적합하지 않을 수 있습니다.

비유

관계형 데이터베이스는 은행이라고 생각합니다.

업무를 보기위해서 필요한 절차를 추가할 수 있으며 계좌 이체를 하거나 대출을 받을 때에도 데이터가 일치하는지 매번 확인하는 것이 중요한 장소입니다. 건물을 하나 더 추가하는 것보다 직원 수를 늘리는 것이 더 효율적이지만 건물내에 늘릴 수 있는 직원의 수도 제한적입니다.

NoSQL은 물류 센터라고 생각됩니다.

물류 센터는 지점마다 여러개의 중복된 물품이 있을 수 있지만 빠르게 확장하고 주문이 들어오면 빠르게 물건을 준비해서 택배기사님에게 전달하는 것을 중요하게 생각합니다. 데이터가 맞지 않을 수 있지만 중요한 것은 빠른 배송이니까요

댓글남기기