충분히 쌓여가는
RDBMS / NoSQL 본문
데이터베이스 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) 이용
SQL(Structured Query Language)
- 관계형 데이터베이스 Relational DBMS
- 데이터가 테이블 형태로 구성됨
- 테이블간의 관계에 의해 데이터베이스가 만들어져 구동됨
- 테이블 형태로 만들어지기 때문에 데이터를 조회, 조작을 하기위해 SQL이 필수임
장점 | - 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장 - 각 데이터를 중복없이 한 번만 저장할 수 있음 |
단점 | - 테이블간테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음 - 성능 향상을 위해서는 Scale-up만을 지원 -> 비용이 기하급수적으로 늘어날 수 있음 - 스키마로 인해 데이터가 유연하지 못함 -> 스키마가 변경 될 경우 번거롭고 어려움 |
사용 시기 | - 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 - 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합 |
더보기
Scale-up: 기존의 서버를 보다 높은 사양으로 업그레이드하는 것
Scale-out: 장비를 추가해서 확장하는 방식, 기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대
NoSQL
- 비관계형 데이터베이스 Non-RDBMS
- NOT Only SQL
- SQL 뿐만이 아니다: 기존의 테이블 형태가 저장되는 것이 아닌 다른 형태
- RDBS 방식으로 더이상 처리할 수 없을만큼 복잡하고 큰 데이터들의 등장으로 NoSQL이 필요하게 됨
타입 | 설명 |
Document | JOSN 타입으로 데이터 표시 |
Graph | 노드(각각의 데이터)사이의 관계에 따라 데이터가 저장됨 |
Key-Value | 해쉬 테이블, 키에 해당하는 값을 직관적으로 데이터를 넣거나 찾아서 사용 IOT 시스템에서 대량의 데이터가 발생할때 사용 |
Wide-Column | 모든 데이터가 같은 Column을 사용하는 것이 불합리한 경우일 때, 구조적인 Column 형태를 가져가면서 Column을 고정형태가 아닌 유연한 형태로 사용 |
장점 | - 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있음 - 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있음 - 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능 |
단점 | - 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야 함 - 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정하기가 어려울 수 있음 |
사용 시기 | - 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋음 - 하지만 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 하기 때문에 Update가 많이 이루어지지 않는 시스템이 좋음 - Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 되는 시스템에 적합 |
더보기
Scale-up: 기존의 서버를 보다 높은 사양으로 업그레이드하는 것
Scale-out: 장비를 추가해서 확장하는 방식, 기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대
참고자료
Python TMI, RDBMS와 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 |