文/高玉民 翟浩然
隨著大數(shù)據(jù)技術(shù)在各行各業(yè)的逐漸應(yīng)用,如何高效、安全地獲取數(shù)據(jù)成為一個重要課題。其中,除自有數(shù)據(jù)外,很多業(yè)務(wù)不可避免的需要從第三方渠道獲取數(shù)據(jù),作為自有數(shù)據(jù)的補充,并將相關(guān)數(shù)據(jù)統(tǒng)一納入分析和研究流程,以期更加準(zhǔn)確地指導(dǎo)各項業(yè)務(wù)活動。
與自有數(shù)據(jù)相比,第三方數(shù)據(jù)經(jīng)常存在數(shù)據(jù)屬性、業(yè)務(wù)屬性、請求方法和返回信息各不相同的情形,在此背景下,就需要通過相應(yīng)的設(shè)計對第三方數(shù)據(jù)進行梳理,進而更加快捷地挖掘數(shù)據(jù)價值。。
一般來說,通過開發(fā)統(tǒng)一的外部數(shù)據(jù)調(diào)用模塊來對接第三方數(shù)據(jù)是一個行之有效的方法。其原因在于,雖然不同業(yè)務(wù)下所需的數(shù)據(jù)不一樣,但數(shù)據(jù)背后的調(diào)用方法基本是相同的。基于此,筆者從以下幾個方面入手,分析和設(shè)計通用的外部數(shù)據(jù)對接模塊對第三方數(shù)據(jù)接入的作用及相關(guān)問題,以期更好地服務(wù)于第三方數(shù)據(jù)的獲取及利用有所幫助。
目前,雖然不同的數(shù)據(jù)提供商給出的數(shù)據(jù)格式和請求細節(jié)不同,但基本采用網(wǎng)絡(luò)API方式對外提供數(shù)據(jù)接口服務(wù)。因此,接入第三方數(shù)據(jù)時,也會參照提供商給出的技術(shù)文檔逐一配置所需的URL、用戶名、Token、請求數(shù)據(jù)等,形成數(shù)據(jù)“接口”,并在一定的時機通過這個接口調(diào)用所需數(shù)據(jù)。同時,在第三方渠道返回消息后,也會參照技術(shù)文檔,將數(shù)據(jù)項目解析成業(yè)務(wù)需求的格式,最終返回給業(yè)務(wù)端。
在上述流程中,通過配置數(shù)據(jù)源表(表1),系統(tǒng)化錄入所需的信息,有利于自動化請求數(shù)據(jù)和并進行項目解析,提高數(shù)據(jù)獲取和利用的運行效率。
其中,第三方渠道信息返回狀態(tài)碼要根據(jù)己方數(shù)據(jù)系統(tǒng)進行轉(zhuǎn)義,以便己方技術(shù)人員在無需查看數(shù)據(jù)提供商技術(shù)手冊的情況下,也能及時了解系統(tǒng)運行狀況和接口返回信息狀態(tài),方便進行接下來的工作流程。
此外,由于不同業(yè)務(wù)可能會向同一個數(shù)據(jù)結(jié)果索取不同的項目,己方有必要根據(jù)業(yè)務(wù)ID 配置項目名稱轉(zhuǎn)義信息。在數(shù)據(jù)返回業(yè)務(wù)端之前,由數(shù)據(jù)對接模塊直接將數(shù)據(jù)打包成業(yè)務(wù)端所需的格式和形式。這樣的話,若業(yè)務(wù)端數(shù)據(jù)需求有所變化,技術(shù)人員只需要更改對應(yīng)的轉(zhuǎn)移信息即可。
如上文所述,業(yè)務(wù)端有可能需要從多個數(shù)據(jù)中選用不同的字段來計算最終的結(jié)果。在某些關(guān)鍵業(yè)務(wù)場景下,該結(jié)果的好壞將直接影響業(yè)務(wù)的運行。為此,有必要針對特定業(yè)務(wù)建立數(shù)據(jù)聯(lián)合運算索引,不僅將每一個中間步驟所需的數(shù)據(jù)源記錄下來,還將此次運算時所需的數(shù)據(jù)項目的值做成快照,統(tǒng)一記錄,以備復(fù)查。未來隨著業(yè)務(wù)的深入開展,己方也能夠根據(jù)歷史運算的結(jié)果判斷某個或某幾個第三方數(shù)據(jù)源的質(zhì)量優(yōu)劣。
表2中,URL 列表、緩存版本列表、項目名稱列表、項目數(shù)值列表的位置要保持一致。項目名稱列表、數(shù)值列表中的每一個項目也要形成一個列表,且這些列表中的位置也要一一對應(yīng),這樣可以兼顧從一個數(shù)據(jù)中獲取多個字段的業(yè)務(wù)場景。

