汪榮榮
同濟(jì)大學(xué)軟件學(xué)院,上海 201804
分類信息又稱分類廣告,它是WEB2.0的衍生物,是新一代互聯(lián)網(wǎng)應(yīng)用模式。日常在電視、報(bào)刊上所看到的廣告,往往是被強(qiáng)加給觀眾和讀者的,這類廣告稱為被動(dòng)廣告。而人們主動(dòng)去查詢招聘、租房、旅游等方面的信息,對(duì)這些信息,稱它為主動(dòng)廣告,也即是本文所說(shuō)的分類信息。分類信息的崛起,很好的彌補(bǔ)了傳統(tǒng)分類廣告的不足。它不僅信息量大,而且信息隨時(shí)在線。更重要的是利用分類搜索,可以保證用戶在任何時(shí)間、任何地點(diǎn),都能非常方便快捷的查詢。它也以內(nèi)容編排精細(xì)化、及時(shí)、空間無(wú)限等特質(zhì),在大眾生活及商務(wù)活動(dòng)中備受關(guān)注和喜歡。
1)面向主題(Subject-Oriented):所謂主題是一個(gè)抽象的概念,是在較高層次上將企業(yè)信息系統(tǒng)中的數(shù)據(jù)綜合、歸類并進(jìn)行分析利用的抽象。
2)集成性(Integrated):數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)由于不是面向應(yīng)用,所以并不關(guān)心細(xì)節(jié)數(shù)據(jù),而是從原有的數(shù)據(jù)庫(kù)中抽取出來(lái)的,并經(jīng)過(guò)統(tǒng)一和綜合,再進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)中。
3)穩(wěn)定性(Non-Volatile):數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)主要供企業(yè)決策分析之用,主要涉及的數(shù)據(jù)操作時(shí)數(shù)據(jù)查詢,一般情況下并不進(jìn)行修改操作。
4)時(shí)間變異性(Time-Variant):在數(shù)據(jù)倉(cāng)庫(kù)中,數(shù)據(jù)記錄總含有一個(gè)時(shí)間屬性,倉(cāng)庫(kù)中記錄了數(shù)據(jù)隨時(shí)間變化的歷史。
1)數(shù)據(jù)源。是數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的基礎(chǔ),是整個(gè)系統(tǒng)的源泉。
2)數(shù)據(jù)的存儲(chǔ)與管理。是整個(gè)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的核心。數(shù)據(jù)倉(cāng)庫(kù)的真正關(guān)鍵是數(shù)據(jù)的存儲(chǔ)與管理。數(shù)據(jù)倉(cāng)庫(kù)的組織管理方式?jīng)Q定了它有別于傳統(tǒng)數(shù)據(jù)庫(kù),同時(shí)也決定了其對(duì)外部數(shù)據(jù)的表現(xiàn)形式。針對(duì)現(xiàn)有各業(yè)務(wù)系統(tǒng)的數(shù)據(jù),進(jìn)行抽取、清理、并有效集成,按照主題進(jìn)行組織。該過(guò)程是通過(guò)ETL Server將數(shù)據(jù)源中的操作型數(shù)據(jù)經(jīng)過(guò)必要的轉(zhuǎn)換,重組導(dǎo)入數(shù)據(jù)倉(cāng)庫(kù)。
3)前段工具。主要包括各種報(bào)表工具、查詢工具、數(shù)據(jù)分析工具、數(shù)據(jù)挖掘工具以及各種基于數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市的應(yīng)用開(kāi)發(fā)工具。其中,數(shù)據(jù)分析工具主要針對(duì)OLAP服務(wù)器;報(bào)表工具、數(shù)據(jù)挖掘工具主要針對(duì)數(shù)據(jù)倉(cāng)庫(kù)。
4)數(shù)據(jù)用戶。即歷史數(shù)據(jù)等報(bào)表的使用者,一般為企業(yè)決策者。
ETL指的是數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換與數(shù)據(jù)加載。
1)數(shù)據(jù)抽取。它完成從原有操作型數(shù)據(jù)庫(kù)中選擇與數(shù)據(jù)倉(cāng)庫(kù)主體域相關(guān)的細(xì)節(jié)數(shù)據(jù)抽取到數(shù)據(jù)倉(cāng)庫(kù)中。同時(shí),數(shù)據(jù)抽取還要考慮源數(shù)據(jù)環(huán)境和ETL開(kāi)發(fā)環(huán)境的接口問(wèn)題,不同的業(yè)務(wù)系統(tǒng)有不同的平臺(tái),相應(yīng)地采用不同的數(shù)據(jù)抽取接口,一般應(yīng)根據(jù)實(shí)際情況選擇可靠合適的源數(shù)據(jù)接口。比較典型的源數(shù)據(jù)接口有數(shù)據(jù)庫(kù)接口和文件接口。
2)數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)倉(cāng)庫(kù)的源數(shù)據(jù)之間往往出現(xiàn)不一致的字段長(zhǎng)、不一致的賦值等問(wèn)題。數(shù)據(jù)轉(zhuǎn)換負(fù)責(zé)將數(shù)據(jù)名稱和格式進(jìn)行統(tǒng)一,同時(shí)對(duì)不存在的數(shù)據(jù)賦缺省值,創(chuàng)建新的數(shù)據(jù)邏輯視圖。數(shù)據(jù)轉(zhuǎn)換的目標(biāo)是將每個(gè)字段轉(zhuǎn)換為符合數(shù)據(jù)倉(cāng)庫(kù)標(biāo)準(zhǔn)的數(shù)據(jù)格式。
3)數(shù)據(jù)加載。數(shù)據(jù)加載有插入、增加和刷新3種模式。插入式加載對(duì)目標(biāo)表進(jìn)行增量操作;增加式加載需要對(duì)目標(biāo)表同時(shí)做更新及插入操作,根據(jù)主鍵,對(duì)于已有的記錄進(jìn)行更新,對(duì)于不存在的記錄做插入操作。
本文分析的是某跨國(guó)公司需要將其多個(gè)國(guó)家不同平臺(tái)的分類信息數(shù)據(jù)整合到統(tǒng)一格式的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。具體這些信息包括廣告、用戶、回復(fù)、目錄、地址、支付、收費(fèi)項(xiàng)目、網(wǎng)站等。它們的歷史數(shù)據(jù)為決策者們提供決策依據(jù)。
1)廣告:用戶免費(fèi)將廣告發(fā)布到其所在地的分類信息平臺(tái)。這些廣告通常包括租房信息、工作招聘信息、閑置物品二手交易信息等。
2)用戶:即廣告投放者、回復(fù)廣告用戶以及注冊(cè)用戶。在該分類信息應(yīng)用中,非注冊(cè)用戶也可以投放以及回復(fù)廣告。
3)回復(fù):當(dāng)網(wǎng)頁(yè)瀏覽者對(duì)廣告感興趣時(shí),可以通過(guò)回復(fù)廣告即發(fā)郵件給投放者與對(duì)方聯(lián)系。
4)目錄:廣告的類別,又劃分為多級(jí)子目錄。根目錄如工作、房屋、汽車(chē)、寵物、服務(wù)等,在工作的根目錄下又細(xì)分為公寓出租、短期出租、旅游出租等。廣告被放在最底目錄下。
5)地址:分類信息一般為同城交易,因此廣告也只對(duì)同一城市或者地區(qū)有效。這樣,廣告投放者所在的地址信息如國(guó)家、城市甚至地區(qū)就變得至關(guān)重要。
6)收費(fèi)項(xiàng)目:包括延長(zhǎng)廣告有效期(默認(rèn)免費(fèi)廣告有效期為3個(gè)月)、將廣告靠前排放、彩色個(gè)性投放廣告等。
本系統(tǒng)采用E-L-T,即先將源數(shù)據(jù)從各個(gè)國(guó)家的操作型數(shù)據(jù)庫(kù)中抽取出來(lái),再將這些數(shù)據(jù)直接裝載到數(shù)據(jù)倉(cāng)庫(kù)平臺(tái)的DBMS- Teradata,最后在Teradata中對(duì)數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換。由于Teradata有并行處理兼線性增長(zhǎng)的數(shù)據(jù)處理功能,這樣設(shè)計(jì)的成本與性能要強(qiáng)于傳統(tǒng)的抽取-轉(zhuǎn)換-裝載流程。ETL的具體過(guò)程分為以下幾步:
1)使用Shell腳本將需要的字段從源操作型數(shù)據(jù)庫(kù)的表中選取出來(lái),該步驟將抽取得到的數(shù)據(jù)生成由分割符和源數(shù)據(jù)組成的FLAT FILE。每次從不同的源數(shù)據(jù)平臺(tái)上抽取數(shù)據(jù)時(shí),只需編寫(xiě)對(duì)應(yīng)的SELECT SQL語(yǔ)句;
2)使用Ab-initio將上一步驟中生成的FLAT FILE中的源數(shù)據(jù)載入Teradata的對(duì)應(yīng)表中。在該步驟中,需要編寫(xiě)數(shù)據(jù)格式轉(zhuǎn)換DML文件,該文件主要告訴Ab-initio如何讀取FLAT FILE中的分割符,以及如何將源數(shù)據(jù)匹配地存入Teradata中對(duì)應(yīng)的字段;
3)在上一步驟中,Teradata表中得到的數(shù)據(jù)是未經(jīng)任何清洗和轉(zhuǎn)換的臨時(shí)表數(shù)據(jù)。在數(shù)據(jù)轉(zhuǎn)換這一步驟里又分為兩步:INSERT SQL以及UPSERT SQL。INSERT SQL主要完成數(shù)據(jù)轉(zhuǎn)換工作,一般它需要左聯(lián)接不經(jīng)常變更的存放網(wǎng)站信息、地理信息、目錄信息的一些維度表,并作必要的數(shù)據(jù)清理和轉(zhuǎn)換工作,再講這些結(jié)果存入數(shù)據(jù)倉(cāng)庫(kù)的臨時(shí)表中。UPSERT SQL實(shí)際又分為UPDATE SQL和INSERT SQL,即把上一步中INSERT SQL最后所得的臨時(shí)表數(shù)據(jù)導(dǎo)入最終表中。該最終表實(shí)際為最終數(shù)據(jù)用戶使用的表,它已包含歷史數(shù)據(jù)和其他國(guó)家平臺(tái)的數(shù)據(jù)。也即UPSERT SQL完成的是數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)集成操作。