在数据管理的浩瀚海洋中,Dolt 像一颗耀眼的新星,闪耀着独特的光芒。作为一款 SQL 数据库,Dolt 不仅可以存储和处理数据,还赋予了数据版本控制的能力,让数据管理变得像使用 Git 一样简单。这是一场数据库领域的革命,正如开发者们所言:“Dolt 就是数据的 Git!”
Dolt 的核心理念
Dolt 使得数据的管理变得如同 Git 版本控制那样直观且易于操作。开发者可以通过类似 Git 的命令来进行数据的分支、合并、推送和拉取。无论是连接 Dolt 进行数据的读取和修改,还是通过命令行接口导入 CSV 文件,Dolt 都能轻松应对。所有您熟悉的 Git 命令在 Dolt 中都能如鱼得水。
与 Git 不同的是,Dolt 版本控制的是数据表而非文件。这种设计理念的背后,是对数据管理灵活性的深入思考。
连接 Dolt:如同连接 MySQL
通过与 MySQL 兼容的接口,用户可以像操作传统 MySQL 数据库一样连接到 Dolt。Dolt 在 SQL 中通过系统表、函数和过程展现其版本控制功能,使得用户可以轻松读取和修改数据结构及数据内容。
Dolt 还专门构建了 DoltHub,一个分享 Dolt 数据库的平台,用户可以在这里自由地分享和获取公共数据。如果您想自行托管 DoltHub,我们提供了 DoltLab 的解决方案。如果您希望我们为您运行 Dolt 服务器,您可以选择 Hosted Dolt。此外,我们还推出了 DoltgreSQL 的早期版本,旨在为 Postgres 用户提供类似的功能。
Dolt CLI:更强大的命令行工具
Dolt 的命令行工具 (dolt
) 提供了与 Git 类似的命令集,并增加了一些额外功能。用户可以使用以下命令来管理数据库:
$ dolt
Valid commands for dolt are
init - Create an empty Dolt data repository.
status - Show the working tree status.
add - Add table changes to the list of staged table changes.
diff - Diff a table.
reset - Remove table changes from the list of staged table changes.
clean - Remove untracked tables from working set.
commit - Record changes to the repository.
sql - Run a SQL query against tables in repository.
sql-server - Start a MySQL-compatible server.
sql-client - Starts a built-in MySQL client.
log - Show commit logs.
branch - Create, list, edit, delete branches.
checkout - Checkout a branch or overwrite a table from HEAD.
merge - Merge a branch.
conflicts - Commands for viewing and resolving merge conflicts.
cherry-pick - Apply the changes introduced by an existing commit.
revert - Undo the changes introduced in a commit.
clone - Clone from a remote data repository.
fetch - Update the database from a remote data repository.
pull - Fetch from a dolt remote data repository and merge.
push - Push to a dolt remote.
config - Dolt configuration.
remote - Manage set of tracked repositories.
backup - Manage a set of server backups.
login - Login to a dolt remote host.
creds - Commands for managing credentials.
ls - List tables in the working set.
schema - Commands for showing and importing table schemas.
table - Commands for copying, renaming, deleting, and exporting tables.
tag - Create, list, delete tags.
blame - Show what revision and author last modified each row of a table.
constraints - Commands for handling constraints.
migrate - Executes a database migration to use the latest Dolt data format.
read-tables - Fetch table(s) at a specific commit into a new dolt repo
gc - Cleans up unreferenced data from the repository.
filter-branch - Edits the commit history using the provided query.
merge-base - Find the common ancestor of two commits.
version - Displays the current Dolt cli version.
dump - Export all tables in the working set into a file.
安装 Dolt
Dolt 的安装极其简便,您只需下载并将其放入您的 PATH 中。对于不同平台的用户,Dolt 提供了多种安装方式。
从最新版本安装
在 Linux 或 Mac 系统上,您可以运行以下命令:
sudo bash -c 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash'
Windows 用户
您可以下载最新的 Microsoft Installer (.msi
文件) 并运行它,或者通过 Chocolatey 安装 Dolt:
choco install dolt
Docker 用户
Dolt 还提供了官方的 Docker 镜像。您可以选择 dolthub/dolt
作为 CLI 工具,或使用 dolthub/dolt-sql-server
以服务器模式运行 Dolt。
开始使用 Dolt
启动 MySQL 兼容的数据库服务器
Dolt 内置的 MySQL 兼容数据库服务器可以通过 dolt sql-server
命令启动,默认在 3306 端口运行。
dolt sql-server
Starting server with Config HP="localhost:3306"|T="28800000"|R="false"|L="info"
连接到数据库
在新的终端中,您可以使用 Dolt 自带的 MySQL 客户端连接到运行中的数据库服务器:
% dolt -u root -p "" sql
# Welcome to the Dolt MySQL client.
# Statements must be terminated with ';'.
# "exit" or "quit" (or Ctrl-D) to exit.
mysql>
Dolt 支持与任何 MySQL 兼容的客户端连接,您只需指定主机和端口即可。
创建数据库和表
接下来,您可以创建一个名为 getting_started
的数据库,并在其中建立多个表:
mysql> create database getting_started;
Query OK, 1 row affected (0.04 sec)
mysql> use getting_started;
Database changed
mysql> create table employees (
id int,
last_name varchar(255),
first_name varchar(255),
primary key(id));
Query OK, 0 rows affected (0.01 sec)
mysql> create table teams (
id int,
team_name varchar(255),
primary key(id));
Query OK, 0 rows affected (0.00 sec)
mysql> create table employees_teams(
team_id int,
employee_id int,
primary key(team_id, employee_id),
foreign key (team_id) references teams(id),
foreign key (employee_id) references employees(id));
Query OK, 0 rows affected (0.01 sec)
Dolt 支持外键、二级索引、触发器、检查约束和存储过程,是一款现代化的功能丰富的 SQL 数据库。
使用 Dolt 提交和版本控制
Dolt 的版本控制功能使得每个提交都能记录数据的变化。您可以通过 dolt_add
和 dolt_commit
存储过程来添加和提交更改。
mysql> call dolt_add('teams', 'employees', 'employees_teams');
mysql> call dolt_commit('-m', 'Created initial schema');
每次提交后,您都可以查看提交日志,了解您的每次更改:
mysql> select * from dolt_log;
数据的可追溯性与审计
Dolt 赋予每个单元格强大的审计功能,您可以通过 dolt_history_<tablename>
和 dolt_diff_<tablename>
来查看数据的历史变化和差异。这种能力使得数据的管理变得透明和可控。
mysql> select * from dolt_history_employees where id=0 order by commit_date;
结论
Dolt 的出现为数据管理带来了全新的视角,结合了 SQL 数据库的强大功能和 Git 的版本控制优势。无论是数据的创建、修改还是版本控制,Dolt 都让一切变得简单、直观且高效。它不仅适合开发者,也适合任何需要管理数据变更的用户。
参考文献
- DoltHub: DoltHub
- 官方文档: Dolt Documentation
- GitHub 页面: Dolt GitHub
- 安全政策: Dolt Security Policy
- 许可证: Dolt License
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于