필요에 따라 데이터베이스 모델을 선택하여 사용하는데 아직까지는 관계형 데이터베이스가 주류를 이룬다.

 

RDB란?

 

 

엑셀 표에 데이터를 저장하는것 처럼 데이터를 테이블 형태로 저장하는 방식의 DB를 의미한다.

실제로 행(row)에 저장되고, 항목의 속성은 열(column)이라고 표현한다. ( 레코드(record) 라고도 부른다.)

열은 항목의 속성인 만큼 입력되는 데이터의 유형이 정해진다. ( int , text ... )

 

 

그럼 왜 관계형 데이터베이스 (RDB)는 관계(Relation) 이름이 붙혀졌을까?

 

각 테이블의 행과 행이 연결되는 관계를 맺을 수 있기 때문이다.

( 1:1 (일 대 일) , 1:N ( 일 대 다 ) , 다 대 다 (N:N) 의 관계가 있다. )

 

 

그림과 같이 테이블 간의 관계는 기본 키 (PK) 와 외래 키 (FK) 라는 개념을 사용하여 맺어지고.

PK는 고유한 ID 필드로 그림에서는 고객 번호 필드이다. 중복된 값을 가질 수 없다.

FK는 PK를 참조하는 필드로 그림에서는 주문 테이블의 고객 번호 필드이고 각 테이블의 행을 연결시켜주는 역할을 한다.

 

이렇게 테이블을 분리하고 관계를 형성해 데이터를 효율적으로 관리할 수 있다.

 

 


NoSQL 이란?

 

Not Only SQL

 

 

RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술.

RDB와 달리 테이블 간 관계를 정의 하지 않는다. (관계를 맺지 않는다.)

따라서 테이블은 그냥 하나의 테이블이며 테이블 간 join도 불가능하다.

 

빅테이터의 등장으로 기하 급수적으로 증가한 트래픽에 대응하기 위해 탄생.

 

 

NoSQL 은 다음과 같은 다양한 형태의 저장 기술을 지원한다.

 

 

1. key- value DataBase

  - 데이터가 Key 와 Value 쌍으로 저장된다.

  - Key의 값은 어떠한 형태의 데이터라도 담을 수 있다. ( 이미지나 비디오도 가능 )

  - 간단한 API를 제공하는 만큼 질의의 속도가 굉장이 빠르다.

  - Redis, Amazon DynamoDB 등등 이 있다.

 

2. Document DataBase   

*  일단 Redis랑 먼 얘기이니 향후 더 알아가보자. 

  - Key와 Document 형태로 저장.

  -  ~~~~

  - Mongo DB 등이 있다.

 

3. Wide Column Database

  - ...

 

4. Graph Database

  - ... 

 


RDBMS 

 

장점

  • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장.
  • 각 데이터를 중복없이 한번만 저장할 수 있다.

단점

  • 테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN 문이 많은 복잡한 쿼리가 만들어질 수 있다.
  • 성능 향상을 위해서는 Scale-up만 지원. 이로인해 비용이 기하급수적으로 늘어날 수 있다.
  • 스키마로 인해 데이터가 유연하지 못하다. 스키마가 변경이라도 되면 번거로워진다.

NoSQL

 

장점

  • 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있다.
  • 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있다.

단점

  • 데이터 중복이 발생할 수 있으며, 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행해야한다.
  • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며, 데이터 구조 결정하기가 어려울 수 있다.

 

 


 

+ Recent posts