[TIL] Database_200409

이민석·2020년 4월 12일
0

TIL

목록 보기
9/14

Database

  • 메모리랑 반대. 메모리는 휘발성이 있음.
  • 파일로 저장하지 않고 데이터베이스를 사용하는 이유는 접근 및 관리가 쉬워서.
  • 편집, 가공 및 보존이 편리해짐.
  • 데이터베이스의 종류는 크게 관계형 데이터베이스 (RDBMS)와 비관계형 데이터베이스 (NoSQL)이 있다.

 

관계형 Database (RDBMS, Relational Database Management System)

  • 관게형의 의미는 데이터들이 서로 상호관련성을 가졌음을 의미한다.
  • 대표적인 관계형 데이터베이스에는 MySQL과 PostgreSQL이 있다.
  • 데이터들이 모두 2차원 테이블로 표현되며 각 테이블은 column과 row로 구성된다.
  • 각 테이블들은 서로 연결 될 수 있는데 foreign key라는 개념을 사용해서 연결한다.
  • 한 테이블에 모든 정보를 저장하지 않고 여러 테이블에 나누어 서로 연결하는 이유는 동일한 정보들이 불필요하게 중복되고 잘못된 데이터가 저장되며 비효율적인 디스크 활용을 막기 위해서이다.
  • 연결의 종류에는 크게 one to one, one to many, many to many, 총 3가지의 종류가 있다.

one to one

  • 말그대로 1대1 매칭이 되는 관계이다.

one to many

  • 테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계이다.

many to many

  • 테이블 A의 여러 로우가 테이블 B의 여러 로우와 연결이 되는 관계이다.
  • 중간의 테이블에 의해 many to many 관계를 형성할 수 있다.



비관계형 Database (NoSQL)

  • 비관계형이기 때문에 데이터들을 저장하기 전에 정의할 필요가 없다.
  • MongoDB, Redis, Cassandra 등이 대표적인 NoSQL 데이터베이스의 예시이다.


RDBMS v.s. NoSQL

RDBMS

  • 장점:
    - 관계형 데이터베이스는 데이터를 더 효율적으로 그리고 체계적으로 저장할 수 있고 관리 할 수 있다.
    - 미리 저장하는 데이터들의 구조(테이블 스키마)를 정의 함으로 데이터의 완전성이 보장된다.
    - 트랜잭션(transaction)
  • 단점:
    - 테이블을 미리 정의해야 함으로 테이블 구조 변화 등에 덜 유연한다.
    - 확장성이 쉽지 않다.
    - 역시 테이블 구조가 미리 정의 되어 있다보니 단순히 서버를 늘리는것 만으로 확장하기가 쉽지 않고 서버의 성능 자체도 높여야 한다.
    - 서버를 늘려서 분산 저장 하는것도 쉽지 않다.
    - Scale up (서버의 성능을 높이는것)으로 확장성이 됨.
    - 정형화된 데이터들 그리고 데이터의 완전성이 중요한 데이터들을 저장하는데 유리하다.
    - 예) 전자상거래 정보. 은행 계좌 정보, 거래 정보 등등.

NoSQL

  • 장점:
    - 테이터 구조를 미리 정의하지 않아도 됨으로 저장하는 데이터의 구조 변화에 유연하다.
    - 확장하기가 비교적 쉽다. 그냥 서버 수를 늘리면 됨(scale out)
    - 확장하기가 쉽고 테이터의 구조도 유연하다 보니 방대한 양의 데이터를 저장하는데 유리하다.
  • 단점:
    - 데이터의 완전성이 덜 보장된다.
    - 트랜잭션이 안되거나 비교적 불안정하다.
    - 주로 비정형화 데이터 그리고 완전성이 상대적으로 덜 유리한 데이터를 저장하는데 유리하다.
    - 예) 로그 데이타
profile
Still learning

0개의 댓글