4P by xguru 10달전 | favorite | 댓글 1개
  • SQLite 데이터베이스를 클라우드 스토리지에 저장한 뒤, DB전체를 다운 받지 않고도, 읽고 쓰는 것을 가능케 하는 시스템
    • 현재 Azure BLob Storage 와 Google Cloud Storage 지원
  • Block Cache VFS 모듈을 이용: Daemonless 모드(Reade/Write)와 Daemon 모드(Read-Only)로 동작

GN⁺ 가 요약한 내용

  • "클라우드 지원 SQLite" (CBS) 시스템은 데이터베이스를 클라우드 저장소 계정에 저장하고 전체 데이터베이스를 다운로드하지 않고 저장소 클라이언트가 액세스할 수 있게 합니다.
  • 여러 클라이언트가 동시에 데이터베이스에 액세스할 수 있지만 한 클라이언트만 데이터베이스에 쓸 수 있습니다.
  • CBS는 현재 Azure Blob Storage와 Google Cloud Storage를 지원하며 다른 클라우드 저장소 시스템을 지원할 수도 있습니다.
  • SQLite 데이터베이스는 고정 크기 블록으로 나누어져 클라우드 저장소 시스템에 저장됩니다.
  • 이 시스템은 클라우드 저장소 컨테이너 관리를 위한 기본 요소, 원격 데이터베이스에 대한 로컬 액세스를 제공하는 데몬 프로세스, 클라우드 데이터베이스에 액세스하기 위한 VFS 모듈로 구성됩니다.
  • CBS를 사용하려면 애플리케이션은 필요한 C 파일과 헤더 파일을 빌드하고 링크해야 하며 libcurl과 openssl에 링크해야 합니다.
  • 시스템은 자동화된 테스트 스위트를 사용하여 테스트할 수 있습니다.
  • 데이터베이스는 명령줄 도구를 사용하여 클라우드 저장소 계정에 업로드할 수 있습니다.
  • 클라우드 저장소에 저장된 데이터베이스에 액세스하려면 VFS를 생성하고 컨테이너를 연결하고 데이터베이스 핸들을 열고 SQL 스크립트를 실행해야 합니다.
  • 시스템은 새로운 클라우드 저장소 시스템을 지원하고 가상 테이블을 구현하기 위한 API를 제공합니다.
  • 이 기사에서는 클라우드 저장소 시스템에서 안전한 컨테이너의 사용에 대해 논의합니다.
  • 컨테이너는 안전하게 또는 불안전하게 연결할 수 있으며, 안전한 연결은 AES OFB 암호화를 사용하여 데이터를 암호화합니다.
  • 로컬 클라이언트는 데몬 프로세스로부터 암호화 키를 얻기 위해 유효한 클라우드 저장소 자격 증명이 필요합니다.
  • 이 기사에서는 클라우드 저장소 시스템을 위한 "azure"와 "google" 내장 모듈을 언급합니다.
  • CBS API와 명령줄 도구는 모듈 사양, 사용자 이름 및 인증 값이 필요합니다.
  • 이 기사에서는 "azure" 모듈의 세부 정보와 인증을 위한 SAS 토큰 생성 방법을 제공합니다.
  • "google" 모듈은 CBS를 Google Cloud Storage에 연결하기 위해 프로젝트 ID와 액세스 토큰이 필요합니다.
  • 이 기사에서는 여러 클라이언트로부터의 동시 액세스와 변경 사항을 확인하기 위해 컨테이너를 폴링해야 하는 필요성을 언급합니다.
  • Blockcachevfs는 bcv_upload, bcv_poll 및 bcv_client 세 가지 PRAGMA 문을 지원합니다.
  • 가상 테이블 인터페이스는 bcv_container 및 bcv_database 테이블로 구성됩니다.
  • bcv_container 테이블에는 연결된 컨테이너에 대한 정보가 포함되어 있으며, bcv_database 테이블에는 각 컨테이너의 데이터베이스에 대한 정보가 포함되어 있습니다.
  • 이 기사에서는 blockcachevfs 데이터베이스의 다양한 테이블의 구조와 기능에 대해 논의합니다.
  • "bcv_database" 테이블에는 데이터베이스에 대한 로컬 변경 사항에 대한 정보가 포함되어 있습니다.
  • "bcv_http_log" 테이블은 VFS 또는 연결된 데몬에 의해 수행된 HTTP 요청을 기록합니다.
  • "bcv_kv" 테이블은 애플리케이션이 클라우드 저장소 컨테이너에 데이터를 쓸 수 있게 합니다.
  • "bcv_kv_meta" 테이블은 클라우드 저장소 서버의 HTTP 헤더에 대한 읽기 전용 액세스를 제공합니다.
  • 이 기사에서는 blockcachevfs 데이터베이스에서 다양한 작업에 대한 명령줄 참조도 제공합니다.
  • 데몬 명령은 blockcachevfsd 프로세스가 서버로 실행되어 클라이언트로부터의 연결을 수락할 수 있게 합니다.
  • 데몬 프로세스는 구성 및 로깅을 위한 다양한 옵션을 지원합니다.
Hacker News 의견
  • 대규모 SQLite 데이터베이스를 청크로 서빙하고 HTTP 범위 요청으로 쿼리하는 개발자의 경험 공유
  • 이 프로세스를 도와주는 sql.js-httpvfs라는 라이브러리 언급
  • 개발자는 350MB의 SQLite 데이터베이스를 작은 조각으로 나누어 GitHub에 업로드
  • 프로젝트를 확인하고 콘솔과 네트워크 탭에서 테스트하는 것을 추천
  • 다른 댓글러는 원격 데이터 저장소를 사용할 때 캐시 일관성, 동시성, 네트워크 차단 및 인증 문제에 대한 우려를 제기
  • 일정 기간마다 데이터베이스를 tmpfs 파일 시스템에 복사하고 객체 저장소에 복사하는 더 간단한 해결책을 제안
  • 문제 해결, 저렴하고 빠른 파일 복사, 외부 데몬 없음, 간단한 전역 잠금, 스레드 안전성, 네트워크 차단 없음, 외부 인증 등의 이점을 강조
  • 다른 댓글러는 PostgreSQL이 이미 같은 문제를 해결하는데 왜 임베디드 데이터베이스인 SQLite를 클라우드 서비스에 배포하는지 의문을 제기
  • 저장소를 클라우드로 옮기면 대기 시간과 간단함이 저하될 것이라 주장
  • 다른 댓글러는 SQLite에 대한 pg_dump와 mysqldump와 동등한 명령이 있는지 묻습니다.
  • 시스템은 현재 Azure Blob Storage와 Google Cloud Storage를 지원하며, AWS는 제외될 수 있다고 언급
  • 다른 댓글러는 이 기능이 공식적으로 지원되는 것인지 "기술적으로 가능하다"는 상황인지 확신하지 못합니다.
  • 외부 클라우드 저장소에 대해 Datasette를 실행할 수 있는지 궁금해합니다.
  • 다른 댓글러는 데이터베이스에 한 번에 하나의 클라이언트만 쓰도록 보장하는 것에 대한 우려를 제기
  • SQLite의 VFS 레이어는 클라우드 객체 저장소를 구현하기 위해 유연하고 쉽게 사용할 수 있다고 언급
  • 캐싱은 구현의 까다로운 측면일 수 있다는 것을 언급
  • 다른 댓글러는 SQLite를 클라우드에서 사용하는 대신 다른 관계형 데이터베이스를 사용하는 아이디어에 혼란을 느낍니다. SQLite는 원래 로컬 사용을 위해 설계되었기 때문입니다.