rqlite 개발자 필립 오툴, 2014년부터 이어진 분산 SQLite 12년 역사 정리
- 2014년 9월 Raft 로그를 SQLite 앞에 두는 rqlite를 공개했고, 저자가 알기로 Raft와 SQLite를 결합한 최초의 오픈소스 시스템임
- rqlite는 처음부터 CP 시스템으로 설계돼 쓰기는 리더를 거치고 과반의 확인을 받아야 하며, 소수 파티션에 남은 노드는 쓰기를 거부함
- 2017년 Canonical의 dqlite는 제품 안에 넣는 임베드 라이브러리로, rqlite는 제품 옆에 두는 서버로 갈라졌음
- 2021년 Litestream은 합의 프로토콜 없이 SQLite WAL을 S3로 스트리밍해 단일 노드 재해 복구를 거의 무료로 제공했고, 이후 rqlite 8.0의 WAL 처리 방식에도 영향을 줬음
- 2022년 cr-sqlite는 CRDT 확장으로 리더 없이 다중 쓰기를 허용해 AP 영역을 열었고, 현재 분산 SQLite 범주에는 프로젝트가 12개 있으며 그중 몇 개는 VC 투자를 받고 2개는 인수됨
Hacker News opinions
dqlite를 작은 클러스터에서 돌리고 있는데 더 튼튼한 걸로 옮기고 싶음. 이 영역에서 뭐가 나음?
어떤 문제를 겪었길래 옮기려는 거임?
분산 SQLite 좋은 건 알겠는데 벤치마크가 있나. 어떤 유즈케이스에서 이점이 있는지 감이 안 옴
이거 한번도 자세히 본 적 없는데 클러스터 DB 구조 중에 제일 단순해 보임. rqlite로 컨트롤 레이어 돌리는 중인데 지금까지 만족함
sqlite 쪽에 hctree도 있음
요즘 rails가 프로덕션 옵션으로 SQLite를 권장하던데 동시 접근은 어떻게 되는지 모르겠음. 찾아봐야겠다
WAL이나 wal2 쓰면 동시 접근 문제는 해결됨
테넌트마다 SQLite 하나씩 두거나 깃허브에 올라온 멀티라이터 라이브러리를 봐라
재밌게 읽었는데 마지막에 자기가 청사진을 그렸다는 걸 역사에 확실히 남기려는 부분에서 좀 식었음
저자가 12년을 만들어놓고 천 단어짜리 역사를 자기가 안 쓸 이유가 뭐 있음. 나는 괜찮다고 봄
VC 받은 SQLite 서비스들이 자기가 원조인 것처럼 떠드는 걸 생각하면 이 정도 균형은 맞는 것 같음. 역사가 최근 5년부터 시작되는 글 많잖아. 20년 넘게 거슬러 올라가는 회고가 더 나왔으면 좋겠음
D1을 프로덕션에서 써봤는데 별로 안정적이지 않음. D1 개발자도 D1은 durable object 하나에 SQLite를 붙인 API 래퍼일 뿐이라고 HN에서 말했음
sqlite처럼 임베드되고 dqlite처럼 클러스터되고 rqlite처럼 단독 노드로도 돌고 litestream처럼 S3 백업되고 cr-sqlite처럼 AP도 되는 프로젝트는 없나
내 프로젝트 mpedb는 아직 거기까지는 아니고 sqlite3, PostgreSQL, Oracle 동기화에 집중함. sqlite3 동시 쓰기가 PostgreSQL 속도로 가능하다는 건 보여줬음
rqlite 클라이언트 라이브러리 하나 관리하는데 개념도 좋고 구현도 좋음. JSON을 돌려줘서 .NET에서 Dapper 매핑이 아주 쉬움
오픈소스 옵저버빌리티인 morio.it 컨트롤 플레인 DB로 rqlite를 프로덕션에서 씀. 필립은 정말 헌신적이고 친절한 메인테이너임