DB

SQL VS NoSQL (MongoDB 공부 전 )

Raconer 2024. 2. 18. 22:55
728x90

SQL

구성

  • 테이블 형태로 데이터가 저장된다.
  • 새로운 컬럼이 추가 되고 정규화를 통한 데이터를 테이블 마다 별도로 저장할수있다.

장점

  • 데이터 중복방지할 수 있다.
  • Join성능이 좋다.
  • 복잡하고 다양한 쿼리가능하다.
  • 잘못된 입력방지할 수 있다.

단점

  • 하나레코드확인하기 위해 여러 테이블Join하여 가시성이 떨어진다.
  • 스키마엄격해서 변경에 대한 공수가 크다.

Scaling 장단점

  • Sacale-Out가능하지만, 설정이 어렵다.
  • 확장할 때마다 App단의 수정이 필요하다.
  • 전통적으로 Scale-Up위주로 확장했다.

NoSQL

용도?

  • 관계형 데이터 베이스로 할수 없거나 하기 어려운 작업을 하기위해 사용
    • 그래서 절대 SQL의 대체 품이 아니다.
    • 함께 사용하거나 서비스 요구상황에 따라 사용된다.

종류

* MongoDB -> Document Store
* Redis -> Key-Value Store
* Apache HBASE -> Wide-Column Store
* Neo4j -> Graph Store
   * elastic Search

구성

  • Document(Json) 형태로 데이터가 저장된다.
    • 따라서 배열, Document > Document 구조로 구성할수있다.

장점

  • 데이터 접근성과 가시성이 좋다.
  • Join없이 조회가 가능해서 응답 속도가 일반적으로 빠르다.
  • 스키마 변경에 공수가 적다.
  • 스키마가 유연해서 데이터 모델을 App의 요구사항에 맞게 데이터를 수용할 수 있다.

단점

  • 데이터의 중복이 발생한다.
  • 스키마가 자유롭지만, 스키마 설계를 잘해야 성능 저하를 피할수 있다.

Scaling 장단점

  • HA와 Sharding에 대한 솔ㄿ션을 자체적으로 지원하고 있어 Scale-Out이 간편하다.
  • 확장 시, Application의 변경사항이 없다.

총 정리

  • MongoDB는 Document지향 Database이다.
  • 데이터 중복이 발생할 수 있지만, 접근성과 가시성이 좋다.
  • 수키마 설계가 어렵지만, 스키마가 유연해서 Application의 요구사항에 맞게 데이터를 수용할 수 있다.
  • 분산에 대한 솔루션을 자체적으로 지원해서 Scale-Out이 쉽다.
  • 확장시, Applicaion을 변경하지 않아도 된다.

MongoDB는 유연하고 확장성 높은 Opensource Document지향 Database이다.

728x90

'DB' 카테고리의 다른 글

[Redis] Redis란?  (0) 2024.02.20
MongoDB 구성  (0) 2024.02.18
Mysql Procedure  (0) 2024.02.03
Index Hint  (0) 2024.01.20
Mysql Trigger  (0) 2023.12.06