본문 바로가기

좋아하는 것_매직IT/96.IT 핫이슈

LiteFS - SQLite를 위한 오픈소스 분산 파일 시스템을 소개합니다 (fly.io)

반응형

LiteFS - SQLite를 위한 오픈소스 분산 파일 시스템을 소개합니다 

해당 웹페이지에서는 아래와 같이 소개하고 있고요..
Fly.io runs apps close to users around the world, by taking containers and upgrading them to full-fledged virtual machines running on our own hardware around the world. We're also building an open-source distributed file system for SQLite called LiteFS which is pretty cool too. Give us a whirl and get up and running quickly.
Full-stack developers are sleeping on SQLite, a database most devs think more suited to unit tests than production loads. That's true enough for some apps. Most web apps are read-heavy, though, and we can use that to our advantage. With the right tooling, SQLite makes for faster, simpler web apps.

....(중략)...
LiteFS: Where We're Going We Don't Need Database Servers
At least, not as such.

LiteFS extends the idea of Litestream with fine-grained transactional control. Where Litestream simply copies the raw SQLite WAL file, LiteFS can inspect and ship individual transactions, which span pages, and are the true unit of change in a SQL database.

SQLite imposes on us a constraint that makes this transactional control harder: SQLite is baked into the apps that use it. If you build something that changes the SQLite library itself, you're not building tooling; you're building a new database. And we're not interested in getting people to switch to a new flavor of SQLite.

There's two options for intercepting the file system API in SQLite:

Use the Virtual File System (VFS) abstraction in SQLite.
Build a FUSE file system.

한마디로 LiteFS는 SQLite를 위한 오픈소스 분산 파일 시스템이라고 머릿속에 넣어두시면 됩니다. 

샘플은 아래 깃허브에 있고요..



LiteFS의 특징을 간단하게 정리하자면 아래와 같습니다. 

  • SQLite의 풀스택 활용에 올인하고 있는 Fly io의 새로운 프로젝트
  • 세분화된 트랜잭션 제어를 통해서 Litestream의 아이디어를 확장
    • Litestream은 WAL 파일을 단순 복제하지만, LiteFS는 각각의 트랜잭션 단위로 조사 및 적용
  • SQLite의 파일시스템 API를 인터셉트 하는 방법은 두가지 : VFS 추상화 사용 vs. FUSE 파일 시스템 작성
    • LiteFS는 더 어려운 FUSE 파일시스템 생성하는 방식을 채택
    • VFS는 사용하기 위한 사전 단계가 있어서, 누군가 DB를 사용하려고 하면 VFS를 먼저 로드해야함
    • FUSE는 이런 사용성 문제의 대부분을 해결함
  • 가용성을 증대하기 위해 클러스터의 프라이머리 노드를 임대(Hashicorp 의 Consul을 이용)
  • 분산 복제 방식을 사용
  • 앞으로 준비중인 기능들
    • WAL모드 지원
    • Write Forwading
    • S3 Replication
    • Encryption

그외에 자세한 내용에 대해서 궁금하시면 아래 웹페이지를 방문해보시길 추천드립니다. 


오늘의 블로그는 여기까지고요..
항상믿고 봐주셔서 감사합니다. 

300x250