RDBM vs NoSQL

김태준·2023년 2월 20일
0

DB STUDY

목록 보기
10/17

✅ Base

DB : 여러 사용자에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터의 집합
DBMS : 사용자와 DB 사이에서 사용자의 요청을 해석해 DB에 저장된 정보를 관리할 수 있도록 해주는 SW

✅ RDBMS (Relational Database System)

: 관계형 데이터베이스 시스템

🎈 특징

  • 일반적으로 많이 쓰이는 MySQL, PostgreSQL 등이 해당
  • 엑셀과 유사한 2차원 테이블 형식으로 구성되어 속성과 값을 이용해 데이터 정의, 저장, 관리
  • 스키마를 갖추었으며, 데이터를 활용하기 위해 SQL 언어를 활용함
  • Foreign key를 활용하여 JOIN을 통해 다른 테이블과 관계 및 제약조건을 갖춤

🎈 장단점

  • 장점
    정해진 스키마에 따라 데이터를 저장하므로 명확한 데이터 구조를 보장해 일관성을 보장한다.
    데이터를 중복없이 한 번만 저장할 수 있어 금융 산업에서 많이 쓰인다.
  • 단점
    다른 테이블과의 관계 및 데이터들의 일관성을 유지하기 위해 수평적 확장이 어려운 편이다.
    스키마로 인해 데이터가 유연하지 못하고 스키마 변경이 힘들다.
    성능 향상을 위해 Scale-Up(확장)만을 지원하기에 비용이 기하 급수적으로 커진다.
    실제 데이터를 탐색하거나 변경하는데 시간이 데이터 양에 비례하여 기하급수적으로 늘어나기에 수평적 확장이 더더욱 어려운 편.

✅ NoSQL (Not Only SQL)

: SQL이 아닌 방식으로 데이터를 처리하는 DB를 의미 (아파치, 카산드라 등에선 SQL과 유사한 투쿼리를 사용함) 미디어, 소셜네트워크의 발전으로 다양한 비정형 데이터들을 저장하고 처리해야하는 상황에 RDBMS는 부적절하여 대용량 데이터들을 다루기 위해 NoSQL이 등장했다.

🎈 종류

  • Key - Value 기반 DB
    데이터가 key, value의 쌍으로 저장되어 key는 value에 접근하기 위한 용도로 사용되며 value에는 어떠한 형태의 데이터든 담을 수 있어 비정형 데이터도 처리가 가능하다. 간단한 API(JSON 등)를 제공하는 만큼 속도가 굉장히 빠른 편.
    대체로 데이터가 row단위로 저장되는 특징이 있다.
    EX) Redis, Amazon Dynamo DB
  • Document 기반 DB
    : Key와 Document 형태로 저장되어 객체지향에서 객체와 유사하여 하나의 단위로 취급되어 저장되므로 어려 테이블에 나누어 저장할 필요가 없다.
    사용자 A의 차량을 등록해야하는 경우, KEY값을 USER:A:CARINFO, 'Benz' 와 같이 사용이 번거롭다는 단점이 있긴 하다.
    EX) MongoDB, CouthDB

  • Wide Column DB
    Column Family 모델 기반의 DB이며 이 모델은 value가 아닌 key에서 필드를 결정하며 키는 Row(키 값)과 Column-Family, Coulum-name을 가져 연관된 데이터들끼리 family로 묶이고 각각 name을 갖는다는 특성이 있다.
    EX ) HBase, Hypertable

  • Graph DB
    데이터를 node, edge, property와 함께 그래프 구조를 활용해 데이터를 표현하여 저장한 DB
    데이터 간 관계가 탐색의 KEY일 경우 적합하다. SNS, 연관 데이터 추천엔진, 패턴 인식 등에 적합
    EX) Neo4J

🎈 장단점

  • 장점
    스키마가 없어 유연하기에 자유로운 데이터 구조를 가질 수 있고 언제든 저장된 데이터를 조정해 새로운 필드를 추가할 수 있다.
    데이터 분산이 용이해 scale-up, scale-out 모두 가능하고 RDBM에 비해 속도가 매우 빠른 편이다.
    데이터 용량이 커질수록 저장에 용이
  • 단점
    데이터 중복이 발생할 수 있어 중복된 데이터 변경 시 모든 컬렉션에서 수행을 해야한다.
    스키마가 존재하지 않아 명확한 데이터 구조를 보장하지 않기에 데이터 구조 결정하기 힘들다.
profile
To be a DataScientist

0개의 댓글