Pulse 게시 ·

Cloudflare, 수백만 D1 데이터베이스를 지원하는 제어 구조 공개

Cloudflare가 D1의 수백만 데이터베이스를 관리하면서 쿼리 경로의 중앙 병목을 줄인 구조를 공개했다. 라우팅 정보는 Workers KV에서 읽고, 데이터베이스별 Durable Object가 주기적으로 상태를 바로잡는다. 회사에 따르면 10월 8일 기준 지난 1년간 삭제되지 않은 DB는 15배, 일일 활성 DB는 18배 늘었다.

내용·출처 업데이트 · 2026. 10. 14. 오전 2:41

D1은 SQLite 기반 관리형 서버리스 데이터베이스이며, 각 DB를 하나의 SQLite Durable Object로 구현한다.

HTTP 쿼리는 Workers KV에서 DB와 Durable Object의 연결 정보를 찾는다. 정보가 없으면 Hyperdrive 캐시와 중앙 Postgres 읽기 복제본으로 대체 조회한다.

Worker의 D1 Binding은 연결 정보를 자체 보유해 메타데이터 조회 없이 쿼리 처리 Worker로 요청을 보낸다.

생성 시 Durable Object를 먼저 초기화하고 중앙 Postgres에 메타데이터를 기록한다. 재시도마다 새 ID를 사용해 여러 객체가 같은 DB를 소유하는 상황을 피한다.

약 30초 간격에 DB별 지터를 더한 하트비트로 고아 객체를 정리하고, Workers KV의 활성·삭제 상태를 보정한다.

생성·삭제 같은 제어 작업은 중앙 구성요소를 사용할 수 있지만, 쿼리 경로에서는 중앙 조회를 최소화한다. 분석·과금 작업에는 비동기 처리와 최종 일관성을 활용한다.

사용자·테넌트마다 작은 DB를 만드는 서비스에서는 쿼리 처리와 생성·삭제 관리를 분리하는 설계가 참고가 된다.

원문