dolt:自带版本管理的数据库

news2024/12/26 23:31:10

请添加图片描述

在做数据分析或算法优化时,有一个需求是比较常见的:在调整了一些代码后,产生了新的结果数据,需要将这些数据以及产生它们的代码存储下来以便事后进行分析。解决这个问题的核心就在于如何对代码和结果数据进行版本管理,并且能够在复盘时快速拿到对应的版本。

代码的版本管理很简单,使用Git就可以。

如果需要存储的数据量不是很大,也可以用Git来将它们一并进行管理。若数据量比较大,使用Git就不太可取了,因为它在恢复指定版本的数据时可能会比较慢。

一种直观的方式是,在数据库中进行增量更新,并通过设置额外的标识列来区分产生数据的代码版本。我之前就是用的这种方式,它确实是可行的。不过在这里,我打算介绍另外一种方式:它就是号称数据界的Git、专为管理数据版本而生、具有版本控制功能的数据库——Dolt。

1、它是一个数据库

可以在多种操作系统下安装dolt,具体安装方法可以参考文档,这里不再赘述。下面介绍一下它在MacBook上的用法。

安装完成以后,就可以把dolt当成一个mysql数据库服务器一样来使用:

mkdir ~/dolt
cd ~/dolt  # 我将在~/dolt目录下存放相关的数据
dolt sql-server  # 启动数据库服务
# 当前终端会打印出类似下面的内容:
# Starting server with Config HP="localhost:3306"|T="28800000"|R="false"|L="info"|S="/tmp/mysql.sock"

这说明已经启动了一个mysql服务。保持此终端处于打开状态,用户可以用Navicat之类的工具连接到该数据库,并进行创建数据库、创建表、增删改查等操作。

当然,在执行dolt sql-server时,可以通过其他参数进行更加定制化的操作,如设置密码、端口等,具体可以通过dolt sql-server -h进行查看。

2、对数据库进行版本管理

启动了mysql服务之后,假设我们创建了一个名为platform的数据库,此时可以看到在~/dolt目录下多出了一个platform的目录,对应着刚创建的数据库。

进入platform目录后,可执行dolt status来查看当前“数据库仓库”的状态。未进行任何操作时,应该会打印以下内容:

On branch main
nothing to commit, working tree clean

对于Git用户而言,这很熟悉。至此,完全可以将~/dolt/platform当成一个Git仓库来进行操作了。几乎所有的Git命令,都有对应的dolt实现,且功能相同

假如我在platform中创建了一张名为test的表,再执行dolt status,可以看到如下输出:

On branch main
Untracked files:
  (use "dolt add <table>" to include in what will be committed)
	new table:      test

根据提示信息可以,当前“仓库”新增了一张表,如果对其进行版本管理,需要先通过dolt add命令对其进行变更追踪,然后可以使用dolt commit来提交变更。对于熟悉Git的用户,这一切都是非常熟悉的。

3、一些需要注意的点

  1. 在数据库服务处于启动状态下,在终端中执行addcommit等命令时会失败,此时需要先停止数据库服务,再进行执行。一种替代方法是,在sql编辑器中调用内置的存储过程在执行对应操作:

    CALL DOLT_ADD('test');
    

    可以这里查看所有的存储过程及其用法。

  2. 在dolt中,若要使HEAD指针分离并指向某一次特定的提交以查看对应的内容时,必须为该次提交创建一个分支,然后使用分支切换的方法。因此,我们在更改数据时,对于需要复盘的数据提前建立分支,这样可以避免事后忘记哪次提交的数据是我们想要的。

    当然,在提交时写好简明扼要的提交信息也是十分必要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web3中文|从以太坊升级寻找下一个热点赛道

今天来聊一聊以太坊升级的事情&#xff0c;但我们想换个角度&#xff0c;不谈上海升级的影响、不谈Layer2的创新、不谈Rollup的技术革命&#xff0c;而是从整个以太坊升级之路来解读为什么当下Layer2、ZK、LSD等赛道会火。 这些其实都是有迹可循的&#xff0c;一旦思路捋顺了&a…

Linux通过Redis源码安装Redis-server

1、下载安装包&#xff08;https://redis.io/download/&#xff09; 选择版本6.2.12 2、解压&#xff1a;tar zxvf redis-6.2.12.tar.gz 3、进入解压后的文件夹&#xff1a;cd redis-6.2.12 4、检查gcc版本&#xff0c;gcc -v &#xff08;因为redis6.0需要gcc5.3.0以上版本才能…

MongoDB实现---WiredTiger

WiredTiger 参考&#xff1a;https://zhuanlan.zhihu.com/p/265222573 MongoDB默认的存储引擎&#xff0c;其和InnoDb类似 通过MVCC实现乐观锁通过索引文件通过B-Tree树加快访问数据的速度&#xff1b; 数据文件通过BTree记录通过日志先行的策略提升并发处理能力&#xff08;…

ASP.NET Core MVC 从入门到精通之路由

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

TCP协议内部工作机制一(确认应答,超时重传,连接管理)

目录 TCP报文结构 TCP的首部长度 保留(6位) TCP特点 TCP内部的工作机制 一确认应答 超时重传 连接管理 建立建立(三次握手) TCP断开连接(四次挥手) TCP报文结构 TCP的报文结构中,16位源端口,16位目的端口,16位校验和和UDP是一样的,本篇文章就暂不介绍了,可参考俺之前写…

设计模式:创建者模式 - 建造者模式

文章目录 1.概述2.结构3.实例4.优缺点5.使用场景6.模式扩展 1.概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某…

记录一次VMwame的故障

