Notice
Recent Posts
Recent Comments
«   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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

RDBMS / NoSQL 본문

IT/Computer Science

RDBMS / NoSQL

빌드이너프 2023. 1. 20. 10:15

데이터베이스 Database(DB)

  • 컴퓨터 시스템에 저장되는 구조화된 혹은 데이터의 집합

 

DBMS(Database Management System)

  • 데이터베이스에서 데이터를 정의(define), 저장(store), 검색 및 인출(retrieve), 관리(manage)하기 위해 사용되는 소프트웨어
  • 종류: SQL / NoSQL

 

스키마

  • 데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relationship) 및 제약조건 등에 관해 전반적으로 정의한 메타데이터의 집합

R-DBMS

  • 데이터가 테이블(column, row) 형태로 저장
  • 테이블 사이의 관계(relationship)로 구조 형성
  • 엑셀 스프레드 시트 생각해보기
  • 여러 형태의 데이터들이 여러 테이블로 저장됨(테이블들이 서로 관계를 맺고 저장[Key 사용])
  • 즉, 테이블과 관계로 모든 데이터가 표시됨
  • 이런 형태를 원활하게 사용하기 위해 별도의 언어 필요함 -> SQL(Structured Query Language) 이용

R-DBMS

SQL(Structured Query Language)

  • 관계형 데이터베이스 Relational DBMS
  • 데이터가 테이블 형태로 구성됨
  • 테이블간의 관계에 의해 데이터베이스가 만들어져 구동됨
  • 테이블 형태로 만들어지기 때문에 데이터를 조회, 조작을 하기위해 SQL이 필수임

장점 - 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장
- 각 데이터를 중복없이 한 번만 저장할 수 있음
단점 - 테이블간테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음
- 성능 향상을 위해서는 Scale-up만을 지원
   ->
비용이 기하급수적으로 늘어날 수 있음
- 스키마로 인해 데이터가 유연하지 못함 -> 스키마가 변경 될 경우 번거롭고 어려움
사용 시기 - 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우
- 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합
더보기

Scale-up: 기존의 서버를 보다 높은 사양으로 업그레이드하는 것

Scale-out: 장비를 추가해서 확장하는 방식, 기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대


NoSQL

  • 비관계형 데이터베이스 Non-RDBMS
  • NOT Only SQL
  • SQL 뿐만이 아니다: 기존의 테이블 형태가 저장되는 것이 아닌 다른 형태
  • RDBS 방식으로 더이상 처리할 수 없을만큼 복잡하고 큰 데이터들의 등장으로 NoSQL이 필요하게 됨

NoSQL

타입 설명
Document JOSN 타입으로  데이터 표시
Graph 노드(각각의 데이터)사이의 관계에 따라 데이터가 저장됨
Key-Value 해쉬 테이블, 키에 해당하는 값을 직관적으로 데이터를 넣거나 찾아서 사용
IOT 시스템에서 대량의 데이터가 발생할때 사용
Wide-Column 모든 데이터가 같은 Column을 사용하는 것이 불합리한 경우일 때,
구조적인 Column 형태를 가져가면서 Column을 고정형태가 아닌 유연한 형태로 사용

출처: 멘토랑, 데이터베이스란?SQL vs NoSQL : 데이터베이스 기초

장점 - 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있음
- 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있음
- 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능
단점 - 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야 함
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정하기가 어려울 수 있음
사용 시기 - 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋음
- 하지만 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 하기 때문에 Update가 많이 이루어지지 않는 시스템이 좋음
- Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 되는 시스템에 적합
더보기

Scale-up: 기존의 서버를 보다 높은 사양으로 업그레이드하는 것

Scale-out: 장비를 추가해서 확장하는 방식, 기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대

 

 


참고자료

Python TMI, RDBMS와 NoSQL의 차이점 및 장단점

멘토랑, 데이터베이스란?SQL vs NoSQL : 데이터베이스 기초

'IT > Computer Science' 카테고리의 다른 글

DB Index  (0) 2023.01.30
Clean Code / Refactoring  (0) 2023.01.25
네이티브 앱 / 웹앱 / 하이브리드 앱  (0) 2023.01.19
Process / Thread  (1) 2023.01.18
ORM  (2) 2023.01.17