[DB] DB의 종류, RDBMS와 No-SQL의 차이

eunhye_·2023년 2월 28일
1

Database

목록 보기
5/6

데이터베이스 종류

1.Key-Value Database


키와 값으로 이루어짐


ex) redis
redis 특) 데이터를 1차적으로 ram에 저장(In-memory DB), 하드 드라이브에 백업
-> 하드 드라이브에서 가져오는 것보다 수십에서 수백배 빠름

자주 필요한 데이터를 저장하여 보다 빠른 서비스 구현 가능
ex) 캐싱, 토큰, 영상 스트리밍, 로그인 기록,..

2. Relational Database


표(table) 형태의 database
column을 지정하고 row 마다 데이터를 저장하는 형태, like 엑셀..
ex) Oracle, MySQL, MariaDB, PostgreSQL, ..

특1) Structured Query Language(SQL) 사용

특2) 데이터를 정규화하여 사용

제 1 정규화 ->

특3) 트랜잭션 기능 탑재

정확도가 중요한 서비스에 사용

Graph Database


데이터를 노드로 표현하고 데이터끼리의 관계를 보여준다.

ex) Neo4J

특1) Graph Query Language 사용

사용예) 지하철 노선, sns친구관계, 추천서비스,...

4. Document Database

Collection이라는 폴더안에 JSON 형식의 document로 저장,
관계형 DB보다 좀 더 자유로운 형식으로 저장가능

ex) MongoDB, CouchDB, Cloud Firestore,..

특1) JSON 형태로 저장

특2) 데이터 중복 제거 하지 않음 == 정규화하지 않음

특3) 분산처리가 잘된다. <- 콜렉션간에 이동이 쉽다.

사용예) SNS, 실시간 채팅, 온라인 게임

5. Column-Family Database


표(table) 형태의 row 마다 데이터를 저장하는 형태는 관계형 DB와 같지만, 행마다 column이 달라도 상관없다.

ex) cassandra, google cloud bigtable,..

특1) 각 DB의 언어 사용
특2) 정규화 하지 않음
특3) 복제와 분산을 잘함 -> 많은 입출력을 감당 할 수 있음
특4) 시간 기록을 잘해주는 기능이 있다. (넷플릭스 시청기록)

6. Search Engine


index 보관에 특화됨, 메인 db에서 데이터를 뽑아 저장하면 해당 데이터의 index를 뽑아서 보관함
index : 빠른 검색을 도와주는 목차

ex) elastic, Amazone Cloud Search, Google Cloud Search
사용예) 실시간 검색어, 추천 검색어,..

무엇이 RDBMS이며 NoSQL인가?

RDBMS는 2차원 테이블 형태로 표현된 데이터

ex) Oracle, MySQL, MariaDB, PostgreSQL과 같은 관계형 데이터

장점

  • 테이블에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장 (데이터 무결성)

  • 관계는 각 데이터를 중복없이 한 번만 저장

단점

  • 테이블간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음

  • 성능 향상을 위해 서버의 성능을 향상 시켜야 하는 Scale-up만 지원

  • 스키마로 인해 데이터가 유연하지 못함, 스키마가 변경될 경우 번거롭고 어려움

NoSQL(Not Only SQL)은 데이터간의 관계가 정의되지 않은, 자유로운 형태로 저장된 데이터

ex) MongDB, Redis,...

장점

  • 스키마가 없어서 유연하며 자유로 데이터 구조 저장된 데이터를 조정하고 새로운 필드 추가 가능

  • 데이터는 시스템이 필요로 하는 형식으로 저장

  • 수직 및 수평 확장이 용이

단점

  • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않음

  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음

  • 데이터가 여러 컬렉션에 중복되어 있기에 변경 시 모든 컬렉션에서 수정해줘야 함

이럴 때 RDBMS 사용❕❗

  • 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합

  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우

이럴 때 NoSQL 사용❕❗

  • 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우

  • 읽기는 하지만, 데이터 변경이 자주 없는 경우

  • 데이터베이스를 수평으로 확장해야 하는 경우 (많은 양의 데이터를 다룰 경우)


Reference
https://www.youtube.com/watch?v=ZVuHZ2Fjkl4
https://dodo1054.tistory.com/219

0개의 댓글