SQL이란?
SQL은 데이터베이스에 접근하기 위한 프로그래밍 용어
관계형 데이터 베이스(RDB) 에서 사용
- 정해진 데이터 스키마에 따라 저장
- 데이터 검색, 관리(생성, 수정), 삭제에 사용
- 데이터 스키마 생성, 수정, 삭제에 사용
관계형 데이터 베이스(RDB)
각 테이블간 관계를 맺고 모여있는 집합체로 중복적인 데이터가 저장되는것을 지양하며 중복되는 부분을 정규화 과정을 통해 테이블을 나눔, 외래키(ForeignKey)를 사용해 관계가 있는 테이블을 Join해 값을 찾아올수 있다.
장점
- 배우기 쉽다
- 명확하게 정의 된 스키마, 데이터 무결성 보장
- 데이터에 중복값이 없다.
- 중복값이 없어 수정에 용이하다.
단점
- 장점이자 단점인 스키마구조에 따라 데이터를 저장해야한다.
- 복잡한 데이터 구조로 쿼리문이 많아진다.
- 수평적 확장이 어렵고, 대체로 수직적 확장만 가능. 성장 한계에 직면
대표적인 관계형 데이터 베이스
- MySQL
- 오라클(Oracle)
- SQL 서버
- MariaDB
NoSQL이란?
정규화 과정을 지양하며 데이터 중복값을 허용한다.
SQL문을 안쓰는 데이터베이스의 데이터에 접근하기위한 프로그래밍 언어이며 스키마가 없거나 느슨한 스키마로 데이터 구조가 자유롭다.
데이터 저장 방식
- Key-Value Database
- Key-Value쌍으로 저장과 조회에 초점을 둠
- 값에 모든 데이터 타입을 받음
Key-Value식 데이터 베이스
- Redis
- Riak
- Oracle Berkely
- AWS DynamoDB
- Document Database
- 기본적으로 Key-Value 형태이지만 문서화 해서 저장함
- Key가 곧 필드가 됨, 문서별로 다른 필드를 가질수 있다.
- 스키마 작성을 안해도 된다. 문서를 추가하면 그게 곧 스키마가 된다.
Document식 데이터 베이스
- MongoDB
- CouchDB
- Couchbase
- Column Family Database
- 테이블 형태이나 Join을 지원하지 않음
- 한 객체에 관련된 모든 정보를 가능한 매우 너비가 넓은 단일 Row에 넣어서 보관
Column Family 데이터 베이스
- Hbase
- Cassandra
- GCP BigTable
- Microsoft Azure Cosmos DB
장점
- 대용량 데이터의 읽기와 쓰기에 강점을 가진다.
- 언제든 필드를 추가할수 있고 저장된 데이터를 조정할수 있다.
- 정규화 과정을 거치지 않아 쿼리수가 줄어 DB HIT가 적어 빠르다.
단점
- 데이터가 중복될수 있으며 값을 수정할경우 컬렉션의 수정한 데이터를 모두 찾아 수정할 상황이 생김
- 스키마가 존재하지 않거나 느슨한 스키마 구조로 개발자가 데이터에 대한 무결성 검증을 해야한다.
참고블로그
Jaemun Jung
siyoon210
pythontoomuchinformation