/bytebase

Web-based, zero-config, dependency-free database schema change and version control tool for teams. Public demo: https://demo.bytebase.com

Primary LanguageGoOtherNOASSERTION

Bytebase

go report Artifact Hub

Live DemoInstallHelpDevelopmentDesign DocDiscord


What is Bytebase?

Bytebase is a Database CI/CD solution for the Developers and DBAs. It's the only database CI/CD project included in the CNCF Landscape. The Bytebase family consists of these tools:

  • Bytebase Console: A web-based GUI for developers and DBAs to manage the database development lifecycle.
  • Bytebase CLI (bb): The CLI to help developers integrate MySQL and PostgreSQL schema change into the existing CI/CD workflow.
  • Bytebase GitHub App and SQL Review GitHub Action: The GitHub App and GitHub Action to detect SQL anti-patterns and enforce a consistent SQL style guide during Pull Request.

Supported Database

✅ MySQL ✅ PostgreSQL ✅ TiDB ✅ ClickHouse ✅ Snowflake

VCS Integration

GitOps workflow, database-as-Code, login with VCS account, project membership sync.

✅ GitLab CE/EE ✅ GitHub.com

Features

  • Web-based database change and management workspace for teams
  • SQL Review
  • Built-in SQL Editor
  • Detailed migration history
  • Multi-tenancy (rollout change to homogeneous databases belonged to different tenants)
  • Online schema change based on gh-ost
  • Backup and restore
  • Point-in-time recovery (PITR)
  • Anomaly center
  • Environment policy
    • Approval policy
    • Backup schedule enforcement
  • Schema drift detection
  • Backward compatibility schema change check
  • Role-based access control (RBAC)
  • Webhook integration for Slack, Discord, MS Teams, DingTalk(钉钉), Feishu(飞书), WeCom(企业微信)
Fig.1 - Dashboard

Screenshot

Fig.2 - SQL review issue pipeline

Screenshot

Fig.3 - GitLab based schema migration (Database-as-code)

Screenshot

Fig.4 - Built-in SQL Editor

Screenshot

📕 Docs

Installation

https://bytebase.com/docs/get-started/install/overview

User doc

https://bytebase.com/docs

In particular, get familiar with various product concept such as data model, roles and permissions and etc.

Design doc

https://github.com/bytebase/bytebase/tree/main/docs/design

Version upgrade policy

https://github.com/bytebase/bytebase/tree/main/docs/version-management.md

🕊 Interested in contributing?

  1. Checkout issues tagged with good first issue.

  2. We are maintaining an online database glossary list, you can add/improve content there.

  3. Before creating a Pull Request, please follow the Development Guide for branch and commit message conventions.

Note: We are quite disciplined on tech stack. If you consider bringing a new programming language, framework and any non-trivial external dependency, please open a discussion first.

🏗 Development

Bytebase is built with a curated tech stack. It is optimized for developer experience and is very easy to start working on the code:

  1. It has no external dependency.
  2. It requires zero config.
  3. 1 command to start backend and 1 command to start frontend, both with live reload support.

Learn the codebase

Prerequisites

  • Go (1.19 or later)
  • pnpm
  • Air (must use forked repo 87187cc). This is for backend live reload.

Steps

  1. Install forked Air 87187cc. Use 87187cc because it has the cherrypicked fix.

    go install github.com/bytebase/air@87187cc
  2. Pull source.

    git clone https://github.com/bytebase/bytebase
  3. Start backend using air (with live reload).

    air -c scripts/.air.toml

    Change the open file limit if you encounter "error: too many open files".

    ulimit -n 10240

    If you need additional runtime parameters such as --backup-bucket, please add them like this:

    air -c scripts/.air.toml -- --backup-region us-east-1 --backup-bucket s3:\\/\\/example-bucket --backup-credential ~/.aws/credentials
  4. Start frontend (with live reload).

    cd frontend && pnpm i && pnpm dev

    Bytebase should now be running at http://localhost:3000 and change either frontend or backend code would trigger live reload.

  5. (Optional) Install pre-commit.

    cd bytebase
    pre-commit install
    pre-commit install --hook-type commit-msg

Star History

Star History Chart

Jobs

Check out our jobs page for openings.