數(shù)據(jù)及代碼版本管理系統(tǒng)及方法
【專利摘要】本發(fā)明提供一種數(shù)據(jù)和代碼版本管理系統(tǒng)及方法。其中,所述系統(tǒng)包括:數(shù)據(jù)管理模塊,代碼管理模塊,執(zhí)行引擎模塊及系統(tǒng)核心模塊,其中,數(shù)據(jù)管理模塊存儲(chǔ)有至少一個(gè)數(shù)據(jù)集;代碼管理模塊存儲(chǔ)有至少一個(gè)執(zhí)行代碼,以及接收用戶推送的代碼予以存儲(chǔ)或依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求;執(zhí)行引擎模塊配置有至少一種執(zhí)行后端引擎,依據(jù)接收的執(zhí)行命令調(diào)用一執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的至少一數(shù)據(jù)集執(zhí)行操作;系統(tǒng)核心模塊接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),處理數(shù)據(jù)管理模塊中的數(shù)據(jù)集,創(chuàng)建數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息和代碼版本信息。本發(fā)明有效解決了數(shù)據(jù)和代碼的版本管理效率低或混亂等問題。
【專利說明】
數(shù)據(jù)及代碼版本管理系統(tǒng)及方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)分析領(lǐng)域,特別是涉及一種數(shù)據(jù)和代碼版本管理系統(tǒng)及方法。
【背景技術(shù)】
[0002]近幾年,人們收集了大量的數(shù)據(jù)。同時(shí),數(shù)據(jù)科學(xué)家也成為各大公司炙手可熱的工作。但是,現(xiàn)在缺乏足夠的工具幫助數(shù)據(jù)科學(xué)家分析數(shù)據(jù)流。隨著數(shù)據(jù)科學(xué)的任務(wù)越來越復(fù)雜,許多數(shù)據(jù)分析師開始改造代碼版本工具,比如說Git。但是,數(shù)據(jù)科學(xué)的任務(wù)并不是Git可以完全處理的。
[0003]首先,數(shù)據(jù)科學(xué)是以數(shù)據(jù)為中心的。一個(gè)數(shù)據(jù)集可以經(jīng)過清洗、標(biāo)記和預(yù)處理等幾個(gè)操作。這樣數(shù)據(jù)集就產(chǎn)生了多個(gè)版本。數(shù)據(jù)科學(xué)家需要記錄這些版本以及隨時(shí)修改數(shù)據(jù)。一種常見但并不推薦的方法就是保存多個(gè)副本,并將些副本分別命名為data, csv,data-vers1nl.csv,data-final-vers1n.csv,data-last_vers1n.csv。這種命名方式經(jīng)常使人們感到很混亂。而因?yàn)榘姹净蛘邤?shù)據(jù)集弄錯(cuò)經(jīng)常會(huì)導(dǎo)致一些錯(cuò)誤。
[0004]第二,一個(gè)機(jī)器學(xué)習(xí)模型通常包含很多參數(shù),而訓(xùn)練這些參數(shù)是數(shù)據(jù)科學(xué)中很常見的任務(wù)。這些參數(shù)比如學(xué)習(xí)速率、初始值、正則化等等經(jīng)常讓人們感覺迷茫。所以,后來人們也就忘了這些參數(shù)的意義和重要性。
[0005]第三,當(dāng)數(shù)據(jù)集越來越大,數(shù)據(jù)科學(xué)家經(jīng)常需要搭建一個(gè)分布式平臺(tái),并且在其之上反復(fù)重復(fù)這些實(shí)驗(yàn)。他們還可能使用一些第三方的軟件包。但是不幸的是,在不同的軟件/硬件環(huán)境中安裝和配置這些軟件包通常是很乏味的。
[0006]最后,數(shù)據(jù)科學(xué)家之間共享數(shù)據(jù)集和經(jīng)驗(yàn)是很困難的事。當(dāng)然他們可以共享他們的代碼和結(jié)果,但是這并不利于他們深刻理解他們的數(shù)據(jù)集以及充分利用別人的代碼和結(jié)果O
[0007]MIT的DataHub項(xiàng)目支持?jǐn)?shù)據(jù)集版本控制,卻并不能操控整個(gè)數(shù)據(jù)集分析與開發(fā)過程。所以該項(xiàng)目更多的是一個(gè)數(shù)據(jù)庫(kù)管理工具而不是軟件開發(fā)工具。另一方面,Harvard的Dataverse則是一個(gè)數(shù)據(jù)發(fā)布和分享平臺(tái),但缺少數(shù)據(jù)的版本控制和分析功能。
【發(fā)明內(nèi)容】
[0008]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種數(shù)據(jù)和代碼版本管理系統(tǒng)及方法,用于解決現(xiàn)有技術(shù)中數(shù)據(jù)和代碼的版本管理效率低或混亂等問題。
[0009]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本申請(qǐng)的第一方面在于提供一種數(shù)據(jù)版本管理系統(tǒng),包括:數(shù)據(jù)管理模塊,代碼管理模塊,執(zhí)行引擎模塊,以及系統(tǒng)核心模塊,其中,所述數(shù)據(jù)管理模塊存儲(chǔ)有至少一個(gè)數(shù)據(jù)集;所述代碼管理模塊存儲(chǔ)有至少一個(gè)執(zhí)行代碼,所述執(zhí)行代碼用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作;所述執(zhí)行引擎模塊配置有至少一種執(zhí)行后端引擎,依據(jù)接收的執(zhí)行命令調(diào)用一執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的至少一數(shù)據(jù)集執(zhí)行操作;所述系統(tǒng)核心模塊接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),處理所述數(shù)據(jù)管理模塊中的數(shù)據(jù)集,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本?目息O
[0010]于本申請(qǐng)的一實(shí)施例中,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。
[0011]于本申請(qǐng)的一實(shí)施例中,所述系統(tǒng)核心模塊接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為提交一個(gè)新數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0012]于本申請(qǐng)的一實(shí)施例中,所述系統(tǒng)核心模塊接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為修改所述數(shù)據(jù)管理模塊中存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊依據(jù)所述數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,所述系統(tǒng)核心模塊提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),以及形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0013]本申請(qǐng)的另一方面提供一種數(shù)據(jù)版本管理方法,所述方法包括以下步驟:預(yù)存至少一個(gè)數(shù)據(jù)集以及用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作的至少一個(gè)執(zhí)行代碼,并配置至少一種用于運(yùn)行所述執(zhí)行代碼的執(zhí)行后端引擎;以及;接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),調(diào)用一執(zhí)行后端引擎運(yùn)行所述至少一執(zhí)行代碼以對(duì)所述至少一數(shù)據(jù)集執(zhí)行處理,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0014]于本申請(qǐng)的一實(shí)施例中,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。
[0015]于本申請(qǐng)的一實(shí)施例中,所述的接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為提交一個(gè)新數(shù)據(jù)集時(shí),提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),并記錄形成的數(shù)據(jù)版本信息。
[0016]于本申請(qǐng)的一實(shí)施例中,所述的接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為修改所述數(shù)據(jù)管理模塊中存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),依據(jù)所述數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),以及形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的數(shù)據(jù)版本信息。
[0017]本申請(qǐng)的再一方面在于提供一種代碼版本管理系統(tǒng),包括:數(shù)據(jù)管理模塊,代碼管理模塊,執(zhí)行引擎模塊,以及系統(tǒng)核心模塊,其中所述數(shù)據(jù)管理模塊存儲(chǔ)有至少一個(gè)數(shù)據(jù)集;所述代碼管理模塊存儲(chǔ)有至少一個(gè)執(zhí)行代碼,所述執(zhí)行代碼用于對(duì)所述數(shù)據(jù)管理模塊存儲(chǔ)的至少一個(gè)數(shù)據(jù)集進(jìn)行操作;所述代碼管理模塊還用于接收用戶推送的代碼予以存儲(chǔ)或依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求;所述執(zhí)行引擎模塊配置有至少一種執(zhí)行后端引擎,用于接收到執(zhí)行命令時(shí),依據(jù)一執(zhí)行命令調(diào)用所述執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的一數(shù)據(jù)集執(zhí)行操作;所述系統(tǒng)核心模塊用于記錄用戶推送的代碼并形成代碼版本信息,以及接收到所述代碼管理模塊的代碼處理請(qǐng)求時(shí),發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊,令其運(yùn)行所述代碼管理模塊中的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。
[0018]于本申請(qǐng)的一實(shí)施例中,所述系統(tǒng)核心模塊還用于依據(jù)用戶提交的數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,并形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。
[0019]于本申請(qǐng)的一實(shí)施例中,所述系統(tǒng)核心模塊依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行引擎模塊的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊中存儲(chǔ)的執(zhí)行代碼。
[0020]本申請(qǐng)的又一方面在于提供一種代碼版本管理方法,包括以下步驟:預(yù)存至少一個(gè)數(shù)據(jù)集以及用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作的至少一個(gè)執(zhí)行代碼,并配置至少一種用于運(yùn)行所述執(zhí)行代碼的執(zhí)行后端引擎;以及;接收用戶推送的代碼予以存儲(chǔ),并記錄形成的代碼版本信息;或者依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求,發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行預(yù)存的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)預(yù)存的所述一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。
[0021]于本申請(qǐng)的一實(shí)施例中,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。
[0022]于本申請(qǐng)的一實(shí)施例中,代碼版本管理方法還包括步驟,依據(jù)用戶提交的數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行后端引擎中,并發(fā)送一執(zhí)行命令令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,并形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。
[0023]于本申請(qǐng)的一實(shí)施例中,所述的依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行后端引擎中的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊中存儲(chǔ)的執(zhí)行代碼。
[0024]于本申請(qǐng)的一實(shí)施例中,代碼版本管理方法還包括配置有多種用戶UI的步驟,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。
[0025]如上所述,本發(fā)明的數(shù)據(jù)和代碼版本管理系統(tǒng)及方法,具有以下有益效果:本發(fā)明通過為數(shù)據(jù)集和代碼提供各自的版本管理,并為各數(shù)據(jù)集和代碼提供有向無環(huán)的工作流及構(gòu)建二者的關(guān)聯(lián)關(guān)系,有效解決了數(shù)據(jù)和代碼的版本管理效率低或混亂等問題;另外,采用UI設(shè)計(jì),能夠?yàn)橛脩舯葘?duì)、分析各歷史數(shù)據(jù)集提供了便捷的途徑;另外,各單元分布在不同服務(wù)器上,能夠便于減輕各服務(wù)器上的運(yùn)行壓力。
【附圖說明】
[0026]圖1顯示為本發(fā)明的數(shù)據(jù)版本管理系統(tǒng)的結(jié)構(gòu)示意圖。
[0027]圖2顯示為本發(fā)明的數(shù)據(jù)版本管理方法的流程圖。
[0028]圖3顯示為本發(fā)明的代碼版本管理系統(tǒng)的結(jié)構(gòu)示意圖。
[0029]圖4顯示為本發(fā)明的代碼版本管理方法的流程圖。
[0030]圖5顯示為本發(fā)明一具體實(shí)施例中數(shù)據(jù)工作流的組成示意圖。
元件標(biāo)號(hào)說明
[0031]I數(shù)據(jù)版本管理系統(tǒng)
[0032]11數(shù)據(jù)管理模塊
[0033]12代碼管理模塊
[0034]13執(zhí)行引擎模塊
[0035]14系統(tǒng)核心模塊
[0036]2代碼版本管理系統(tǒng)
[0037]21數(shù)據(jù)管理模塊
[0038]22代碼管理模塊
[0039]23執(zhí)行引擎模塊
[0040]24系統(tǒng)核心模塊[0041 ]Sll ?S12、S21 ?S22步驟
【具體實(shí)施方式】
[0042]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。需說明的是,在不沖突的情況下,以下實(shí)施例及實(shí)施例中的特征可以相互組合。
[0043]需要說明的是,以下實(shí)施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目及形狀繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0044]實(shí)施例一
[0045]請(qǐng)參閱圖1,顯示為本發(fā)明的數(shù)據(jù)版本管理系統(tǒng)的結(jié)構(gòu)示意圖,如圖所示,本申請(qǐng)的第一方面在于提供一種數(shù)據(jù)版本管理系統(tǒng),所述數(shù)據(jù)版本管理體系可以配置在單臺(tái)服務(wù)器、服務(wù)器集群、基于云計(jì)算架構(gòu)的服務(wù)器、或分布式服務(wù)器中。其中,所述服務(wù)器集群指將很多服務(wù)器集中起來一起進(jìn)行數(shù)據(jù)版本管理,所述服務(wù)器集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算,以提高運(yùn)算速度。所述基于云計(jì)算架構(gòu)的服務(wù)器通過虛擬化技術(shù)將各服務(wù)器存儲(chǔ)池化,使得數(shù)據(jù)版本管理系統(tǒng)中各模塊所在服務(wù)器共享計(jì)算資源。所述分布式服務(wù)器是將所述數(shù)據(jù)版本管理系統(tǒng)中的數(shù)據(jù)和程序分散在多個(gè)服務(wù)器上進(jìn)行協(xié)調(diào)運(yùn)行。
[0046]所述數(shù)據(jù)版本管理系統(tǒng)中的各模塊可根據(jù)實(shí)際設(shè)計(jì)需要,配置在上述任一種服務(wù)器中。具體地,所述數(shù)據(jù)版本管理系統(tǒng)I包括:數(shù)據(jù)管理模塊11,代碼管理模塊12,執(zhí)行引擎模塊13,以及系統(tǒng)核心模塊14。
[0047]所述數(shù)據(jù)管理模塊11存儲(chǔ)有至少一個(gè)數(shù)據(jù)集。其中,所述數(shù)據(jù)集為被版本管理的數(shù)據(jù)的集合。所述數(shù)據(jù)包括但不限于:文本數(shù)據(jù)、和/或多媒體數(shù)據(jù)等。在一具體的實(shí)施例中,所述文本數(shù)據(jù)舉例為代碼數(shù)據(jù)、系統(tǒng)日志等。所述多媒體數(shù)據(jù)舉例為圖片數(shù)據(jù)、視頻數(shù)據(jù)等。若所述數(shù)據(jù)管理模塊11保存多個(gè)數(shù)據(jù)集,則各數(shù)據(jù)集之間可以是無關(guān)聯(lián)的、或者有關(guān)聯(lián)的。例如,數(shù)據(jù)集Al、A2、和A3中,數(shù)據(jù)集A3是由數(shù)據(jù)集Al和A2衍生出的。數(shù)據(jù)集A3通過索引、或關(guān)聯(lián)字段與數(shù)據(jù)集Al和A2進(jìn)行關(guān)聯(lián)。
[0048]所述數(shù)據(jù)集中還可以包含用于索引、或描述數(shù)據(jù)的元數(shù)據(jù)。其中,所述數(shù)據(jù)集中的各數(shù)據(jù)及對(duì)應(yīng)的元數(shù)據(jù)可藉由一數(shù)據(jù)ID相關(guān)聯(lián)。具體地,所述元數(shù)據(jù)(Metadata)又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。所述的元數(shù)據(jù)算是一種電子式目錄,為了達(dá)到編制目錄的目的,必須在描述并收藏?cái)?shù)據(jù)的內(nèi)容或特色,進(jìn)而達(dá)成協(xié)助數(shù)據(jù)檢索的目的。
[0049]一種可選方案是,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。在此,所述第一存儲(chǔ)單元和第二存儲(chǔ)單元可配置在同一數(shù)據(jù)庫(kù)服務(wù)器內(nèi)。也可以根據(jù)實(shí)際需要配置在不同的服務(wù)器內(nèi)。例如在一可選的實(shí)施例中,所述第一存儲(chǔ)單元配置于Hadoop分布式文件系統(tǒng)(大數(shù)據(jù)分布式文件系統(tǒng))中;第二存儲(chǔ)單元配置于NoSQL數(shù)據(jù)庫(kù)(非關(guān)系型的數(shù)據(jù)庫(kù))中。
[°°50] 其中,所述分布式文件系統(tǒng)(Distributed File System)設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式,具體是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。所述NoSQL數(shù)據(jù)庫(kù)例如為鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),列存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),圖形(Graph)數(shù)據(jù)庫(kù)或MongoDB數(shù)據(jù)庫(kù)等。
[0051]在本申請(qǐng)中,利用分布式文件系統(tǒng)可以高效的掃描數(shù)據(jù)集,但是隨機(jī)訪問則低效的。為了解決這個(gè)問題,本申請(qǐng)?zhí)峁┑姆桨甘牵鎯?chǔ)每張圖片的標(biāo)識(shí)和注解,例如文件名、大小、內(nèi)容描述,這些內(nèi)容被存儲(chǔ)在NoSQL數(shù)據(jù)庫(kù)中以加快查詢速度,也就是根據(jù)數(shù)據(jù)ID來連接原始數(shù)據(jù)和元數(shù)據(jù)。
[0052]本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)記錄了數(shù)據(jù)的每個(gè)域,比如,一個(gè)新數(shù)據(jù)為一個(gè)新名字和版本號(hào)的集合。在本申請(qǐng)具體采用的實(shí)施例中使用的是MongoDB數(shù)據(jù)庫(kù)來存儲(chǔ)元數(shù)據(jù),但并不局限與此,在其他的實(shí)施方式中,還可能將會(huì)迀移到列存儲(chǔ)數(shù)據(jù)庫(kù),鍵值存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),或者圖形(Graph)數(shù)據(jù)庫(kù)中以提高效率。
[0053]所述代碼管理模塊12存儲(chǔ)有至少一個(gè)執(zhí)行代碼,所述執(zhí)行代碼用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作。其中,當(dāng)所述執(zhí)行代碼被調(diào)用時(shí),執(zhí)行對(duì)數(shù)據(jù)集、及數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行增刪改等操作。例如,所述執(zhí)行代碼包括但不限于:增加一新數(shù)據(jù)集的執(zhí)行代碼、刪除數(shù)據(jù)集的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中增加標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中刪除標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中替換標(biāo)簽/字符等的執(zhí)行代碼。
[0054]在一個(gè)可選用是實(shí)施例中,所述的執(zhí)行代碼存儲(chǔ)在例如Gitlab中,并且使用GitLab的API與之交互。所述的Gitlab是利用Ruby on Rails一個(gè)開源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過Web界面進(jìn)行訪問公開的或者私人項(xiàng)目。所述的Gitlab擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問,所述的Gitlab非常易于瀏覽提交過的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。所述的Gitlab還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。
[0055]所述執(zhí)行引擎模塊13配置有至少一種執(zhí)行后端引擎,依據(jù)接收的執(zhí)行命令調(diào)用一執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊11中的至少一數(shù)據(jù)集執(zhí)行操作。在此,所述執(zhí)行后端引擎針對(duì)各執(zhí)行代碼的編程語言而設(shè)。所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。
[0056]所述單機(jī)引擎例如為單機(jī)上的Python,所述的Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNU General Public License)協(xié)議,其在執(zhí)行時(shí)首先會(huì)將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機(jī))來執(zhí)行這些編譯好的byte code。
[0057]所述分布式引擎例如為集群上的Spark,所述Spark是一個(gè)快速且通用的計(jì)算集群框架,它的內(nèi)核使用Scala語言編寫,它提供了 Scala、Java和Python編程語言high-1 eve IAPI,使用這些API能夠非常容易地開發(fā)并行處理的應(yīng)用程序。
[0058]在具體的實(shí)施例中,配置所述的執(zhí)行后端引擎是必需,因?yàn)檫@樣不但方便為用戶搭建好分布式集群的環(huán)境;還可以能夠自動(dòng)地將代碼和結(jié)果數(shù)據(jù)集連接起來。也就是說,在本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中執(zhí)行代碼可以得到任意的中間結(jié)果,只要用戶保留了原始數(shù)據(jù)和代碼。
[0059]所述系統(tǒng)核心模塊14接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),處理所述數(shù)據(jù)管理模塊11中的數(shù)據(jù)集,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0060]其中,所述數(shù)據(jù)工作流(DataWork Flow,DWF)用于標(biāo)記在版本管理期間數(shù)據(jù)集和/或數(shù)據(jù)集中的數(shù)據(jù)的有向的無環(huán)的版本節(jié)點(diǎn)。對(duì)于新數(shù)據(jù)集來說,所述數(shù)據(jù)工作流對(duì)應(yīng)標(biāo)記版本節(jié)點(diǎn)為根節(jié)點(diǎn)。對(duì)于包含版本更新的數(shù)據(jù)集/數(shù)據(jù)來說,所述數(shù)據(jù)工作流為表示數(shù)據(jù)集中的兩數(shù)據(jù)之間、和/或兩數(shù)據(jù)集之間的衍生關(guān)系。所述衍生關(guān)系包括一數(shù)據(jù)集的執(zhí)行歷史記錄和版本。其中,所述執(zhí)行歷史記錄包括但不限于:變化前和變化后的數(shù)據(jù)集中數(shù)據(jù)的指向關(guān)系(即父子節(jié)點(diǎn)關(guān)系)、變化前后所調(diào)用的執(zhí)行代碼、執(zhí)行時(shí)間等。簡(jiǎn)而言之,所述數(shù)據(jù)工作流的概念作為本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中的數(shù)據(jù)集邏輯關(guān)系。所述數(shù)據(jù)集依據(jù)此形成了依賴關(guān)系。所述數(shù)據(jù)工作流是本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中重現(xiàn)數(shù)據(jù)的核心功會(huì)K。
[0061]在一個(gè)所述數(shù)據(jù)工作流中,一個(gè)節(jié)點(diǎn)表示表示了數(shù)據(jù)集的一個(gè)特定版本。一條連接兩個(gè)節(jié)點(diǎn)的有向邊表示一個(gè)數(shù)據(jù)集是有另一個(gè)數(shù)據(jù)集衍生而來。邊上的標(biāo)記表示的則是一次實(shí)驗(yàn)的代碼版本。請(qǐng)參閱圖5,圖5所示的一個(gè)數(shù)據(jù)工作流的示例,S卩,一個(gè)數(shù)據(jù)工作流是一個(gè)有向無環(huán)圖。圖片5表示了常見的一對(duì)一和多對(duì)一結(jié)構(gòu)兩種數(shù)據(jù)工作流結(jié)構(gòu)。
[0062]在上述的一對(duì)一結(jié)構(gòu)中,一個(gè)數(shù)據(jù)集由另一個(gè)數(shù)據(jù)集衍生而來。舉例來說,用戶可以基于一個(gè)已有的數(shù)據(jù)集創(chuàng)建一個(gè)新的數(shù)據(jù)集,并在新的數(shù)據(jù)集上打上一些新的標(biāo)簽并將其共享給其他用戶。而上述的多對(duì)一結(jié)構(gòu)表示一個(gè)數(shù)據(jù)集可以由兩個(gè)或更多的數(shù)據(jù)集衍生而來。像一些合并兩個(gè)數(shù)據(jù)表之類的操作都是如此。
[0063]在本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中在實(shí)現(xiàn)上述數(shù)據(jù)工作流結(jié)構(gòu)的時(shí)候引入父子節(jié)點(diǎn)關(guān)系這一屬性用來記錄這個(gè)數(shù)據(jù)集是從哪個(gè)數(shù)據(jù)集衍生而來的。同時(shí),本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)還可以實(shí)現(xiàn)比較父子數(shù)據(jù)集之間的區(qū)別的功能。這些功能幫助用戶能更容易的發(fā)現(xiàn)自己代碼的修改導(dǎo)致了什么結(jié)果。因此,所述的數(shù)據(jù)工作流的結(jié)構(gòu)圖不但可以理順數(shù)據(jù)集之間的關(guān)系,還可以幫助管理用戶的執(zhí)行記錄,包括根據(jù)版本號(hào)來產(chǎn)生結(jié)果。
[0064]所述系統(tǒng)核心模塊14根據(jù)變化前的數(shù)據(jù)集及數(shù)據(jù)的標(biāo)記信息(如ID值)和數(shù)據(jù)工作流,得到并記錄形成對(duì)應(yīng)變化后的數(shù)據(jù)版本信息。其中,所述數(shù)據(jù)版本信息包括但不限于數(shù)據(jù)集名稱、數(shù)據(jù)ID、代碼ID、形成時(shí)間、及運(yùn)行日志中的至少一種。
[0065]在此,所述系統(tǒng)核心模塊14可以通過網(wǎng)絡(luò)/提交接口獲取用戶提交的數(shù)據(jù)處理請(qǐng)求,并根據(jù)所獲取的數(shù)據(jù)處理請(qǐng)求向所述執(zhí)行引擎模塊13發(fā)送對(duì)應(yīng)的執(zhí)行命令和從代碼管理模塊12中選定的執(zhí)行代碼,以供所述執(zhí)行引擎模塊13調(diào)用對(duì)應(yīng)的執(zhí)行后端引擎來運(yùn)行所選擇的執(zhí)行代碼,以便進(jìn)行數(shù)據(jù)集的版本管理。
[0066]比如在一具體的實(shí)施過程中,每當(dāng)用戶向Gitlab服務(wù)器提交執(zhí)行代碼(Push),Gitlab服務(wù)器就會(huì)通過一個(gè)Web hook通知所述系統(tǒng)核心模塊14。所述系統(tǒng)核心模塊14會(huì)將用戶請(qǐng)求推入自己的隊(duì)列,同時(shí)從隊(duì)首選取請(qǐng)求來進(jìn)行處理。所述系統(tǒng)核心模塊14會(huì)將該請(qǐng)求的執(zhí)行代碼拷貝到所述執(zhí)行引擎模塊13,然后所述執(zhí)行引擎模塊13會(huì)使用用戶提供的參數(shù)和輸入來運(yùn)行執(zhí)行代碼。該任務(wù)結(jié)束之后,所述系統(tǒng)核心模塊14會(huì)記錄下這次請(qǐng)求的信息,包括這次Push在Gitlab服務(wù)器上的commit ID,用戶指定的參數(shù)以及任何具體與實(shí)驗(yàn)相關(guān)的信息。有些情況下,實(shí)驗(yàn)會(huì)產(chǎn)生新的數(shù)據(jù)集。這樣所述系統(tǒng)核心模塊14也會(huì)記錄這些數(shù)據(jù)集之間的關(guān)系,即前述的數(shù)據(jù)工作流。
[0067]當(dāng)用戶提交處理的數(shù)據(jù)請(qǐng)求為多種情況,以下將分別予以闡述:
[0068]在一種情況下,當(dāng)所述數(shù)據(jù)處理請(qǐng)求為提交一個(gè)新數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊14可以直接將新數(shù)據(jù)集保存在第一存儲(chǔ)單元中,創(chuàng)建所述新數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息?;蛘?,所述系統(tǒng)核心模塊14按照該數(shù)據(jù)處理請(qǐng)求從代碼管理模塊12中選取對(duì)應(yīng)的執(zhí)行代碼,以及向執(zhí)行引擎模塊13發(fā)送對(duì)應(yīng)的提交新數(shù)據(jù)集的執(zhí)行命令。所述執(zhí)行引擎模塊13根據(jù)所接收的執(zhí)行命令執(zhí)行所選取的執(zhí)行代碼,并將所獲取的新數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于第一存儲(chǔ)單元中。與此同時(shí),所述系統(tǒng)核心模塊14還創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0069]在一種可選方案中,所述新數(shù)據(jù)集包括數(shù)據(jù)和元數(shù)據(jù)。所述系統(tǒng)核心模塊14在選取執(zhí)行代碼時(shí),選取能夠?qū)?yīng)保存數(shù)據(jù)和元數(shù)據(jù)的執(zhí)行代碼,并執(zhí)行所選取的執(zhí)行代碼,從新數(shù)據(jù)集中分別提取數(shù)據(jù)和元數(shù)據(jù),再將所提取的數(shù)據(jù)存儲(chǔ)于第一存儲(chǔ)單元中,將所提取的元數(shù)據(jù)存儲(chǔ)于第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。在此,所述數(shù)據(jù)工作流中包含作為根節(jié)點(diǎn)的數(shù)據(jù)和對(duì)應(yīng)的元數(shù)據(jù)。所記錄的數(shù)據(jù)版本信息包括:數(shù)據(jù)集名稱、數(shù)據(jù)ID、元數(shù)據(jù)ID、數(shù)據(jù)ID和元數(shù)據(jù)ID的對(duì)應(yīng)關(guān)系、執(zhí)行添加該數(shù)據(jù)集的代碼ID、形成時(shí)間、及運(yùn)行日志。
[0070]在另一種情況下,當(dāng)用戶提交的數(shù)據(jù)處理請(qǐng)求為修改所述數(shù)據(jù)管理模塊11中存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊14依據(jù)所述數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊13中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊13令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集。再將所形成的新數(shù)據(jù)集保存在第一存儲(chǔ)單元中,同時(shí)創(chuàng)建該新數(shù)據(jù)集相對(duì)修改前的數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0071]一種可選方式是,所述系統(tǒng)核心模塊14提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),以及形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0072]更為優(yōu)選的方式是,所述系統(tǒng)核心模塊14依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行引擎模塊13的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊12中存儲(chǔ)的執(zhí)行代碼。
[0073]具體地,用戶還可以預(yù)先根據(jù)自身需求提交新的執(zhí)行代碼,并手動(dòng)、或通過所述系統(tǒng)核心模塊14調(diào)整新的執(zhí)行代碼與執(zhí)行引擎模塊13中的執(zhí)行后端引擎之間的對(duì)應(yīng)關(guān)系。由此,當(dāng)用戶提交的數(shù)據(jù)處理請(qǐng)求為修改所述數(shù)據(jù)管理模塊11中存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊14依據(jù)所述數(shù)據(jù)處理請(qǐng)求,確定將該新的執(zhí)行代碼復(fù)制到所述執(zhí)行引擎模塊13中,并由對(duì)應(yīng)的執(zhí)行后端引擎執(zhí)行相應(yīng)的執(zhí)行代碼,以保存新的數(shù)據(jù)集,并創(chuàng)建新的數(shù)據(jù)集相對(duì)于修改前的數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0074]當(dāng)用戶需要對(duì)不同版本之間的數(shù)據(jù)集進(jìn)行分析和計(jì)算時(shí),本實(shí)施例中一種優(yōu)選方式為,所述數(shù)據(jù)版本管理系統(tǒng)I還包括:用戶接口模塊(未予以圖示)。所述用戶接口模塊配置有多種用戶UI,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。
[0075]具體地,用戶經(jīng)常需要分析一些數(shù)據(jù)集并且計(jì)算一些參數(shù),比如自然語言處理中的準(zhǔn)確率或者股票市場(chǎng)回測(cè)中的每日投資回報(bào)。在創(chuàng)建了數(shù)據(jù)集的數(shù)據(jù)工作流及數(shù)據(jù)版本信息之后,所述用戶接口模塊可為用戶提供基于數(shù)據(jù)工作流而關(guān)聯(lián)的各數(shù)據(jù)集中的數(shù)據(jù)。所顯示的數(shù)據(jù)可以幫助用戶對(duì)比一對(duì)歷史分析結(jié)果、展示代碼和/或參數(shù)上的不同。針對(duì)多種用戶的多種UI設(shè)計(jì)可以幫助每一個(gè)用戶得到最好的算法和參數(shù)。
[0076]綜上所述,本申請(qǐng)?zhí)峁┑臄?shù)據(jù)版本管理系統(tǒng)可以實(shí)現(xiàn)在一個(gè)整合的系統(tǒng)里管理數(shù)據(jù)的版本,并在系統(tǒng)中運(yùn)行用戶代碼;同時(shí)可以保留用戶的代碼和數(shù)據(jù),并能對(duì)兩次版本進(jìn)行比較,發(fā)現(xiàn)不同;另外,本發(fā)明的數(shù)據(jù)版本管理系統(tǒng)將數(shù)據(jù)和元數(shù)據(jù)分開存儲(chǔ),使得可以更快捷的過濾數(shù)據(jù);再者,本發(fā)明通過為數(shù)據(jù)集和代碼提供各自的版本管理,并為各數(shù)據(jù)集和代碼提供有向無環(huán)的工作流及構(gòu)建二者的關(guān)聯(lián)關(guān)系,有效解決了數(shù)據(jù)和代碼的版本管理效率低或混亂等問題;另外,采用多種UI設(shè)計(jì),能夠?yàn)橛脩舯葘?duì)、分析各歷史數(shù)據(jù)集提供了便捷的途徑;另外,各單元分布在不同服務(wù)器上,能夠便于減輕各服務(wù)器上的運(yùn)行壓力。
[0077]實(shí)施例二
[0078]請(qǐng)參閱圖2,顯示為本發(fā)明的數(shù)據(jù)版本管理方法的流程圖,如圖所示,本申請(qǐng)的第二方面在于提供一種數(shù)據(jù)版本管理方法。所述數(shù)據(jù)版本管理方法主要有數(shù)據(jù)版本管理系統(tǒng)來執(zhí)行。其中,所述數(shù)據(jù)版本管理系統(tǒng)可以配置在單臺(tái)服務(wù)器、服務(wù)器集群、基于云計(jì)算架構(gòu)的服務(wù)器、或分布式服務(wù)器中。其中,所述服務(wù)器集群指將很多服務(wù)器集中起來一起進(jìn)行數(shù)據(jù)版本管理,所述服務(wù)器集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算,以提高運(yùn)算速度。所述基于云計(jì)算架構(gòu)的服務(wù)器通過虛擬化技術(shù)將各服務(wù)器存儲(chǔ)池化,使得數(shù)據(jù)版本管理系統(tǒng)中各模塊所在服務(wù)器共享計(jì)算資源。所述分布式服務(wù)器是將所述數(shù)據(jù)版本管理系統(tǒng)中的數(shù)據(jù)和程序分散在多個(gè)服務(wù)器上進(jìn)行協(xié)調(diào)運(yùn)行。
[0079]所述數(shù)據(jù)版本管理系統(tǒng)中的各模塊可根據(jù)實(shí)際設(shè)計(jì)需要,配置在上述任一種服務(wù)器中。所述數(shù)據(jù)版本管理系統(tǒng)按照如下各步驟執(zhí)行所述方法。
[0080]在步驟Sll中,預(yù)存至少一個(gè)數(shù)據(jù)集以及用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作的至少一個(gè)執(zhí)行代碼,并配置至少一種用于運(yùn)行所述執(zhí)行代碼的執(zhí)行后端引擎。
[0081]在此,所述數(shù)據(jù)集為被版本管理的數(shù)據(jù)的集合。所述數(shù)據(jù)包括但不限于:文本數(shù)據(jù)、和/或多媒體數(shù)據(jù)等。在一具體的實(shí)施例中,所述文本數(shù)據(jù)舉例為代碼數(shù)據(jù)、系統(tǒng)日志等。所述多媒體數(shù)據(jù)舉例為圖片數(shù)據(jù)、視頻數(shù)據(jù)等。若所述數(shù)據(jù)管理模塊保存多個(gè)數(shù)據(jù)集,則各數(shù)據(jù)集之間可以是無關(guān)聯(lián)的、或者有關(guān)聯(lián)的。例如,數(shù)據(jù)集A1、A2、和A3中,數(shù)據(jù)集A3是由數(shù)據(jù)集Al和A2衍生出的。數(shù)據(jù)集A3通過索引、或關(guān)聯(lián)字段與數(shù)據(jù)集Al和A2進(jìn)行關(guān)聯(lián)。
[0082]所述數(shù)據(jù)集中還可以包含用于索引、或描述數(shù)據(jù)的元數(shù)據(jù)。其中,所述數(shù)據(jù)集中的各數(shù)據(jù)及對(duì)應(yīng)的元數(shù)據(jù)可藉由一數(shù)據(jù)ID相關(guān)聯(lián)。具體地,所述元數(shù)據(jù)(Metadata)又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。所述的元數(shù)據(jù)算是一種電子式目錄,為了達(dá)到編制目錄的目的,必須在描述并收藏?cái)?shù)據(jù)的內(nèi)容或特色,進(jìn)而達(dá)成協(xié)助數(shù)據(jù)檢索的目的。
[0083]一種可選方案是,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。在此,所述第一存儲(chǔ)單元和第二存儲(chǔ)單元可配置在同一數(shù)據(jù)庫(kù)服務(wù)器內(nèi)。也可以根據(jù)實(shí)際需要配置在不同的服務(wù)器內(nèi)。例如在一可選的實(shí)施例中,所述第一存儲(chǔ)單元配置于Hadoop分布式文件系統(tǒng)(大數(shù)據(jù)分布式文件系統(tǒng))中;第二存儲(chǔ)單元配置于NoSQL數(shù)據(jù)庫(kù)(非關(guān)系型的數(shù)據(jù)庫(kù))中。
[0084]其中,所述分布式文件系統(tǒng)(Distributed File System)設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式,具體是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。所述NoSQL數(shù)據(jù)庫(kù)例如為鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),列存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),圖形(Graph)數(shù)據(jù)庫(kù)或MongoDB數(shù)據(jù)庫(kù)等。
[0085]在本申請(qǐng)中,利用分布式文件系統(tǒng)可以高效的掃描數(shù)據(jù)集,但是隨機(jī)訪問則低效的。為了解決這個(gè)問題,本申請(qǐng)?zhí)峁┑姆桨甘?,存?chǔ)每張圖片的標(biāo)識(shí)和注解,例如文件名、大小、內(nèi)容描述,這些內(nèi)容被存儲(chǔ)在NoSQL數(shù)據(jù)庫(kù)中以加快查詢速度,也就是根據(jù)數(shù)據(jù)ID來連接原始數(shù)據(jù)和元數(shù)據(jù)。
[0086]本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)記錄了數(shù)據(jù)的每個(gè)域,比如,一個(gè)新數(shù)據(jù)為一個(gè)新名字和版本號(hào)的集合。在本申請(qǐng)具體采用的實(shí)施例中使用的是MongoDB數(shù)據(jù)庫(kù)來存儲(chǔ)元數(shù)據(jù),但并不局限與此,在其他的實(shí)施方式中,還可能將會(huì)迀移到列存儲(chǔ)數(shù)據(jù)庫(kù),鍵值存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),或者圖形(Graph)數(shù)據(jù)庫(kù)中以提高效率。
[0087]在此,所述執(zhí)行代碼用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作。其中,當(dāng)所述執(zhí)行代碼被調(diào)用時(shí),執(zhí)行對(duì)數(shù)據(jù)集、及數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行增刪改等操作。例如,所述執(zhí)行代碼包括但不限于:增加一新數(shù)據(jù)集的執(zhí)行代碼、刪除數(shù)據(jù)集的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中增加標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中刪除標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中替換標(biāo)簽/字符等的執(zhí)行代碼。
[0088]在一個(gè)可選用是實(shí)施例中,所述的執(zhí)行代碼存儲(chǔ)在例如Gitlab中,并且使用GitLab的API與之交互。所述的Gitlab是利用Ruby on Rails一個(gè)開源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過Web界面進(jìn)行訪問公開的或者私人項(xiàng)目。所述的Gitlab擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問,所述的Gitlab非常易于瀏覽提交過的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。所述的Gitlab還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。在此,所述執(zhí)行后端引擎針對(duì)各執(zhí)行代碼的編程語言而設(shè)。所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。
[0089]所述單機(jī)引擎例如為單機(jī)上的Python,所述的Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNU General Public License)協(xié)議,其在執(zhí)行時(shí)首先會(huì)將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機(jī))來執(zhí)行這些編譯好的byte code。
[0090]所述分布式引擎例如為集群上的Spark,所述Spark是一個(gè)快速且通用的計(jì)算集群框架,它的內(nèi)核使用Scala語言編寫,它提供了 Scala、Java和Python編程語言high-1 eve IAPI,使用這些API能夠非常容易地開發(fā)并行處理的應(yīng)用程序。
[0091]在具體的實(shí)施例中,配置所述的執(zhí)行后端引擎是必需,因?yàn)檫@樣不但方便為用戶搭建好分布式集群的環(huán)境;還可以能夠自動(dòng)地將代碼和結(jié)果數(shù)據(jù)集連接起來。也就是說,在本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中執(zhí)行代碼可以得到任意的中間結(jié)果,只要用戶保留了原始數(shù)據(jù)和代碼。
[0092]在步驟S12中,接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),調(diào)用一執(zhí)行后端引擎運(yùn)行所述至少一執(zhí)行代碼以對(duì)所述至少一數(shù)據(jù)集執(zhí)行處理,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0093]具體地,所述數(shù)據(jù)版本管理系統(tǒng)接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),處理所述數(shù)據(jù)管理模塊中的數(shù)據(jù)集,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0094]其中,所述數(shù)據(jù)工作流(DataWork Flow,DWF)用于標(biāo)記在版本管理期間數(shù)據(jù)集和/或數(shù)據(jù)集中的數(shù)據(jù)的有向的無環(huán)的版本節(jié)點(diǎn)。對(duì)于新數(shù)據(jù)集來說,所述數(shù)據(jù)工作流對(duì)應(yīng)標(biāo)記版本節(jié)點(diǎn)為根節(jié)點(diǎn)。對(duì)于包含版本更新的數(shù)據(jù)集/數(shù)據(jù)來說,所述數(shù)據(jù)工作流為表示數(shù)據(jù)集中的兩數(shù)據(jù)之間、和/或兩數(shù)據(jù)集之間的衍生關(guān)系。
[0095]所述衍生關(guān)系包括一數(shù)據(jù)集的執(zhí)行歷史記錄和版本。其中,所述執(zhí)行歷史記錄包括但不限于:變化前和變化后的數(shù)據(jù)集中數(shù)據(jù)的指向關(guān)系(即父子節(jié)點(diǎn)關(guān)系)、變化前后所調(diào)用的執(zhí)行代碼、執(zhí)行時(shí)間等。簡(jiǎn)而言之,所述數(shù)據(jù)工作流的概念作為本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中的數(shù)據(jù)集邏輯關(guān)系。所述數(shù)據(jù)集依據(jù)此形成了依賴關(guān)系。所述數(shù)據(jù)工作流是本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中重現(xiàn)數(shù)據(jù)的核心功能。
[0096]在一個(gè)所述數(shù)據(jù)工作流中,一個(gè)節(jié)點(diǎn)表示表示了數(shù)據(jù)集的一個(gè)特定版本。一條連接兩個(gè)節(jié)點(diǎn)的有向邊表示一個(gè)數(shù)據(jù)集是有另一個(gè)數(shù)據(jù)集衍生而來。邊上的標(biāo)記表示的則是一次實(shí)驗(yàn)的代碼版本。請(qǐng)參閱圖5,圖5所示的一個(gè)數(shù)據(jù)工作流的示例,S卩,一個(gè)數(shù)據(jù)工作流是一個(gè)有向無環(huán)圖。圖片5表示了常見的一對(duì)一和多對(duì)一結(jié)構(gòu)兩種數(shù)據(jù)工作流結(jié)構(gòu)。
[0097]在上述的一對(duì)一結(jié)構(gòu)中,一個(gè)數(shù)據(jù)集由另一個(gè)數(shù)據(jù)集衍生而來。舉例來說,用戶可以基于一個(gè)已有的數(shù)據(jù)集創(chuàng)建一個(gè)新的數(shù)據(jù)集,并在新的數(shù)據(jù)集上打上一些新的標(biāo)簽并將其共享給其他用戶。而上述的多對(duì)一結(jié)構(gòu)表示一個(gè)數(shù)據(jù)集可以由兩個(gè)或更多的數(shù)據(jù)集衍生而來。像一些合并兩個(gè)數(shù)據(jù)表之類的操作都是如此。
[0098]在本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)中在實(shí)現(xiàn)上述數(shù)據(jù)工作流結(jié)構(gòu)的時(shí)候引入父子節(jié)點(diǎn)關(guān)系這一屬性用來記錄這個(gè)數(shù)據(jù)集是從哪個(gè)數(shù)據(jù)集衍生而來的。同時(shí),本申請(qǐng)的數(shù)據(jù)版本管理系統(tǒng)還可以實(shí)現(xiàn)比較父子數(shù)據(jù)集之間的區(qū)別的功能。這些功能幫助用戶能更容易的發(fā)現(xiàn)自己代碼的修改導(dǎo)致了什么結(jié)果。因此,所述的數(shù)據(jù)工作流的結(jié)構(gòu)圖不但可以理順數(shù)據(jù)集之間的關(guān)系,還可以幫助管理用戶的執(zhí)行記錄,包括根據(jù)版本號(hào)來產(chǎn)生結(jié)果。
[0099]所述數(shù)據(jù)版本管理系統(tǒng)根據(jù)變化前的數(shù)據(jù)集及數(shù)據(jù)的標(biāo)記信息(如ID值)和數(shù)據(jù)工作流,得到并記錄形成對(duì)應(yīng)變化后的數(shù)據(jù)版本信息。其中,所述數(shù)據(jù)版本信息包括但不限于數(shù)據(jù)集名稱、數(shù)據(jù)ID、代碼ID、形成時(shí)間、及運(yùn)行日志中的至少一種。
[0100]在此,所述數(shù)據(jù)版本管理系統(tǒng)可以通過網(wǎng)絡(luò)/提交接口獲取用戶提交的數(shù)據(jù)處理請(qǐng)求,并根據(jù)所獲取的數(shù)據(jù)處理請(qǐng)求向所述執(zhí)行引擎模塊發(fā)送對(duì)應(yīng)的執(zhí)行命令和從代碼管理模塊中選定的執(zhí)行代碼,以供所述執(zhí)行引擎模塊調(diào)用對(duì)應(yīng)的執(zhí)行后端引擎來運(yùn)行所選擇的執(zhí)行代碼,以便進(jìn)行數(shù)據(jù)集的版本管理。
[0101]比如在一具體的實(shí)施過程中,每當(dāng)用戶向Gitlab服務(wù)器提交執(zhí)行代碼(Push),Gitlab服務(wù)器就會(huì)通過一個(gè)Web hook通知所述系統(tǒng)核心模塊14。所述系統(tǒng)核心模塊14會(huì)將用戶請(qǐng)求推入自己的隊(duì)列,同時(shí)從隊(duì)首選取請(qǐng)求來進(jìn)行處理。所述系統(tǒng)核心模塊14會(huì)將該請(qǐng)求的執(zhí)行代碼拷貝到所述執(zhí)行引擎模塊13,然后所述執(zhí)行引擎模塊13會(huì)使用用戶提供的參數(shù)和輸入來運(yùn)行執(zhí)行代碼。該任務(wù)結(jié)束之后,所述系統(tǒng)核心模塊14會(huì)記錄下這次請(qǐng)求的信息,包括這次Push在Gitlab服務(wù)器上的commit ID,用戶指定的參數(shù)以及任何具體與實(shí)驗(yàn)相關(guān)的信息。有些情況下,實(shí)驗(yàn)會(huì)產(chǎn)生新的數(shù)據(jù)集。這樣所述系統(tǒng)核心模塊14也會(huì)記錄這些數(shù)據(jù)集之間的關(guān)系,即前述的數(shù)據(jù)工作流。
[0102]當(dāng)用戶提交處理的數(shù)據(jù)請(qǐng)求為多種情況,以下將分別予以闡述:
[0103]在一種情況下,當(dāng)所述數(shù)據(jù)處理請(qǐng)求為提交一個(gè)新數(shù)據(jù)集時(shí),所數(shù)據(jù)版本管理系統(tǒng)可以直接將新數(shù)據(jù)集保存在第一存儲(chǔ)單元中,創(chuàng)建所述新數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息?;蛘?,所述數(shù)據(jù)版本管理系統(tǒng)按照該數(shù)據(jù)處理請(qǐng)求選取對(duì)應(yīng)的執(zhí)行代碼,以將所獲取的新數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于第一存儲(chǔ)單元中。與此同時(shí),所述數(shù)據(jù)版本管理系統(tǒng)還創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0104]在一種可選方案中,所述新數(shù)據(jù)集包括數(shù)據(jù)和元數(shù)據(jù)。所述數(shù)據(jù)版本管理系統(tǒng)在選取執(zhí)行代碼時(shí),選取能夠?qū)?yīng)保存數(shù)據(jù)和元數(shù)據(jù)的執(zhí)行代碼,并執(zhí)行所選取的執(zhí)行代碼,從新數(shù)據(jù)集中分別提取數(shù)據(jù)和元數(shù)據(jù),再將所提取的數(shù)據(jù)存儲(chǔ)于第一存儲(chǔ)單元中,將所提取的元數(shù)據(jù)存儲(chǔ)于第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。在此,所述數(shù)據(jù)工作流中包含作為根節(jié)點(diǎn)的數(shù)據(jù)和對(duì)應(yīng)的元數(shù)據(jù)。所記錄的數(shù)據(jù)版本信息包括:數(shù)據(jù)集名稱、數(shù)據(jù)ID、元數(shù)據(jù)ID、數(shù)據(jù)ID和元數(shù)據(jù)ID的對(duì)應(yīng)關(guān)系、執(zhí)行添加該數(shù)據(jù)集的代碼ID、形成時(shí)間、及運(yùn)行日
V 1、1、O
[0105]在另一種情況下,當(dāng)用戶提交的數(shù)據(jù)處理請(qǐng)求為修改已存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),所述數(shù)據(jù)版本管理系統(tǒng)依據(jù)所述數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至相應(yīng)的執(zhí)行后端引擎中,并發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集。再將所形成的新數(shù)據(jù)集保存在第一存儲(chǔ)單元中,同時(shí)創(chuàng)建該新數(shù)據(jù)集相對(duì)修改前的數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0106]—種可選方式是,所述數(shù)據(jù)版本管理系統(tǒng)提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),以及形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0107]更為優(yōu)選的方式是,所述數(shù)據(jù)版本管理系統(tǒng)依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行后端引擎的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊中存儲(chǔ)的執(zhí)行代碼。
[0108]具體地,用戶還可以預(yù)先根據(jù)自身需求提交新的執(zhí)行代碼,并通過所述數(shù)據(jù)版本管理系統(tǒng)調(diào)整新的執(zhí)行代碼與各執(zhí)行后端引擎之間的對(duì)應(yīng)關(guān)系。由此,當(dāng)用戶提交的數(shù)據(jù)處理請(qǐng)求為修改已存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),所述數(shù)據(jù)版本管理系統(tǒng)依據(jù)所述數(shù)據(jù)處理請(qǐng)求,確定將該新的執(zhí)行代碼復(fù)制到對(duì)應(yīng)執(zhí)行后端引擎中,并由對(duì)應(yīng)的執(zhí)行后端引擎執(zhí)行相應(yīng)的執(zhí)行代碼,以保存新的數(shù)據(jù)集,并創(chuàng)建新的數(shù)據(jù)集相對(duì)于修改前的數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。
[0109]當(dāng)用戶需要對(duì)不同版本之間的數(shù)據(jù)集進(jìn)行分析和計(jì)算時(shí),本實(shí)施例中一種優(yōu)選方式為,所述數(shù)據(jù)版本管理方法還包括配置有多種用戶UI的步驟,在該步驟中,配置有多種用戶UI,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。
[0110]具體地,用戶經(jīng)常需要分析一些數(shù)據(jù)集并且計(jì)算一些參數(shù),比如自然語言處理中的準(zhǔn)確率或者股票市場(chǎng)回測(cè)中的每日投資回報(bào)。在創(chuàng)建了數(shù)據(jù)集的數(shù)據(jù)工作流及數(shù)據(jù)版本信息之后,所述數(shù)據(jù)版本管理系統(tǒng)可為用戶提供基于數(shù)據(jù)工作流而關(guān)聯(lián)的各數(shù)據(jù)集中的數(shù)據(jù)。所顯示的數(shù)據(jù)可以幫助用戶對(duì)比一對(duì)歷史分析結(jié)果、展示代碼和/或參數(shù)上的不同。針對(duì)多種用戶的多種UI設(shè)計(jì)可以幫助每一個(gè)用戶得到最好的算法和參數(shù)。
[0111]綜上所述,本申請(qǐng)?zhí)峁┑臄?shù)據(jù)版本管理系統(tǒng)可以實(shí)現(xiàn)在一個(gè)整合的系統(tǒng)里管理數(shù)據(jù)的版本,并在系統(tǒng)中運(yùn)行用戶代碼;同時(shí)可以保留用戶的代碼和數(shù)據(jù),并能對(duì)兩次版本進(jìn)行比較,發(fā)現(xiàn)不同;另外,本發(fā)明的數(shù)據(jù)版本管理系統(tǒng)將數(shù)據(jù)和元數(shù)據(jù)分開存儲(chǔ),使得可以更快捷的過濾數(shù)據(jù);再者,本發(fā)明通過為數(shù)據(jù)集和代碼提供各自的版本管理,并為各數(shù)據(jù)集和代碼提供有向無環(huán)的工作流及構(gòu)建二者的關(guān)聯(lián)關(guān)系,有效解決了數(shù)據(jù)和代碼的版本管理效率低或混亂等問題;另外,采用多種UI設(shè)計(jì),能夠?yàn)橛脩舯葘?duì)、分析各歷史數(shù)據(jù)集提供了便捷的途徑;另外,各單元分布在不同服務(wù)器上,能夠便于減輕各服務(wù)器上的運(yùn)行壓力。
[0112]實(shí)施例三
[0113]請(qǐng)參閱圖3,顯示為本發(fā)明的代碼版本管理系統(tǒng)的結(jié)構(gòu)示意圖,如圖所示,本申請(qǐng)的第三方面在于提供一種代碼版本管理系統(tǒng),所述代碼版本管理系統(tǒng)可以配置在單臺(tái)服務(wù)器、服務(wù)器集群、基于云計(jì)算架構(gòu)的服務(wù)器、或分布式服務(wù)器中。其中,所述服務(wù)器集群指將很多服務(wù)器集中起來一起進(jìn)行數(shù)據(jù)版本管理,所述服務(wù)器集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算,以提高運(yùn)算速度。所述基于云計(jì)算架構(gòu)的服務(wù)器通過虛擬化技術(shù)將各服務(wù)器存儲(chǔ)池化,使得代碼版本管理系統(tǒng)中各模塊所在服務(wù)器共享計(jì)算資源。所述分布式服務(wù)器是將所述代碼版本管理系統(tǒng)中的數(shù)據(jù)和程序分散在多個(gè)服務(wù)器上進(jìn)行協(xié)調(diào)運(yùn)行。
[0114]所述代碼版本管理系統(tǒng)中的各模塊可根據(jù)實(shí)際設(shè)計(jì)需要,配置在上述任一種服務(wù)器中。具體地,所述代碼版本管理系統(tǒng)2包括:數(shù)據(jù)管理模塊21、代碼管理模塊22、執(zhí)行引擎模塊23和系統(tǒng)核心模塊24。
[0115]所述數(shù)據(jù)管理模塊21存儲(chǔ)有至少一個(gè)數(shù)據(jù)集。
[0116]其中,所述數(shù)據(jù)集為被版本管理的數(shù)據(jù)的集合。所述數(shù)據(jù)包括但不限于:文本數(shù)據(jù)、和/或多媒體數(shù)據(jù)等。在一具體的實(shí)施例中,所述文本數(shù)據(jù)舉例為代碼數(shù)據(jù)、系統(tǒng)日志等。所述多媒體數(shù)據(jù)舉例為圖片數(shù)據(jù)、視頻數(shù)據(jù)等。若所述數(shù)據(jù)管理模塊21保存多個(gè)數(shù)據(jù)集,則各數(shù)據(jù)集之間可以是無關(guān)聯(lián)的、或者有關(guān)聯(lián)的。例如,數(shù)據(jù)集A1、A2、和A3中,數(shù)據(jù)集A3是由數(shù)據(jù)集Al和A2衍生出的。數(shù)據(jù)集A3通過索引、或關(guān)聯(lián)字段與數(shù)據(jù)集Al和A2進(jìn)行關(guān)聯(lián)。
[0117]所述數(shù)據(jù)集中還可以包含用于索引、或描述數(shù)據(jù)的元數(shù)據(jù)。其中,所述數(shù)據(jù)集中的各數(shù)據(jù)及對(duì)應(yīng)的元數(shù)據(jù)可藉由一數(shù)據(jù)ID相關(guān)聯(lián)。具體地,所述元數(shù)據(jù)(Metadata)又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。所述的元數(shù)據(jù)算是一種電子式目錄,為了達(dá)到編制目錄的目的,必須在描述并收藏?cái)?shù)據(jù)的內(nèi)容或特色,進(jìn)而達(dá)成協(xié)助數(shù)據(jù)檢索的目的。
[0118]—種可選方案是,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。在此,所述第一存儲(chǔ)單元和第二存儲(chǔ)單元可配置在同一數(shù)據(jù)庫(kù)服務(wù)器內(nèi)。也可以根據(jù)實(shí)際需要配置在不同的服務(wù)器內(nèi)。例如在一可選的實(shí)施例中,所述第一存儲(chǔ)單元配置于Hadoop分布式文件系統(tǒng)(大數(shù)據(jù)分布式文件系統(tǒng))中;第二存儲(chǔ)單元配置于NoSQL數(shù)據(jù)庫(kù)(非關(guān)系型的數(shù)據(jù)庫(kù))中。
[ΟΙ19] 其中,所述分布式文件系統(tǒng)(Distributed File System)設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式,具體是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。所述NoSQL數(shù)據(jù)庫(kù)例如為鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),列存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),圖形(Graph)數(shù)據(jù)庫(kù)或MongoDB數(shù)據(jù)庫(kù)等。
[0120]在本申請(qǐng)中,利用分布式文件系統(tǒng)可以高效的掃描數(shù)據(jù)集,但是隨機(jī)訪問則低效的。為了解決這個(gè)問題,本申請(qǐng)?zhí)峁┑姆桨甘?,存?chǔ)每張圖片的標(biāo)識(shí)和注解,例如文件名、大小、內(nèi)容描述,這些內(nèi)容被存儲(chǔ)在NoSQL數(shù)據(jù)庫(kù)中以加快查詢速度,也就是根據(jù)數(shù)據(jù)ID來連接原始數(shù)據(jù)和元數(shù)據(jù)。
[0121]本申請(qǐng)的代碼版本管理系統(tǒng)記錄了數(shù)據(jù)的每個(gè)域,比如,一個(gè)新數(shù)據(jù)為一個(gè)新名字和版本號(hào)的集合。在本申請(qǐng)具體采用的實(shí)施例中使用的是MongoDB數(shù)據(jù)庫(kù)來存儲(chǔ)元數(shù)據(jù),但并不局限與此,在其他的實(shí)施方式中,還可能將會(huì)迀移到列存儲(chǔ)數(shù)據(jù)庫(kù),鍵值存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),或者圖形(Graph)數(shù)據(jù)庫(kù)中以提高效率。
[0122]所述代碼管理模塊22存儲(chǔ)有至少一個(gè)執(zhí)行代碼,所述執(zhí)行代碼用于對(duì)所述數(shù)據(jù)管理模塊21存儲(chǔ)的至少一個(gè)數(shù)據(jù)集進(jìn)行操作。
[0123]其中,當(dāng)所述執(zhí)行代碼被調(diào)用時(shí),執(zhí)行對(duì)數(shù)據(jù)集、及數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行增刪改等操作。例如,所述執(zhí)行代碼包括但不限于:增加一新數(shù)據(jù)集的執(zhí)行代碼、刪除數(shù)據(jù)集的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中增加標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中刪除標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中替換標(biāo)簽/字符等的執(zhí)行代碼。
[0124]在一個(gè)可選用是實(shí)施例中,所述的執(zhí)行代碼存儲(chǔ)在例如Gitlab中,并且使用GitLab的API與之交互。所述的Gitlab是利用Ruby on Rails一個(gè)開源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過Web界面進(jìn)行訪問公開的或者私人項(xiàng)目。所述的Gitlab擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問,所述的Gitlab非常易于瀏覽提交過的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。所述的Gitlab還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。
[0125]除此之外,所述代碼管理模塊22還用于接收用戶推送的代碼予以存儲(chǔ)或依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求。
[0126]在其中一種情形下,所述代碼管理模塊22用于接收用戶推送的代碼予以存儲(chǔ)。
[0127]具體地,用戶使用用戶終端向所述代碼管理模塊22上傳代碼,則所述代碼管理模塊22將所接收的代碼予以保存。其中,所述代碼是用戶根據(jù)所述代碼版本管理系統(tǒng)2所提供的API新建/改編的執(zhí)行代碼。例如,用戶改進(jìn)了所述代碼管理模塊22中的一執(zhí)行代碼,并通過后續(xù)詳細(xì)描述的系統(tǒng)核心模塊24,將改進(jìn)后的執(zhí)行代碼上傳至所述代碼管理模塊22,則所述代碼管理模塊22將所接收的代碼予以更新并保存。
[0128]在另一種情形下,所述代碼管理模塊22用于依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求。
[0129]在此,用戶推送的代碼無需預(yù)先在系統(tǒng)核心模塊24中進(jìn)行與執(zhí)行引擎模塊23的配置,則當(dāng)用戶選擇預(yù)先推送的執(zhí)行代碼來在管理數(shù)據(jù)集時(shí),所述代碼管理模塊22向系統(tǒng)核心模塊24發(fā)送一代碼處理請(qǐng)求,以告知系統(tǒng)核心模塊24所對(duì)應(yīng)的執(zhí)行后端引擎。
[0130]所述執(zhí)行引擎模塊23,配置有至少一種執(zhí)行后端引擎,用于接收到執(zhí)行命令時(shí),依據(jù)一執(zhí)行命令調(diào)用所述執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊21中的一數(shù)據(jù)集執(zhí)行操作。
[0131]在此,所述執(zhí)行后端引擎針對(duì)各執(zhí)行代碼的編程語言而設(shè)。所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。
[0132]所述單機(jī)引擎例如為單機(jī)上的Python,所述的Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNU General Public License)協(xié)議,其在執(zhí)行時(shí)首先會(huì)將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機(jī))來執(zhí)行這些編譯好的byte code。
[0133]所述分布式引擎例如為集群上的Spark,所述Spark是一個(gè)快速且通用的計(jì)算集群框架,它的內(nèi)核使用Scala語言編寫,它提供了 Scala、Java和Python編程語言high-1 eve IAPI,使用這些API能夠非常容易地開發(fā)并行處理的應(yīng)用程序。
[0134]在具體的實(shí)施例中,配置所述的執(zhí)行后端引擎是必需,因?yàn)檫@樣不但方便為用戶搭建好分布式集群的環(huán)境;還可以能夠自動(dòng)地將代碼和結(jié)果數(shù)據(jù)集連接起來。也就是說,在本申請(qǐng)的代碼版本管理系統(tǒng)中執(zhí)行代碼可以得到任意的中間結(jié)果,只要用戶保留了原始數(shù)據(jù)和代碼。
[0135]所述系統(tǒng)核心模塊24用于記錄用戶推送的代碼并形成代碼版本信息;以及接收到所述代碼管理模塊22的代碼處理請(qǐng)求時(shí),發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊23,令其運(yùn)行所述代碼管理模塊22中的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊21中的一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。
[0136]在此,對(duì)于所述系統(tǒng)核心模塊24的功能,予以分別描述。在其中一種方式中,當(dāng)用戶推送代碼時(shí),所述系統(tǒng)核心模塊24將所接收的代碼傳遞給代碼管理模塊22,以便保存,同時(shí)形成對(duì)應(yīng)所述代碼的代碼版本信息。其中,與上述各實(shí)施例中的數(shù)據(jù)版本信息類似,所述代碼版本信息包括但不限于以下至少一種:代碼名稱、代碼ID、形成時(shí)間、指定參數(shù)、及運(yùn)行日志。所述系統(tǒng)核心模塊24可參考利用數(shù)據(jù)集工作流來管理數(shù)據(jù)集的方式,對(duì)所述代碼進(jìn)行版本管理。例如,用戶改進(jìn)了已存儲(chǔ)的一執(zhí)行代碼,則所述代碼版本管理系統(tǒng)2將所接收的代碼予以更新并保存。與此同時(shí),所述代碼管理系統(tǒng)還記錄修改前后兩執(zhí)行代碼之間的對(duì)應(yīng)關(guān)系,以形成代碼工作流;并在修改前的執(zhí)行代碼版本信息的基礎(chǔ)上,確定并記錄修改后的代碼版本信息。在另一種方式中,當(dāng)用戶選用推送的代碼來管理數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊24基于所述代碼管理模塊22的代碼處理請(qǐng)求,發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊23,令其運(yùn)行所述代碼管理模塊22中的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊21中的一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。例如,用戶通過輸入?yún)?shù)、代碼版本信息等來選擇預(yù)先推送的代碼管理數(shù)據(jù)集中的數(shù)據(jù)變更,則所述系統(tǒng)核心模塊24將所接收的參數(shù)、代碼版本信息等提供給代碼管理模塊22。所述代碼管理模塊22根據(jù)上述信息確定所要執(zhí)行的執(zhí)行代碼,并向所述系統(tǒng)核心模塊24發(fā)送相應(yīng)的代碼處理請(qǐng)求。所述系統(tǒng)核心模塊24根據(jù)所述代碼處理請(qǐng)求向執(zhí)行引擎模塊23發(fā)送執(zhí)行命令。則所述執(zhí)行引擎模塊23根據(jù)所述執(zhí)行命令選擇相應(yīng)的執(zhí)行后端引擎來執(zhí)行所指定的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊21中的一數(shù)據(jù)集執(zhí)行操作后,記錄形成的代碼版本信息。其中,所述代碼版本信息、數(shù)據(jù)工作流、和數(shù)據(jù)版本信息中的至少一種中還記錄所執(zhí)行的代碼與數(shù)據(jù)集之間的對(duì)應(yīng)關(guān)系。
[0137]在一具體的實(shí)施過程中,每當(dāng)用戶向Gitlab服務(wù)器提交的執(zhí)行代碼,Gitlab服務(wù)器就會(huì)通過一個(gè)Web hook通知所述系統(tǒng)核心模塊24。所述系統(tǒng)核心模塊24會(huì)將用戶請(qǐng)求推入自己的隊(duì)列,同時(shí)從隊(duì)首選取請(qǐng)求來進(jìn)行處理。所述系統(tǒng)核心模塊24會(huì)將該請(qǐng)求的執(zhí)行代碼拷貝到所述執(zhí)行引擎模塊23,并向所述執(zhí)行引擎模塊23發(fā)送代碼處理請(qǐng)求,以告知所選用的執(zhí)行后端引擎。然后所述執(zhí)行引擎模塊23會(huì)使用用戶提供的參數(shù)和輸入來運(yùn)行執(zhí)行代碼。該任務(wù)結(jié)束之后,所述系統(tǒng)核心模塊24會(huì)記錄下這次請(qǐng)求的信息,包括這次Push在Gitlab服務(wù)器上的commit ID、執(zhí)行代碼版本信息、用戶指定的參數(shù)以及任何具體與實(shí)驗(yàn)相關(guān)的信息。有些情況下,實(shí)驗(yàn)會(huì)產(chǎn)生新的數(shù)據(jù)集。這樣所述系統(tǒng)核心模塊24也會(huì)記錄這些數(shù)據(jù)集之間的關(guān)系,即前述各實(shí)施例中所述的數(shù)據(jù)工作流。
[0138]需要說明的是,所述系統(tǒng)核心模塊24依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行引擎模塊23的執(zhí)行代碼除了用戶提交的新執(zhí)行代碼之外,還可以是調(diào)用的所述代碼管理模塊22中存儲(chǔ)的執(zhí)行代碼。例如,用戶指定代碼管理模塊22中的執(zhí)行代碼來處理相應(yīng)的數(shù)據(jù)集,而非利用代碼管理模塊22中默認(rèn)的執(zhí)行代碼。
[0139]在一種可選方案中,所述系統(tǒng)核心模塊24還用于依據(jù)用戶提交的數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊23中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊23令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,并形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。
[0140]其中,所述數(shù)據(jù)處理請(qǐng)求包括但不限于:提交一個(gè)新數(shù)據(jù)集、或修改所述數(shù)據(jù)管理模塊21中存儲(chǔ)的一個(gè)數(shù)據(jù)集。
[0141]具體地,在上述數(shù)據(jù)版本管理系統(tǒng)形成數(shù)據(jù)工作流和數(shù)據(jù)版本信息的基礎(chǔ)上,以及在本實(shí)施例中的系統(tǒng)核心模塊24在將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊23中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊23令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集的基礎(chǔ)上,還對(duì)所執(zhí)行的執(zhí)行代碼ID與新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。如此,當(dāng)用戶需要對(duì)多個(gè)關(guān)聯(lián)數(shù)據(jù)集的執(zhí)行歷史記錄進(jìn)行分析時(shí),可得到對(duì)應(yīng)各數(shù)據(jù)集的執(zhí)行代碼的相關(guān)信息。為用戶提供更多的用于數(shù)據(jù)集分析、統(tǒng)計(jì)的中間信息。
[0142]作為一種優(yōu)選方案,所述代碼版本管理系統(tǒng)2還包括用戶接口模塊,配置有多種用戶UI,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。
[0143]具體地,用戶經(jīng)常需要分析一些數(shù)據(jù)集并且計(jì)算一些參數(shù),比如自然語言處理中的準(zhǔn)確率或者股票市場(chǎng)回測(cè)中的每日投資回報(bào)。在創(chuàng)建了數(shù)據(jù)集的數(shù)據(jù)工作流及數(shù)據(jù)版本信息之后,所述用戶接口模塊可為用戶提供基于數(shù)據(jù)工作流而關(guān)聯(lián)的各數(shù)據(jù)集中的數(shù)據(jù)、執(zhí)行代碼等。所顯示的數(shù)據(jù)可以幫助用戶對(duì)比一對(duì)歷史分析結(jié)果、展示代碼和/或參數(shù)上的不同。針對(duì)多種用戶的多種UI設(shè)計(jì)可以幫助每一個(gè)用戶得到最好的算法和參數(shù)。
[0144]綜上所述,本申請(qǐng)?zhí)峁┑拇a版本管理系統(tǒng)可以實(shí)現(xiàn)在一個(gè)整合的系統(tǒng)里管理代碼的版本,并在系統(tǒng)中運(yùn)行用戶代碼;同時(shí)可以保留用戶的代碼和數(shù)據(jù),并能對(duì)兩次版本進(jìn)行比較,發(fā)現(xiàn)不同;另外,本發(fā)明的代碼版本管理系統(tǒng)將數(shù)據(jù)和元數(shù)據(jù)分開存儲(chǔ),使得可以更快捷的過濾數(shù)據(jù);再者,本發(fā)明通過為數(shù)據(jù)集和代碼提供各自的版本管理,并為各數(shù)據(jù)集和代碼提供有向無環(huán)的工作流及構(gòu)建二者的關(guān)聯(lián)關(guān)系,有效解決了數(shù)據(jù)和代碼的版本管理效率低或混亂等問題;另外,采用多種UI設(shè)計(jì),能夠?yàn)橛脩舯葘?duì)、分析各歷史數(shù)據(jù)集提供了便捷的途徑;另外,各單元分布在不同服務(wù)器上,能夠便于減輕各服務(wù)器上的運(yùn)行壓力。
[0145]實(shí)施例四
[0146]請(qǐng)參閱圖4,顯示為本發(fā)明的代碼版本管理方法的流程圖,如圖所示,本申請(qǐng)的第四方面在于提供一種代碼版本管理方法。所述代碼版本管理方法主要由代碼版本管理系統(tǒng)來執(zhí)行。其中,所述代碼版本管理系統(tǒng)可以配置在單臺(tái)服務(wù)器、服務(wù)器集群、基于云計(jì)算架構(gòu)的服務(wù)器、或分布式服務(wù)器中。其中,所述服務(wù)器集群指將很多服務(wù)器集中起來一起進(jìn)行數(shù)據(jù)版本管理,所述服務(wù)器集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算,以提高運(yùn)算速度。所述基于云計(jì)算架構(gòu)的服務(wù)器通過虛擬化技術(shù)將各服務(wù)器存儲(chǔ)池化,使得代碼版本管理系統(tǒng)中各模塊所在服務(wù)器共享計(jì)算資源。所述分布式服務(wù)器是將所述代碼版本管理系統(tǒng)中的數(shù)據(jù)和程序分散在多個(gè)服務(wù)器上進(jìn)行協(xié)調(diào)運(yùn)行。
[0147]所述代碼版本管理系統(tǒng)中的各模塊可根據(jù)實(shí)際設(shè)計(jì)需要,配置在上述任一種服務(wù)器中。具體地,所述代碼版本管理系統(tǒng)通過執(zhí)行如下步驟來執(zhí)行所述方法。
[0148]在步驟S21中,預(yù)存至少一個(gè)數(shù)據(jù)集以及用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作的至少一個(gè)執(zhí)行代碼,并配置至少一種用于運(yùn)行所述執(zhí)行代碼的執(zhí)行后端引擎。
[0149]其中,所述數(shù)據(jù)集為被版本管理的數(shù)據(jù)的集合。所述數(shù)據(jù)包括但不限于:文本數(shù)據(jù)、和/或多媒體數(shù)據(jù)等。在一具體的實(shí)施例中,所述文本數(shù)據(jù)舉例為代碼數(shù)據(jù)、系統(tǒng)日志等。所述多媒體數(shù)據(jù)舉例為圖片數(shù)據(jù)、視頻數(shù)據(jù)等。若所述數(shù)據(jù)管理模塊21保存多個(gè)數(shù)據(jù)集,則各數(shù)據(jù)集之間可以是無關(guān)聯(lián)的、或者有關(guān)聯(lián)的。例如,數(shù)據(jù)集A1、A2、和A3中,數(shù)據(jù)集A3是由數(shù)據(jù)集Al和A2衍生出的。數(shù)據(jù)集A3通過索引、或關(guān)聯(lián)字段與數(shù)據(jù)集Al和A2進(jìn)行關(guān)聯(lián)。
[0150]所述數(shù)據(jù)集中還可以包含用于索引、或描述數(shù)據(jù)的元數(shù)據(jù)。其中,所述數(shù)據(jù)集中的各數(shù)據(jù)及對(duì)應(yīng)的元數(shù)據(jù)可藉由一數(shù)據(jù)ID相關(guān)聯(lián)。具體地,所述元數(shù)據(jù)(Metadata)又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。所述的元數(shù)據(jù)算是一種電子式目錄,為了達(dá)到編制目錄的目的,必須在描述并收藏?cái)?shù)據(jù)的內(nèi)容或特色,進(jìn)而達(dá)成協(xié)助數(shù)據(jù)檢索的目的。
[0151]—種可選方案是,所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。在此,所述第一存儲(chǔ)單元和第二存儲(chǔ)單元可配置在同一數(shù)據(jù)庫(kù)服務(wù)器內(nèi)。也可以根據(jù)實(shí)際需要配置在不同的服務(wù)器內(nèi)。例如在一可選的實(shí)施例中,所述第一存儲(chǔ)單元配置于Hadoop分布式文件系統(tǒng)(大數(shù)據(jù)分布式文件系統(tǒng))中;第二存儲(chǔ)單元配置于NoSQL數(shù)據(jù)庫(kù)(非關(guān)系型的數(shù)據(jù)庫(kù))中。
[Ο152] 其中,所述分布式文件系統(tǒng)(Distributed File System)設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式,具體是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。所述NoSQL數(shù)據(jù)庫(kù)例如為鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),列存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),圖形(Graph)數(shù)據(jù)庫(kù)或MongoDB數(shù)據(jù)庫(kù)等。
[0153]在本申請(qǐng)中,利用分布式文件系統(tǒng)可以高效的掃描數(shù)據(jù)集,但是隨機(jī)訪問則低效的。為了解決這個(gè)問題,本申請(qǐng)?zhí)峁┑姆桨甘?,存?chǔ)每張圖片的標(biāo)識(shí)和注解,例如文件名、大小、內(nèi)容描述,這些內(nèi)容被存儲(chǔ)在NoSQL數(shù)據(jù)庫(kù)中以加快查詢速度,也就是根據(jù)數(shù)據(jù)ID來連接原始數(shù)據(jù)和元數(shù)據(jù)。
[0154]本申請(qǐng)的代碼版本管理系統(tǒng)記錄了數(shù)據(jù)的每個(gè)域,比如,一個(gè)新數(shù)據(jù)為一個(gè)新名字和版本號(hào)的集合。在本申請(qǐng)具體采用的實(shí)施例中使用的是MongoDB數(shù)據(jù)庫(kù)來存儲(chǔ)元數(shù)據(jù),但并不局限與此,在其他的實(shí)施方式中,還可能將會(huì)迀移到列存儲(chǔ)數(shù)據(jù)庫(kù),鍵值存儲(chǔ)數(shù)據(jù)庫(kù),文檔型數(shù)據(jù)庫(kù),或者圖形(Graph)數(shù)據(jù)庫(kù)中以提高效率。
[0155]所述執(zhí)行代碼用于描述對(duì)數(shù)據(jù)集、及數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行增刪改等操作。例如,所述執(zhí)行代碼包括但不限于:增加一新數(shù)據(jù)集的執(zhí)行代碼、刪除數(shù)據(jù)集的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中增加標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中刪除標(biāo)簽/字符等的執(zhí)行代碼、在預(yù)設(shè)數(shù)據(jù)集中的數(shù)據(jù)中替換標(biāo)簽/字符等的執(zhí)行代碼。
[0156]在一個(gè)可選用是實(shí)施例中,所述的執(zhí)行代碼存儲(chǔ)在例如Gitlab中,并且使用GitLab的API與之交互。所述的Gitlab是利用Ruby on Rails一個(gè)開源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過Web界面進(jìn)行訪問公開的或者私人項(xiàng)目。所述的Gitlab擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問,所述的Gitlab非常易于瀏覽提交過的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。所述的Gitlab還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。
[0157]在此,所述執(zhí)行后端引擎針對(duì)各執(zhí)行代碼的編程語言而設(shè)。所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。
[0158]所述單機(jī)引擎例如為單機(jī)上的Python,所述的Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNU General Public License)協(xié)議,其在執(zhí)行時(shí)首先會(huì)將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機(jī))來執(zhí)行這些編譯好的byte code。
[0?59]所述分布式引擎例如為集群上的Spark,所述Spark是一個(gè)快速且通用的計(jì)算集群框架,它的內(nèi)核使用Scala語言編寫,它提供了 Scala、Java和Python編程語言high-1 eve IAPI,使用這些API能夠非常容易地開發(fā)并行處理的應(yīng)用程序。
[0160]在具體的實(shí)施例中,配置所述的執(zhí)行后端引擎是必需,因?yàn)檫@樣不但方便為用戶搭建好分布式集群的環(huán)境;還可以能夠自動(dòng)地將代碼和結(jié)果數(shù)據(jù)集連接起來。也就是說,在本申請(qǐng)的代碼版本管理系統(tǒng)中執(zhí)行代碼可以得到任意的中間結(jié)果,只要用戶保留了原始數(shù)據(jù)和代碼。
[0161]在步驟S22中,接收用戶推送的代碼予以存儲(chǔ),并記錄形成的代碼版本信息;或者依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求,發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行預(yù)存的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)預(yù)存的所述一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。
[0162]其中,所述代碼版本管理系統(tǒng)接收用戶推送的代碼予以存儲(chǔ),并記錄形成的代碼版本信息的方式具體如下:
[0163]用戶使用用戶終端向所述代碼版本管理系統(tǒng)上傳代碼,則所述代碼管理模塊將所接收的代碼予以保存,同時(shí)形成對(duì)應(yīng)所述代碼的代碼版本信息。其中,所述代碼可以是用戶根據(jù)所述代碼版本管理系統(tǒng)所提供的API新建/改編的執(zhí)行代碼。另外,與前述各實(shí)施例中的數(shù)據(jù)版本信息類似,所述代碼版本信息包括但不限于以下至少一種:代碼名稱、代碼ID、形成時(shí)間、指定參數(shù)、及運(yùn)行日志。所述代碼版本管理系統(tǒng)可參考利用數(shù)據(jù)集工作流來管理數(shù)據(jù)集的方式,對(duì)所述代碼進(jìn)行版本管理。
[0164]例如,用戶改進(jìn)了已存儲(chǔ)的一執(zhí)行代碼,則所述代碼版本管理系統(tǒng)將所接收的代碼予以更新并保存。與此同時(shí),所述代碼管理系統(tǒng)還記錄修改前后兩執(zhí)行代碼之間的對(duì)應(yīng)關(guān)系,以形成代碼工作流;并在修改前的執(zhí)行代碼版本信息的基礎(chǔ)上,確定并記錄修改后的代碼版本信息。
[0165]或者,所述代碼版本管理系統(tǒng)依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求,發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行預(yù)存的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)預(yù)存的所述一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。
[0166]具體地,用戶推送的代碼無需預(yù)先與對(duì)應(yīng)的執(zhí)行后端引擎進(jìn)行配置,而是當(dāng)用戶選擇預(yù)先推送的執(zhí)行代碼來在管理數(shù)據(jù)集時(shí),所述代碼版本管理系統(tǒng)生成一包含對(duì)應(yīng)執(zhí)行后端引擎的代碼處理請(qǐng)求,并啟動(dòng)對(duì)應(yīng)的執(zhí)行后端引擎,令其運(yùn)行所推送的執(zhí)行代碼,并在執(zhí)行所述執(zhí)行代碼以對(duì)一數(shù)據(jù)集執(zhí)行操作后,記錄形成的代碼版本信息。
[0167]例如,用戶通過輸入?yún)?shù)、代碼版本信息等來選擇預(yù)先推送的代碼,以管理數(shù)據(jù)集中的數(shù)據(jù)變更。所述代碼版本管理系統(tǒng)基于所接收的參數(shù)、代碼版本信息等確定所要執(zhí)行的執(zhí)行代碼,并生成對(duì)應(yīng)的代碼處理請(qǐng)求。所述系統(tǒng)核心模塊根據(jù)所述代碼處理請(qǐng)求向?qū)?yīng)的執(zhí)行后端引擎發(fā)送執(zhí)行命令。則所述執(zhí)行后端引擎根據(jù)所述執(zhí)行命令執(zhí)行所指定的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的一數(shù)據(jù)集執(zhí)行操作后,記錄形成的代碼版本信息。其中,所述代碼版本信息、數(shù)據(jù)工作流、和數(shù)據(jù)版本信息中的至少一種中還記錄所執(zhí)行的代碼與數(shù)據(jù)集之間的對(duì)應(yīng)關(guān)系。
[0168]在一具體的實(shí)施過程中,每當(dāng)用戶向Gitlab服務(wù)器提交的執(zhí)行代碼,Gitlab服務(wù)器就會(huì)通過一個(gè)Web hook通知所述代碼版本管理系統(tǒng)。所述代碼版本管理系統(tǒng)會(huì)將用戶請(qǐng)求推入自己的隊(duì)列,同時(shí)從隊(duì)首選取請(qǐng)求來進(jìn)行處理;并將該請(qǐng)求的執(zhí)行代碼拷貝到對(duì)應(yīng)的執(zhí)行后端引擎,以告知所選用的執(zhí)行后端引擎。然后所述執(zhí)行后端引擎會(huì)使用用戶提供的參數(shù)和輸入來運(yùn)行執(zhí)行代碼。該任務(wù)結(jié)束之后,所述代碼版本管理系統(tǒng)會(huì)記錄下這次請(qǐng)求的信息,包括這次Push在GitIab服務(wù)器上的commit ID、執(zhí)行代碼版本信息、用戶指定的參數(shù)以及任何具體與實(shí)驗(yàn)相關(guān)的信息。有些情況下,實(shí)驗(yàn)會(huì)產(chǎn)生新的數(shù)據(jù)集。這樣所述代碼版本管理系統(tǒng)也會(huì)記錄這些數(shù)據(jù)集之間的關(guān)系,即前述各實(shí)施例中所述的數(shù)據(jù)工作流。
[0169]需要說明的是,所述代碼版本管理系統(tǒng)依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至相應(yīng)執(zhí)行后端引擎的執(zhí)行代碼除了用戶提交的新執(zhí)行代碼之外,還可以是調(diào)用的已存儲(chǔ)的執(zhí)行代碼。例如,用戶指定已存儲(chǔ)的執(zhí)行代碼來處理相應(yīng)的數(shù)據(jù)集,而非利用代碼管理模塊中默認(rèn)的執(zhí)行代碼。
[0170]在一種可選方案中,所述代碼版本管理系統(tǒng)依據(jù)用戶提交的數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行后端引擎中,并發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,并形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。
[0171]其中,所述數(shù)據(jù)處理請(qǐng)求包括但不限于:提交一個(gè)新數(shù)據(jù)集、或修改所述數(shù)據(jù)管理模塊中存儲(chǔ)的一個(gè)數(shù)據(jù)集。
[0172]具體地,在上述數(shù)據(jù)版本管理系統(tǒng)形成數(shù)據(jù)工作流和數(shù)據(jù)版本信息的基礎(chǔ)上,以及在所述代碼版本管理系統(tǒng)在將一執(zhí)行代碼復(fù)制至所述執(zhí)行后端引擎中,并發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎,令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集的基礎(chǔ)上,所述代碼版本管理系統(tǒng)還對(duì)所執(zhí)行的執(zhí)行代碼ID與新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。如此,當(dāng)用戶需要對(duì)多個(gè)關(guān)聯(lián)數(shù)據(jù)集的執(zhí)行歷史記錄進(jìn)行分析時(shí),可得到對(duì)應(yīng)各數(shù)據(jù)集的執(zhí)行代碼的相關(guān)信息。為用戶提供更多的用于數(shù)據(jù)集分析、統(tǒng)計(jì)的中間信息。
[0173]作為一種優(yōu)選方案,所述代碼版本管理方法還包括:配置有多種用戶UI的步驟。在這一步驟中,配置有多種用戶UI,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。
[0174]具體地,用戶經(jīng)常需要分析一些數(shù)據(jù)集并且計(jì)算一些參數(shù),比如自然語言處理中的準(zhǔn)確率或者股票市場(chǎng)回測(cè)中的每日投資回報(bào)。在創(chuàng)建了數(shù)據(jù)集的數(shù)據(jù)工作流及數(shù)據(jù)版本信息之后,所述代碼版本管理系統(tǒng)可為用戶提供基于數(shù)據(jù)工作流而關(guān)聯(lián)的各數(shù)據(jù)集中的數(shù)據(jù)、執(zhí)行代碼等。所顯示的數(shù)據(jù)可以幫助用戶對(duì)比一對(duì)歷史分析結(jié)果、展示代碼和/或參數(shù)上的不同。針對(duì)多種用戶的多種UI設(shè)計(jì)可以幫助每一個(gè)用戶得到最好的算法和參數(shù)。
[0175]需要說明的是,本發(fā)明中各實(shí)施例所述的數(shù)據(jù)版本管理系統(tǒng)和代碼版本管理系統(tǒng)中的各模塊可根據(jù)命名協(xié)調(diào)共用,使得兩個(gè)版本管理系統(tǒng)能夠同時(shí)管理數(shù)據(jù)集和執(zhí)行代碼、各自的版本。
[0176]綜上所述,本申請(qǐng)?zhí)峁┑拇a版本管理系統(tǒng)可以實(shí)現(xiàn)在一個(gè)整合的系統(tǒng)里管理代碼的版本,并在系統(tǒng)中運(yùn)行用戶代碼;同時(shí)可以保留用戶的代碼和數(shù)據(jù),并能對(duì)兩次版本進(jìn)行比較,發(fā)現(xiàn)不同;另外,本發(fā)明通過為數(shù)據(jù)集和代碼提供各自的版本管理,并為各數(shù)據(jù)集和代碼提供有向無環(huán)的工作流及構(gòu)建二者的關(guān)聯(lián)關(guān)系,有效解決了數(shù)據(jù)和代碼的版本管理效率低或混亂等問題;另外,采用UI設(shè)計(jì),能夠?yàn)橛脩舯葘?duì)、分析各歷史數(shù)據(jù)集提供了便捷的途徑;另外,各單元分布在不同服務(wù)器上,能夠便于減輕各服務(wù)器上的運(yùn)行壓力。所以,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點(diǎn)而具高度產(chǎn)業(yè)利用價(jià)值。
[0177]上述實(shí)施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例進(jìn)行修飾或改變。因此,舉凡所屬技術(shù)領(lǐng)域中具有通常知識(shí)者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)版本管理系統(tǒng),其特征在于,包括: 數(shù)據(jù)管理模塊,存儲(chǔ)有至少一個(gè)數(shù)據(jù)集; 代碼管理模塊,存儲(chǔ)有至少一個(gè)執(zhí)行代碼,所述執(zhí)行代碼用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作; 執(zhí)行引擎模塊,配置有至少一種執(zhí)行后端引擎,依據(jù)接收的執(zhí)行命令調(diào)用一執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的至少一數(shù)據(jù)集執(zhí)行操作; 系統(tǒng)核心模塊,接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),處理所述數(shù)據(jù)管理模塊中的數(shù)據(jù)集,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述系統(tǒng)核心模塊接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為提交一個(gè)新數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。4.根據(jù)權(quán)利要求2所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述系統(tǒng)核心模塊接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為修改所述數(shù)據(jù)管理模塊中存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),所述系統(tǒng)核心模塊依據(jù)所述數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,所述系統(tǒng)核心模塊提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),以及形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述系統(tǒng)核心模塊依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行引擎模塊的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊中存儲(chǔ)的執(zhí)行代碼。6.根據(jù)權(quán)利要求2、3或4所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述第一存儲(chǔ)單元配置于Hadoop分布式文件系統(tǒng)中;第二存儲(chǔ)單元配置于NoSQL數(shù)據(jù)庫(kù)中。7.根據(jù)權(quán)利要求1、2、3或4所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述數(shù)據(jù)工作流為表示至少兩個(gè)數(shù)據(jù)集之間的衍生關(guān)系,所述衍生關(guān)系包括一數(shù)據(jù)集的執(zhí)行歷史記錄和版本。8.根據(jù)權(quán)利要求1、2、3或4所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:還包括用戶接口模塊,配置有多種用戶UI,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。9.根據(jù)權(quán)利要求1、2、3或4所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述數(shù)據(jù)版本信息包括數(shù)據(jù)集名稱、數(shù)據(jù)ID、代碼ID、形成時(shí)間、及運(yùn)行日志中的至少一種。10.根據(jù)權(quán)利要求1、2、3或4所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。11.一種數(shù)據(jù)版本管理方法,其特征在于,所述方法包括以下步驟: 預(yù)存至少一個(gè)數(shù)據(jù)集以及用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作的至少一個(gè)執(zhí)行代碼,并配置至少一種用于運(yùn)行所述執(zhí)行代碼的執(zhí)行后端引擎;以及; 接收到用戶提交的數(shù)據(jù)處理請(qǐng)求時(shí),調(diào)用一執(zhí)行后端引擎運(yùn)行所述至少一執(zhí)行代碼以對(duì)所述至少一數(shù)據(jù)集執(zhí)行處理,創(chuàng)建所述數(shù)據(jù)集的數(shù)據(jù)工作流,并記錄形成的數(shù)據(jù)版本信息。12.根據(jù)權(quán)利要求11所述的數(shù)據(jù)版本管理方法,其特征在于:所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。13.根據(jù)權(quán)利要求12所述的數(shù)據(jù)版本管理方法,其特征在于:所述的接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為提交一個(gè)新數(shù)據(jù)集時(shí),提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),并記錄形成的數(shù)據(jù)版本信息。14.根據(jù)權(quán)利要求12所述的數(shù)據(jù)版本管理方法,其特征在于:所述的接收到用戶提交的數(shù)據(jù)處理請(qǐng)求為修改已存儲(chǔ)的一個(gè)數(shù)據(jù)集時(shí),依據(jù)所述數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至相應(yīng)的執(zhí)行后端引擎中,并發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,提取所述新數(shù)據(jù)集的數(shù)據(jù)并存儲(chǔ)于所述第一存儲(chǔ)單元,提取所述新數(shù)據(jù)集的元數(shù)據(jù)并存儲(chǔ)于所述第二存儲(chǔ)單元,且形成一新數(shù)據(jù)ID關(guān)聯(lián)所述新數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù),以及形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的數(shù)據(jù)版本?目息O15.根據(jù)權(quán)利要求14所述的數(shù)據(jù)版本管理方法,其特征在于:所述的依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行后端引擎中的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的預(yù)存的執(zhí)行代碼。16.根據(jù)權(quán)利要求12、13或14所述的數(shù)據(jù)版本管理方法,其特征在于:所述第一存儲(chǔ)單元配置于Hadoop分布式文件系統(tǒng)中;第二存儲(chǔ)單元配置于NoSQL數(shù)據(jù)庫(kù)中。17.根據(jù)權(quán)利要求10、11、12或13所述的數(shù)據(jù)版本管理方法,其特征在于:所述數(shù)據(jù)工作流為表示至少兩個(gè)數(shù)據(jù)集之間的衍生關(guān)系,所述衍生關(guān)系包括一數(shù)據(jù)集的執(zhí)行歷史記錄和版本。18.根據(jù)權(quán)利要求11、12、13或14所述的數(shù)據(jù)版本管理方法,其特征在于:還包括配置有多種用戶UI的步驟,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。19.根據(jù)權(quán)利要求11、12、13或14所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述數(shù)據(jù)版本信息包括數(shù)據(jù)集名稱、數(shù)據(jù)ID、代碼ID、形成時(shí)間、及運(yùn)行日志中的至少一種。20.根據(jù)權(quán)利要求11、12、13或14所述的數(shù)據(jù)版本管理系統(tǒng),其特征在于:所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。21.一種代碼版本管理系統(tǒng),其特征在于,包括: 數(shù)據(jù)管理模塊,存儲(chǔ)有至少一個(gè)數(shù)據(jù)集; 代碼管理模塊,存儲(chǔ)有至少一個(gè)執(zhí)行代碼,所述執(zhí)行代碼用于對(duì)所述數(shù)據(jù)管理模塊存儲(chǔ)的至少一個(gè)數(shù)據(jù)集進(jìn)行操作;所述代碼管理模塊還用于接收用戶推送的代碼予以存儲(chǔ)或依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求; 執(zhí)行引擎模塊,配置有至少一種執(zhí)行后端引擎,用于接收到執(zhí)行命令時(shí),依據(jù)一執(zhí)行命令調(diào)用所述執(zhí)行后端引擎,運(yùn)行一執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的一數(shù)據(jù)集執(zhí)行操作; 系統(tǒng)核心模塊,用于記錄用戶推送的代碼并形成代碼版本信息,以及接收到所述代碼管理模塊的代碼處理請(qǐng)求時(shí),發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊,令其運(yùn)行所述代碼管理模塊中的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)所述數(shù)據(jù)管理模塊中的一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。22.根據(jù)權(quán)利要求21所述的代碼版本管理系統(tǒng),其特征在于:所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。23.根據(jù)權(quán)利要求21所述的代碼版本管理系統(tǒng),其特征在于:所述系統(tǒng)核心模塊還用于依據(jù)用戶提交的數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行引擎模塊中,并發(fā)送一執(zhí)行命令給所述執(zhí)行引擎模塊令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,并形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。24.根據(jù)權(quán)利要求21所述的代碼版本管理系統(tǒng),其特征在于:所述系統(tǒng)核心模塊依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行引擎模塊的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊中存儲(chǔ)的執(zhí)行代碼。25.根據(jù)權(quán)利要求21、22、23、或24所述的代碼版本管理系統(tǒng),其特征在于:還包括用戶接口模塊,配置有多種用戶UI,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求?目息O26.根據(jù)權(quán)利要求21、22、23、或24所述的代碼版本管理系統(tǒng),其特征在于:所述代碼版本信息包括代碼名稱、代碼ID、形成時(shí)間、指定參數(shù)、及運(yùn)行日志中的至少一種。27.根據(jù)權(quán)利要求21、22、23、或24所述的代碼版本管理系統(tǒng),其特征在于:所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。28.一種代碼版本管理方法,其特征在于,包括以下步驟: 預(yù)存至少一個(gè)數(shù)據(jù)集以及用于對(duì)所述至少一個(gè)數(shù)據(jù)集進(jìn)行操作的至少一個(gè)執(zhí)行代碼,并配置至少一種用于運(yùn)行所述執(zhí)行代碼的執(zhí)行后端引擎;以及; 接收用戶推送的代碼予以存儲(chǔ),并記錄形成的代碼版本信息;或者依據(jù)用戶推送的代碼發(fā)送一代碼處理請(qǐng)求,發(fā)送一執(zhí)行命令給所述執(zhí)行后端引擎令其運(yùn)行預(yù)存的執(zhí)行代碼,并在所述執(zhí)行代碼以對(duì)預(yù)存的所述一數(shù)據(jù)集執(zhí)行操作后記錄形成的代碼版本信息。29.根據(jù)權(quán)利要求28所述的代碼版本管理方法,其特征在于:所述數(shù)據(jù)集的數(shù)據(jù)存儲(chǔ)于一第一存儲(chǔ)單元,所述數(shù)據(jù)集的元數(shù)據(jù)存儲(chǔ)于一第二存儲(chǔ)單元,且所述數(shù)據(jù)集的數(shù)據(jù)及元數(shù)據(jù)藉由一數(shù)據(jù)ID相關(guān)聯(lián)。30.根據(jù)權(quán)利要求28所述的代碼版本管理方法,其特征在于:還包括步驟,依據(jù)用戶提交的數(shù)據(jù)處理請(qǐng)求將一執(zhí)行代碼復(fù)制至所述執(zhí)行后端引擎中,并發(fā)送一執(zhí)行命令令其運(yùn)行所述執(zhí)行代碼以形成一新數(shù)據(jù)集,并形成一代碼ID將所述執(zhí)行代碼與所述新數(shù)據(jù)集相關(guān)聯(lián),并記錄形成的代碼版本信息。31.根據(jù)權(quán)利要求28所述的代碼版本管理方法,其特征在于:所述的依據(jù)所述數(shù)據(jù)處理請(qǐng)求復(fù)制至所述執(zhí)行后端引擎中的執(zhí)行代碼為用戶提交的新執(zhí)行代碼或者調(diào)用的所述代碼管理模塊中存儲(chǔ)的執(zhí)行代碼。32.根據(jù)權(quán)利要求28、29、30、或31所述的代碼版本管理方法,其特征在于:還包括配置有多種用戶UI的步驟,用以分別接收不同用戶提交的請(qǐng)求或向不同用戶反饋請(qǐng)求信息。33.根據(jù)權(quán)利要求28、29、30、或31所述的代碼版本管理方法,其特征在于:所述代碼版本信息包括代碼名稱、代碼ID、形成時(shí)間、指定參數(shù)、及運(yùn)行日志中的至少一種。34.根據(jù)權(quán)利要求28、29、30、或31所述的代碼版本管理方法,其特征在于:所述執(zhí)行后端引擎包括單機(jī)引擎及分布式引擎。
【文檔編號(hào)】G06F17/30GK105956087SQ201610282533
【公開日】2016年9月21日
【申請(qǐng)日】2016年4月29日
【發(fā)明人】徐葳, 徐方舟, 張煬
【申請(qǐng)人】清華大學(xué)