G GitDB

GitHub 기반 서버리스 RDB

DB 서버 없이, GitHub repo를 데이터베이스로.

GitDB는 extension, static app, agent, 작은 tool이 table, SQL식 조회, transaction, index, 선택적 암호화를 GitHub commit 위에서 쓰게 해줍니다.

01

데이터가 있는 곳

사용자가 정한 GitHub 저장소입니다. Plaintext라면 파일을 그대로 review할 수 있습니다.

02

앱이 얻는 것

Table, row, index, select, join, delete, transaction 같은 작은 RDB 동작입니다.

03

write 비용

GitHub API 왕복과 Git commit 시간이 듭니다. hot OLTP보다 저빈도 앱 데이터에 맞습니다.

동작 방식

DB 호출을 GitHub repository commit으로 바꿉니다.

앱은 GitDB API를 호출합니다. GitDB는 데이터베이스 상태를 GitHub에 씁니다. 열릴 때는 커밋된 파일을 읽고 table 상태를 복구합니다.

API

앱 호출

row를 넣고, index로 조회하고, table을 join하고, transaction으로 묶습니다.

LOG

데이터베이스 파일 작성

GitDB는 데이터베이스를 manifest, log, index, snapshot 파일로 직렬화합니다.

GIT

GitHub에 commit

저장은 Git tree 생성과 non-force ref update로 이루어집니다.

OPEN

다시 열기

Manifest가 가리키는 log와 snapshot만 읽어 database state를 다시 만듭니다.

선택지가 명확한 곳

느리게 보이는 것이 아니라, 일부러 느린 경계를 드러냅니다.

GitDB는 일반 SQL 서버를 흉내 낸 대체물이 아닙니다. GitHub를 데이터 저장소로 쓰는 작은 RDB runtime입니다.

맞는 경우

  • Extension, demo, agent, internal app
  • Git history가 의미 있는 데이터
  • GitHub 네트워크 시간을 감수할 수 있는 앱

맞지 않는 경우

  • 트래픽이 많은 production OLTP
  • 여러 writer가 동시에 쓰는 realtime 협업
  • 사용자 GitHub token으로 접근되면 안 되는 secret

벤치마크

실제 데이터로 자주 쓰는 DB 작업 시간을 보여줍니다.

벤치마크 데이터를 불러오는 중입니다.

모드 작업 데이터셋 반환/변경 row 시간
느림 빠름
시나리오 writes/s write query/join reopen