T前線 | 揭秘國(guó)內(nèi)首個(gè)進(jìn)入Apache的高校頂級(jí)項(xiàng)目——Apache IoTDB
原創(chuàng)近年來(lái),隨著人工智能、物聯(lián)網(wǎng)的興起,大數(shù)據(jù)成為重要的生產(chǎn)資料,而時(shí)序數(shù)據(jù)則是這個(gè)時(shí)代避無(wú)可避的熱議話題。如何提升時(shí)序數(shù)據(jù)的利用率?如何為復(fù)雜場(chǎng)景提供一個(gè)可靠的數(shù)據(jù)庫(kù)?這些都是業(yè)內(nèi)必須解決的難題。Apache IoTDB作為由清華大學(xué)發(fā)起的、全球領(lǐng)先的國(guó)際頂級(jí)開源項(xiàng)目,是支持物聯(lián)網(wǎng)時(shí)序數(shù)據(jù)收集、存儲(chǔ)、查詢與分析一體化的數(shù)據(jù)管理引擎。根據(jù)中國(guó)軟件評(píng)測(cè)中心和中國(guó)人民大學(xué)的性能對(duì)標(biāo)測(cè)試,IoTDB的各項(xiàng)性能指標(biāo)均明顯優(yōu)于當(dāng)今國(guó)際最優(yōu)的時(shí)序數(shù)據(jù)庫(kù)系統(tǒng)。IoTDB支持“端—邊—云”一體化部署,適用于高端裝備管理、工廠設(shè)備、高速網(wǎng)聯(lián)設(shè)備等多種數(shù)據(jù)管理場(chǎng)景,目前已在能源電力、軌道交通、車聯(lián)網(wǎng)等多家行業(yè)有廣泛應(yīng)用。業(yè)界要解決的難題,IoTDB都曾直接面對(duì)過(guò)。
51CTO有幸邀請(qǐng)到清華大學(xué)軟件學(xué)院助理研究員、Apache IoTDB PMC 及累計(jì)貢獻(xiàn)第一的“首席 Committer”,喬嘉林博士,他將為我們分享有關(guān)開源數(shù)據(jù)庫(kù)項(xiàng)目成長(zhǎng)、開源社區(qū)治理、加速賦能企業(yè)等方面的觀點(diǎn)與見(jiàn)解。
國(guó)內(nèi)首個(gè)進(jìn)入Apache的高校頂級(jí)項(xiàng)目
Q:IoTDB是國(guó)內(nèi)高校首個(gè)進(jìn)入Apache基金會(huì)的項(xiàng)目,您能介紹一下,有哪些因素讓IoTDB能達(dá)到這樣的成就?
A:項(xiàng)目進(jìn)入Apache會(huì)經(jīng)歷兩個(gè)大的階段。第一階段是申請(qǐng)進(jìn)入Apache孵化器。
這一階段最需要關(guān)注的是項(xiàng)目的價(jià)值和意義,需要在項(xiàng)目申請(qǐng)?zhí)岚钢羞M(jìn)行說(shuō)明,Apache成員會(huì)根據(jù)提案來(lái)判斷這個(gè)項(xiàng)目是否有價(jià)值。
判斷一個(gè)項(xiàng)目是否有價(jià)值,主要的依據(jù)是項(xiàng)目要解決的問(wèn)題是否是一個(gè)比較廣泛的痛點(diǎn),是否對(duì)社會(huì)有價(jià)值。除了判讀項(xiàng)目的價(jià)值,成員會(huì)還要評(píng)估新項(xiàng)目是否和已有項(xiàng)目重合。Apache基金會(huì)通常在每個(gè)方向會(huì)選擇一個(gè)項(xiàng)目去孵化,如果重合度較高,可能會(huì)被拒絕接收。
在這方面,IoTDB主要解決的是工業(yè)物聯(lián)網(wǎng)項(xiàng)目管理中遇到的問(wèn)題。我們實(shí)驗(yàn)室在2011年左右接觸工業(yè)物聯(lián)網(wǎng)項(xiàng)目,幫助工業(yè)企業(yè)管理工程機(jī)械產(chǎn)生的數(shù)據(jù),這些數(shù)據(jù)中以時(shí)序數(shù)據(jù)的體量最大,當(dāng)時(shí)選擇了一些開源系統(tǒng)來(lái)進(jìn)行項(xiàng)目實(shí)施,不過(guò)由于這些系統(tǒng)并不是針對(duì)物聯(lián)網(wǎng)場(chǎng)景設(shè)計(jì)的,所以會(huì)有性能瓶頸,包括讀寫速度和壓縮比。最終我們決定從頭做起,來(lái)解決這些問(wèn)題。因此,IoTDB 的發(fā)起背景比較實(shí)際,解決的問(wèn)題也是真實(shí)問(wèn)題,所以會(huì)容易被接收。
第二階段是在孵化器中完成項(xiàng)目的規(guī)范化和社區(qū)的建設(shè),畢業(yè)成為頂級(jí)項(xiàng)目。
所有在孵化器的項(xiàng)目名稱都以incubator開頭,項(xiàng)目的孵化和社區(qū)建設(shè)階段需要關(guān)注的是項(xiàng)目合規(guī)性和社區(qū)建設(shè)情況。項(xiàng)目合規(guī)性包括代碼中是否進(jìn)行了Apache協(xié)議聲明,依賴的開源組件是否與Apache協(xié)議兼容,是否按照Apache的規(guī)范進(jìn)行版本發(fā)布等;社區(qū)建設(shè)情況包括社區(qū)活躍度,郵件列表的討論數(shù)量,是否有外部committer和PMC等。
在這方面,IoTDB始終以建設(shè)開源社區(qū)為目標(biāo),我們沒(méi)有社區(qū)建設(shè)的KPI,大家都是自發(fā)地希望社區(qū)發(fā)展壯大。社區(qū)很歡迎外部貢獻(xiàn)者的加入,再加上IoTDB是在學(xué)校的實(shí)驗(yàn)室起步的,實(shí)驗(yàn)室每年都會(huì)有新生入學(xué)。我們開展過(guò)社區(qū)導(dǎo)師計(jì)劃,讓已經(jīng)加入社區(qū)的貢獻(xiàn)者和新人對(duì)接。此外,建設(shè)社區(qū)和開發(fā)的過(guò)程中,會(huì)寫很多文檔,這些文檔也能幫助社區(qū)新人上手和入門。
Q:跟其他組織或個(gè)人發(fā)起開源項(xiàng)目相比,高校發(fā)展開源項(xiàng)目有哪些不同?高校的開源項(xiàng)目要想保持較高的活躍度和穩(wěn)定的社區(qū)參與,應(yīng)該注重哪些方面的問(wèn)題?
A:高校發(fā)起的開源項(xiàng)目,通常沒(méi)有專門的社區(qū)運(yùn)營(yíng)人員,主要是開發(fā)者或者學(xué)生直接管理社區(qū),開發(fā)者直接對(duì)接用戶,會(huì)更直接地感受到產(chǎn)品的好壞。高校也面臨著人員更替頻繁的問(wèn)題,通常研究生參與兩年多就畢業(yè)了,而且學(xué)生參與社區(qū)更多是非全時(shí)的,他們平時(shí)還有課程、大作業(yè)、考試、實(shí)習(xí)等需要占用精力。
不過(guò),從某種程度上來(lái)講,這更符合開源社區(qū)的工作方式,大家都是在空余時(shí)間參與社區(qū),通過(guò)文檔和郵件交流就顯得更為重要。針對(duì)上面的這些特點(diǎn),在高校發(fā)展開源項(xiàng)目要注意多與社區(qū)互動(dòng),將想法和設(shè)計(jì)思路與社區(qū)同步。同時(shí)也要重視社區(qū)項(xiàng)目宣傳,學(xué)生比較喜歡埋頭苦干,可能做出了很多不錯(cuò)的項(xiàng)目,但是由于宣傳不夠,導(dǎo)致了解的人不多。
成為頂級(jí)項(xiàng)目后關(guān)于項(xiàng)目運(yùn)作的思考
Q:IoTDB成長(zhǎng)為全球頂級(jí)開源項(xiàng)目前后,項(xiàng)目的貢獻(xiàn)者、社區(qū)的用戶等發(fā)生了哪些積極的變化?項(xiàng)目本身的運(yùn)作模式有無(wú)產(chǎn)生一些變化?
A:開源社區(qū)的發(fā)展變化不是一瞬間的,而是在平時(shí)的每一天。項(xiàng)目運(yùn)作模式的變化,主要是從進(jìn)入到Apache基金會(huì)開始的。原來(lái)我們通常是幾個(gè)同學(xué)討論完,就開始做了。
進(jìn)入Apache 后,每次討論都會(huì)形成文檔,發(fā)到社區(qū)中,大家覺(jué)得沒(méi)有問(wèn)題了,再開始改動(dòng)。以前也不注意宣傳,只有實(shí)驗(yàn)室的同學(xué)知道我們?cè)谧鍪裁错?xiàng)目,進(jìn)入Apache后,我們會(huì)舉辦一些見(jiàn)面會(huì),并且開始運(yùn)營(yíng)項(xiàng)目的公眾號(hào),組建微信群、QQ群、Slack等。作為一個(gè)To B的項(xiàng)目,用戶不會(huì)由于你是頂級(jí)項(xiàng)目,獲得過(guò)什么獎(jiǎng)來(lái)進(jìn)行選擇,而是會(huì)對(duì)軟件進(jìn)行實(shí)地測(cè)試,滿足需求才會(huì)進(jìn)行選擇,這個(gè)過(guò)程會(huì)更加理性。
貢獻(xiàn)者也是如此,很多貢獻(xiàn)者本身就是用戶,Apache頂級(jí)項(xiàng)目可能是促使他們來(lái)嘗試的原因,經(jīng)過(guò)評(píng)估之后,很多用戶和企業(yè)會(huì)投入研發(fā)力量全時(shí)參與到社區(qū)中。社區(qū)的工作模式也從一個(gè)組織主導(dǎo),變成社區(qū)共建,社區(qū)就像一個(gè)大的組織。
實(shí)用即王道穩(wěn)定性是第一位的
Q:對(duì)于數(shù)據(jù)庫(kù)項(xiàng)目而言,您覺(jué)得數(shù)據(jù)庫(kù)的性能、穩(wěn)定性、可維護(hù)性,哪個(gè)更重要?時(shí)序數(shù)據(jù)庫(kù)又有哪些特別值得注意的地方?
A:穩(wěn)定性是第一位的,第二是可維護(hù)性,第三是性能。
工業(yè)現(xiàn)場(chǎng)對(duì)于系統(tǒng)的穩(wěn)定性要求很高,穩(wěn)定意味著前期做完測(cè)試驗(yàn)證,上線后的表現(xiàn)能夠和之前測(cè)試一致,這樣大家就能夠接受,也不會(huì)出現(xiàn)大的問(wèn)題。
可維護(hù)性也是對(duì)穩(wěn)定性的保障,我們?cè)谠O(shè)計(jì)系統(tǒng)的過(guò)程中,增加了很多對(duì)運(yùn)維友好的特性。
接下來(lái)是性能,你可以性能一般,大不了做規(guī)劃的時(shí)候可以多配一些硬件,但是一定要可預(yù)測(cè),可預(yù)測(cè)才能繼續(xù)做。
時(shí)序數(shù)據(jù)庫(kù)通常運(yùn)行的場(chǎng)景是工廠或者設(shè)備上,機(jī)器硬件配置、網(wǎng)絡(luò)環(huán)境都沒(méi)有互聯(lián)網(wǎng)場(chǎng)景好。此外,數(shù)據(jù)負(fù)載會(huì)比較大,而且負(fù)載會(huì)更加復(fù)雜,比如出現(xiàn)網(wǎng)絡(luò)波動(dòng)、數(shù)據(jù)質(zhì)量問(wèn)題,都是需要考慮的因素。
Q:開源的時(shí)間序列數(shù)據(jù)庫(kù)方面,目前比較流行也不少,比如 influxDB、OpenTSDB、TDEngine 等,您覺(jué)得IoTDB的優(yōu)勢(shì)在哪些方面?
A:IoTDB 的優(yōu)勢(shì)主要體現(xiàn)在兩個(gè)方面。
一是技術(shù)優(yōu)勢(shì)。我們接觸物聯(lián)網(wǎng)場(chǎng)景比較早,而且是在做項(xiàng)目的過(guò)程中發(fā)現(xiàn)問(wèn)題的,因此我們的設(shè)計(jì)能夠更加滿足物聯(lián)網(wǎng)場(chǎng)景的需求,目標(biāo)場(chǎng)景也更加廣泛,不會(huì)給系統(tǒng)增加各種限制。而且這個(gè)項(xiàng)目源于清華大學(xué),學(xué)校方面也會(huì)不斷地進(jìn)行科研創(chuàng)新。
二是社區(qū)優(yōu)勢(shì)。在Apache基金會(huì)的指導(dǎo)下,我們建立了一個(gè)更加開放的社區(qū),因而社區(qū)中有不少互聯(lián)網(wǎng)公司的時(shí)序數(shù)據(jù)庫(kù)部門的開發(fā)人員。大家平時(shí)會(huì)進(jìn)行很緊密的討論和分享,這種社區(qū)的氛圍是非常好的,也會(huì)促使更多同學(xué)參與。長(zhǎng)期來(lái)看,社區(qū)優(yōu)勢(shì)是一個(gè)基礎(chǔ)軟件發(fā)展的長(zhǎng)久動(dòng)力。
物聯(lián)網(wǎng)數(shù)據(jù)模型
Q:IoTDB已經(jīng)在多個(gè)工業(yè)領(lǐng)域使用,包括風(fēng)電行業(yè)、工程機(jī)械、氣象大數(shù)據(jù)平臺(tái)等,以電廠為例,IoTDB是如何幫助企業(yè)更好地管理數(shù)據(jù)呢?
A:我們自研了時(shí)序數(shù)據(jù)文件格式TsFile,TsFile采用了物聯(lián)網(wǎng)數(shù)據(jù)模型,因此在數(shù)據(jù)組織和索引方面,都對(duì)時(shí)序數(shù)據(jù)更加友好和高效。
此外,我們對(duì)數(shù)據(jù)庫(kù)引擎的讀寫流程進(jìn)行優(yōu)化,對(duì)數(shù)據(jù)進(jìn)行列式組織和處理,并為查詢?cè)O(shè)計(jì)了不同粒度的預(yù)聚合信息和緩存,能夠大幅提升數(shù)據(jù)查詢效率。
對(duì)電廠來(lái)說(shuō),一個(gè)大型發(fā)電機(jī)組具有上萬(wàn)測(cè)點(diǎn)。傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中是無(wú)法存儲(chǔ)在一個(gè)表中的,一個(gè)表通常只能存一千多個(gè)測(cè)點(diǎn),手動(dòng)分表會(huì)造成更多復(fù)雜性,而IoTDB的物聯(lián)網(wǎng)數(shù)據(jù)模型能夠支持任意多的測(cè)點(diǎn),并且性能可以保持平穩(wěn)。查詢時(shí)通過(guò)多層索引來(lái)加速序列和數(shù)據(jù)的定位。
國(guó)外項(xiàng)目選型,關(guān)心哪些?
Q: IoTDB在德國(guó)和美國(guó)也有推廣和應(yīng)用,那么這些國(guó)外企業(yè)在考慮接受和使用IoTDB這樣的產(chǎn)品時(shí),有哪些不同的需求或者側(cè)重點(diǎn)呢?
A:國(guó)外的用戶,像西門子、博世,都是老牌工業(yè)企業(yè),他們?cè)谶x型時(shí)會(huì)很嚴(yán)謹(jǐn)?shù)販y(cè)試。例如,他們?cè)跊Q策是否用IoTDB時(shí),會(huì)先調(diào)研15種傳統(tǒng)的實(shí)時(shí)數(shù)據(jù)庫(kù),如美國(guó)的PI system,愛(ài)默生的Delta V, 還有ABB、aspen等的技術(shù)現(xiàn)狀和產(chǎn)品現(xiàn)狀,然后將IoTDB跟這些數(shù)據(jù)庫(kù)進(jìn)行充分對(duì)比。
此外,還對(duì)DB-engine上20多種時(shí)序數(shù)據(jù)庫(kù)做了簡(jiǎn)要對(duì)比,選擇了幾個(gè)做測(cè)試。他們不光看我們的測(cè)試結(jié)果,還從其他用戶那里收集了PI、SQL server的測(cè)試結(jié)果進(jìn)行對(duì)比,才決定用IoTDB。
總之,他們?cè)谧霎a(chǎn)品選型的時(shí)候,非常嚴(yán)謹(jǐn),同時(shí)重點(diǎn)關(guān)注定位相類似的產(chǎn)品。在測(cè)試過(guò)程中,他們更喜歡用自己的真實(shí)負(fù)載,或者類似真實(shí)負(fù)載來(lái)測(cè)試,并在此基礎(chǔ)上增加壓力,而不會(huì)一味的瘋狂爆壓,因?yàn)楹笳哌@種測(cè)試在實(shí)際中根本不會(huì)用到,對(duì)一個(gè)產(chǎn)品線沒(méi)多少意義。
另外,國(guó)外企業(yè)還很注重項(xiàng)目的國(guó)際化程度,因?yàn)閲?guó)際化也是社區(qū)健康度的一部分,國(guó)內(nèi)一些社區(qū)刷星操作等在國(guó)際用戶那里加分不大。社區(qū)參與人員情況國(guó)外企業(yè)也很看重,比如社區(qū)維護(hù)者是否都是一個(gè)組織的,是否有不同國(guó)家的項(xiàng)目管理者等。
開源數(shù)據(jù)庫(kù)的未來(lái)預(yù)測(cè)
Q:現(xiàn)在IoTDB項(xiàng)目有哪些最新進(jìn)展?
A:Apache IoTDB在保持著較快的迭代速度進(jìn)行發(fā)展。產(chǎn)品層面,我們4月發(fā)布了0.13版本,新增了一元、多元序列的支持,增加了對(duì)觸發(fā)器等功能的支持;增加了對(duì)連續(xù)查詢、嵌套表達(dá)式等的支持;優(yōu)化了數(shù)據(jù)寫入的過(guò)程,提升了系統(tǒng)文件合并的性能;拓展了與外部系統(tǒng)的兼容,新增Grafana插件、REST API等。現(xiàn)在正在全力優(yōu)化分布式版本,預(yù)計(jì)到8月份,分布式版本就可以面世了。
Q:現(xiàn)在開源數(shù)據(jù)庫(kù),尤其是國(guó)產(chǎn)開源數(shù)據(jù)庫(kù)近幾年非常火熱,對(duì)此您是如何看待這一現(xiàn)象的?它的未來(lái)會(huì)出現(xiàn)哪些發(fā)展方向呢?
A:開源數(shù)據(jù)庫(kù)對(duì)于中國(guó)培養(yǎng)數(shù)據(jù)庫(kù)人才有很好的促進(jìn)作用,數(shù)據(jù)庫(kù)的知識(shí)大學(xué)都會(huì)講,但大多停留在介紹如何使用SQL的層面,大家對(duì)如何做一個(gè)數(shù)據(jù)庫(kù)是沒(méi)什么概念的。
通過(guò)參與開源項(xiàng)目,讓大家真正感受到數(shù)據(jù)庫(kù)的研發(fā)過(guò)程,有助于中國(guó)培養(yǎng)基礎(chǔ)軟件人才。未來(lái)的可能會(huì)繼續(xù)出現(xiàn)新型數(shù)據(jù)庫(kù),如近幾年出現(xiàn)的時(shí)序、圖數(shù)據(jù)庫(kù)等。數(shù)據(jù)庫(kù)也會(huì)更加專業(yè),更針對(duì)某些特定領(lǐng)域。此外,數(shù)據(jù)庫(kù)與AI、分析系統(tǒng)、流處理系統(tǒng)等的結(jié)合也是新的發(fā)展方向。
Q:請(qǐng)您對(duì)正在從事開源數(shù)據(jù)庫(kù)的開發(fā)人員和即將加入到 IoTDB 的同學(xué),給出一些建議。
A:盡管最近開源數(shù)據(jù)庫(kù)比較火熱,但數(shù)據(jù)庫(kù)是個(gè)復(fù)雜性很高的系統(tǒng)軟件,還是有不低的門檻,要做好心理預(yù)期,參與開源數(shù)據(jù)庫(kù)的開發(fā)可能不是一兩周能看到效果的,從了解數(shù)據(jù)庫(kù)的基本概念、使用方式,到了解其系統(tǒng)架構(gòu)、設(shè)計(jì)理念,最后到找到一個(gè)點(diǎn)進(jìn)行鉆研優(yōu)化。這個(gè)過(guò)程比較漫長(zhǎng),希望大家能夠長(zhǎng)期堅(jiān)持,這個(gè)過(guò)程中也會(huì)感受到自己的成長(zhǎng)。
嘉賓介紹
喬嘉林,博士畢業(yè)于清華大學(xué)軟件學(xué)院,目前在清華大學(xué)軟件學(xué)院做博士后,同時(shí)也是清華大學(xué)軟件學(xué)院助理研究員,Apache IoTDB PMC,公眾號(hào)“鐵頭喬”的作者,開放原子基金會(huì)銀牌講師,獲得過(guò)北京市科技進(jìn)步一等獎(jiǎng)。研究領(lǐng)域?yàn)閿?shù)據(jù)庫(kù)方向,包括文件結(jié)構(gòu)、索引、副本管理等,見(jiàn)證了IoTDB從發(fā)布第一個(gè)版本到畢業(yè)成為Apache基金會(huì)頂級(jí)項(xiàng)目的全過(guò)程。
51CTO技術(shù)精選月刊《CTO悟道》最新一期已經(jīng)上線!更多精彩技術(shù)干貨、知識(shí)見(jiàn)解等你揭曉,下載鏈接:??http://m.ekrvqnd.cn/journalDetail/5.html?down=3??