Deno(디노) 런타임 환경에서 PouchDB(파우치DB)를 사용할 수 있게 해주는 새로운 프로젝트 'Cushion(쿠션)'이 공개되었습니다. Cushion은 Deno의 내장 키-값(Key-Value) 데이터베이스인 Deno KV를 스토리지 어댑터로 활용하여, 개발자들이 Deno 환경에서 CouchDB(코치DB) 스타일의 문서 데이터베이스를 쉽게 구축하고 관리할 수 있도록 돕습니다. 이는 Deno KV가 FoundationDB(파운데이션DB)를 기반으로 한다는 점과 CouchDB 4.0이 FoundationDB를 활용할 계획이라는 점에서 영감을 받아 시작된 프로젝트입니다.
Cushion은 PouchDB의 핵심 기능들을 Deno KV 위에서 구현합니다. 문서의 리비전(revision)을 자동으로 추적하여 낙관적 동시성(optimistic concurrency)을 지원하며, 여러 사용자가 동시에 문서를 업데이트할 때 발생하는 충돌을 감지하고 처리할 수 있습니다. 또한, 맵-리듀스(map-reduce) 뷰와 쿼리 빌더를 제공하여 데이터 집계 및 조회를 용이하게 합니다. 개발자는 `db.put()`과 `db.get()` 같은 익숙한 PouchDB API를 사용하여 데이터를 저장하고 검색할 수 있으며, `withEmit`과 `ViewQuery` 같은 헬퍼 함수를 통해 타입 안정성을 확보하고 복잡한 쿼리를 쉽게 구성할 수 있습니다.
이 프로젝트는 Deno 개발자들에게 강력한 로컬 데이터베이스 솔루션을 제공한다는 점에서 큰 의미를 가집니다. PouchDB는 웹 애플리케이션에서 오프라인 우선 기능을 구현하는 데 널리 사용되어 왔는데, Cushion을 통해 Deno 기반 백엔드나 엣지 컴퓨팅 환경에서도 이러한 이점을 누릴 수 있게 됩니다. 다만, Deno KV의 64 KiB 값 제한과 원자적(atomic) 작업의 1,000개 변형 및 800 KiB 총량 제한 등 몇 가지 제약 사항이 있으므로, 대용량 문서나 대규모 일괄(bulk) 쓰기 작업 시에는 주의가 필요합니다. 그럼에도 불구하고 Cushion은 Deno 생태계에서 데이터 관리의 유연성을 한층 높여줄 것으로 기대됩니다.