데이터 베이스의 특징 (RDBMS vs NoSQL)

노영석·2023년 2월 14일
0

1. 데이터 베이스의 원칙

a. data integrity(무결성)

  • 데이터가 전송, 저장, 처리되는 과정에서 변경되거나 손상되지 않는 것
  • 완전성, 정확성, 일관성을 유지함

b. data reliability (안전성)

  • 데이터를 보호할 수 있는 방법
  • 인증/인가되지 않은 사용자로부터 데이터를 보호함
  • 고장이 안나야됨

c. scalability (확장성)

  • 데이터 양이나 사용자가 늘어날 때 대처 가능

2. 데이터 베이스의 종류

a. relational

  • 데이터를 row와 column으로 이루어진 table의 형태로 저장함
  • SQL(Structured Query Language)를 사용해서 데이터를 읽어오거나 조작함
  • MySQL, Oracle, Postgre 등이 해당

b. key-value

  • key-value pair로 데이터를 저장
  • key는 unique identifier로도 사용됨
  • redis등이 해당
    • cache
    • message broker → pub/sub
    • not that scalable → limitation on the size of RAM
    • Dynamo DB
      • partiton key - primary.
      • sort key - secondary, optional
      • advantage
        • scalable →AWS offers, HA, serverless

c. graph

  • 데이터를 graph의 형태로 저장
  • 각 항목이 node로 이루어져있고, node간의 관계는 edge를 사용해서 나타냄\d
    1. 알고리즘 보면 뭐와 뭐간의 거리 이런것
  • SNS등 서로 관계가 복잡한 상황에서 자주 사용됨
  • Neo4j, OrientDB등이 해당
  • 링크드인 - 1촌, 2촌,

d. document

  • document database라고도 함
    1. 구조가 완전 자유로움
  • row, column과 같은 구조는 없고 자유로운 형태로 데이터를 저장함
    - 일반적으로 JSON 또는 XML 형태
  • 데이터베이스별로 데이터를 조작할 수 있는 언어가 따로 있음
  • MongoDB, CassandraDB, Couchbase 등이 해당
  • 형식이 자유로워야 할 때
    • 블로그 포스트. 사진이 언제 몇개가 들어갈 지 모름

e. row-oriented vs column-oriented

  • row - mysql, postgre, hbase
  • column - cassandra, hbase, BigQuery
  • example - Netflix - 2.3억명2

3. 서비스에 적합한 데이터 베이스를 선택하는 기준

a. CAP Theorem

  • consistency(일관성)
    • 데이터베이스 안의 모든 node들이 같은 값을 가지고 있음
    • request를 보내면 해당 request가 delay 될 수 있음
    • 금융 쪽에서 중요하게 생각함
    • 송금 데이터가 데이터베이스 노드당 align되지 않으면? 송금 안된줄 알고 또보내고 또보내고….
  • availability(가용성)
    • 데이터베이스에 request를 보내면 항상 response를 받음
      • consistencty는 response바로 안옴
    • 하지만 해당 response가 가장 최근 데이터라는 것을 보장받을 수 없음
    • 접근하는 node에 따라 값이 다르다
  • partition-tolerance(분산처리)
    • node간 소통이 불가능 하더라도 정상적으로 작동함
    • C - P // A - P // C - A

b. 3가지를 다 가질 수는 없음. 왜냐면…

  1. 예시
    • RDBMS - Netflix
      • 영상에 대한 정보를 저장하는 방식
      • 평점 데이터를 가져와서 인공지능과 연결 아마도?? → 사용자가 좋아할 것 같은 영상을 추천한다
    • NoSQL - 인스타그램
      • Cassandra DB 블로그↗️
      • 종종 데이터 날아가는데 몇시간 뒤에 복구함 어떻게 이게 가능한지?
      • 데이터를 저장하는 방식 덕분에/때문에 가능하다

4. 관계형 데이터베이스(RDBMS) vs 비관계형 데이터베이스(NoSQL)

a. scale up vs scale out

RDBMSNoSQL
Data modeling- 스키마에 맞춰서 관리하기 때문에 데이터 적합성 보장
- 관계를 맺고있는 데이터가 자주 변경되는 경우
- 자유롭게 데이터를 관리할 수 있다.
- 데이터 구조를 정확히 알 수 없는 경우
- 데이터가 변경/확장될 수 있는 경우
ScalabilityScale UpScale Out
Query LanguageSQL(Structured Query Language)문법이 다름
ConsistencyStrongEventual consistency
FlexibilityNot ReallyVery flexible
profile
공부하자!

0개의 댓글