DB

[DB] 데이터 베이스 종류 RDB, NoSQL, In-memory DB

늘이 2024. 1. 22. 11:49

 

1. 대표적인 데이터 베이스 종류

 

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

  • 엑셀처럼 행과 열이 존재하며 SQL 언어를 사용해서 접근할 수 있음
  • 종류: MySQL, PostgresSQL, MariaDB

 

2) NoSQL(Not Only SQL)

  • 관계형 데이터베이스가 아닌 다양한 형태의 데이터 모델을 사용
  • HDD나 SSD 같은 보조 기억장치에 데이터를 저장
  • 형태에 따라 종류가 분류됨
    • 키-값(key-value) 데이터베이스
      • 간단한 구조로, 각 데이터 항목은 고유한 키와 연관 됨 
      • 주로 캐싱, 세션 저장 등에 사용
      • 종류: Redis, DynamoDB, Riak
    • 문서(Document) 데이터베이스
      • JSON 또는 BSON 형식의 도큐먼트로 데이터 저장 
      • 각 도큐먼트는 유연한 스키마를 가짐
      • 종류: MongoDB, CouchDB
    • 열 지향(Column-Family) 데이터베이스
      • 키-값 스토어와 유사하지만 키와 값의 쌍을 '열'로 구성
      • 각 열은 하나의 패밀리에 속함
      • 대량의 데이터를 효율적으로 처리
      • 종류: Apache Cassandra, HBase
    • 그래프(Graph) 데이터베이스
      • 노드(Node)와 엣지(Edge)로 구성된 그래프 형태의 데이터 모델 사용
      • 종류: Neo4j, Amazon Neptune
      • 관계와 네트워크 분석에 적합
    • 검색 엔진(Search Engine) 데이터베이스
      • 대량의 텍스트 데이터를 색인화하여 검색 및 분석에 사용됨
      • 주로 로그 분석, 검색 엔진 등에 활용 
      • 종류: Elasticsearch, Apache Solr
    • 다중 모델 데이터베이스
      • 여러 데이터 모델을 하나의 데이터베이스에서 지원
      • 예를들어 키-값, 문서, 그래프 등의 모델을 동시에 사용하는 것
      • 종류: ArangoDB

 

2. In-Memory DB

 

1) 정의

  • 인메모리 데이터베이스(In-Memory Database)는 주 메모리(RAM)에 데이터를 저장하고 처리하는 데이터베이스 시스템
  • 디스크 I/O 없이 메모리에서 데이터를 읽고 쓰므로 처리 속도가 빠르고 응답 시간이 짧아 주로 실시간 응용 프로그램 및 성능이 중요한 작업에 사용됨
  • RDB, NoSQL에 포함되어 있음(데이터 저장 위치가 다른 것일 뿐)

 

2) 특징

  • 높은 성능: 데이터를 주 메모리에 저장하므로 디스크 I/O가 없으므로 뛰어난 응답 속도와 처리 성능 제공
  • 실시간 처리: 디스크에 데이터를 저장하고 검색하는 과정을 거치지 않기 때문에 실시간 처리 가능. 대부분의 작업이 메모리에서 수행되므로 지연 시간이 최소화됨
  • 캐싱: 데이터를 메모리에 캐시할 수 있으므로 데이터에 대한 빠른 액세스가 가능. 이는 응용 프로그램의 성능 향상에 도움이 됨
  • 복잡한 분석 및 질의: 데이터베이스에 대한 복잡한 분석 및 질의 작업도 메모리에서 수행되므로 빠른 결과를 얻을 수 있음
  • 일관성: ACID 속성을 준수하여 데이터의 일관성, 격리, 지속성, 내구성 보장

 

3) 기존 데이터베이스와 인메모리 데이터베이스 비교

  • 기존 데이터베이스
    • 디스크 기반 데이터베이스
    • 자주 불러오는 데이터 일부만을 메모리에 저장하여 사용하는 구조
    • 메모리는 성능상 이유로 캐시 방식을 통해 DB read 부하를 감소시키는 목적으로 주로 사용됨
    • 대부분의 데이터는 디스크에 보관하고 테이프와 같은 매체에 백업
  • 인메모리 데이터베이스
    • 데이터 갱신 자체를 메모리를 사용하고 백업과 로그 생성을 디스크를 이용함

 

4) 종류

  • 인메모리 RDBMS
    • 테이블 기반의 관계형 데이터 모델을 따름.
    • SQL 쿼리를 지원.
    • ACID 트랜잭션을 지원.
    • 전통적인 RDBMS의 구조와 동작 방식을 따름.
    • 종류: H2 Database, VoltDB
  • 인메모리 NoSQL
    • 다양한 데이터 모델을 지원할 수 있음 (키-값, 문서, 그래프 등)
    • 특정 데이터 모델에 최적화된 구조를 가질 수 있음.
    • NoSQL 데이터베이스의 특성에 따라 스키마가 유연하거나 동적일 수 있음.
    • 주로 캐싱, 세션 저장, 빠른 읽기/쓰기 등에 사용됨
    • 종류: Redis, Memcached