2020最值得研究的“Git for Data”工具

自從Git成了碼農的生活的必須之後,“一切皆Git”成了我們的口號。用git寫書(GitBook),用Git日記,用Git做bug追蹤(git-bug)。總之,將git當資料庫,儲存資訊,並追蹤變化成了我們大家的追求。之前蟲蟲文章中介紹過一個dolt一個用git作為儲存的關係資料庫,今天再給大家列舉一下一些以Git for Data為思想的工具。

概述

在2020年的今天,Git和GitHub已經涵蓋了軟體開發生命週期的各個方面。但是在Git儲存資料庫的思維才逐漸擴充套件開來。

Git for Data是什麼意思?是指資料版本控制嗎?如果是這樣,該關心版本控制的哪些部分?是否關心回滾?可以差異Diff麼?

歷史是怎麼的,即誰改變了什麼以及什麼時候?

怎麼分支/合併?

怎麼與他人分享變更?

是說上述內容的內容定址版本具有該解決方案提供的所有良好分散式質量嗎?是否關心Git的一些更高階的版本控制功能呢,例如臨時區域或多個遠端倉?

是否需要線上資料目錄?如果是這樣,真的想要一個像開源社群一樣繁榮的開放資料社群嗎?

是否希望能夠在私有資料專案上進行遠端和非同步協作?

是否要拉取請求,即對資料更改進行整合的人工審查?

是否希望能夠建立涉及某些更改或部分資料的問題?

另外,此處的Data是什麼意思?是指檔案中的資料還是表中的資料?

是說非結構化資料,例如網頁中的影象或文字嗎?

是指CSV表還是JSON Blob?

是說像時序日誌條目這樣的大資料嗎?

是說關係資料庫嗎?

如果是關係型的,是否關心模式還是僅關心資料(反之亦然)?

是指資料轉換,就像資料管道中存在的轉換一樣嗎?

有應用程式嗎?

機器學習資料(即標記資料)?

用於視覺化和報告的資料?

用於軟體應用程式的資料?

總之,“Git for data”不光是一個口號,還是涉及各方各面的問題。目前市面上比較符合此思想的工具,據總結總過有以下一些,

2020最值得研究的“Git for Data”工具

總體上這些工具可分為三大類:資料目錄、資料管道版本控制和版本資料庫

資料目錄

Kaggle

2020最值得研究的“Git for Data”工具

口號

“The Home of Data Science”(資料科學的家)

釋出時間:

2010年4月

Web地址

kaggle。com

GitHub

倉庫:

github/Kaggle(核心工具不開源)

Kaggle首先舉辦機器學習競賽。競賽參賽者釋出一個開放的資料集,設定競賽條款,並接收模型提交。比賽的獲勝者將獲得現金獎勵。

Kaggle於2017年被Google收購,並繼續作為獨立實體運營。它已經發展成為供資料科學家使用的各種社交網路,不僅可以繼續舉辦競賽,而且還可以以筆記本的形式託管公共資料集和建模程式碼。

Kaggle擁有一個漂亮的UI介面。還有一個繁榮,充滿活力的社群。擁有19000個公共資料集和200000個公共Notebooks。

Kaggle資料集以CSV或JSON的形式分發。資料集的版本意味著在Kaggle上仍可以使用較舊的版本。因此,除了資料和模型發現以外的其他工具,還是一個不錯的方法。

Kaggle可認為是類似於開放原始碼社群的充滿活力的開放資料社群。

data。world

2020最值得研究的“Git for Data”工具

口號:

“雲本地資料倉庫”

釋出時間:

2018年3月6日

web地址:

data。world

GitHub

倉庫

:github /datadotworld(核心工具不開源)

data。world是用於構建資料專案的線上工具。作為資料專案的一部分,有資料託管。data。world上託管的某些資料是公共的。立足於比資料本身更高的級別。在data。world上,可以建立一個包含資料,文件,查詢等的資料專案。並能與他人協作並共享這些專案。

data。world有著流暢而現代的UI介面。公共資料目錄中有這政府資料的為強大來源。該公司是一家新興公司,資金雄厚,因此可以預見該工具在未來幾年內能夠繼續發展。

資料以多種格式分發。資料版本控制並不是data。world的真正重點。

Quilt

2020最值得研究的“Git for Data”工具

口號:

“像程式碼一樣管理資料”

釋出時間:

2019年9月(V3)

GitHub

倉庫:

github。com/quiltdata/quilt

開發語言

:

Python,Jupyter Notebook

quilt在 V2時代廣為使用,當時Quilt被描述為資料的Yum,Homebrew或NPM。例如,可以從中央儲存庫本地提取資料包。資料是不可變的和版本化的,因為在中央儲存庫中存在多個版本的軟體包,但是沒有差異或分支/合併。

去年,Quilt釋出了適用於AWS S3的開放資料門戶。在該V3釋出後似乎表明了在S3之上從資料版本控制到資料發現的轉變。如果使用者希望,可支援將資料打包技術用於附加的使用者抽象層。

如果要為儲存在S3中的資料增加嚴謹性和發現性,請選中Quilt。

Qri