表1:數(shù)據(jù)源配置表

表2:數(shù)據(jù)聯(lián)合運算索引:數(shù)據(jù)計算log 內(nèi)容

表3:緩存數(shù)據(jù)結(jié)構(gòu)
舉例說明,如果從ABC 三個數(shù)據(jù)源中調(diào)用了數(shù)據(jù),則URL 列表、版本列表、名稱列表和數(shù)值列表分別如下:
URL:[“url_a”,”url_b”,”url_c”]
版本(時間):[“20190101”,”201901 02”,”20190103”]
數(shù)據(jù)項目:[[“credit_history”,”debt_total”],[“debt_total”],[“asset_total”]]
數(shù)據(jù)值:[[10000,50000],[3500],[1500000]]
上述示例中,采用credit_history 和debt_total 字段,從數(shù)據(jù)源A 于2019年1月1日獲取了數(shù)據(jù),數(shù)值分別為10000 和50000。同理,后兩項數(shù)據(jù)也可以通過前述方法獲得。
其中,若數(shù)據(jù)存儲空間相對較小,數(shù)值列表可以不進行存儲,日后需要查詢時,向緩存請求即可。
以上數(shù)據(jù)聯(lián)合運算索引記錄的建立,可以有效回顧業(yè)務(wù)計算歷史,判別不同數(shù)據(jù)源的質(zhì)量優(yōu)劣,為以后的業(yè)務(wù)運行質(zhì)量的優(yōu)化創(chuàng)造良好的條件。
為了保證數(shù)據(jù)業(yè)務(wù)的持續(xù)性和有效性,有必要對從第三方數(shù)據(jù)源每次請求的數(shù)據(jù)進行緩存處理,具體來說,緩存處理主要基于以下考慮:
(1)某些第三方數(shù)據(jù)更新頻次很低,每一次使用沒必要都從數(shù)據(jù)源獲取,使用已緩存的數(shù)據(jù)在一定程度上并不影響業(yè)務(wù)結(jié)果;
(2)通過緩存處理,也會相對每次使用第三方數(shù)據(jù)的成本;
(3)如上文所述,業(yè)務(wù)運算結(jié)果和第三方數(shù)據(jù)質(zhì)量相關(guān),為了備查以及驗證數(shù)據(jù)源質(zhì)量,也需要對某些第三方數(shù)據(jù)進行緩存。
表3中,過期時間視業(yè)務(wù)需要進行設(shè)定,在請求數(shù)據(jù)成功后,可根據(jù)當(dāng)前時間加上時效段計算得出。
相關(guān)數(shù)據(jù)進行緩存處理后,若相同業(yè)務(wù)再次請求數(shù)據(jù),可以優(yōu)先從緩存中獲取仍然有效的歷史數(shù)據(jù);當(dāng)強制使用新數(shù)據(jù)或緩存過期后,再向數(shù)第三方據(jù)源請求數(shù)據(jù)。
同時,當(dāng)緩存數(shù)據(jù)失效后,可采用一定的策略進行批量刪除,比如某時段歷史計算數(shù)據(jù)已經(jīng)考察結(jié)束無繼續(xù)存儲的必要,或緩存容量過大需要釋放存儲空間等,可以考慮從系統(tǒng)中移除緩存數(shù)據(jù)。
第三方數(shù)據(jù)通道大都通過Http 接口形式對外提供服務(wù),并對某單一接口設(shè)置日訪問次數(shù)上限。為了提高訪問效率、考察響應(yīng)時間,可通過采取預(yù)請求和響應(yīng)記錄的方式,評測對接口的效率,并進一步優(yōu)化請求方式。
預(yù)請求是指在業(yè)務(wù)成熟的前提下,預(yù)先獲知某時間段內(nèi)(周、天)需要的數(shù)據(jù)類型和數(shù)量,并在業(yè)務(wù)開始前,即向數(shù)據(jù)接口請求相關(guān)數(shù)據(jù),存入數(shù)據(jù)緩存中。若請求數(shù)據(jù)量過大,超過接口單日訪問次數(shù)上限,則可設(shè)置專門的數(shù)據(jù)獲取計劃,將獲取數(shù)據(jù)時間進一步提前。
響應(yīng)記錄是指記錄某數(shù)據(jù)接口每次請求的響應(yīng)時間,在一定時期內(nèi)對響應(yīng)時長進行統(tǒng)計,獲取每個數(shù)據(jù)接口的響應(yīng)時長記錄,進而從整體角度了解當(dāng)前所有第三方接口的響應(yīng)質(zhì)量及對業(yè)務(wù)的影響,為接下來的業(yè)務(wù)運行作出準(zhǔn)備。
加強數(shù)據(jù)對接和使用的安全保護包括兩個層面,一是業(yè)務(wù)安全,二是數(shù)據(jù)安全。
業(yè)務(wù)安全是指數(shù)據(jù)的獲取和使用要符合國家法律法規(guī)的相關(guān)規(guī)定,嚴(yán)格篩選第三方數(shù)據(jù)渠道,確保渠道提供的數(shù)據(jù)是合法且經(jīng)過脫敏的。否則,第三方數(shù)據(jù)供應(yīng)方出現(xiàn)問題,導(dǎo)致接口不可用,將對業(yè)務(wù)的運營造成不利影響;進一步的,如果己方采用的第三方數(shù)據(jù)本身觸犯了法律法規(guī)的相關(guān)要求,己方可能面臨著行政處罰或刑事處罰,損失不可估量。
數(shù)據(jù)安全是指數(shù)據(jù)請求、存儲和使用要充分考慮到安全因素,主要包括以下內(nèi)容:
(1)數(shù)據(jù)請求安全是指在從第三方數(shù)據(jù)通道獲取數(shù)據(jù)時,經(jīng)常需要向第三方數(shù)據(jù)源提供相關(guān)參數(shù),而某些參數(shù)或直接涉及隱私,或?qū)儆跇I(yè)務(wù)方面的敏感參數(shù),都不能直接向第三方數(shù)據(jù)接口發(fā)送。為避免這種情況,必須在接口對接前由數(shù)據(jù)使用方與數(shù)據(jù)提供方共同確認(rèn)請求數(shù)據(jù)的加密方式,在使用時向數(shù)據(jù)接口發(fā)送不可解密的密文,從而達到保護隱私和敏感數(shù)據(jù)的目的。另外,若使用Http 接口,則一定要使用Https 協(xié)議通信,進一步保證請求安全。
(2)存儲安全是指獲取后的數(shù)據(jù)信息一定要保存在數(shù)據(jù)需求方經(jīng)過嚴(yán)格權(quán)限設(shè)計的數(shù)據(jù)庫中,對于數(shù)據(jù)的存儲、遷移、歸檔等動作要有一套完整且安全的流程規(guī)劃,并切實做好數(shù)據(jù)庫管理的相關(guān)工作。
(3)在使用數(shù)據(jù)時也要遵守一定的規(guī)范,比如要遵守數(shù)據(jù)提供方的約定、數(shù)據(jù)計算不能改變源數(shù)據(jù)、使用敏感數(shù)據(jù)時要首先經(jīng)過脫敏環(huán)節(jié)等等。
基于第三方數(shù)據(jù)的調(diào)用方法基本相同,可通過設(shè)計通用的外部數(shù)據(jù)對接模塊接入第三方數(shù)據(jù)。研究和開發(fā)通用的外部數(shù)據(jù)對接模塊時需要源配置和數(shù)據(jù)項的整合,數(shù)據(jù)聯(lián)合運算索引、快照及記錄,緩存處理的必要性,優(yōu)化數(shù)據(jù)請求的效率及加強業(yè)務(wù)安全和數(shù)據(jù)安全等,最終實現(xiàn)第三方數(shù)據(jù)合法合規(guī)、高效安全地為己方所用。