본문 바로가기

대학생활

DB 관련 개념 정리

#RDBMS

- 관계형 DBMS(관계형이 아닌 DB도 있대요.. ㄷ ㄷ ㄷ)

 

- 보통 우리가 DB라고 생각하는 형태를 다루는 DBMS

 

- 그 기능엔 크게 JOIN(INNER, OUTER, ...)이 있음

JOIN 기능이란..

TABLE 간의 공통된 COLUMN을 찾아서 엮어주는 기능
JOIN 결과로 나온 TABLE은 각 모델 간의 관계가 1:1이냐 1:N이냐 M:N이냐에 따라 다르다.
("달라질 것이다 | 다를 수도 있다 | 다를 수밖에 없다")

 

JOIN 예제 with Flask

from .models import Employee, Department

position_list = Department.query.join(Employee).filter(Employee.name == "Jack")

position_list에는 Jack이라는 이름을 가진 사원(Employee)들이 속한 부서(Department)들이 담기게 된다.

<"distinct()로 position_list 안의 중복된 객체 소거 가능">

 

- RDBMS 예) MySQL, PostgreSQL, ...

 

#NoSQL

- data간의 JOIN이 불가능한 비관계형 DBMS(비관계형 아닌 NoSQL이 존재할 수도..)

 

- 빅데이터 다루는 데에는 NoSQL이 쓰인다네요,,

 

- python dictionary의 형태를 떠올리면 편한 semantic

<"key: value 형태" - value값에는 어떤 NoSQL을 쓰냐에 따라 할당되는 종류가 상이함)>

<"근데 데이터끼리 서로 관계(이어짐)은 없음">

 

- 대충 API로 서버에 JSON 형태로 request 보내던 거 생각하면 될 듯한 느낌..??

 

- NoSQL 예) MongoDB, CouthDB, Redis, HBase

 

 

#정리

  RDBMS NoSQL
장점 · 데이터 구조가 명확함
· 데이터 간의 중복이 없음(중복 안되게 설계됨)
· 데이터 구조가 자유로움
· 데이터 분산이 용이 Scale up/out
단점 · 데이터가 방대해지면 JOIN 형태 짜기 어려움
· 명확한 대신 유연하지 못한 구조
· 데이터 중복의 발생
· 데이터 구조 결정이 어려움(불명확성)

대충 한쪽의 장점이 다른 한쪽의 단점인 느낌..

(Scale up은 data storage의 수준↑,  Scale out은 data storage의 머릿수↑)

 

 

#참고

https://m.blog.naver.com/cjhol2107/221758883924

 

[DB] JOIN의 개념, INNER JOIN, OUTER JOIN 차이와 개념, SELF JOIN

JOIN 이란? JOIN(조인)은 여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가...

blog.naver.com

https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

[Database] RDBMS와 NoSQL의 차이점

이번 포스팅에서는 RDBMS와 NoSQL의 차이점을 알아보려고 합니다. 그전에 RDBMS는 무엇이고 왜 사용하며 NoSQL은 무엇이고 왜 사용을 할까요? 그리고 그 두 DB의 차이점은 무엇이며 서로에 대한 장단점

khj93.tistory.com

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788968480591 

 

이것이 레디스다 - 교보문고

초고속 읽기 쓰기를 제공하는 인메모리 기반 NoSQL Redis | 이 책은 레디스를 실전 환경에서 사용할 수 있도록 설치부터 확장과 분산 기법 및 운영 시 고려사항과 튜닝 기법을 제시한다. 루아 스크

www.kyobobook.co.kr