[Database] Database, DBMS, RDB, NoSQL
2021. 12. 15. 15:50
DB란
- 데이터베이스란 여러 사람이 공유해 사용할 목적으로 통합, 관리하는 데이터의 집합이다.
DBMS란?
- DataBase Management System의 약자로 데이터베이스를 관리하는 시스템이다.
- 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해주고 DB를 관리해주는 소프트웨어이다.
- 테이블 간에 관계가 없다.
- 데이터에 대한 많은 보안을 제공하지 않고 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다.
- ex) Sybase, dase , Microsoft Access
RDB(Relational DataBase)
- RDB는 관계형 데이터 모델에 기초를 둔 데이터 베이스
- 테이블 간에 관계가있음.
RDBMS
- RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어이다.
- 테이블이 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성, 관리할 수 있다.
- 정규화를 통해 데이터의 중복성을 최소화하며 트랜잭션을 수행하는 것이 더 쉽다.
- 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다.
- 모든 데이터를 2차원 테이블 형태로 표현
- 외래 키를 사용해서 join을 한다.
SQL이란
- RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
NoSQL
- Not only SQL의 약자
- 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미
- 테이블 간 관계를 정의하지 않는다. → join불가
- 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS의 성능을 향상시키기 위해 Scale-up을 하는 것의 비용 부담으로 데이터 일관성은 포기하되 여러 대의 데이터에 분산하여 저장하는 Scale-out을 목표로 등장했다.
- RDBMS 스키마에 맞추어 데이터를 관리해야하는 것이 아니라 수평적 확장성(Scale-out)을 쉽게 할 수 있다.
- 스키마란 : DB의 구조와 제약조건에 대한 설명
NoSQL종류 1) Key-Value Database
- Key와 Value의 쌍으로 저장된다.
- 값은 어떠한 형태의 데이터도 담을 수 있다. (이미지나 비디오O)
- 간단한 API를 제공해 질의의 속도가 빠르다
- ex) Redis, Riak, Amazon Dynamo DB
NoSQL종류 2) Document Database
- Key와 Document의 형태로 저장된다. Key-Value 모델과 다른 점이라면 Value가 계층적 형태인 도큐먼트로 저장된다
- XML, JSON, BSON 등
- _id: PK, RowID
- 스키마가 없고 도큐먼트 내 Field를 정의한다 (Key:Value)
- 장점: 질의의 속도가 빠르다
- 단점 : 질의의 결과가 JSON이나 xml형태기 떄문에 사용방법이 번거롭고 쿼리가 SQL가 다르다.
- ex) MongoDB, CouthDB
NoSQL종류 3) Wide Column Database
- Graph Database
RDBMS와 NoSQL 장단점
- RDBMS 장점
- 정해진 스키마에 따라 데이터를 저장해 명확한 데이터 구조를 가진다
- 데이터가 중복없이 한 번만 저장가능하다
- 단점
- 테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다
- NoSQL 장점
- 스키마가 없어 유연하고 자유로운 데이터 구조를 가질 수 있다.
- 언제든 데이터를 조정하고 새로운 필드를 추가할 수 있다
- 데이터 분산이 용이해 성능 향상을 위한 Scale-up뿐만 아니라 Scale-out또한 가능하다.
- 단점
- 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에 해야한다.
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않고 데이터 구조 결정이 어렵다.
RDMS , NoSQL 언제 사용해야 될까요?!?!
- RDBMS는 데이터 구조가 명확해 변경 될 여지가 없으며 명확한 스키마가 중요할 때 사용하는 것이 좋다.
- 중복된 데이터가 없어 데이터 수정이 많을 때 사용하는게 좋다.
- NoSQL은 데이터 구조를 알 수 없고 데이터가 변경 혹은 확장이 될 수 있는 경우에 사용한다.
- 수정이 많이 이루어지지 않을 떄 사용하는 것이 좋고 Scale-out이 가능하기에 막대한 데이터를 사용하는 시스템에 적합하다.
'CS > Database' 카테고리의 다른 글
[Database] 관계형 데이터베이스의 이상 현상과 정규화 (0) | 2021.12.17 |
---|---|
[Database] 트랜잭션과 ACID & 트랜잭션 격리 수준과 데드락 (0) | 2021.12.17 |
[DB/Oracle] 02. 의사컬럼 (0) | 2021.08.28 |
[DB/Oracle] 01. SELECT문 (0) | 2021.08.28 |
[Oracle/sql] 프로그래머스 sql문제 정리 (0) | 2021.08.04 |