全文共1688字,预计学习时长8分钟

图源:unsplash
最近与同事的一段对话让我陷入思考。公司会议上同事问我:“是否要使用某种数据版本控制?”我以为他是在说代码版本控制,但“不是,是数据版本控制”,我的同事坚持说。
我未曾听过或想过数据版本控制,是否有提供数据版本控制的产品?推出这些产品是否有必要呢?
我在谷歌上搜索到许多数据版本控制产品,但最吸引我眼球的产品是dolt。
什么是dolt?
Dolt是SQL数据库中数据体验的真正Git,为模式提供版本控制,并为数据提供单元级版本控制,这些都为了便于协作而不断优化。
使用Dolt可以查看上次接收的数据与这次接收的数据之间可读的diff区别。在部署新数据之前,可以很容易发现意外更新,并且修复问题。
作者们称这就像是数据的Git,是一个开源的SQL数据库,且带有Git样式的版本控制。在处理数据科学项目时,我们会自己将数据集版本化。很多时候并记不清v5和v6有什么区别。将代码提交到存储库时,Dolt会存储提交日志,从而易于返回并查看更改。
在哪里托管存储库?
就像GitHub之于Git,DoltHub之于Dolt也是如此。Dolthub只对Dolthub上公开的数据集免费。托管私人存储库的价格为每月50美元。

图源:unsplash
数据版本控制有哪些用例?
这也是我一直在问自己的问题。其指导性用例是在互联网上共享数据。Dolt可以用来共享数据库,包括模式和视图,可以删除用于传输数据的所有代码。
DoltHub的数据可以“先试后买”。人们可以在网页上运行SQL查询,查看数据是否符合需要。数据提供平台甚至可以构建示例查询来引导消费者的探索。通过提交日志,人们可以看到数据更新的频率,还可以看到谁更改了数据以及更改原因。
如何进行尝试?

图源:dolthub
DoltHub是免费的公共数据集,可以用谷歌帐户登录。笔者创建了一个新的名为iris的公共存储库。

图片:带有iris数据集的Dolthub
然后就可以像wit Git一样克隆版本库——一切都很熟悉。但是,在克隆repo之前,需要安装dolt CLI。开发人员考虑到这一点,所以把安装命令放在了克隆选项旁边。
sudo curl -Lhttps://github.com/liquidat

安装Dolt后,需要使用CLI工具登录,从而将密钥与帐户相关联。这将在网页浏览器中打开该页。
dolt login
现在就可以开始克隆存储库。
dolt clone romanorac/iris
把一些数据放进去。我从sklearn中获取了iris数据集,将其转换为pandas
import numpy as np import pandas as pd from sklearn import datasetsiris = datasets.load_iris() df = pd.DataFrame(data=np.c_[iris['data'], iris['target']], columns=iris['feature_names'] + ['target']) df.target = df.target.astype(int) df = df.reset_index()df = df.rename( columns={ 'index': 'identifier', 'sepal length (cm)':'sepal_length', 'sepal width (cm)':'sepal_width', 'petal length (cm)':'petal_length', 'petal width (cm)': 'petal_width' }) df.to_csv('~/Downloads/iris/iris.csv', index=False)

要将CSV文件放入Dolt,需要创建SQL表。
dolt sql -q "create tableiris ( identifier int, sepal_length float, sepal_width float,petal_length float,petal_width float, target int, primary key (identifier) )"
然后只需导入该表。
dolt table import -u-pk=identifier iris iris.csv
导入表后,需要添加文件,编写提交消息并将其同步到存储库——就像使用Git一样。
git add . dolt commit -m "Initial commit" dolt remote add origin romanorac/iris dolt push origin master
数据在DoltHub中的样子。可以看到熟悉的iris数据集。

现在,更改一个iris样本来看看diff的动态。
dolt sql --query 'UPDATE irisSET target=0 where identifier = 100'git add . dolt commit -m "Change sample 100" dolt push origin master

我们在第100行做了更改。DoltHub很好地进行了可视化。
每个都能体会到管理多个版本的数据集的麻烦,特别是对于已经投入生产的模型,这让我看到了Dolt的潜力。
对于较小的数据集,diff功能看起来比较有用,但我不确定它对于较大的数据集(每一行都在变化)有什么帮助。我还要用一个更大的数据集(几个G的数据)来测试Dolt。时间久了运行会不会变慢?

图源:unsplash
Dolt和DoltHub最好的例子就是共享数据。销售数据的公司可以记录每一个更改,客户可以能更透明地查看更改。DoltHub在冠状病毒流行期间也展示了其可用性,可以使用其分支来管理具有相同模式不同质量的供给。
至于它的其他用法,还需我们在实践中不断探索,快来试试吧!

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207979.html原文链接:https://javaforall.net
