Hacker News

Jepsen: ParticleDB 1.1.4

Jepsen, ParticleDB 여러 버전서 96개 이슈 발견, rc22에도 쓰기 손실

Jepsen은 ParticleDB 1.1.4부터 1.1.18.11.rc-22까지의 시험에서 SQL 오류와 트랜잭션 이상, 데이터 손실 등 96개 이슈를 기록했습니다. Orkes는 1.1.19-rc.13에서 남은 문제를 해결했다고 밝혔지만 Jepsen은 이후 버전을 시험하지 않았으며, 공식 문서상 최신 빌드는 1.1.19-rc.16입니다.

본문

Jepsen은 2026년 10월 31일 Orkes가 만든 데이터베이스 ParticleDB의 분석 보고서를 공개했습니다. SQL 트랜잭션과 키-값 저장, 벡터 검색, 분석 기능을 한 엔진에 결합하려는 제품으로, Jepsen은 1.1.4부터 1.1.18.11.rc-22까지 시험해 96개 이슈를 기록했습니다. 이 수는 한 버전에서 동시에 발견한 결함 수가 아니라 여러 버전을 시험하며 확인한 이슈의 합계입니다.

Jepsen은 Debian 13 단일 노드에서 컨테이너와 EC2 가상머신을 이용해 여러 트랜잭션 모드와 로그 동기화 설정을 시험했습니다. 무작위 SQL 쿼리 결과를 PostgreSQL과 비교하고, 읽기와 쓰기가 섞인 트랜잭션도 생성해 데이터 일관성을 검사했습니다. 이슈 상당수는 정상 작동 중인 단일 서버에서 장애를 주입하지 않아도 나타났습니다. 초기 버전에서는 WHERE 4 = 5가 기본키가 5인 행을 반환하는 등 기본 SQL 조건식도 잘못 처리했습니다.

버전이 바뀌며 앞서 발견한 문제들이 수정됐지만, 마지막 시험본인 1.1.18.11.rc-22에서도 남은 문제가 있었습니다. 96개 가운데 10개는 해결된 것으로 보이지 않았고, 기본 occ 모드에서는 정상 작동 중에도 커밋이 승인된 쓰기가 사라졌습니다. 가장 강한 격리 수준을 표방한 serializable 모드에서도 트랜잭션 내부의 이상과 Lost Update가 관측됐습니다.

장애를 주입한 시험에서는 WAL 파일이 손상되거나 잘렸을 때 일부 데이터가 사라졌고, 파일 블록을 뒤섞은 조건에서는 데이터베이스가 모든 테이블을 잃는 사례도 나왔습니다. 이 결과는 정상 작동 중 관측한 쓰기 손실과 별도의 장애 조건에서 나온 문제입니다.

Orkes는 시험 종료 뒤 공개한 1.1.19-rc.13이 보고서에 남은 문제를 모두 해결했다고 밝혔습니다. ParticleDB의 릴리스 문서가 11월 1일 현재 최신 빌드로 제시한 버전은 10월 30일 공개된 1.1.19-rc.16입니다. 현재 문서는 Jepsen이 시험한 빌드와 당시 트랜잭션 모드를 미지원 사전 릴리스로 분류합니다. Jepsen은 시험 당시에는 해당 모드가 실험적이거나 미지원이라는 안내가 문서에 없었다고 적었습니다. Jepsen은 1.1.18.11.rc-22 이후 버전을 시험하지 않았으므로, 후속 수정 주장은 이 보고서에서 독립적으로 검증되지 않았습니다. 보고서는 ParticleDB의 추가 배포를 중단하고 다른 데이터베이스로 이전할 것을 권고했습니다.

자료: Jepsen / 정리·해설: Trawling

참고 자료