# 用 Git 操作的数据库?这个项目火了!

> 超级特别又实用的数据库,快来补课!

Git 是一个开源的分布式版本控制系统,可以敏捷高效地管理代码,让项目代码支持同时存在多个不同的版本和分支,是程序员在项目开发中的必备工具。

![版本控制](https://gitee.com/liyupi/picture/raw/master/image-20210307125952779.png)

除了代码文件可以进行版本控制之外,**数据其实也可以版本控制**!

今天,Dolt 项目荣登 GitHub 趋势榜榜首,该仓库的介绍是 “Git for Data”,一个面向数据的 Git,目前已收获了几千个 star。

![GitHub 趋势](https://gitee.com/liyupi/picture/raw/master/image-20210307112248986.png)

下面我们来简单了解下 Dolt 项目。

### 什么是 Dolt?

根据官方介绍,Dolt 是一个基于 Git 协议的开源 SQL 数据库,使用 Golang 语言编写。

首先它和 MySQL 关系型数据库一样,用于存储和管理数据,具有表、视图等概念,支持数据的增删改查等操作。

![对 Dolt 执行数据库操作](https://gitee.com/liyupi/picture/raw/master/image-20210307132255974.png)

然而更棒的是,它提供了一个命令行工具,完美支持所有的 Git 命令,并且语法完全相同!允许用户像使用一个 git 仓库一样对数据进行 fork、clone、branch、merge、push 和 pull 等操作。

![Dolt 命令行](https://gitee.com/liyupi/picture/raw/master/image-20210307132638409.png)

当你提交数据到存储库时,Dolt 会自动存储提交日志,比如本次修改的内容、作者、提交时间等,从而实现了对数据单元的版本控制,便于多人对数据进行协作和优化。

![Dolt 日志](https://gitee.com/liyupi/picture/raw/master/image-20210307133452985.png)

比如一个班的同学在使用公共数据做实验时,可能需要针对实验提供不同的数据,这个时候就可以用 Dolt 来进行数据的版本控制。

![数据版本控制](https://gitee.com/liyupi/picture/raw/master/image-20210307134053433.png)

你还可以随时查看上次提交的数据与当前数据的区别,一旦有人不小心把公共数据改错了,发现当前数据有异常时,可以轻松地回滚和修复问题。

![查看不同版本的数据区别](https://gitee.com/liyupi/picture/raw/master/image-20210307131844019.png)

Dolt 简直就是 Git 和 MySQL 的孩子!

![这也不像啊](https://gitee.com/liyupi/picture/raw/master/image-20210307134453818.png)

关于 Dolt 的使用方法,官方已经给了详细的教程,还是比较简单的。

### DoltHub

就像 Git 拥有 GitHub 作为代码的开源远程托管平台一样,Dolt 官方也提供了相应的远程托管平台,即 DoltHub。

DoltHub 允许用户将自己的 Dolt 数据库免费托管到他们提供的云存储服务中,便于管理和协作。你可以像浏览 GitHub 一样浏览 DoltHub,在这里发现优秀的数据集,比如 Coronavirus(冠状病毒)、Google Open Images 等,拿去实验和数据分析都是极好的!

![DoltHub](https://gitee.com/liyupi/picture/raw/master/image-20210307140057956.png)

---

虽然数据版本控制的概念在很早之前就已经被提出和落地,但是 Dolt 的热门应该能够帮助更多同学了解和使用这类系统,我还是很期待他的发展。

️ 项目地址:https://mp.weixin.qq.com/s/Ax5iLOtSoeyQEaUk0oPWtg

用 Git 操作的数据库?这个项目火了!的更多相关文章

  1. EF6操作Sqlite数据库的项目兼容性问题

    vs2010无法正确打开2015创建的项目里面操作Sqlite数据库时使用EF6创建的edmx文件(会显示空白)   但是可以正常查询 vs2015无法正确打开2010创建的项目里面操作Sqlite数 ...

  2. EF操作sqlite数据库时的项目兼容性问题

    问题:vs2015打不开vs2010建的操作sqlite的实体数据模型edmx文件 原因: 当前电脑必须先安装:驱动库及sqlite的vs拓展 正常情况下安装驱动和拓展后,vs2015就应该可以正常打 ...

  3. git操作常用命令

    一.使用git 1.git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己 ...

  4. 连接Linux服务器操作Oracle数据库

    连接Linux服务器操作Oracle数据库   由于项目已经上线,现场的数据库服务器不允许直接用Oracle的客户端plsqldev.exe来连接,只能通过Linux服务器的命令来操作. 以下是用Se ...

  5. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  6. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  7. idea git操作 -- 已有项目添加到git

    我们在使用git时,如果是先从git克隆项目,然后配置项目运行没问题,如果将已有项目添加到git,则项目环境还是提交不了git,还需要到克隆的仓库文件夹打开项目去操作git,如果有有类型情况可按照如下 ...

  8. 数据库web项目对数据库的操作

    1.0.JSTL与jsp实现对数据库的操作 MySql 数据库: create database if not exists CommodityDB; use CommodityDB; drop ta ...

  9. Git操作指令进阶

    注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站 ...

  10. Myeclipse10.7安装git插件并将Java项目上传到码云(github)

    注:本文来源:外匹夫的<Myeclipse10.7安装git插件并将Java项目上传到码云(github)> 一.先说说安装egit插件的步骤(安装egit不成功的原因主要是下载的egit ...

随机推荐

  1. k8s master不可以被调度,修改deploy配置让这个可以单独调度上去

    给两个节点添加标签,让pod调度上去,但是kubectl describe pod  发现报错了,因为master不可以被调度,kube002也是设置了污点禁止被调度了 Warning FailedS ...

  2. webapi创建WCF WebService+WCF WebService远程服务调用

    首先需要引入soapcore包 这个包提供了所需的类和soap终结点中间件. 引入这个这个包之后,我们需要定义提供的服务. 这里我写了一个用于查询省份面积的服务. 省份信息服务 /// <sum ...

  3. C# 方块热力图

      这张图右侧,0 3 6...... 30表示每个数字出现的次数,左侧就是每个数字出现次数的方块颜色图. 具体的思路是,找两个颜色 渐变的画出右侧的色条. 计算所有数字的最大最小次数,然后用他们色条 ...

  4. 重做贪吃蛇 万向移动型 蛇的移动和吃食部分C# wpf版

    之前写了一个贪吃蛇,代码实在太乱了,上一个是用polyline做的,这次这个是用一个个的elipse来渲染蛇的身体,其中一个圆点,就是一个elipse了.蛇的移动是通过定时器来实现的,方向键 A D控 ...

  5. FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器

    ​AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10.Mozilla Daala以及Cis ...

  6. Android 13 - Media框架(11)- MediaCodec(一)

    关注公众号免费阅读全文,进入音视频开发技术分享群! MediaCodec 是 Android 平台上音视频编解码的标准接口,无论是使用软解还是硬解都要通过调用 MediaCodec来完成,是学习 An ...

  7. exe应用程序安装为windows服务

    1.使用instsrv.exe和srvany.exe 当你获取到srvany后并决定将某程序作为服务启动后,请先将srvany安装为系统服务,具体的安装方法有很多,这里使用instsrv,语法如下:安 ...

  8. kubernetes命令补全k8s命令补全

    echo "source <(kubectl completion bash)" >> ~/.bashrc source <(kubectl complet ...

  9. nginx获取后端真实IP,添加后端服务器响应时间并记录日志

    nginx获取后端真实IP,添加后端服务器响应时间并记录日志 1.日志定义 log_format nginx '$remote_addr - $remote_user [$time_local] &q ...

  10. 7.26考试总结(NOIP模拟24)[matrix·block·graph]

    你那无聊的幻想,就由我来打破! 前言 补坑中.. 我都不知道自己这场模拟赛怎么打的了. 非常玄学,前三个小时一直在想正解,然后最后 20min 感觉 T1 不太稳,就又加上了一个暴力. 后来一看只有最 ...