PouchDB, CouchDB, RealmDB

agnusdei·2025년 5월 28일

Database

목록 보기
63/76

문제

PouchDB, CouchDB, Realm DB에 대해 각각 설명하고, 모바일 환경에서의 적용 및 비교를 수행하시오.


답안

1. 개요 (Overview)

기술설명
PouchDB클라이언트 측(Local-first) 자바스크립트 기반 NoSQL DB, CouchDB와의 동기화 가능
CouchDB서버 측 RESTful NoSQL DBMS, JSON 문서 기반 저장 및 PouchDB와의 동기화 지원
Realm DB모바일 특화 DB, 객체 기반 저장 방식, 실시간 동기화 기능(Realm Sync) 포함

2. 개념 및 역할

(1) PouchDB (파우치디비)

  • Client-Side NoSQL DB
  • HTML5 LocalStorage 대체를 위해 만들어진 오프라인 퍼스트(Offline First) 설계
  • 자바스크립트 기반 문서 지향(Document-Oriented) 데이터베이스
  • CouchDB와 100% 호환, 따라서 PouchDB에서 작업한 내용을 CouchDB로 손쉽게 동기화 가능

Pouch: 작은 주머니 → 브라우저 안에 DB를 담는 개념

📌 핵심 기능
  • 브라우저에서 실행 가능 (IndexedDB, WebSQL 등 위에 추상화)
  • 자동 Conflict Resolution 지원
  • 변경 기록 추적(Change feed) 기능
  • 동기화(sync) → db.sync('http://couchdb서버주소')

(2) CouchDB (카우치디비)

  • Apache에서 개발한 오픈소스 NoSQL 문서 지향 데이터베이스
  • REST API, JSON 포맷 기반 문서 저장
  • MVCC(Multi-Version Concurrency Control) 기반 동시성 제어
  • Master-Master Replication 지원 → 고가용성, 병렬성

Couch: Cluster Of Unreliable Commodity Hardware

📌 핵심 기능
  • 분산 환경에서의 데이터 복제 및 동기화
  • 데이터는 JSON, 질의는 MapReduce(JavaScript)
  • HTTP 기반 인터페이스 (curl로 바로 데이터 CRUD 가능)
  • 충돌(Conflict) 발생 시 자동 병합 또는 수동 선택

(3) Realm DB (렐름 디비)

  • 모바일 앱에 최적화된 객체형 로컬 DB
  • MongoDB 산하에서 개발/유지 (Realm은 MongoDB의 모바일 버전)
  • SQLite보다 빠른 성능과 더 직관적인 API 제공 (OOP 기반)
  • 객체를 직접 저장 (객체 DB 개념) → ORM이 필요 없음
  • 클라우드와의 자동 동기화(Realm Sync) 지원
📌 핵심 기능
  • 실시간 동기화 가능 (Realm Cloud 또는 MongoDB Atlas)
  • 로컬 DB + 서버와의 자동 병합 (Conflict 자동 처리)
  • Thread-safe, Reactive Database (변화 감지 및 이벤트 처리)
  • iOS, Android, React Native 등 모바일 전용 SDK 제공

3. 동기화 원리 (Synchronization Mechanism)

기술동기화 방식
PouchDB ↔ CouchDB양방향 동기화 지원 (db.sync)
변경 이력 기반 Conflict 해결
Realm DBRealm Sync 사용 시 클라이언트 ↔ 클라우드 실시간 동기화
충돌은 Last-Write-Wins 기본 처리

4. 구조도 예시

📌 PouchDB + CouchDB 구조

[Mobile App]
   ↓ (Local DB)
[PouchDB]
   ↕ (Sync API)
[CouchDB]
   ↕
[Cloud Server]

📌 Realm 구조

[Mobile App]
   ↓
[Realm Local DB]
   ↕ (Realm Sync)
[Realm Cloud (MongoDB Atlas)]

5. 구성 요소 비교

항목PouchDBCouchDBRealm DB
저장 방식JSON 문서JSON 문서객체(Object)
사용 환경클라이언트 (브라우저, 모바일)서버 측 DB클라이언트 (모바일 전용)
동기화CouchDB와 양방향PouchDB와 양방향Realm Sync 통한 실시간
트랜잭션없음 (단일 문서 단위)없음 (충돌 시 버전 병합)있음 (트랜잭션 블록 제공)
쿼리 방식MapReduce, Mango QueryMapReduceRealm Query Language
특징오프라인 퍼스트RESTful, 분산 구조고성능, 객체 기반

6. 장단점 비교

기술장점단점
PouchDB오프라인 퍼스트, 브라우저/모바일 동시 지원, CouchDB 연동 용이대용량 처리에는 한계, 구조 복잡
CouchDBJSON/REST 기반, 분산 복제 기능 탁월트랜잭션 부족, 실시간 처리 제한
Realm DB객체 지향, 고성능, 동기화 간편MongoDB Cloud 의존성, 커스터마이징 어려움

7. 모바일 환경 적용 시 고려사항

항목고려 내용
오프라인 동작PouchDB, Realm 모두 지원. SQLite 대비 우수
성능Realm은 네이티브로 설계돼 속도 매우 빠름
동기화 신뢰성PouchDB ↔ CouchDB는 충돌 조정이 유연 / Realm은 자동 처리로 단순
개발 언어PouchDB는 JS 기반 / Realm은 Swift, Kotlin 등 모바일 친화적 언어 지원

8. 활용 사례

분야적용 사례
모바일 메모 앱Realm DB → 빠른 로컬 저장, 서버 동기화
PWA 오프라인 앱PouchDB + CouchDB → 브라우저 동기화
IoT 기기 데이터 저장CouchDB → 분산 노드 간 동기화
캘린더/할 일 관리 앱Realm DB → 실시간 반영, 클라우드 연동

9. 어린이 요약

  • PouchDB는 웹 브라우저 속에 작동하는 작은 DB로, 인터넷 안 돼도 글을 저장할 수 있어요.
  • CouchDB는 서버에서 많은 DB를 잘 나눠 저장해주는 큰 창고 같은 역할을 해요.
  • Realm DB는 핸드폰 안에 있는 빠른 노트장이자, 클라우드랑도 자동으로 연결되는 똑똑한 메모장이에요!

10. 결론

PouchDB, CouchDB, Realm DB는 모바일 또는 오프라인 환경에 특화된 데이터 저장 및 동기화 기술로 각기 다른 강점을 가진다.

  • PouchDB + CouchDB 조합웹 중심의 오프라인 동기화에 강하고,
  • Realm DB모바일 UX 중심의 고성능 객체 DB 및 자동 동기화에 강점을 가진다.

시스템 목적(웹/모바일, 성능/동기화, 사용자 수 등)에 따라 적절한 선택과 아키텍처 구성 필요하다.


profile
DevSecOps Pentest🚩

0개의 댓글