티스토리 뷰

개발/BackEnd

SQL vs NoSQL

무주아빠 2020. 5. 13. 15:55

SQL vs NoSQL

둘의 차이를 비교해보자

 

비교

SQL NoSQL
규칙에 맞는 데이터 입력 자유로운 데이터 입력
테이블간 JOIN 지원 컬렉션간 JOIN 미지원
트랜잭션 지원 트랜잭션 미지원
안전성, 일관성 확장성, 가용성
용어: 테이블, 로우, 칼럼 용어: 컬렉션, 도큐먼트, 필드

* 트랜잭션의 경우 몽고DB v3에는 지원하지 않으나 v4부터는 지원할 것이라고 한다

 

NoSQL 등장배경

  • 지난 20년, 트랜잭션을 통한 안정적 데이터 관리가 가능한 RDB가 대세였다
  • WEB2.0 + 빅데이터의 등장 => 데이터 처리 비용증가로 위기가 왔다
  • 데이터 트래픽 증가 -> 1대에서 실행되는 것으로 설계된 RDB에서는 큰 비용으로 다가옴
  • 스캐일 아웃이아닌 스캐일 업을 해야 하기에 OMG!
  • NoSQL은 일관성을 어느정도 포기한 대신 데이터의 분산저장을 목표로 등장하였다

 

설명

  • RDB의 장점은 뭐니뭐니해도 트랜잭션과 관계성을 통한 데이터의 일관성보장
  • 이를 트레이드 오프하여 확장성을 얻은 것이 NoSQL
    • 다수가 동시에 읽고 쓰는 상황에서의 성능향상
    • 분산 환경에서 노드 들이 잘 작동하나 시스템의 일부가 장애시 데이터베이스가 사용 불가능한 문제를 해결
  • RDB가 클러스터 상에서 운영을 못하는 것이 아니나, 태생적으로 효율적이지 못하다

 

장단비교

  • 예를 들어 구매 내역이나 게임의 로그 같은 데이터들은 매 초마다 엄청난 양이 생성되지만 한번 저장되고 난 뒤에는 수정될 일이 거의 없다
  • 이런 데이터들을 저장하는 데 데이터의 일관성을 보장하기 위해 ACID 트랜잭션을 지원할 필요는 없을 것이다.
  • 거기다 생성되는 데이터의 양도 많기 때문에 장비의 성능에도 상당한 영향을 미칠 것이다. NoSQL은 이러한 데이터들을 효율적으로 저장할 수 있다.
  • 여러 대의 장비에 빠른 속도로 저장이 가능하며, 데이터의 양이 누적되더라도 얼마든지 수평적 확장이 가능하기 때문이다.

 

활용예

  • 트위터, 페이스북: 게시글 저장에 사용
    • 쏟아지는 트래픽을 모두 RDB에 저장한다면, 글작성 -> 저장 까지 한 참이 소요된다
  • 각종 검색엔진: 텍스트 형태소 분석 -> 토큰 -> 역 인덱스구조 맵핑

 

결론

용도에 맞게 상호보완적으로 사용해야 한다

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함