[기술면접]DB종류와 특징 장단점

유림·2022년 8월 25일
0

Tech interview

목록 보기
1/11
post-thumbnail

🗂DB종류 (관계형, NoSQL)

1️⃣ 관계형(Relational) 데이터베이스

정의

  • 엑셀처럼 행과 열로 데이터를 저장할 수 있는 데이터베이스
  • 엑셀시트처럼 생긴 테이블이라는 표(?)에 행,열 맞춰 데이터를 쭈--욱 저장한다

특징

  • 범용적 : 거의 모든 곳에 사용 가능
  • 구조화된 데이터 저장하기에 좋음
  • 보통 SQL언어를 이용해서 데이터 출력 입력함
  • '이 열엔 숫자가 들어온다' ->이런식으로 스키마를 미리 정의함 , 때문에 관리가 쉬움
  • 구조화되어있기 때문에 데이터 뽑기 쉬움
  • 트랜잭션 롤백같은 기능을 이용해 데이터의 무결성을 보존하기 쉽기 때문에 금융, 거래 서비스에 필수

relational?

  • 데이터들끼리 서로 관계를 정해서 데이터를 저장할 수 있다는 의미임
  • 담당하는 일이 1개 인 경우에는 "홍길동 : 프론트엔드개발"이렇게 정의할 수 있으나 한사람이 여러개 업무를 할 경우에는 1:1매칭이 어려울 수 있음
    때문에 여러개 데이터를 매칭 시킬 수 있는 테이블을 1개 더 만들어서 표현
  • one to one, one to many, many to many 다양한 종류가 있음

2️⃣ NoSQL(객체형태로 따로따로 저장)

정의

  • 용어 자체는 범용적으로 SQL문 없이도 사용할 수 있는 데이터베이스라고 생각할 수 있음
  • 대부분 테이블에 국한되지 않고 자유로운 형식으로 데이터를 쉽게 분산저장할 수 있음
  • Key-value 모델 : Object, JSON 자료형 형식으로 데이터를 쉽게쉽게 저장, 출력이 가능(가장 심플)
  • Document 모델 : 테이블 대신 Collection이라는 문서 기반으로 데이터 분류, 저장
  • Graph 모델 : 데이터를 노드의 형태로 저장하고 노드간의 흐름 or 관계를 저장할 수 있음
  • Wide-column 모델 : 한 행마다 각각 다른 수, 다른 종류의 열을 가질 수 있음 (스키마가 자유로움)

=> ✏️ 참고) mongoDB : Key-value, Document 모델 저장방식을 가지고 있음

특징

  • Scaling이 쉬움
    : 데이터를 순간적으로 빨리 저장할 때 관계형 데이터는 확장에 어려움이 있다보니
    scale up을 통해 서버의 성능을 키워서 저장해야함
    그러나 NoSQL은 scale out으로 데이터를 분산저장할 수 있어
    대량의 데이터의 빠른입출력이 하고 싶다? NoSQL이 적합함

  • 다루기 쉬움
    : 자바스크립트의 object{}다루는 것과 거의 유사하여 기존 쓰고있던 자바스크립트에서 바로 사용 가능

  • 대부분 스키마 정의 없이 쉽게 쓸 수 있음 (ex. 이 열에 들어가는 데이터 = 숫자라고 표기안해도됨)
    : 장점이자 단점이 될 수 있다보니 MongoDB에선 스키마를 미리 정의하기 위해 Mongoose라이브러리를 추가해서 사용하기도 함

  • SQL에서의 JSON연산을 적용하는게 기본적으로 어려움
    : 서버단에서 JOIN연산을 쉽게 처리해주는 라이브러리 이용

결론 : 두가지 데이터 장단점에 따라 사용하자

금융서비스, 은행 전산시스템 정규화된 데이터, 안정성 ? "관계형 데이터베이스"
수백만개의 데이터 입출력 요청의 SNS 서비스, 변경이 자주 일어나는 경우 NoSQL

TMI : 블록체인?

전세계 모든 사람이 거래내역을 저장하고 관리해줄 수 있는 방법이라고 생각할 수 있음
관리해주는 대가로 비트코인을 지급받을 수 있음

A가 B에게 1코인을 지급하는 형태로 장부에 기록되어있으나 A,B의 정보는 암호화되어있음
-> 거래내역의 투명성, 익명성, 공정성 보장
-> 그러나 처리시간, 스케일링, 수수료 문제 등과 같은 이유로 실용화되고 있지는 못하는 상황

profile
ɪ ʜᴏᴘᴇ ᴛᴏ sᴏʟᴠᴇ ʀᴇᴀʟ ᴘʀᴏʙʟᴇᴍs👩🏻‍💻❤️

0개의 댓글