故障发生时间 2023年4月12日 故障发生现象 无法启动虚拟机 启动虚拟机&#xff0c;报错权限不足&#xff0c;无法访问文件&#xff0c;打不开磁盘"******"或它所依赖的某个磁盘快照&#xff0c;启动”Disk”模块失败 故障解决过程 找资料&#xff0c;网上的解…

vba:文件夹和文件夹的处理,dir

Option Explicit 1 判断文件夹是否存在 dir函数的第二个参数是vbdirectory时可以返回路径下的指定文件和文件夹&#xff0c;如果结果为""&#xff0c;则表示不存在。 Sub w1() If Dir(ThisWorkbook.path & "\2011年报表2", vbDirectory) &q…

( “树” 之 BST) 230. 二叉搜索树中第K小的元素 ——【Leetcode每日一题】

二叉查找树&#xff08;BST&#xff09;&#xff1a;根节点大于等于左子树所有节点&#xff0c;小于等于右子树所有节点。 二叉查找树中序遍历有序。 230. 二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查…

Oracle中Interval几种常用的写法

目录 每分钟执行&#x1f4a8; 每天定时执行&#x1f4a8; 每周定时执行&#x1f4a8; 每月定时执行&#x1f4a8; 每季度定时执行&#x1f4a8; 每半年定时执行&#x1f4a8; 每年定时执行&#x1f4a8; 其他更多示例&#x1f937;‍♀️&#x1f937;‍♀️ 每分钟执…

【线性dp 例题 大综合】dp——数字三角形模型【线性dp】

数字三角形模型 一、数字三角形模型1. 摘花生(最大值)2. 最低通行费(需要把边界置成0x3f)我的错题点 3. ★★★ 取方格数路径长度为k,第一条路线到x1i,第二条路线到x2j的所有方案 4. ★★★★★ 传纸条就是 取方格数 的 题意延申一下 0x51 线性dp经典例题&#xff1a;LIS LCS 数…

Databend v1.1 版本发布!

各位社区小伙伴们&#xff0c;Databend 于 2023 年 4 月 14 日迎来了 v1.1.0 版本的正式发布&#xff01; 这次新版本是 Databend 发布1.0 版本之后的第一个大版本&#xff01;相较于 v1.0.0 版本&#xff0c;开发者们一共新增了 1,616 次commit&#xff0c; 共计 505 个优化和…

程序员跳槽,要求涨薪50%过分吗?

如果问在TI行业涨工资最快的方式是什么&#xff1f; 回答最多的一定是&#xff1a;跳槽&#xff01; 前段时间&#xff0c;知乎上这样一条帖子引发了不少IT圈子的朋友的讨论 &#xff0c;有网友提问 “程序员跳槽要求涨薪50%过分吗&#xff1f;” 截图来源于知乎&#xff0c;…

uni-app生成海报并分享

lime-painter是一款canvas海报组件&#xff0c;可以更轻松的生成海报 海报画板 - DCloud 插件市场 一款canvas海报组件&#xff0c;更优雅的海报生成方案https://ext.dcloud.net.cn/plugin?id2389插件提供 JSON 及 Template 的方式绘制海报 1、Template方式 提供l-painter-…

【Transformer系列(4)】Transformer模型结构超详细解读

前言 前一篇我们一起读了Transformer的论文《Attention Is All You Need》&#xff0c;不知道大家是否真的理解这个传说中的神&#xff08;反正俺是没有~&#xff09; 这两天我又看了一些视频讲解&#xff0c;感谢各位大佬的解读&#xff0c;让我通透了不少。 这篇文章就和…

前沿的Web前端技术趋势与应用实践

近年来&#xff0c;Web前端技术发展迅猛&#xff0c;各种新技术层出不穷&#xff0c;为了跟上潮流&#xff0c;我们需要不断学习新知识&#xff0c;应用新技术&#xff0c;不断提高自己的技术水平&#xff0c;为自己的职业生涯打下坚实的基础。本篇博客将为大家详细介绍前沿的W…

【Mysql】主从复制

【Mysql】主从复制 文章目录 【Mysql】主从复制1. 概述2. 原理3. 搭建3.1 准备工作3.2 主库配置3.3 从库配置 1. 概述 主从复制是指主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后再从库上对这些日志重新执行(也叫重做)&#xff0c;从而使得从库和…

小红书行业趋势分析,女性种草关键词有哪些?

在“她力量”崛起的当今&#xff0c;女性用户正不断引领新潮流&#xff0c;驱动产品、内容升级。女性个人观念、生活方式、消费偏好演变&#xff0c;需求重点势必不断更新。 今儿就女性用户的聚集地小红书平台&#xff0c;以及女性最关注的美妆、母婴两大行业&#xff0c;通过数…

完整支持Oracle PL/SQL,星环科技KunDB高兼容性实现低成本国产化替代

从中兴、华为等一系列高新科技企业被美国制裁&#xff0c;到俄乌冲突事件爆发后&#xff0c;西方各国相继宣布制裁俄罗斯&#xff0c;以Oracle、IBM、微软、SAP为代表的科技巨头暂停在俄服务&#xff0c;这一系列动作给我们敲响了加速国产化替代的警钟。数据库作为提供数据存储…

2024年浙大MBA提前批面试即将开始申请,如何操作?

在去年的这个时间点&#xff0c;浙大MBA提前批面试的申请系统已经打开并可以正常开始接受申请报名&#xff0c;而今年的申请时间会在什么时间点&#xff1f;那么又如何准备浙大MBA的提面申请呢&#xff1f;本期专注浙大的杭州达立易考教育为大家做一下梳理&#xff0c;帮助大家…