(TIL)SQL 과 NoSQL (feat.DB)

성종호·2022년 2월 11일
0
post-custom-banner

SQL이란?

SQL은 데이터베이스에 접근하기 위한 프로그래밍 용어

관계형 데이터 베이스(RDB) 에서 사용

  • 정해진 데이터 스키마에 따라 저장
  • 데이터 검색, 관리(생성, 수정), 삭제에 사용
  • 데이터 스키마 생성, 수정, 삭제에 사용

관계형 데이터 베이스(RDB)

각 테이블간 관계를 맺고 모여있는 집합체로 중복적인 데이터가 저장되는것을 지양하며 중복되는 부분을 정규화 과정을 통해 테이블을 나눔, 외래키(ForeignKey)를 사용해 관계가 있는 테이블을 Join해 값을 찾아올수 있다.

장점

  1. 배우기 쉽다
  2. 명확하게 정의 된 스키마, 데이터 무결성 보장
  3. 데이터에 중복값이 없다.
  4. 중복값이 없어 수정에 용이하다.

단점

  1. 장점이자 단점인 스키마구조에 따라 데이터를 저장해야한다.
  2. 복잡한 데이터 구조로 쿼리문이 많아진다.
  3. 수평적 확장이 어렵고, 대체로 수직적 확장만 가능. 성장 한계에 직면

대표적인 관계형 데이터 베이스

  1. MySQL
  2. 오라클(Oracle)
  3. SQL 서버
  4. MariaDB

NoSQL이란?

정규화 과정을 지양하며 데이터 중복값을 허용한다.
SQL문을 안쓰는 데이터베이스의 데이터에 접근하기위한 프로그래밍 언어이며 스키마가 없거나 느슨한 스키마로 데이터 구조가 자유롭다.

데이터 저장 방식

  1. Key-Value Database
  • Key-Value쌍으로 저장과 조회에 초점을 둠
  • 값에 모든 데이터 타입을 받음

Key-Value식 데이터 베이스

  • Redis
  • Riak
  • Oracle Berkely
  • AWS DynamoDB
  1. Document Database
  • 기본적으로 Key-Value 형태이지만 문서화 해서 저장함
  • Key가 곧 필드가 됨, 문서별로 다른 필드를 가질수 있다.
  • 스키마 작성을 안해도 된다. 문서를 추가하면 그게 곧 스키마가 된다.

Document식 데이터 베이스

  • MongoDB
  • CouchDB
  • Couchbase
  1. Column Family Database
  • 테이블 형태이나 Join을 지원하지 않음
  • 한 객체에 관련된 모든 정보를 가능한 매우 너비가 넓은 단일 Row에 넣어서 보관

Column Family 데이터 베이스

  • Hbase
  • Cassandra
  • GCP BigTable
  • Microsoft Azure Cosmos DB

장점

  1. 대용량 데이터의 읽기와 쓰기에 강점을 가진다.
  2. 언제든 필드를 추가할수 있고 저장된 데이터를 조정할수 있다.
  3. 정규화 과정을 거치지 않아 쿼리수가 줄어 DB HIT가 적어 빠르다.

단점

  1. 데이터가 중복될수 있으며 값을 수정할경우 컬렉션의 수정한 데이터를 모두 찾아 수정할 상황이 생김
  2. 스키마가 존재하지 않거나 느슨한 스키마 구조로 개발자가 데이터에 대한 무결성 검증을 해야한다.

참고블로그
Jaemun Jung
siyoon210
pythontoomuchinformation

profile
아자
post-custom-banner

0개의 댓글