2020最值得研究的“Git for Data”工具

you‘re invited to a data party! (你被邀請參加的一個數據盛宴!)

2018年2月1日

github。com/qri-io/qri

開發語言

:

golang

Qri是建立在分散式Web上的資料目錄。有一個命令列工具以及一個桌面應用程式,用於訪問和釋出資料集。qri。cloud是最近釋出的,因此,可以瀏覽網路上的資料集。Qri將資料構造為幾個元件,包括架構和資料,以及元資料(如自述檔案)。轉換元件特別棒,可以用來對資料進行程式碼與資料一起進行版本控制操作。這些操作都在一個可以克隆和擴散的容器中傳播。

Qri確實似乎在緊追“Git和GitHub的資料”。不是很適合放入資料目錄或版本化資料庫部分。本文我們將其分類為資料目錄,因為從根本上來說,Qri不是資料庫。它是基於檔案的資料格式的包裝。沒有查詢語言,目前也不具備處理同一資料集中的多個表的能力。

對於分散式網路愛好者,並且要共享和版本控制的資料集很小,可以考慮Qri。

資料管道版本控制

pachyderm

口號

大規模可再生資料科學!

釋出時間:

2016年5月5日

web地址:

data。world

GitHub倉庫

: github。com/pachyderm/pachyderm

開發語言

:

golang

2020最值得研究的“Git for Data”工具

Pachyderm是資料管道版本控制工具。在Pachyderm模型中,資料作為一組內容定址檔案儲存在儲存庫中。管道程式碼也儲存為一組內容定址的程式碼檔案。當在資料上執行管道程式碼時,Pachyderm將其建模為一種合併提交,從而允許在資料管道中進行版本控制之類的概念,例如分支和繼承。

從版本控制的角度來看,Pachyderm模型非常有趣。將資料加程式碼建模為合併提交非常聰明,並且會產生一些非常有用的用例。

這種型別的版本控制在許多機器學習應用程式中很有用。通常,使用程式碼將影象或大文字檔案轉換為不同的檔案,例如,使集合中的每個影象都具有相同的尺寸。你可能想在許多不同的管道中重用那些修改過的檔案,並且僅在集合更改時才起作用。如果出現問題,希望能夠除錯導致問題的更改。如果你正在檔案上執行大型資料管道,就像機器學習中常見的那樣,Pachyderm就是理想選擇。

DVC

2020最值得研究的“Git for Data”工具

口號

Git for Data & Models(資料和模型的Git)

釋出時間:

2017年5月4日

GitHub倉庫

: github。com/iterative/dvc

開發語言

:

Python

與Pachyderm相似,DVC也用來版本化資料管道。與Pachyderm不同,DVC沒有自己的引擎。DVC是對Git的包裝,它允許大型檔案(如git-lfs)、版本控制程式碼以及資料。它還帶有一些友好的管道掛鉤,例如視覺化效果和重現命令。大多數文件都以機器學習為重點。

與Pachyderm相比,DVC的重量更輕,更受社群驅動。Pachyderm似乎更注重企業。如果正在尋找資料管道版本控制,而不必採用執行引擎,可以考慮DVC。

版本資料庫

Noms

2020最值得研究的“Git for Data”工具

口號

版本化,可儲存,可同步的資料庫。

釋出時間:

2017年1月5日

GitHub倉庫

: github。com/attic-labs/noms

開發語言

:

golang

Noms是Attic Labs開發開源資料庫。Attic Labs於2018年1月被Salesforce收購。之後,該開源專案就未見很多更新。其創始人和CEO Aaron Boodman最近宣佈,可能會發布基於 NOMS的新專案Replicache。

Noms實現了Merkle DAG,它可以像Git一樣真正地分發資料庫。周邊存在諸如查詢語言和命令列之類的周圍實用程式,但有一些限制。如果要使用Noms,則可能必須在頂部構建一些功能。但是,如果正在尋找以分散式方式儲存和同步資料的核心技術,可以考慮。

Dolt

2020最值得研究的“Git for Data”工具

口號

It's

Git for data

(資料的Git)

釋出時間:

2019年8月6日

GitHub倉庫

:github。com/liquidata-inc/dolt

開發語言

:

golang

Dolt從字面上理解為“Git for data”。Dolt在錶行而不是檔案上實現Git命令列和相關操作。使用SQL在工作集中修改資料和架構。如果要永久儲存工作集的版本,則進行提交。

Dolt產生逐單元的差異併合並,從而使版本之間的資料除錯變得容易。實際上,結果是在SQL資料庫上進行了Git版本控制。這使得Dolt是市場上唯一具有分支和合並的SQL資料庫。

Dolt支援離線執行,將資料和架構視為原始碼。也可以像PostgreSQL或MySQL一樣線上執行Dolt 。

DoltHub是Dolt的GitHub。可以DoltHub設定為遠端倉地址,並將Dolt更新對其推送。在DoltHub網站上有一個方便的資料發現介面以及用於資料檢視的拉取請求。

允許使用儲存庫,因此不會讓隨機的人寫到的儲存庫中。DoltHub免費託管公共資料,並收取象徵性費用的私人倉庫。