-
1. Key-Value 데이터베이스
대표적인 DBMS
- Redis: 높은 성능과 다양한 데이터 구조 지원(리스트, 셋, 해시 등).
- Memcached: 간단한 키-값 저장소로 캐싱 용도로 주로 사용.
- Etcd: 분산 시스템을 위한 Key-Value 저장소로 주로 Kubernetes 등에서 사용.
특징
JavaScript의 object 또는 Python의 dictionary와 유사한 데이터 타입.
Key는 유일한 값이며, 각 Key에 해당하는 Value를 저장하는 구조.
일반적으로 데이터를 메모리에 저장하여 매우 빠르게 접근 가능.
일부 Key-Value DB는 디스크에도 데이터를 저장할 수 있음(예: Redis의 AOF, RDB 방식).
장점
빠른 성능:
- 대부분의 Key-Value 데이터베이스는 메모리 기반이므로 디스크 I/O가 발생하지 않아 빠른 속도를 제공.
- O(1) 시간 복잡도로 데이터 조회 가능(일부 예외 있음).
- Key-Value 스토어는 샤딩(Sharding) 을 통해 분산 아키텍처를 쉽게 구축 가능.
- 단순한 캐시뿐만 아니라 세션 관리, 메시지 큐, 실시간 분석 등에 활용 가능.
단점
데이터 모델링의 한계:
- Key-Value 구조는 관계형 데이터베이스(RDB)처럼 복잡한 쿼리(Query)나 조인(Join) 을 지원하지 않음.
- 특정 키에 해당하는 값을 가져올 때만 유용하며, 여러 조건을 조합한 검색이 어렵다.
- 일반적으로 메모리에 데이터를 저장하므로 RAM 용량이 제한적일 경우 저장할 수 있는 데이터 크기도 제한됨.
- 일부 Key-Value DB는 트랜잭션(ACID) 보장이 약함 (Redis는 Lua 스크립트로 보완 가능).
- 분산 환경에서 동기화 문제 발생 가능.
사용 사례 (Use-cases)
캐싱 (Caching)
- 웹 서버에서 자주 조회되는 데이터를 DB 대신 Key-Value 스토어에 저장하여 빠르게 제공.
- 예) 로그인 사용자 정보, 세션 데이터 저장 (Redis 세션 저장소 활용). 세션 관리
- 웹 애플리케이션에서 사용자 로그인 상태를 저장하고 빠르게 조회하는 용도로 사용. 분산 시스템의 설정 저장소
- Etcd: Kubernetes 등 분산 시스템에서 설정값(Key-Value) 저장. 실시간 데이터 처리
- Redis의 Pub/Sub 기능을 이용한 실시간 메시지 브로커로 활용 가능. 비밀번호 해시 저장
- 일부 애플리케이션에서 Key-Value DB를 비밀번호 해시 저장소로 사용.
추가 설명
- Key-Value DB는 기본적으로 단순한 데이터 저장/조회에 적합하지만, 고급 기능이 필요한 경우 다른 유형의 NoSQL DB 또는 관계형 데이터베이스를 고려해야 한다.
- Redis는 단순한 Key-Value 저장소를 넘어서, Sorted Set, Hash, List 등 다양한 데이터 구조를 지원해서 활용 범위가 넓다.
- Etcd는 주로 분산 환경에서의 설정 관리를 위한 용도로 사용된다.
2. Wide Column 데이터베이스
대표적인 DBMS
- Apache Cassandra: NoSQL 기반으로 고가용성과 확장성이 뛰어나며, 분산 환경에서 활용됨.
- Apache HBase: Hadoop 기반의 컬럼 패밀리 데이터베이스로, 대규모 데이터 저장 및 분산 처리가 가능.
- Google Bigtable: 구글의 대용량 데이터 분석용 DB로, HBase와 유사한 구조를 가짐.
특징
- Key-Value DB보다 차원이 하나 더 많으며, Key 하나당 여러 개의 Column을 포함하는 Row 형태로 저장됨.
- 컬럼 패밀리(Column Family) 구조
- 데이터를 Key-Value 형식으로 저장하지만, 컬럼 단위로 저장 및 조회가 가능함.
- 컬럼 패밀리는 관계형 DB의 테이블과 비슷한 개념이지만, 스키마가 고정되지 않음.
- 스키마가 유연함
- 관계형 DB처럼 테이블 스키마를 강제하지 않음. 즉, Row마다 다른 컬럼을 가질 수 있음.
- 예) 사용자1은 이름과 이메일만 저장, 사용자2는 이름, 이메일, 전화번호를 저장 가능.
- 분산 환경에서 설계됨
- 수평적 확장이 가능하고, 데이터 복제(Replication) 및 분산 저장(Sharding)이 뛰어남.
- SQL과 유사한 CQL (Cassandra Query Language) 지원
- 관계형 데이터베이스의 SQL과 비슷하지만, JOIN을 지원하지 않음.
- 단순한 CRUD 연산과 필터링 정도만 가능함.
장점
- 수평 확장 가능(Scalability)
- 대량의 데이터를 저장할 때 서버 노드를 추가하면서 쉽게 확장 가능함.
- Cassandra의 경우 새로운 노드를 추가하면 자동으로 데이터가 분산 저장됨.
- 빠른 쓰기 성능
- 쓰기 성능이 뛰어나며, 대량의 데이터 삽입이 빠름.
- HBase의 경우, Hadoop과 연계하여 대량 데이터 처리가 가능함.
- 데이터 복제 및 내결함성(Fault Tolerance)
- Cassandra는 노드 간 데이터 복제가 가능하여 장애 발생 시 데이터 손실 방지 가능.
- Master-Slave 구조가 아닌 Peer-to-Peer 구조이므로 가용성이 높음.
단점
- JOIN 및 복잡한 쿼리 미지원
- 관계형 DB처럼 조인(JOIN)이나 다중 조건 쿼리(WHERE ... AND ... OR ...)가 어려움.
- 데이터를 조회할 때 특정 Key를 통해 직접 검색해야 함.
- 일관성이 약함(Eventual Consistency)
- NoSQL 특성상 일부 데이터베이스는 강한 일관성을 보장하지 않고 최종적 일관성(Eventual Consistency)을 유지함.
- 즉, 복제된 데이터가 여러 노드에 저장될 때, 즉각적인 동기화가 보장되지 않을 수 있음.
- 복잡한 데이터 모델링이 어려움
- 관계형 데이터베이스처럼 정교한 스키마를 설계하는 것이 아니라, 데이터 접근 패턴을 고려한 모델링이 필요함.
사용 사례 (Use-cases)
- 시계열 데이터(Time-series Data)
- IoT 기기 센서 데이터, 사용자 활동 로그, 넷플릭스 시청 기록 등 시간 기반 데이터 저장에 적합함.
- 대용량 데이터 저장 및 분석
- Google Bigtable, HBase 등은 빅데이터 분석을 위해 사용됨.
- 로그 데이터 저장
- 웹사이트 접속 로그, 애플리케이션 이벤트 로그 등을 저장하고 분석하는 데 활용 가능함.
- 추천 시스템(Recommendation Systems)
- 사용자 행동 데이터를 저장하고 분석하여 맞춤형 추천 시스템을 구현하는 데 활용 가능함.
- 금융 및 거래 데이터 저장
- 주식 거래 내역, 금융 기록 등 대량의 트랜잭션 데이터를 빠르게 기록하고 조회하는 용도로 적합함.
3. Document 데이터베이스
대표적인 DBMS
- MongoDB: 가장 널리 사용되는 문서형 데이터베이스, JSON 기반의 문서를 저장하며 높은 확장성과 성능을 제공.
- Firestore: Google의 클라우드 기반 NoSQL DB로, 모바일 및 웹 애플리케이션 개발에 최적화됨.
- CouchDB: RESTful API를 기본 지원하며, JSON 문서 기반의 데이터 저장소.
특징
- Key-Value DB보다 더 복잡한 구조를 저장할 수 있음
- 각 Document는 Key-Value 구조를 기반으로 하는 JSON 또는 BSON(Binary JSON) 형식으로 저장됨.
- 비정형 데이터(스키마리스) 지원
- 관계형 DB처럼 고정된 스키마가 필요하지 않으며, 필드의 개수나 구조가 유연하게 변경 가능.
- 같은 Collection 내에서도 문서(Document)마다 다른 필드를 가질 수 있음.
- Collection 단위로 데이터를 그룹화 가능
- 여러 Document가 하나의 Collection으로 묶이며, Collection 간 관계를 계층적으로 구성할 수도 있음.
- SQL의 JOIN을 지원하지 않음
- 일반적으로 JOIN을 사용하지 않으며, 중첩 문서(Embedded Document) 또는 중복 데이터 저장(De-normalization) 을 통해 관계형 데이터 모델을 흉내낼 수 있음.
- 문서 쿼리 언어(Query Language) 지원
- MongoDB의 경우 MQL(MongoDB Query Language) 을 제공하며, SQL과 유사한 문법을 지원.
- SQL 기반의 RDBMS보다 유연한 필터링 및 검색 기능 제공.
장점
- 빠른 데이터 조회(Read 속도 우수)
- JSON/BSON 기반으로 데이터를 저장하므로 문서를 한 번에 로드할 수 있어 읽기 속도가 빠름.
- 인덱스를 잘 활용하면 특정 필드 검색도 빠르게 수행 가능.
- 객체지향적이고 개발자 친화적
- JSON 기반의 데이터 구조를 사용하므로 객체지향 프로그래밍(OOP)과 자연스럽게 연결됨.
- NoSQL 모델이므로 RDBMS보다 직관적으로 데이터를 관리할 수 있음.
- 수평적 확장 용이(Scalability)
- MongoDB의 경우 Sharding(샤딩) 을 지원하여 대량의 데이터를 분산 저장 가능.
- Firestore는 클라우드 기반이므로 자동 확장(Autoscaling)이 가능.
- 다양한 데이터 유형 저장 가능
- 단순 문자열, 숫자뿐만 아니라 배열, 중첩 객체, 바이너리 데이터(BLOB) 등도 저장 가능.
단점
- 데이터 수정 및 입력 속도가 상대적으로 느림
- 문서형 DB는 데이터를 한 번에 불러오는 데 최적화되어 있지만,
- 업데이트할 때는 문서 전체를 다시 저장해야 하는 경우가 많아 속도가 느려질 수 있음.
- 특히 중첩된 문서를 수정할 때 불필요한 데이터까지 수정해야 하는 경우가 발생 가능.
- 문서형 DB는 데이터를 한 번에 불러오는 데 최적화되어 있지만,
- 데이터 중복 가능성 증가
- 관계형 DB처럼 정규화가 강제되지 않으므로, 동일한 데이터를 여러 문서에서 중복 저장할 가능성이 있음.
- 중복된 데이터를 업데이트할 때 모든 관련 문서를 함께 수정해야 하는 부담이 존재.
- 트랜잭션 지원이 제한적
- 일부 문서 DB는 ACID 트랜잭션을 완벽하게 지원하지 않음.
- MongoDB 4.0 이후부터 다중 문서 트랜잭션을 지원하지만, RDBMS만큼 강력하지 않음.
사용 사례 (Use-cases)
- IoT 데이터 저장
- 센서 데이터, 로그 데이터를 비정형 형태로 저장하고 빠르게 검색 가능.
- 콘텐츠 관리 시스템(CMS)
- 블로그 게시글, 제품 정보, 사용자 리뷰 등 비정형 데이터를 유연하게 관리 가능.
- 모바일 및 웹 애플리케이션 백엔드
- Firestore와 같은 클라우드 기반 Document DB는 모바일/웹 앱의 실시간 동기화 기능 제공.
- 게임 데이터 저장
- 사용자 프로필, 인벤토리, 게임 상태 정보를 JSON 형태로 저장하여 빠르게 조회 가능.
- 전자상거래 및 제품 카탈로그
- 다양한 속성을 가진 상품 정보를 JSON 문서로 저장하여 유연하게 관리 가능.
4. Relational 데이터베이스 (RDBMS)
대표적인 DBMS
- MySQL: 오픈소스 관계형 데이터베이스로, 웹 애플리케이션에서 가장 많이 사용됨.
- PostgreSQL: ACID 트랜잭션을 지원하며, 확장성이 뛰어난 오픈소스 DBMS.
- SQL Server: 마이크로소프트의 관계형 데이터베이스, Windows 환경에서 많이 사용됨.
- Oracle Database: 엔터프라이즈급 성능과 보안성을 갖춘 상용 관계형 데이터베이스.
- CockroachDB: PostgreSQL과 호환되는 분산형 관계형 데이터베이스, 높은 가용성을 제공.
특징
- 가장 오래되고 널리 사용되는 데이터베이스 유형
- 1970년대부터 사용되어 온 전통적인 데이터베이스 모델.
- SQL(Structured Query Language)을 사용하여 데이터 관리
- 데이터를 조회, 삽입, 수정, 삭제하는데 SQL 쿼리문을 활용함.
- 스키마 기반 데이터 모델
- 테이블(Table) 단위로 데이터를 저장하며, 각 테이블은 미리 정의된 스키마(Schema) 를 가짐.
- Primary Key를 이용한 데이터 무결성 보장
- 모든 테이블에는 최소 하나의 Primary Key(기본 키) 가 존재하며, 이를 이용해 각 행(Row)을 고유하게 식별.
- 테이블 간 관계(Relationship) 설정 가능
- Foreign Key(외래 키)를 사용하여 다른 테이블과의 관계를 형성할 수 있음.
- JOIN을 활용하여 여러 테이블의 데이터를 하나의 결과로 결합 가능.
- ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션 보장
- 데이터 변경 작업이 일관성과 신뢰성을 유지하도록 보장됨.
장점
- 복잡한 쿼리 및 데이터 조작 가능
- SQL을 이용하여 복잡한 JOIN, GROUP BY, ORDER BY, 서브쿼리 등의 연산이 가능.
- 데이터 정합성(Integrity) 보장
- Foreign Key와 트랜잭션을 통해 데이터의 무결성을 유지할 수 있음.
- 트랜잭션 지원(ACID)
- 은행, 결제 시스템 등 정확한 데이터 처리가 필요한 서비스에서 강력한 일관성을 보장함.
- 데이터 중복 최소화(정규화, Normalization)
- 테이블 간 관계를 설정하여 중복된 데이터를 최소화할 수 있음.
- 보안 및 접근 제어 기능 제공
- 역할(Role) 기반의 사용자 권한 관리, 데이터 암호화, 백업 기능 등 다양한 보안 기능 지원.
단점
- 스키마 설계 및 유지보수가 복잡함
- 데이터 구조(Schema)를 미리 정의해야 하므로, 요구사항 변경 시 스키마 수정 비용이 큼.
- 수직 확장(Scale-Up)이 일반적
- 기본적으로 하드웨어 성능을 높이는 방식(Scale-Up) 으로 확장하며, NoSQL처럼 쉽게 수평 확장(Scale-Out)되지 않음.
- 분산형 RDBMS(CockroachDB, Google Spanner 등) 는 일부 해결책을 제공하지만, 전통적인 RDBMS는 수평 확장에 어려움이 있음.
- 쓰기 작업이 많을 경우 성능 저하 발생 가능
- 많은 데이터 삽입/업데이트 작업이 동시에 이루어지면 성능 저하가 발생할 수 있음.
- 이는 인덱스 관리 비용과 트랜잭션 처리 비용이 발생하기 때문임.
사용 사례 (Use-cases)
- 데이터 간 관계가 중요한 서비스
- 사용자, 주문, 제품 등의 데이터가 서로 강하게 연결된 전자상거래 시스템, ERP, CRM 등에서 사용됨.
- 금융 및 결제 시스템
- 트랜잭션 일관성이 중요한 은행, 핀테크, 결제 시스템에서 필수적으로 사용됨.
- 기업용 애플리케이션
- 회계 시스템, 인사 관리 시스템 등 데이터 정합성이 중요한 애플리케이션에서 사용됨.
- 대형 웹 애플리케이션
- SNS, 포털 사이트, 온라인 쇼핑몰 등 데이터 정합성이 중요한 서비스에서 많이 사용됨.
- 데이터 분석 및 리포팅 시스템
- BI(Business Intelligence) 및 OLAP(OnLine Analytical Processing) 시스템에서 사용됨.
5. Graph 데이터베이스
대표적인 DBMS
- Neo4j: 가장 널리 사용되는 그래프 데이터베이스, Cypher 쿼리 언어를 지원.
- DGraph: 고성능 분산 그래프 데이터베이스, GraphQL을 지원.
- JanusGraph: 대규모 그래프 데이터를 처리하기 위한 오픈소스 데이터베이스, Apache TinkerPop의 Gremlin을 사용.
특징
- 데이터를 노드(Node)와 엣지(Edge)로 표현
- 노드(Node): 개별 객체(예: 사용자, 제품, 장소, 이벤트 등).
- 엣지(Edge): 노드 간의 관계(예: 친구 관계, 추천 관계, 트랜잭션 관계 등).
- 관계형 DB에서 조인(Join)을 수행하는 방식과 달리, 엣지를 통해 직접 연결된 데이터를 빠르게 탐색할 수 있음.
- 그래프 쿼리 언어(Cypher, Gremlin, GraphQL 등) 사용
- Cypher(Neo4j) → SQL과 유사한 문법으로 그래프 탐색 가능.
- Gremlin(JanusGraph) → 복잡한 그래프 탐색 및 분석에 적합.
- GraphQL(DGraph) → REST API보다 직관적인 쿼리 인터페이스 제공.
- 관계 데이터를 빠르게 탐색
- 관계형 DB에서 다중 조인(Join)으로 처리하던 관계형 데이터를 O(1)~O(logN) 복잡도로 빠르게 조회할 수 있음.
- 노드 및 엣지에 속성(Properties) 저장 가능
- 단순한 관계 표현이 아니라, 각 노드 및 엣지에 속성을 추가하여 추가적인 데이터 저장 가능.
장점
- 조인(Join) 없이 빠른 관계 데이터 조회
- 관계형 DB는 복잡한 관계를 다룰 때 다중 조인(Join) 으로 인해 성능이 저하될 수 있음.
- 그래프 DB는 엣지를 활용하여 직접 연결된 데이터를 탐색하므로 조회 속도가 빠름.
- 쿼리문이 간결하고 직관적
- 관계형 DB에서 복잡한 조인문을 사용해야 하는 경우에도, Cypher 쿼리는 간결한 형태로 관계형 데이터를 조회 가능.
- 추천 시스템 및 네트워크 분석에 강력한 성능 제공
- 추천 알고리즘, 네트워크 분석, 최단 경로 탐색 등 그래프 데이터 처리에 최적화되어 있음.
- 수평 확장 가능
- 일부 그래프 데이터베이스(DGraph, JanusGraph)는 분산 환경을 지원하여 수평 확장(Scale-out) 가능.
단점
- 데이터 삽입 및 갱신 성능이 떨어질 수 있음
- 관계형 DB는 트랜잭션 처리 및 데이터 삽입 속도가 빠르지만, 그래프 DB는 노드-엣지 관계를 고려하면서 데이터가 추가되기 때문에 삽입 속도가 상대적으로 느릴 수 있음.
- 일반적인 트랜잭션 처리에는 적합하지 않음
- 금융 서비스처럼 강한 일관성이 필요한 시스템(예: 은행, 회계 관리 등) 에서는 전통적인 관계형 DB가 더 적합함.
- 그래프 데이터베이스가 필요하지 않은 경우 오히려 복잡해질 수 있음
- 단순한 CRUD(Create, Read, Update, Delete) 작업을 주로 수행하는 경우, 관계형 DB나 문서형 DB가 더 효율적일 수 있음.
- 분산 환경 지원이 제한적인 경우가 있음
- Neo4j 같은 일부 그래프 DB는 기본적으로 싱글 노드 기반으로 동작하며, 대규모 데이터 처리에는 추가적인 확장 구성이 필요함.
사용 사례 (Use-cases)
- 조인이 빈번한 시스템에서 성능 최적화가 필요할 때
- 관계형 DB에서 조인 비용이 높아질 경우, 그래프 데이터베이스를 사용하면 성능을 개선할 수 있음.
- 추천 시스템(Recommendation Engine)
- 유저-아이템 관계를 기반으로 추천 알고리즘(예: 에어비앤비, 넷플릭스 추천 시스템) 을 구현할 때 활용됨.
- SNS 및 소셜 네트워크 분석
- 친구 추천, 관계 분석, 영향력 분석 등에서 소셜 그래프를 활용하여 사용자 간 관계를 분석.
- 사기 탐지 및 보안(Security & Fraud Detection)
- 금융 기관에서 이상 거래 탐지, 의심스러운 사용자 연결 분석 등의 작업에 사용됨.
- 지식 그래프(Knowledge Graph)
- 검색 엔진(구글 지식 그래프), 기업 정보 시스템, 의료 데이터 분석 등에 활용됨.
활용 사례 (실제 사례)
- 지식 그래프 기반 인력 매칭 시스템 (한국개발연구원, KDI)
- 연구 인력 및 전문가 간의 관계를 분석하여 최적의 인력 매칭을 수행.
- AI 금융 사기방지 플랫폼 (KB 국민은행)
- 금융 거래 간의 관계를 분석하여 의심스러운 트랜잭션 탐지 및 사기 예방.
- 페이스북, 링크드인 등의 SNS 네트워크 분석
- 친구 추천 알고리즘, 영향력 분석, 관계 그래프 분석 등에 사용됨.
- 에어비앤비 추천 엔진
- 숙소 추천을 위한 관계형 데이터 분석 및 사용자 취향 기반 추천.
6. Search 데이터베이스 (검색 엔진 데이터베이스)
대표적인 DBMS
- Elasticsearch: 가장 널리 사용되는 검색 엔진, JSON 문서를 기반으로 검색 기능 제공.
- Algolia: 빠른 검색 및 자동완성 기능을 제공하는 SaaS 검색 서비스.
- MeiliSearch: 오픈소스 검색 엔진으로 빠르고 쉬운 검색 기능 제공.
- Apache Solr: Lucene 기반의 오픈소스 검색 플랫폼으로, 대규모 데이터 검색 가능.
특징
- 거대한 데이터에서 빠르게 유사한 값을 찾아 출력하는 역할
- 관계형 DB의 LIKE 연산자보다 훨씬 빠르게 검색 가능.
- 문서(Document) 기반 저장 방식
- JSON 형식의 데이터를 저장하며, Document 개념을 사용하여 데이터를 저장함.
- 모든 텍스트 필드에 대한 인덱싱 수행
- 일반적인 DBMS와 달리, 문서 내 모든 텍스트 필드에 대해 색인을 생성하여 검색 속도를 극대화함.
- 검색 가능한 단어에 대한 역색인(Inverted Index) 을 생성하여 검색 성능을 향상.
- 강력한 검색 기능 제공
- 자연어 검색(NLP): 형태소 분석, 동의어 처리, 오타 교정, 자동완성 등 다양한 검색 기능 제공.
- 랭킹 및 스코어링: 검색 결과를 관련도(Scoring) 기반으로 정렬하여 제공 가능.
- 부분 검색(Fuzzy Search): 정확한 키워드 입력이 아니어도 유사한 검색 결과 반환 가능.
- 수평 확장(Scale-Out) 가능
- 데이터가 많아질수록 샤딩(Sharding) 및 레플리케이션(Replication) 을 활용하여 확장 가능.
- 특히 Elasticsearch는 분산 환경에서 높은 확장성과 가용성을 제공.
사용 사례 (Use-cases)
- 검색 엔진(Search Engine)
- 구글, 네이버, 카카오 등의 검색 엔진에서 사용됨.
- 전자상거래(E-commerce) 검색
- 이베이, 아마존, 쿠팡 등의 상품 검색 및 필터링.
- 추천 시스템(Recommendation System)
- 사용자의 검색 히스토리를 분석하여 개인 맞춤형 추천 제공.
- 로그 및 모니터링 시스템(Log & Monitoring System)
- 시스템 로그, 애플리케이션 로그를 저장하고 실시간 분석 가능.
- 데이터 분석(Analytics & BI)
- 대량의 데이터를 분석하여 트렌드를 파악하고 시각화.
활용 사례 (실제 사례)
- NETFLIX
- 5.8 페타바이트(PB) 규모의 데이터베이스에서 1초 이내에 검색 가능.
- 개인의 시청 기록, 클릭 수, 검색 기록 등을 분석하여 맞춤형 추천 서비스 제공.
- 이베이 HQ & Korea
- 이베이 HQ (2015년 기준)
- 1.62억 명의 사용자, 약 8억 개의 상품 목록을 1초 이내 검색 가능.
- 이베이 Korea
- G9, Gmarket, 옥션(Auction) 등의 상품 검색 기능.
- 운영 로깅 이상 징후 분석 시스템을 구축하여 운영 상태를 실시간 감시.
- 이베이 HQ (2015년 기준)
7. Multi-Model 데이터베이스
대표적인 DBMS
- FaunaDB: 분산형 트랜잭션을 지원하는 글로벌 서버리스 데이터베이스.
- CosmosDB: Microsoft Azure에서 제공하는 글로벌 분산 데이터베이스.
- ArangoDB: 그래프, 문서, Key-Value 등 다양한 데이터 모델을 지원하는 오픈소스 데이터베이스.
- OrientDB: 객체 지향적 NoSQL 데이터베이스로, 그래프 및 관계형 데이터 모델을 지원.
특징
- 서버리스(Serverless) 지원
- 별도의 서버 관리 없이 클라우드 기반으로 확장 및 운영 가능.
- 필요에 따라 자동 확장(Autoscaling) 이 이루어짐.
- 여러 데이터 모델을 하나의 DB에서 지원
- 문서(Document), Key-Value, 그래프(Graph), 관계형(Relational) 데이터 모델을 동시에 지원.
- 데이터의 종류와 목적에 따라 유연한 데이터 저장 방식 제공.
- 다양한 API 및 쿼리 언어 지원
- SQL, GraphQL, JSON 기반 쿼리 등 다양한 접근 방식을 지원.
- 높은 확장성과 글로벌 분산 처리 지원
- CosmosDB, FaunaDB 등은 전 세계적으로 분산된 데이터 처리를 지원.
- 데이터가 여러 리전(Region)에서 동기화되어 사용 가능.
장점
- 다양한 데이터 유형을 유연하게 처리 가능
- 하나의 DB에서 여러 가지 데이터 모델을 동시에 사용할 수 있음.
- 예) IoT 데이터(문서형) + 소셜 네트워크(그래프) + 실시간 분석(Key-Value) 조합 가능.
- 글로벌 확장성(Global Scalability) 제공
- CosmosDB, FaunaDB는 데이터가 글로벌 네트워크에서 자동 복제됨.
- 멀티 리전 지원을 통해 빠른 데이터 접근 가능.
- 마이크로서비스 아키텍처와의 높은 호환성
- 서로 다른 마이크로서비스에서 필요에 따라 다양한 데이터 모델을 혼합하여 활용 가능.
- 서버리스(Serverless) 운영으로 비용 효율적
- 서버를 직접 운영할 필요 없이 클라우드에서 자동 확장되므로 비용 절감 효과가 있음.
단점
- 모든 데이터 모델을 완벽히 최적화할 수는 없음
- 특정 워크로드(예: 관계형 데이터 모델이 강한 시스템)에는 전통적인 RDBMS보다 성능이 떨어질 수 있음.
- 복잡한 데이터 모델 설계 필요
- 여러 데이터 모델을 지원하므로 적절한 데이터 모델을 선택하는 것이 중요함.
- 쿼리 성능 튜닝이 어려울 수 있음
- 데이터 모델마다 최적의 쿼리 방식이 다르기 때문에 최적화된 쿼리를 작성하기 어렵다.
- 서버리스 기반 DB는 비용 예측이 어려울 수 있음
- 사용량 기반 과금 모델로 인해 트래픽이 갑자기 증가하면 예상보다 높은 비용이 발생할 가능성이 있음.
사용 사례 (Use-cases)
- 실시간 데이터 분석
- IoT 센서 데이터, 실시간 사용자 행동 데이터 분석.
- IoT 데이터 처리
- 수백만 개의 연결된 장치에서 스트리밍 데이터를 실시간으로 분석 가능.
- 모바일 백엔드
- 글로벌 분산형 DB 기능을 활용하여 사용자 데이터 동기화 및 백엔드 API 처리.
- 마이크로서비스 아키텍처
- 다양한 마이크로서비스에서 필요에 따라 유연하게 데이터 모델을 선택하여 활용.
'Data' 카테고리의 다른 글
[JPA] Spring Data JPA의 핵심 개념 (1) 2026.01.24 [JPA] 기본적인 Spring Data Jpa 활용 (0) 2026.01.24 [Data] JPA - 나오게 된 배경, 사용 이유 (0) 2026.01.03 PL/SQL 실습 (2) 2025.05.01 PL/SQL이란? 오라클의 절차형 SQL 언어 정리 (0) 2025.05.01