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