Hacker News인프라 · 데브옵스

Jepsen이 ParticleDB 1.1.4를 분석, 96개 결함 발견

원제 Jepsen: ParticleDB 1.1.4

131 포인트댓글 66
Key Point

ParticleDB가 Postgres 호환성을 표방하며 프로덕션 배포 중임에도 기본적인 트랜잭션 격리, 제약 조건 강제, WHERE 절 평가 같은 핵심 SQL 기능에서 광범위한 결함을 가지고 있어, 현재의 신뢰성 수준을 평가해야 한다.

핵심 요약

  • Orkes가 개발한 ParticleDB는 SQL, 키-밸류, 벡터 검색, 라이브 분석을 하나의 엔진에 통합한 데이터베이스로, Postgres와 Redis 프로토콜을 지원하며 Rust로 작성되었다.
  • Jepsen은 ParticleDB 1.1.4~1.1.18.11.rc-22를 테스트하여 96개의 결함을 발견했으며, 공식 TLA+ 증명이 불가능하고 트랜잭션 격리 수준 설정이 제대로 작동하지 않음을 지적했다.
  • 성능 문제로 table-2pl 모드에서 대부분의 트랜잭션이 10~30초 지연되었고, 신비한 충돌로 인해 수백~수천 초 후 오류 메시지 없이 죽었다.
  • deadlock 문제는 2개의 동시 트랜잭션만으로도 발생했으며, 초기 버전에서는 45초 이상 실행 불가능했다.
  • Prepared statement 실행 시 Postgres JDBC 드라이버에서 NoSuchElementException이 발생했고, Postgres 인터페이스에서 대부분의 쿼리가 '타입 오류' 또는 '필드 구조 누락' 오류를 던졌다.
  • WHERE 절이 제대로 작동하지 않아 거짓 조건도 행을 반환했고, 부동소수점 연산이 있는 복잡한 WHERE 조건은 아무 행도 반환하지 않았다.
  • NOT NULL과 UNIQUE 제약이 무시되어 null 값이나 중복된 값이 삽입될 수 있었고, PRIMARY KEY도 null로 업데이트될 수 있었다.
  • 이 결함들은 단일 노드, 단일 클라이언트, 결함 없는 건전한 환경에서도 대부분 발생했으며, 여러 버전에 걸쳐 점진적으로 수정되었다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