데이터베이스의 원칙(무결성, 안전성, 확장성)에 이어서

 

이번에는 데이터베이스의 종류를 알아보려고 합니다. (물론 배운 거임)

 

데이터 저장 방식에 따라서 구분이 되는데, 주로 RDBMS와 NoSQL로 나뉩니다.

 

이 둘의 차이를 비교하는 시간은 다음으로 미루고, 저장 방식에 대해서 알아보겠습니다.

 

1. Relational

 관계형 모델(Relational Model)이라고도 부르며,

 

데이터베이스에 있는 데이터를 표현하는 개념의 집합입니다.

 

관계형 모델의 특징은

 

- 데이터를 row와 column으로 이루어진 table의 형태로 저장

- SQL (Structured Query Language)를 사용해서 데이터를 읽어오거나 조작

- MySQL, Oracle, Postgre 등이 해당

 

등이 있어요. 

 

2. Key - Value

 키-값 데이터베이스는 간단한 키-값 메소드를 사용하여 데이터를 저장하는

 

비관계형 데이터베이스(NoSQL) 유형입니다. 

 

단순한 객체에서 복잡한 집합체에 이르기까지 무엇이등 키와 값이 될 수 있습니다.

 

다만, 값에 모든 데이터 타입을 허용하기 때문에, 데이터 입력 단계에서

 

검증 로직을 제대로 구현하는 것이 중요하다고 하네요.

 

주로 간단한 데이터 모델을 대상으로 데이터를 자주 읽고 쓰는 경우에 적합합니다.

 

특징은

 

- key-value pair로 데이터를 저장

- key는 unique identifier로도 사용

- redis 등이 해당
    * cache

    * message broker -> pub/sub

    * not that scalable -> limitation on the size of RAM

    * DynamoDB
        > partition key - primary

        > sort key - secondary, optional

        > advantage : scalable -> AWS offers, HA, serverless

 

사용경우

1. 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱

2. 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적

3. 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장

4. 이미지나 오디오 파일 같은 대용량 객체 저장

 

단순히 디스크에 저장하는 경우를 벗어나 필요에 의해 쓰이는 모델인 것 같습니다.

 

이를 잘 알고 활용하는 게 중요해 보이네요.

 

3. Graph

 그래프(Graph) 데이터베이스는 그래프 생성 및 조작이라는 하나의 용도로만

 

특별히 설계된 플랫폼입니다. 

 

그래프의 노드, 간선, 속성을 활용하여 관계형 데이터베이스에서는

 

불가능한 방식으로 데이터를 표현하고 저장할 수 있다고 합니다.

 

SNS등 서로 관계가 복잡한 상황에서 자주 사용되는데, 링크드인의 1촌, 2촌 관계를 나타낼 수 있죠.

 

Neo4jOrientDB 등이 이에 해당됩니다.

 

4. Document

 Document Datebase 또는 Document-Oriented Database는 

 

key - value 방식으로 데이터를 저장합니다. key-value database와의 차이점은

 

document database는 값(value)을 문서로 저장하며

 

일반적으로  semi-structured entity (JSON이나 XML 같은 표준 형식) 형태입니다. 

 

schema를 별도로 정의하지 않기에 구조가 완전히 자유로우며,

 

문서를 추가하면 그게 바로 schema가 됩니다.

 

이러한 데이터베이스는 각각 데이터를 조작할 수 있는 언어가 따로 존재합니다.

 

MongoDB, CassandraDB, Couchbase 등이 이에 해당됩니다.

 

사용경우

1. 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원

2. 제품처럼 다양한 속성이 있는 데이터 관리

3. 다양한 유형의 메타데이터 추적

4. JSON 데이터 구조를 사용하는 애플리케이션

5. 비정규화된 중첩 구조의 데이터를 사용하는 애플리케이션

 

사용하는 경우를 보면 대체적으로 형식이 자유로워야 할 때 필요하다는 것을 알 수 있습니다.

 

이에 대해서는 더 공부가 필요하겠네요.

 

 

row-oriented vs. column-oriented

 

 메모리는 저장소에 쌓여야 합니다.

 

이때 형식을 갖는 RDB는 저장 방식을 고려할 필요가 있습니다.

 

테이블에서 row별로 저장할 지, column별로 저장할 지 선택해야 합니다.

 

이는 저장/수정/삭제 등에 따라 메모리 접근법이 달라지기에 장단점이 있습니다.

 

그럼에도 각 데이터베이스들은 하나를 선택하여 서비스를 제공하기에 

 

본인이 사용하는 데이터베이스가 어떤 방식을 따르는 지만 알고 있으면 될 것입니다.

 

row-oriented : mysql, postgre

column-oriented : cassandra, hbase, BigQuery

 

Reference
 

[DB] 1. Relational Model (관계형 모델)

[목차] 1. Database Management System 2. Relational Model이란? 3. Relation 4. Relational Model의 특징 1. Database Management System 데이터베이스 관리 시스템(Database Management System, DBMS)은 다수의 사용자들이 데이터베이스

rebro.kr

 

키-값(key-value) 데이터베이스란?

웹 애플리케이션과 같은 세션 지향 애플리케이션은 사용자가 로그인할 때 세션을 시작하고 사용자가 로그아웃하거나 세션의 시간이 초과될 때까지 활성화된 상태로 있습니다. 그 사이 애플리

aws.amazon.com

 

[NoSQL 데이터베이스별 특징]

Key-Value, Document 등 NoSQL 데이터베이스별 특성에 따라 우리 애플리케이션에 맞는 데이터베이스는 무엇일지 고민해보자.

jaemunbro.medium.com

 

그래프 데이터베이스란 무엇인가?

그래프 데이터베이스란 그래프 생성 및 조작만을 위해 특별히 설계된 플랫폼을 말합니다. 그래프 데이터베이스의 유형, 이점 및 활용 사례에 대해 자세히 알아보세요.

www.oracle.com

 

Column Oriented DBMS란?

 

nesoy.github.io