브랜칭
브랜칭 (Branching)
데이터베이스에도 Git처럼 브랜치가 있으면 좋겠죠? Turso에서는 기존 데이터베이스로부터 별도의 데이터베이스 인스턴스인 브랜치를 만들 수 있어요. 원본에 영향을 주지 않고 개발과 테스트를 할 수 있어서 아주 유용해요.
출처: 문서
본문
브랜치는 기존 데이터베이스에서 만들어지는 별도의 데이터베이스 인스턴스예요. 데이터베이스의 시점 스냅샷에서 브랜치를 만들 수도 있어요. 브랜치는 원본 데이터베이스에 영향을 주지 않고 데이터베이스를 변경할 수 있게 해 주기 때문에 개발과 테스트에 유용해요.
동작 방식
- CLI 또는 API로 기존 데이터베이스에서 새 데이터베이스를 만들어요.
- 그룹 API 토큰으로 새 데이터베이스에 연결해요.
- 마이그레이션 도구로 새 스키마를 변경해요(선택 사항).
- GitHub Action으로 병합할 때 마이그레이션 도구를 사용해 원본 데이터베이스에 변경 사항을 적용해요(선택 사항).
- 더 이상 필요 없으면 데이터베이스를 삭제해요.
사용법
CLI 또는 API로 기존 데이터베이스에서 새 데이터베이스를 만들 수 있어요:
# CLI
turso db create my-new-database-branch --from-db my-existing-database
# Platform API
curl -L -X POST 'https://api.turso.tech/v1/organizations/{organizationSlug}/databases' \
-H 'Authorization: Bearer ***' \
-H 'Content-Type: application/json' \
-d '{
"name": "new-database",
"group": "default",
"seed": {
"type": "database",
"name": "my-existing-database"
}
}'
모든 인자에 대한 자세한 내용은 다음 참고 문서를 확인하세요:
알아 두어야 할 것들
- 데이터베이스 브랜치는 원본 데이터베이스와 완전히 분리되어 있어요. 즉, 스키마 변경이나 데이터 병합은 마이그레이션 도구를 사용해 직접 처리해야 해요.
- 새 데이터베이스에 연결하려면 새 토큰을 만들거나 그룹 토큰을 사용해야 해요.
- 더 이상 필요 없는 데이터베이스 브랜치는 직접 삭제해야 해요.
- 브랜치는 요금제의 데이터베이스 할당량(quota)에 포함돼요.
CI/CD
브랜칭을 자동화하면 풀 리퀘스트마다 새 데이터베이스를 만들 때 유용해요. 원본 데이터베이스에 영향을 주지 않고 변경 사항을 테스트할 수 있거든요.
다음은 Platform API를 사용한 예시예요:
# .github/workflows/create-database-branch.yml
name: Create Database
on: create
jobs:
triggerAPI:
runs-on: ubuntu-latest
steps:
- name: Generate Branch Name
id: branch_name
run: |
BRANCH_NAME=$(echo "${{ github.ref_name }}" | tr -cd '[:alnum:]' | sed 's/./\L&/g' | cut -c 1-32)
echo "::set-output name=branch_name::$BRANCH_NAME"
- name: Create Database
run: |
curl -X POST \
-H "Authorization: Bearer *** secrets.API_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"name": "${{ steps.branch_name.outputs.branch_name }}", "group": "default", "seed": {"type": "database", "name": "${{ secrets.DATABASE_NAME }}"} }' \
"https://api.turso.tech/v1/organizations/${{ secrets.ORGANIZATION_NAME }}/databases"
더 알아보기 (Learn more)
- 시점 복구 (Point-in-Time Recovery) — 과거 시점 스냅샷에서 브랜치 만들기
- 데이터베이스 생성 CLI 레퍼런스 (db create) — 브랜치 생성 명령어 상세
- API: 데이터베이스 생성 — Platform API로 브랜치 만들기
- BYOK 암호화 (Encryption) — 암호화된 데이터베이스의 브랜칭