成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Gitbase:使用 SQL 探索 Git 倉庫

開源
Gitbase 是一個由 Go 驅動的開源項目,它使得我們可以在 Git 倉庫上運行 SQL 查詢。

Git 已經成為了代碼版本控制的事實標準。雖然 Git 已經很流行了,但想用它來對源代碼倉庫的歷史和內容進行深度分析,仍然是一件復雜的事情。

另一方面,SQL 則是一個經過實際檢驗、適合查詢大型代碼庫的的語言,畢竟 Spark 和 BigQuery 等項目都采用了 SQL 作為查詢語言。

因此,在 sourceowocgsc 公司,我們順理成章地結合了這兩種技術來創建了 Gitbase:這是一個用 SQL 對 Git 倉庫進行大規模分析的“代碼即數據”解決方案。

Gitbase 是一個完全開源的項目,它站在一系列巨人的肩膀上,是它們使 Gitbase 的發展成為可能。本文旨在指出其中的主要部分。

??Gitbase 試驗場??? 提供了一種使用 Gitbase 的可視化方式。

使用 Vitess 解析 SQL

Gitbase 將 SQL 作為用戶接口。這意味著我們需要解析基于 MySQL 協議傳輸的 SQL 請求,并理解它們。幸運的是,我們在 YouTube 的朋友和他們的 ??Vitess?? 項目已經實現了這一點。Vitess 是一個數據庫集群系統,用于 MySQL 的水平擴展。

我們直接截取一些重要的代碼片段,并把它做成了一個 ??開源項目??。這個項目允許任何人在幾分鐘內編寫一個 MySQL 服務器(正如我在 ??justforfunc?? 的專題:??CSVQL - 用 SQL 處理 CSV?? 中所展示的那樣)。

用 go-git 讀取 Git 儲存庫

當成功解析了一個請求,我們還需要讀取數據集里的 Git 倉庫,才能夠知道該如何回復它。為此,我們集成了 sourceowocgsc 最成功的倉庫 ??go-git??。go-git 是一個高度可擴展的純 Go 語言的 Git 實現。

這使得我們能夠輕松地分析以 ??siva?? 文件格式存儲在磁盤上的源代碼倉庫(siva 也是一個 sourceowocgsc 的開源項目),或是直接使用 ??git clone?? 克隆的倉庫。

使用 Enry 檢測編程語言,使用 Babelfish 解析文件

Gitbase 并沒有將其分析能力局限于 Git 歷史記錄上。它還使用(顯然也是)我們的開源項目 ??Enry?? 集成了語言檢測功能,并使用 ??Babelfish?? 實現了程序解析的功能。Babelfish 是一個用于通用源代碼解析的自托管服務器,它可以將代碼文件轉化為通用抽象語法樹Universal Abstract Syntax Trees(UAST)。

這兩個功能在 Gitbase 中呈現為用戶函數 ??LANGUAGE?? 和 ??UAST??。結合使用兩個函數,許多查詢請求都成為了可能,比如“找到上個月修改次數最多的函數名稱”。

讓它快速運行

Gitbase 經常要分析非常大的數據集,比如公共 Git 檔案,其中有來自 GitHub 的 3TB 源代碼(見 ??公告??)。為了做到這一點,每份 CPU 處理能力都很重要。

這就是為什么我們又集成了另外兩個項目:Rubex 和 Pilosa。

使用 Rubex 和 Oniguruma 加快正則表達式的速度

??Rubex?? 是 Go 的 ??regexp?? 標準庫包的一個準替代品。之所以還不能完成替代,是因為他們沒有在 ??regexp.Regexp?? 類型上實現 ??LiteralPrefix?? 方法,不過我也是直到現在才聽說這個方法。

Rubex 的高性能得歸功于高度優化的 C 語言庫 ??Oniguruma??,它使用 ??cgo?? 來調用這個庫。

使用 Pilosa 索引加快查詢速度

索引基本上是每個關系型數據庫的眾所周知的特性,但 Vitess 卻沒有實現索引,因為它不是真正需要。

還好開源的 ??Pilosa?? 再一次拯救了我們,它是一個用 Go 實現的分布式位圖索引,使得 Gitbase 可以用于大規模的數據集。Pilosa 是開源的,它極大地加快了對多個海量數據集的查詢。

總結

我想通過這篇博文,親自感謝開源社區,是他們讓我們在如此短的時間內創建了 Gitbase,這是誰也沒想到的。在 sourceowocgsc 公司,我們是開源的堅定信仰者,??github.com/src-d?? 下的每一行代碼(包括我們的 OKR 和投資者委員會)都可以證明這一點。

你想嘗試一下 Gitbase 嗎?最快、最簡單的方法就是使用 sourceowocgsc 引擎。從 ??sourced.tech/engine?? 下載它,只需一個命令就能讓 Gitbase 運行起來。

想了解更多嗎?請查看我在 ??Go SF meetup?? 的演講錄音。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2011-08-09 10:20:55

GitLinux遠程倉庫

2017-03-01 10:34:12

2020-12-11 22:16:34

Git遠程倉庫Linux

2022-07-05 07:46:25

數據倉庫運維智能化

2017-03-13 13:21:34

Git處理大倉庫

2013-11-01 13:21:23

Dropbox

2014-03-19 10:01:16

Git項目遠端倉庫

2020-04-03 15:22:49

Hadoop數據倉庫數據庫

2023-11-02 07:39:14

Git.NET代碼

2017-02-08 13:33:34

AndroidJavaPhp

2021-03-14 09:37:45

Git倉庫管理代碼

2016-08-05 12:58:44

GitLinux開源

2020-07-07 16:58:21

開源技術 工具

2023-04-04 08:38:27

命令Git倉庫

2022-07-10 21:17:01

GitTigLinux

2010-07-21 15:01:09

SQL Server

2014-07-28 14:43:14

git開源

2015-08-06 10:28:24

git規范流程

2020-01-18 18:41:13

GitGit服務器開源

2018-06-01 10:08:00

DBA美團SQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99精品亚洲国产精品久久不卡 | 青青久草 | 午夜欧美a级理论片915影院 | 精品国产99 | 日韩中文字幕一区 | 免费在线日韩 | 雨宫琴音一区二区在线 | 精品国产精品三级精品av网址 | 日韩成人在线免费视频 | 日韩在线欧美 | 亚洲一区不卡 | 一区二区国产在线观看 | 日日骚av| 欧美影院| 人人人人干 | 国产成人在线视频免费观看 | 日韩精品极品视频在线观看免费 | 日本韩国电影免费观看 | 日本三级黄视频 | 国产精品一区在线观看 | 日韩精品久久 | 91国产在线播放 | 亚洲欧美成人在线 | 中文字幕视频一区 | 亚洲欧美另类在线观看 | 婷婷开心激情综合五月天 | 伊人伊人| 狠狠久久综合 | 日韩三级免费网站 | 蜜臀久久99精品久久久久久宅男 | 成人精品一区 | av天天干| 国产精品伦理一区二区三区 | 国产一区二区三区在线免费观看 | 久草青青草 | 久久国产亚洲精品 | 亚洲综合电影 | 国产亚洲精品综合一区 | 国产成人99久久亚洲综合精品 | 亚洲精品一区二区三区丝袜 | 羞羞色影院 |