吳 飛
(中國直升機(jī)設(shè)計(jì)研究所,江西 景德鎮(zhèn)333001)
隨著企業(yè)的業(yè)務(wù)成熟和數(shù)字化轉(zhuǎn)型的不斷推進(jìn),業(yè)務(wù)系統(tǒng)的數(shù)量和存儲(chǔ)的數(shù)據(jù)量均呈現(xiàn)爆發(fā)性增長,結(jié)合日益發(fā)展成熟的大數(shù)據(jù)技術(shù)和數(shù)據(jù)中臺(tái)概念的落地,企業(yè)內(nèi)部也在構(gòu)建存儲(chǔ)、管理和利用海量數(shù)據(jù)的大數(shù)據(jù)平臺(tái)。數(shù)據(jù)倉庫在大數(shù)據(jù)環(huán)境中承擔(dān)著數(shù)據(jù)存儲(chǔ)的職責(zé),能夠很好地滿足海量數(shù)據(jù)存儲(chǔ)及分析利用的要求,但是其本身在應(yīng)用上也存在一定的局限性,主要表現(xiàn)為在海量數(shù)據(jù)的查詢、狀態(tài)管控和展現(xiàn)上存在著效率低下的問題。為了更好地利用大數(shù)據(jù)的優(yōu)勢(shì),可以采用多層數(shù)據(jù)存儲(chǔ)的方式使數(shù)據(jù)既能完整統(tǒng)一,也能滿足數(shù)據(jù)快速查詢和分析利用的要求。
大數(shù)據(jù)作為互聯(lián)網(wǎng)發(fā)展中的一次技術(shù)創(chuàng)新對(duì)全社會(huì)產(chǎn)生了巨大的沖擊,數(shù)據(jù)量成倍增長后從量變引起了質(zhì)變,深刻影響著企業(yè)的經(jīng)營決策活動(dòng)。“大數(shù)據(jù)”本身是一個(gè)很多技術(shù)概念的集合,即不能在有限時(shí)間內(nèi)使用常用工具軟件對(duì)數(shù)據(jù)進(jìn)行采集、存儲(chǔ)和處理的數(shù)據(jù)綜合體。大數(shù)據(jù)一般存在以下4個(gè)特點(diǎn):數(shù)據(jù)規(guī)模大、數(shù)據(jù)格式多、數(shù)據(jù)處理快和數(shù)據(jù)價(jià)值低[1]。
(1)數(shù)據(jù)量大,指涉及的數(shù)據(jù)體量巨大[2]。企業(yè)中的應(yīng)用系統(tǒng)經(jīng)過長年累月的使用,積累了越來越多的數(shù)據(jù),且隨著日常管理工作的日趨完善,信息系統(tǒng)仍在不斷構(gòu)建,數(shù)據(jù)量很容易就達(dá)到了PB級(jí),這大大地超過了傳統(tǒng)數(shù)據(jù)庫所能存儲(chǔ)和分析的量級(jí)。
(2)數(shù)據(jù)類型多,指數(shù)據(jù)源廣泛且類別各異。企業(yè)中的數(shù)據(jù)已不再僅僅包含數(shù)據(jù)庫中所存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),還包括文本等半結(jié)構(gòu)化和音視頻等非結(jié)構(gòu)化數(shù)據(jù),同時(shí)文本、圖片、音視頻等類型數(shù)據(jù)的占比日益增加。
(3)數(shù)據(jù)處理快,指數(shù)據(jù)分析加工快。企業(yè)中每秒都在產(chǎn)生數(shù)據(jù),對(duì)數(shù)據(jù)處理的及時(shí)性也隨之提出更高的要求,數(shù)據(jù)處理過慢則影響數(shù)據(jù)的使用??紤]數(shù)據(jù)價(jià)值的有效性,數(shù)據(jù)處理遵循1秒定律。
(4)數(shù)據(jù)價(jià)值低,不是指大數(shù)據(jù)本身沒有價(jià)值,而是指有價(jià)值的數(shù)據(jù)在數(shù)據(jù)量中的占比低。企業(yè)中隨著整體數(shù)據(jù)量的增大,無效的數(shù)據(jù)也隨之變多,數(shù)據(jù)的價(jià)值需要不斷的整理、挖掘和分析才能得到很好的體現(xiàn),數(shù)據(jù)可用性程度較低。
在設(shè)計(jì)大數(shù)據(jù)環(huán)境下數(shù)據(jù)的存儲(chǔ)時(shí),將采用的數(shù)據(jù)存儲(chǔ)分為了三層:操作數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)倉庫層、分析結(jié)果存儲(chǔ)層。其中,操作數(shù)據(jù)存儲(chǔ)層主要使用關(guān)系型數(shù)據(jù)庫,目的是在直接將數(shù)據(jù)抽取到數(shù)據(jù)倉庫的過程中增加緩沖,確保數(shù)據(jù)倉庫的穩(wěn)定,同時(shí)將一些不符合規(guī)則的數(shù)據(jù)篩選出來;大數(shù)據(jù)倉庫層則是使用Hive(數(shù)據(jù)倉庫工具)進(jìn)行數(shù)據(jù)的存儲(chǔ),將各類數(shù)據(jù)匯總后按數(shù)據(jù)主題分別存儲(chǔ);分析結(jié)果數(shù)據(jù)存儲(chǔ)層使用的是關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫組合的方式存儲(chǔ)數(shù)據(jù),提供數(shù)據(jù)給上層應(yīng)用訪問,詳細(xì)的總體設(shè)計(jì)情況如圖1所示。
圖1 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)
操作數(shù)據(jù)存儲(chǔ)層是大數(shù)據(jù)存儲(chǔ)應(yīng)用中的一個(gè)重要組成部分,也被稱為貼源層。在操作數(shù)據(jù)存儲(chǔ)層的設(shè)計(jì)上主要參考了數(shù)據(jù)倉庫的設(shè)計(jì)和數(shù)據(jù)建模方法,方法的比較主要體現(xiàn)在ER模型(實(shí)體聯(lián)系模型)和維模型上,但是ER模型和維模型在大數(shù)據(jù)存儲(chǔ)的設(shè)計(jì)中不是互斥的,ER模型可以完整地展示數(shù)據(jù)之間的聯(lián)系,而維模型可以保留實(shí)際的數(shù)據(jù)結(jié)構(gòu)。因此不能簡(jiǎn)單地區(qū)分哪種模型更優(yōu),需要根據(jù)實(shí)際應(yīng)用場(chǎng)景決定使用哪種數(shù)據(jù)存儲(chǔ)設(shè)計(jì),從而使數(shù)據(jù)更好地反映企業(yè)的業(yè)務(wù)情況。操作數(shù)據(jù)存儲(chǔ)層具備了數(shù)據(jù)倉庫和聯(lián)機(jī)事務(wù)處理過程的一些特點(diǎn),它也是通過集成各業(yè)務(wù)數(shù)據(jù),按主題存儲(chǔ)業(yè)務(wù)最新和詳細(xì)數(shù)據(jù)的集合,能夠?qū)崿F(xiàn)全數(shù)據(jù)臨時(shí)存儲(chǔ)以及處理的要求。結(jié)合單位內(nèi)部實(shí)際需求,操作數(shù)據(jù)存儲(chǔ)主要完成了數(shù)據(jù)緩沖、轉(zhuǎn)移查詢和數(shù)據(jù)狀態(tài)控制功能。
2.1.1 數(shù)據(jù)緩沖
大數(shù)據(jù)環(huán)境集成的數(shù)據(jù)來源十分復(fù)雜,一般表現(xiàn)為來源于多個(gè)應(yīng)用系統(tǒng),且數(shù)據(jù)的存儲(chǔ)方式、業(yè)務(wù)模型等都各不相同,從而大大提高了數(shù)據(jù)抽取的難度。因此,操作數(shù)據(jù)存儲(chǔ)層用于臨時(shí)存儲(chǔ)從業(yè)務(wù)系統(tǒng)中集成的數(shù)據(jù),存儲(chǔ)的數(shù)據(jù)與源數(shù)據(jù)的結(jié)構(gòu)一致并且數(shù)據(jù)的關(guān)聯(lián)關(guān)系也一致,僅對(duì)部分字段進(jìn)行轉(zhuǎn)換。因此在數(shù)據(jù)集成時(shí)基本不用考慮抽取轉(zhuǎn)換的過程,更多的關(guān)注點(diǎn)在數(shù)據(jù)集成的方式和頻率、數(shù)據(jù)量以及源數(shù)據(jù)的結(jié)構(gòu)。
當(dāng)源數(shù)據(jù)應(yīng)用系統(tǒng)出現(xiàn)問題時(shí),數(shù)據(jù)緩沖可以確保數(shù)據(jù)倉庫完全不受影響,而數(shù)據(jù)倉庫中存放的是完整的、所有的數(shù)據(jù),其安全性和穩(wěn)定性可以得到最好的保證。
2.1.2 轉(zhuǎn)移查詢
在大數(shù)據(jù)環(huán)境應(yīng)用之前,各業(yè)務(wù)系統(tǒng)自身根據(jù)業(yè)務(wù)需要生成大量的分析報(bào)表,但是往往有些分析報(bào)表非常復(fù)雜,業(yè)務(wù)系統(tǒng)在實(shí)現(xiàn)大量復(fù)雜sql語句(結(jié)構(gòu)化查詢語言)時(shí)對(duì)業(yè)務(wù)系統(tǒng)的運(yùn)行造成了巨大的壓力。分析查詢操作也可以直接在數(shù)據(jù)倉庫中進(jìn)行,然而數(shù)據(jù)倉庫中數(shù)據(jù)存儲(chǔ)量大,數(shù)據(jù)存儲(chǔ)模式不再是關(guān)系型而轉(zhuǎn)變?yōu)槊嫦蛑黝}的方式,在應(yīng)對(duì)簡(jiǎn)單報(bào)表生成和查詢時(shí)反而顯得效率低下,難以滿足用戶查詢要求。操作數(shù)據(jù)存儲(chǔ)層的數(shù)據(jù)從數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)關(guān)聯(lián)關(guān)系和數(shù)據(jù)的完整性等方面都和源系統(tǒng)一致,因此可以在操作數(shù)據(jù)存儲(chǔ)層實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)的報(bào)表生成和數(shù)據(jù)檢索功能,從而減輕業(yè)務(wù)系統(tǒng)的檢索量。
2.1.3 數(shù)據(jù)狀態(tài)控制
在應(yīng)用系統(tǒng)眾多的今天,企業(yè)內(nèi)部仍然沒有實(shí)現(xiàn)所有業(yè)務(wù)工作都能使用系統(tǒng)管理,而是通過郵件將Excel表分發(fā)到各部門再匯總統(tǒng)計(jì),這部分工作往往由專人負(fù)責(zé)但是缺乏對(duì)數(shù)據(jù)的管控,數(shù)據(jù)無法有效地留存和再利用。此類規(guī)范性的數(shù)據(jù)在大數(shù)據(jù)環(huán)境中很受歡迎,數(shù)據(jù)的質(zhì)量有保障,也可以很容易地對(duì)其進(jìn)行分析,因此數(shù)據(jù)錄入必不可少。
數(shù)據(jù)倉庫中的數(shù)據(jù)是經(jīng)過清洗和轉(zhuǎn)換的,數(shù)據(jù)錄入的數(shù)據(jù)不能直接存進(jìn)數(shù)據(jù)倉庫,需要經(jīng)過審批后才能確定為有效數(shù)據(jù),這種簡(jiǎn)單的審批操作無法直接在數(shù)據(jù)倉庫中進(jìn)行。操作數(shù)據(jù)存儲(chǔ)層可以作為源數(shù)據(jù)庫存儲(chǔ)錄入的數(shù)據(jù),同時(shí)使用字段控制數(shù)據(jù)的狀態(tài)滿足數(shù)據(jù)審批和數(shù)據(jù)抽取的要求,僅當(dāng)數(shù)據(jù)狀態(tài)位為“1”時(shí),數(shù)據(jù)才會(huì)從操作數(shù)據(jù)存儲(chǔ)層中抽取到數(shù)據(jù)倉庫中。
數(shù)據(jù)倉庫是一個(gè)基于主題存儲(chǔ)的、數(shù)據(jù)高度集中的、分布式的、全生命周期的存放海量數(shù)據(jù)的集合,數(shù)據(jù)倉庫中存放了完整可用的企業(yè)數(shù)據(jù)[3]。數(shù)據(jù)倉庫和傳統(tǒng)的關(guān)系型、非關(guān)系型數(shù)據(jù)庫不同,傳統(tǒng)的數(shù)據(jù)庫在設(shè)計(jì)時(shí)更多考慮的是系統(tǒng)功能,而數(shù)據(jù)倉庫存儲(chǔ)數(shù)據(jù)是按照主題劃分的。業(yè)務(wù)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)歸屬于各業(yè)務(wù)本身,對(duì)相同物品的描述、計(jì)量方式、存儲(chǔ)類型等方面都存在差異。將存儲(chǔ)在各應(yīng)用系統(tǒng)中的數(shù)據(jù)經(jīng)過數(shù)據(jù)抽取和轉(zhuǎn)換后形成一致性的表達(dá),再將數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)倉庫進(jìn)行管理。數(shù)據(jù)倉庫的數(shù)據(jù)是全生命周期的,其可以對(duì)最新數(shù)據(jù)進(jìn)行檢索,也可以對(duì)歷史數(shù)據(jù)進(jìn)行追溯。數(shù)據(jù)倉庫存儲(chǔ)的數(shù)據(jù)理論上不應(yīng)該再進(jìn)行修改,當(dāng)集成的數(shù)據(jù)源中的數(shù)據(jù)發(fā)生變化后,再加載到數(shù)據(jù)倉庫時(shí)會(huì)形成新的數(shù)據(jù)條目,以此可以追溯數(shù)據(jù)的變化。但是考慮到數(shù)據(jù)本身的重要程度遠(yuǎn)遠(yuǎn)大于數(shù)據(jù)修改的代價(jià),因此在本單位的數(shù)據(jù)倉庫設(shè)計(jì)中主要考慮了數(shù)據(jù)存儲(chǔ)和少量的數(shù)據(jù)更改。
2.2.1 數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)主要考慮業(yè)務(wù)的數(shù)據(jù)模式,根據(jù)業(yè)務(wù)的數(shù)據(jù)要求確定數(shù)據(jù)模型,一般建議使用星型模型,即將采集的數(shù)據(jù)經(jīng)過預(yù)處理存入事實(shí)表,少量關(guān)鍵信息處理為維表[4]。在信息檢索時(shí)可以很方便地對(duì)事實(shí)表進(jìn)行操作,不必進(jìn)行大量的join操作,能夠明顯地提升檢索效率。同時(shí)星型模型的事實(shí)表可讀性比較好,不用關(guān)聯(lián)多個(gè)表就能獲取大部分核心信息,設(shè)計(jì)維護(hù)都相對(duì)簡(jiǎn)單。如數(shù)據(jù)是基于時(shí)間維度產(chǎn)生的,就可以將時(shí)間信息從數(shù)據(jù)表中剝離,并以時(shí)間信息為維表構(gòu)建數(shù)據(jù)存儲(chǔ)模型,將其余信息存入事實(shí)表,通過這種存儲(chǔ)方式可以很清晰地對(duì)各個(gè)歷史時(shí)間段內(nèi)某個(gè)主題的數(shù)據(jù)進(jìn)行獲取利用。
2.2.2 數(shù)據(jù)更改
數(shù)據(jù)倉庫中的數(shù)據(jù)是從各系統(tǒng)抽取而來的,原則上并不能修改,而且數(shù)據(jù)倉庫的技術(shù)本身也未提供修改的方法,但是考慮到有些集成的數(shù)據(jù)是通過人工錄入得到的,雖然考慮了數(shù)據(jù)需要經(jīng)過審批才能被生效,但是并不能確保數(shù)據(jù)100%準(zhǔn)確無誤。而錯(cuò)誤的數(shù)據(jù)存儲(chǔ)進(jìn)數(shù)據(jù)倉庫后很可能會(huì)對(duì)分析計(jì)算產(chǎn)生不良的影響,降低分析結(jié)果的準(zhǔn)確率,因此需要確保數(shù)據(jù)可以被更改,可以通過維表將需要修改的數(shù)據(jù)分區(qū)進(jìn)行刪除并重新創(chuàng)建達(dá)到數(shù)據(jù)更改的目的。
分析結(jié)果數(shù)據(jù)存儲(chǔ)層主要是將經(jīng)過各種算法加工的數(shù)據(jù)與視覺編碼進(jìn)行映射后進(jìn)行存儲(chǔ),這類結(jié)果數(shù)據(jù)一般有訪問頻率高和獲取速度快兩大使用特點(diǎn),因此分析結(jié)果數(shù)據(jù)一般存入聯(lián)機(jī)事務(wù)處理數(shù)據(jù)庫中,以提高需要經(jīng)常訪問的數(shù)據(jù)的效率。數(shù)據(jù)庫的選用和設(shè)計(jì)完全根據(jù)業(yè)務(wù)需求而定,如經(jīng)過聯(lián)機(jī)分析計(jì)算后的數(shù)據(jù)主要被拿來作圖表的呈現(xiàn)和報(bào)表的生成,則可以選用關(guān)系型數(shù)據(jù)庫存儲(chǔ)結(jié)果數(shù)據(jù);若分析后的數(shù)據(jù)仍然是比較離散的,引用數(shù)據(jù)者對(duì)離散數(shù)據(jù)還需要進(jìn)行二次加工和分析,則可以選用非關(guān)系型數(shù)據(jù)庫存儲(chǔ)結(jié)果數(shù)據(jù)。為了滿足數(shù)據(jù)對(duì)應(yīng)用訪問的要求,分析結(jié)果數(shù)據(jù)存儲(chǔ)層一般采用關(guān)系型和非關(guān)系型數(shù)據(jù)庫聯(lián)合構(gòu)建的方式,可以滿足企業(yè)內(nèi)部數(shù)據(jù)安全、高效使用的要求。
2.3.1 數(shù)據(jù)安全
數(shù)據(jù)經(jīng)過分析處理后存儲(chǔ)到分析結(jié)果數(shù)據(jù)庫中,將數(shù)據(jù)倉庫和用戶隔離開。用戶訪問需要的數(shù)據(jù)時(shí)只能訪問分析結(jié)果,不能直接去訪問數(shù)據(jù)倉庫,避免了用戶直接連接數(shù)據(jù)倉庫,保證數(shù)據(jù)倉庫中的數(shù)據(jù)無法直接訪問,減少人為修改的可能。同時(shí)也可以降低用戶對(duì)數(shù)據(jù)的訪問范圍,對(duì)數(shù)據(jù)的使用無須訪問多個(gè)主題中的數(shù)據(jù),僅得到結(jié)果即可。
2.3.2 高效查詢
數(shù)據(jù)倉庫本身數(shù)據(jù)量大,且被設(shè)計(jì)為給聯(lián)機(jī)分析處理提供數(shù)據(jù)支撐,不適合直接作為查詢的源端使用,在獲取數(shù)據(jù)的基礎(chǔ)上還要再進(jìn)一步分析計(jì)算,最短的時(shí)間也在5s以上,這對(duì)于使用頁面訪問數(shù)據(jù)來說是無法接受的,因此需要將計(jì)算后的數(shù)據(jù)存儲(chǔ)在可以高效查詢的數(shù)據(jù)庫中,以提高數(shù)據(jù)的訪問和使用效率。
2.3.3 應(yīng)用解耦
數(shù)據(jù)經(jīng)過分析計(jì)算后將結(jié)果數(shù)據(jù)存入分析結(jié)果數(shù)據(jù)庫中,再將分析結(jié)果取出提供給其他應(yīng)用使用。通過將各應(yīng)用與數(shù)據(jù)倉庫解耦的方式,一方面減少了應(yīng)用高頻率且重復(fù)性強(qiáng)的訪問數(shù)據(jù)倉庫,減輕數(shù)據(jù)倉庫的壓力,另一方面當(dāng)數(shù)據(jù)倉庫設(shè)計(jì)發(fā)生改變時(shí),應(yīng)用層仍然可以使用原方式使用數(shù)據(jù)。
目前,大數(shù)據(jù)思想已經(jīng)深入企業(yè)中,企業(yè)在管理和研發(fā)過程中均在探索大數(shù)據(jù)與實(shí)際業(yè)務(wù)的結(jié)合,通過數(shù)據(jù)存儲(chǔ)的三層設(shè)計(jì)有效地解決了企業(yè)內(nèi)部對(duì)于大數(shù)據(jù)的存儲(chǔ)和利用問題,為企業(yè)更好地利用大數(shù)據(jù)技術(shù)提供了新的思路和解決方法。