GN⁺ 4달전 | parent | ★ favorite | on: Litestream VFS(fly.io)
Hacker News 의견들
  • 오, 이건 내가 만든 Go용 sqlite vfs 모듈을 사용하고 있음
    내가 만든 코드가 다른 사람에게 도움이 된다는 걸 알게 될 때마다 정말 기쁨
    psanford/sqlite3vfs
    • 잘 작동했음. 덕분에 고마움
    • 결국 우리가 인생에서 바라는 건 이런 순간임
  • 이건 정말 멋짐. Litestream VFS가 유닉스 철학을 그대로 담고 있음
    SQLite는 평소처럼 작동하고, Litestream은 그 위에서 투명하게 동작함
    즉, SQL과 SQLite pragma만으로 즉시 시점 복구(PITR) 를 구현할 수 있음.
    프로덕션 데이터셋을 직접 만지지 않고도 과거 데이터를 빠르게 조회할 수 있음
  • 인터페이스 디자인이 정말 깔끔함
    환경 변수로 S3 버킷을 지정하고, SQLite에서 .load litestream.so
    PRAGMA litestream_time = '5 minutes ago';로 과거 시점 데이터를 바로 조회할 수 있음
    • macOS에서는 brew install sqlite3
      .load litestream sqlite3_litestreamvfs_init처럼 init 함수 이름을 직접 지정해야 함
  • bun:sqlite로도 성공적으로 작동시켰음
    "LITESTREAM_REPLICA_URL"AWS 키 환경 변수만 설정하면 됨
    temp.loadExtension("/path/to/litestream.dylib", "sqlite3_litestreamvfs_init")로 확장 로드 후
    file:my.db?vfs=litestream으로 열면 바로 사용 가능함
    • 이건 주로 JavaScript 서버(bun) 환경에서 쓰이는 용도인지 궁금함
    • 잘 작동했다니 멋짐. 그런데 .dylib 파일 경로는 어떻게 찾았는지 궁금함
    • 참고로, 이 예시에서 환경 변수 설정 부분은 dotenv로는 작동하지 않음. 반드시 실행 시 직접 지정해야 함
  • 정말 멋진 기능임.
    내 사용 사례는 S3에 저장된 읽기 전용 SQLite DB를 웹사이트에서 직접 사용하는 것임
    DB는 cron 작업 등으로 갱신되고, 웹사이트는 Litestream VFS를 통해 최신 데이터를 읽기만 함
    이런 방식으로 사용해도 괜찮은지, 그리고 Python 통합 모듈이 있는지도 궁금함
    현재는 Flask 앱이 Google Spreadsheet에서 데이터를 가져와 SQLite로 변환 후 매일 갱신함
    내 앱 코드 참고
    • 작성자임. Litestream VFS는 1초마다 백업 데이터를 자동으로 폴링해서 최신 상태를 유지함
      추가적인 Python 코드 없이 SQLite CLI에서도 그대로 작동함
    • 비슷한 용도로 ZeroFS도 추천함
      S3만 외부 의존성으로 사용하며 SQLite와도 잘 맞음
      ZeroFS SQLite 성능 참고
  • Go용 SQLite 드라이버에도 이미 구현해둠
    ncruces/go-sqlite3 예시 코드
    환경 변수 없이 프로그램 코드로 제어할 수 있고, 여러 DB를 동시에 다룰 수 있음
    단, PRAGMA litestream_time커넥션 단위로 적용되므로 커넥션 풀 사용 시 주의 필요함
    • .load litestream.so를 보고 바로 ncruces/go-sqlite3가 떠올랐음
      wasm 환경에서도 작동시키는 게 어려웠는지 궁금함
  • 최근 DuckDB를 배우며 SQLite와의 차이를 느끼고 있음
    DuckDB의 “DuckLake” 확장은 트랜잭션마다 스냅샷을 만들어 “시간 여행” 기능을 제공함
    이는 Litestream VFS의 PITR과 유사함
    OLTP에서는 이를 복구 기능이라 부르고, OLAP에서는 “Time Travel”이라 함
    DuckLake는 외부 카탈로그 DB(PostgreSQL/MySQL/SQLite)를 이용해 다중 프로세스 접근을 조율함
    반면 Litestream은 S3의 불변 LTX 파일을 통해 여러 리더가 동시에 접근 가능함
    두 세계 모두 “공유 스토리지 + 메타데이터 + 압축(compaction)” 구조로 수렴 중임
    이런 프로젝트 간의 교차 협업이 더 많아지면 좋겠음
  • 샌드위치 애호가로서, 그 샌드위치 평점 데이터가 정말 궁금함
  • 흥미롭긴 한데, 정확히 어떤 소프트웨어가 발표된 건지 헷갈림. Litestream의 새 버전인가?
    • 작성자임. 맞음, Litestream v0.5.3이 새로 릴리스되었고, 읽기 전용 VFS 옵션이 추가됨
      v0.5.3 릴리스 노트
    • 이번 버전에는 멀티 테넌트 DB용 디렉터리 복제 지원도 포함되어 있음. 훌륭한 추가 기능임
  • sqlite 확장 기능들과도 함께 작동하는지 궁금함
    예를 들어 sqlite-vec이나 vss 같은 벡터 검색 확장을 사용 중일 때,
    Litestream으로 S3에 실시간 백업하고 Litestream VFS로 원격 조회가 가능한지 알고 싶음
    • 나도 궁금함. 아마 쿼리는 로컬에서 실행되고, 필요한 페이지 단위로 S3에서 가져오는 구조라면 그냥 작동할 듯함
      직접 테스트해보는 수밖에 없을 것 같음
    • 가능함 (그게 전부임)