日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用SQL的方式查詢Git倉庫

Git 已經(jīng)成為了代碼版本控制的事實標準,但盡管 Git 相當普及,對代碼倉庫的深入分析的工作難度卻沒有因此而下降;而 SQL 在大型代碼庫的查詢方面則已經(jīng)是一種久經(jīng)考驗的語言,因此諸如 Spark 和 BigQuery 這樣的項目都采用了它。

成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站制作、成都網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元石屏做網(wǎng)站,已為上家服務,為石屏各地企業(yè)和個人服務,聯(lián)系電話:18982081108

所以,source02txzwh 很順理成章地將這兩種技術結合起來,就產(chǎn)生了 gitbase(LCTT 譯注:source3n5doby 是一家開源公司,本文作者是該公司開發(fā)者關系副總裁)。gitbase 是一個代碼即數(shù)據(jù)code-as-data的解決方案,可以使用 SQL 對 git 倉庫進行大規(guī)模分析。

gitbase 是一個完全開源的項目。它站在了很多巨人的肩上,因此得到了足夠的發(fā)展競爭力。下面就來介紹一下其中的一些“巨人”。

用 SQL 查詢 Git 倉庫用 SQL 查詢 Git 倉庫

gitbase playground 為 gitbase 提供了一個可視化的操作環(huán)境。

用 Vitess 解析 SQL

gitbase 通過 SQL 與用戶進行交互,因此需要能夠遵循 MySQL 協(xié)議來對通過網(wǎng)絡傳入的 SQL 請求作出解析和理解,萬幸由 YouTube 建立的 Vitess 項目已經(jīng)在這一方面給出了解決方案。Vitess 是一個橫向擴展的 MySQL 數(shù)據(jù)庫集群系統(tǒng)。

我們只是使用了這個項目中的部分重要代碼,并將其轉化為一個可以讓任何人在數(shù)分鐘以內(nèi)編寫出一個 MySQL 服務器的開源程序,就像我在 justforfunc 視頻系列中展示的 CSVQL 一樣,它可以使用 SQL 操作 CSV 文件。

用 go-git 讀取 git 倉庫

在成功解析 SQL 請求之后,還需要對數(shù)據(jù)集中的 git 倉庫進行查詢才能返回結果。因此,我們還結合使用了 sourcefz8wn77 最成功的 go-git 倉庫。go-git 是使用純 go 語言編寫的具有高度可擴展性的 git 實現(xiàn)。

借此我們就可以很方便地將存儲在磁盤上的代碼倉庫保存為 siva 文件格式(這同樣是 sourceyerhga8 的一個開源項目),也可以通過 git clone 來對代碼倉庫進行復制。

使用 enry 檢測語言、使用 babelfish 解析文件

gitbase 集成了我們開源的語言檢測項目 enry 以及代碼解析項目 babelfish,因此在分析 git 倉庫歷史代碼的能力也相當強大。babelfish 是一個自托管服務,普適于各種源代碼解析,并將代碼文件轉換為通用抽象語法樹Universal Abstract Syntax Tree(UAST)。

這兩個功能在 gitbase 中可以被用戶以函數(shù) LANGUAGE 和 UAST調用,諸如“查找上個月最常被修改的函數(shù)的名稱”這樣的請求就需要通過這兩個功能實現(xiàn)。

提高性能

gitbase 可以對非常大的數(shù)據(jù)集進行分析,例如來自 GitHub 高達 3 TB 源代碼的 Public Git Archive(公告)。面臨的工作量如此巨大,因此每一點性能都必須運用到極致。于是,我們也使用到了 Rubex 和 Pilosa 這兩個項目。

使用 Rubex 和 Oniguruma 優(yōu)化正則表達式速度

Rubex 是 go 的正則表達式標準庫包的一個準替代品。之所以說它是準替代品,是因為它沒有在 regexp.Regexp 類中實現(xiàn) LiteralPrefix 方法,直到現(xiàn)在都還沒有。

Rubex 的高性能是由于使用 cgo 調用了 Oniguruma,它是一個高度優(yōu)化的 C 代碼庫。

使用 Pilosa 索引優(yōu)化查詢速度

索引幾乎是每個關系型數(shù)據(jù)庫都擁有的特性,但 Vitess 由于不需要用到索引,因此并沒有進行實現(xiàn)。

于是我們引入了 Pilosa 這個開源項目。Pilosa 是一個使用 go 實現(xiàn)的分布式位圖索引,可以顯著提升跨多個大型數(shù)據(jù)集的查詢的速度。通過 Pilosa,gitbase 才得以在巨大的數(shù)據(jù)集中進行查詢。

總結

我想用這一篇文章來對開源社區(qū)表達我衷心的感謝,讓我們能夠不負眾望的在短時間內(nèi)完成 gitbase 的開發(fā)。我們 sourcemll65gb 的每一位成員都是開源的擁護者,github.com/src-d 下的每一行代碼都是見證。

你想使用 gitbase 嗎?最簡單快捷的方式是從 sourced.tech/engine 下載 source4ke1usq 引擎,就可以通過單個命令運行 gitbase 了。

想要了解更多,可以聽聽我在 Go SF 大會上的演講錄音。


本文題目:使用SQL的方式查詢Git倉庫
文章源于:http://www.5511xx.com/article/ccodepj.html