Database

[데이터베이스] 데이터베이스 종류 및 간단 설명

아윤_ 2023. 11. 8. 23:53

데이터베이스 종류 및 간단 설명

 

데이터베이스의 개념을 알기 위해 데이터베이스의 종류에 무엇이 있는지에 대해 알아보자

 

1. Key-value Database

 

  • 키와 값 형태로 데이터를 저장하는 데이터베이스이다.
  • 너무 간단하기 때문에 서브용 DB로 많이 사용된다.
  • 예를 들어, 이름과 나이를 저장하고 싶다면, 다음과 같이 저장한다.

 

Key-value Database [출처: 코딩애플]

 

redis

 

  • redis는 key-value 형태로 데이터를 저장하는 방식으로 많이 사용된다
    • 데이터를 하드디스크에 저장하지 않고 ram에 저장하여 속도가 빠르다는 장점이 있다.

 

redis 활용

  • 메인 DB를 두고, 사람들이 자주 쓰는 데이터들을 redis에 복사해 둔다
  • 해당 데이터가 필요할 경우, 메인 DB에 데이터를 요청하지 않고 redis에서 꺼내서 사용한다.
  • 즉, 다음과 같이 빠른 서비스를 만들 때 사용한다.
    • 자주 쓰는 데이터 캐싱
    • 채팅을 위한 pub/sub
    • 영상 스트리밍
    • 로그인 기록 저장

 

 

2. Relational Database

 

  • table(표)를 하나 만들고 그 위에 어떤 데이터를 저장할지 이름을 써 놓고 하나의 행마다 데이터를 저장하는 방법이다.
  • 엑셀도 하나의 관계형 데이터베이스라 할 수 있다.

 

relational database [출처: 코딩애플]

 

 

관계형 데이터베이스에서는 다음과 같이 대량의 데이터들을 저장할 때 다음과 같은 DBMS 등이 사용된다.

 

 

 

데이터베이스 점유율을 보면, 상위권에 관계형 데이터베이스들이 많이 있는 것을 확인할 수 있다. 즉, 가장 많이 쓰인다.

 

 

  • 관계형 데이터베이스를 사용할 때는 SQL(Structured Query Language) 문법을 사용한다.
  • 또한, 관계형 데이터베이스의 특징은 데이터를 정규화해서 저장한다는 점이다.

 

정규화

 

  • 데이터에서 중복이 발견되었을 때 중복이 되는 부분을 다른 테이블로 모두 쪼개서 중복을 제거하는 것
  • 입출력과 같은 문법이 길고, 복잡해진다는 단점이 있다.

 

ACID Transaction 기능

 

  • 관계형 데이터베이스는 transaction 기능이 기본적으로 들어있다.
  • transaction 기능을 사용하면, 돈거래와 같은 기능을 구현하고 싶을 때 안전하게 구현할 수 있고, 실패 시 롤백이 가능하다.
즉, 관계형 데이터베이스는 입출력 속도보다 데이터 정확도가 매우 중요한 서비스라면 일반적으로 관계형 DB를 사용한다.

 

 

3. Graph Database

 

  • 많은 사람들이 이름 때문에 관계형 데이터베이스를 관계를 잘 표현한다고 생각한다.
  • 하지만, '관계'라는 용어는 수학 용어 중 relation이라는 행렬에서 쓰는 용어를 말한다.
  • 즉, 관계형 데이터베이스는 관계를 중점으로 다루기엔 어려운 점이 많다.
  • 관계를 주로 다루고 싶을 때 Graph Database를 활용한다.

 

Graph Database에는 다음과 같은 DB가 있고, 가장 유명한 DB는 neo4j이다.

 

Graph Database [출처: 코딩애플]

 

 

  • Graph Database를 사용하는 방법은 노드를 만들고, 그 안에 데이터를 저장할 수 있는데, 노드끼리 어떤 관계를 갖고 있는지 표현할 수 있다.
  • 이를 사용하기 위해 Graph Query Language를 사용한다.
  • Graph Database는 다음과 같은 경우에 사용한다.
    • 비행기 노선
    • 친구 관계
    • 코로나 전염맵
    • 추천 서비스

 

 

4. Document Database

 

  • Graph Database와 같이 특수한 것이 아닌, 일반적인 상황에서 쓰는 데이터베이스는 Relational Database과 Document Database가 있다.
  • Document Database의 경우 Relational Database보다 좀 더 자유로운 상황에서 쓰며, 다음과 같은 것들이 있다.

Document Database [출처: 코딩애플]

 

 

  • Document Database는 다음과 같이 데이터를 저장한다. 
    • collection이라는 이름의 폴더를 만든다.
    • 그 안에 document라고 부르는 파일들을 만든다.
    • document 파일 안에 json(key-value) 형태로 데이터를 저장한다.

 

관계형 데이터베이스와 차이점 및 특징

 

  • 어떤 데이터를 저장할지 미리 정의할 필요가 없다.
  • 즉, 중간에 데이터의 구조가 바뀌어도 에러가 나지 않는다.
  • 가장 큰 특징은 데이터의 중복 제거를 하지 않는다는 점이다. 즉, 정규화가 필요 없어 데이터의 입출력과 같은 문법이 간단해진다.
  • 데이터의 분산 처리를 잘해주어 데이터의 입출력이 많은 서비스들에 사용된다.
    • SNS
    • 실시간 채팅
    • 게시판
    • 온라인 게임
  • 하지만, 데이터의 일관성이 떨어진다는 단점이 있다.

 

 

5. Column-family Database

 

  • 관계형 DB과 같이 데이터를 표 형식으로 저장하고 싶은데, 좀 더 유연하게 저장하고 싶을 때 column-family database를 사용한다.
  • 대표적으로 다음과 같은 데이터베이스들이 있다.

column-family database [출처: 코딩애플]

 

 

  • 사용 방법
    • table을 만들고, row를 만든다.
    • row에 자유롭게 column들을 만들어 데이터를 기입한다.
    • 행마다 컬럼이 달라도 상관없다.

 

  • 데이터를 입출력하기 위해서 sql문이 아닌 자신들이 만든 언어를 사용한다.
  • 정규화가 필요 없어 입출력이 간단하다.
  • 복제, 분산 처리 등에 매우 유용하다.
  • 데이터의 일관성이 부족하다는 단점이 있다.

 

 

6. Search engine Database

 

  • 검색용 인덱스를 보관하기 위한 데이터베이스이다.
  • 일반적인 데이터베이스로도 사용할 수 있지만, index 보관에 특화된 데이터베이스이다.
    • index란 데이터의 빠른 검색을 도와주기 위한 색인, 목차 같은 것을 말한다.

search engine database [출처: 코딩애플]

 

 

 

정리

 

  • 일반적으로 relational database나 document database 중 하나를 골라 사용하면 된다.
  • 입출력이 매우 잦을 경우에는 document database를 사용하면 된다.
  • 정확도와 일관성이 중요할 경우에는 relational database를 사용하면 된다.