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
- 키-값(key-value) 데이터베이스
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