?
導(dǎo)讀
本文的主題:
系統(tǒng)性的介紹數(shù)據(jù)中臺提供的服務(wù)類型,詳細(xì)講解最重要的Data API部分。
適合的讀者:
希望系統(tǒng)性掌握數(shù)據(jù)中臺核心數(shù)據(jù)服務(wù)底層邏輯結(jié)構(gòu)的數(shù)據(jù)中臺建設(shè)者
核心內(nèi)容和關(guān)鍵字:數(shù)據(jù)中臺,數(shù)據(jù)服務(wù),Data API
長度:5000字
閱讀時間:30分鐘
數(shù)據(jù)中臺的核心是數(shù)據(jù)服務(wù)
數(shù)據(jù)中臺是“數(shù)據(jù)服務(wù)工廠”,所以,數(shù)據(jù)服務(wù)是數(shù)據(jù)中臺的核心能力。
那么,數(shù)據(jù)中臺都提供哪些數(shù)據(jù)服務(wù)呢?
業(yè)界常用的數(shù)據(jù)服務(wù)包括五種類型,Data API,Event Hub,Database,F(xiàn)ile,Terminal & APP。
什么是數(shù)據(jù)服務(wù)
現(xiàn)在行業(yè)里講的Data as a Service (DaaS),在Wiki中則特制基于SOAP的API服務(wù)。
data as a service is enabled by software as a service (SaaS).[1] Like all "as a service" (aaS) technology, DaaS builds on the concept that its data product can be provided to the user on demand,[2] regardless of geographic or organizational separation between provider and consumer. Service-oriented architecture (SOA), and the widespread use of API, has rendered the platform on which the data resides as irrelevant.[3]
廣義的數(shù)據(jù)服務(wù)則可以理解為,為業(yè)務(wù)提供數(shù)據(jù)的服務(wù)。
數(shù)據(jù)服務(wù)是一個行業(yè),廣為人知的數(shù)據(jù)服務(wù)提供商有以下的幾類:
金融數(shù)據(jù)服務(wù)
金融數(shù)據(jù)服務(wù)是目前商業(yè)化程度最高,最成熟的行業(yè)數(shù)據(jù)服務(wù)。全球有眾多的金融數(shù)據(jù)服務(wù)公司,比較有名的有Bloomberg,Wind,湯森路透等,而在國內(nèi),典型的金融數(shù)據(jù)服務(wù)機構(gòu)就包括中國外匯交易中心。
拿外匯交易中心為例,它提供的服務(wù)主要有:市場數(shù)據(jù),市場公告,指標(biāo)數(shù)據(jù),數(shù)據(jù)服務(wù),而典型的數(shù)據(jù)服務(wù)類型分成了以下幾類:信息產(chǎn)品服務(wù)、數(shù)據(jù)接口服務(wù)、媒體數(shù)據(jù)服務(wù)、信息商數(shù)據(jù)服務(wù)。
公開數(shù)據(jù)服務(wù)
公開數(shù)據(jù)服務(wù)是將一些公共用途的數(shù)據(jù)以服務(wù)的形式提供出來,供所有的用戶使用。類似于國家統(tǒng)計局,政府公開數(shù)據(jù)等。
拿上海市公共數(shù)據(jù)開放平臺做例子:
上海市公共數(shù)據(jù)開放平臺,提供了三類數(shù)據(jù)服務(wù):
數(shù)據(jù)產(chǎn)品,數(shù)據(jù)接口,數(shù)據(jù)應(yīng)用。
數(shù)據(jù)產(chǎn)品:
一般是指可以下載的數(shù)據(jù)集,比如CSV/DOC格式存在的。例如:
數(shù)據(jù)接口:
通過特定的技術(shù)手段去調(diào)用其他系統(tǒng),獲得數(shù)據(jù)的接口。
數(shù)據(jù)應(yīng)用:
數(shù)據(jù)應(yīng)用是指一個特定領(lǐng)域的數(shù)據(jù)及數(shù)據(jù)使用的應(yīng)用系統(tǒng),在上海公共數(shù)據(jù)平臺中,數(shù)據(jù)應(yīng)用關(guān)聯(lián)到一個完整的獨立的APP。
知識數(shù)據(jù)服務(wù)
萬方數(shù)據(jù)是典型的知識數(shù)據(jù)服務(wù)的類型,提供學(xué)術(shù)研究類知識的數(shù)據(jù)服務(wù)。主要服務(wù)類型根據(jù)領(lǐng)域不同會有所差別,如下圖所示:
那么什么是數(shù)據(jù)服務(wù)呢?
我個人覺得,通過某一種或多種方式提供數(shù)據(jù),就是數(shù)據(jù)服務(wù)。
我們先梳理一下歷史上數(shù)據(jù)服務(wù)的五種類型。
數(shù)據(jù)服務(wù)的五種類型
從提供數(shù)據(jù)的技術(shù)方式上,我們可以將數(shù)據(jù)服務(wù)分為以下五種類型。
Data API
這是最常用的一種數(shù)據(jù)服務(wù)的形式,用戶通過請求/響應(yīng)來訪問數(shù)據(jù)。優(yōu)勢是很容易公布/訂閱這些API接口。這類數(shù)據(jù)接口服務(wù)一般包括參數(shù),返回值,接口樣本,接口地址等。
常用的Data API是REST形式。
Event HUB
Event Hub的定義是:
An event investor is a component or service that sits between event publishers and event consumers to decouple the production of an event stream from the consumption of those events.
通過消息隊列(MQ)的方式,提供事件消息的數(shù)據(jù)服務(wù),典型的架構(gòu)如下圖所示:
Database
數(shù)據(jù)庫是最早的提供數(shù)據(jù)的服務(wù)形式,比如數(shù)據(jù)湖,當(dāng)用戶需要數(shù)據(jù)的時候,直接提供一個數(shù)據(jù)庫訪問鏈接給到用戶,從而直接訪問這個數(shù)據(jù)庫里的數(shù)據(jù)。
目前企業(yè)的業(yè)務(wù)部門對于其他數(shù)據(jù)的訪問形式,數(shù)據(jù)庫是很重要的一種,典型的場景就是業(yè)務(wù)部門在開發(fā)業(yè)務(wù)應(yīng)用的時候,需要數(shù)據(jù),那么直接問數(shù)據(jù)部門要數(shù)據(jù)庫的訪問權(quán)限,然后自己基于這個數(shù)據(jù)庫去做數(shù)據(jù)開發(fā),在系統(tǒng)中直接調(diào)用這些數(shù)據(jù)。
這樣的數(shù)據(jù)庫服務(wù)形式的優(yōu)點是靈活,但是缺點也很明顯,沒有權(quán)限劃分,需要業(yè)務(wù)部門有專業(yè)的數(shù)據(jù)開發(fā)能力,并且無法追溯,最重要的是,當(dāng)多個業(yè)務(wù)部門都利用這種方式訪問和使用數(shù)據(jù)的時候,會產(chǎn)生很多份數(shù)據(jù)拷貝,也就是企業(yè)數(shù)據(jù)不一致的重要的原因。
File
當(dāng)數(shù)據(jù)量比較大,或者沒有比較好的訪問通道的時候,數(shù)據(jù)文件也是一種提供服務(wù)的形式。比如,通過FTP文件服務(wù)器等。
Terminal & APP
前面四種數(shù)據(jù)服務(wù)形式的本質(zhì)都是提供某一種形式的數(shù)據(jù)集,而Terminal & APP的形式,則不僅包括數(shù)據(jù)集,還包括使用,訪問數(shù)據(jù)的方法和流程。
此類典型的樣例就是大智慧,同花順這樣的證券交易APP。
總結(jié)
我們從實時性,數(shù)據(jù)量,訪問頻率,可審計性,安全性等多個維度來對比以上五類數(shù)據(jù)服務(wù)。

在目前,數(shù)據(jù)中臺的語境里,主要趨勢是Data API,所以,我們下面重點來剖析Data API。
數(shù)據(jù)訪問的兩種形式
以上的五種數(shù)據(jù)服務(wù)類型,根據(jù)訪問的形式,都可以分為兩類:推(Push)和拉(Pull)
Push(推)
數(shù)據(jù)供應(yīng)端主動推送數(shù)據(jù)到數(shù)據(jù)消費端,典型的代表有事件訂閱和數(shù)據(jù)庫同步。
比如,物料主數(shù)據(jù)變化的時候,將最新的數(shù)據(jù)推送給所有的數(shù)據(jù)消費者系統(tǒng)。
這樣的形式是從供應(yīng)方的視角來處理的,所以不論數(shù)據(jù)消費者是否需要這些數(shù)據(jù),也不論消費者對于這些數(shù)據(jù)的使用場景是怎樣的,對于數(shù)據(jù)供應(yīng)方來講,都是無差別的推數(shù)據(jù)過去,哪怕消費者使用的頻率很低。
這樣的優(yōu)勢是,實時性很強,只要數(shù)據(jù)在源頭發(fā)生了變化,都會第一時間推送給數(shù)據(jù)消費方。
但是劣勢也很明顯:
第一,推送數(shù)據(jù)產(chǎn)生了很多的資源浪費,無差別的推送,存儲
第二,往往數(shù)據(jù)消費方需要二次加工這些推送來的數(shù)據(jù),才能使用
第三,消費者是否使用,如何使用,不好管理,無法跟蹤
Pull(拉)
數(shù)據(jù)消費方,根據(jù)自己的需要,從數(shù)據(jù)供應(yīng)端拉數(shù)據(jù)回來,這樣的典型服務(wù)類型包括:
Data API,文件下載,和Terminal&APP。
Pull是典型的的精益的形式,按需使用數(shù)據(jù),用什么獲取什么,什么時候用,什么時候獲取,用哪部分?jǐn)?shù)據(jù)獲取那部分?jǐn)?shù)據(jù)。
從數(shù)據(jù)消費者的視角來看
從數(shù)據(jù)消費者的視角來看,消息隊列(Event)模式的數(shù)據(jù)利用如下圖所示:
只有當(dāng)數(shù)據(jù)應(yīng)用方能夠直接使用這個數(shù)據(jù)消息的時候,應(yīng)用開發(fā)團隊才不需要二次開發(fā)這個數(shù)據(jù),否則應(yīng)用開發(fā)團隊需要在本地的存儲中再次存儲一遍這個數(shù)據(jù),并且構(gòu)建后端API,進一步加工這個數(shù)據(jù)。這樣帶來了前端應(yīng)用利用數(shù)據(jù)的復(fù)雜性,也帶來了一致性的問題。
采用數(shù)據(jù)API的方式提供服務(wù)的場景如下圖所示:
在數(shù)據(jù)處理和加工方與數(shù)據(jù)應(yīng)用方之間加入一層,數(shù)據(jù)服務(wù)層,從而可以提高靈活性和復(fù)用性,這樣讓數(shù)據(jù)應(yīng)用放可以直接使用數(shù)據(jù)服務(wù)而不再做任何加工處理,也能夠保證不同數(shù)據(jù)應(yīng)用使用同一個數(shù)據(jù)服務(wù),提高數(shù)據(jù)的一致性。
關(guān)于CQRS(命令查詢責(zé)任分離)
CQRS是對應(yīng)于CRUD的一種數(shù)據(jù)處理模式,使用與用于讀取信息的模型不同的模型來更新信息,是Greg Young提出來的。
詳見老馬的博客:CQRS。
從整個數(shù)據(jù)利用的趨勢來看,Data API是數(shù)據(jù)中臺未來主要的服務(wù)形式,所以下面重點剖析Data API。
Data API剖析
什么是API,在維基百科的解釋如下:
An application programming interface (API) is an interface or communication protocol between different parts of a computer program intended to simplify the implementation and maintenance of software.
一個應(yīng)用程序接口是兩個不同的計算機程序之間的接口或通信協(xié)議,目的是為了簡化軟件的開發(fā)和維護。
An API may be for a web-based system, operating system, database system, computer hardware, or software library.
一個API可以是Web系統(tǒng),操作系統(tǒng),數(shù)據(jù)系統(tǒng),計算機硬件或者是軟件類庫。
An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables, or remote calls. POSIX, Windows API and ASPI are examples of different forms of APIs. Documentation for the API usually is provided to facilitate usage and implementation.
一個API可以以多種形式存在,但是通常會包括特殊的路由規(guī)則,數(shù)據(jù)結(jié)構(gòu),對象,變量或者遠(yuǎn)程調(diào)用。POSIX,Windows和ASPI是不同的API形式。API通常會提供文檔和實現(xiàn)形式。
而,數(shù)據(jù)API是提供數(shù)據(jù)的應(yīng)用程序接口。在數(shù)據(jù)已經(jīng)成為企業(yè)的核心資產(chǎn)的趨勢下,數(shù)據(jù)API已經(jīng)成為了一種業(yè)務(wù)模式,比如,已經(jīng)有非常多的數(shù)據(jù)API市場用來聚集,生產(chǎn)和消費,交易各種數(shù)據(jù)API。
Data API的本質(zhì)
Data API本質(zhì)上就是一個遠(yuǎn)傳調(diào)用。
典型的包括:
API的三種類型
常用的API主要分為三種類型:
業(yè)務(wù)命令A(yù)PI
業(yè)務(wù)API以Command (命令)為主,實際上就是一個業(yè)務(wù)行為,包括Request/Response,也可以沒有Response的內(nèi)容,是為了執(zhí)行一個業(yè)務(wù)指令。
比如,創(chuàng)建訂單,創(chuàng)建用戶。
智能計算API
智能API是為了對數(shù)據(jù)進行計算,是對于輸入?yún)?shù)的加工,返回計算的結(jié)果。
比如計算最優(yōu)路徑,計算推薦價格等。
數(shù)據(jù)查詢API
數(shù)據(jù)API是對于已有數(shù)據(jù)的查詢,可以帶各種條件。
比如查詢用戶信息,獲取用戶畫像,獲取產(chǎn)品清單等。
數(shù)據(jù)中臺提供的API以智能API和數(shù)據(jù)API為主,我們下面重點分析數(shù)據(jù)API。
數(shù)據(jù)API的剖析
數(shù)據(jù)API的執(zhí)行過程
數(shù)據(jù)API的執(zhí)行過程可以歸納為三步:
請求,執(zhí)行和返回結(jié)果。
這與數(shù)據(jù)庫層的操作來說是能夠?qū)?yīng)上的,如下圖所示:
數(shù)據(jù)API的兩種形式
數(shù)據(jù)API可以分為兩種形式:
- 搜索API
用戶可以有一定的自主權(quán),從而能夠靈活的組織查詢邏輯,去獲取數(shù)據(jù)。
- 模板API
用戶只能根據(jù)確定的參數(shù)來訪問數(shù)據(jù),靈活度低。
數(shù)據(jù)API的三大成功要素
不論哪一種數(shù)據(jù)API,一個好的數(shù)據(jù)API需要具備以下三個成功要素。
快速靈活
因為業(yè)務(wù)用戶很多,用戶的需求變化也快,所以,好的數(shù)據(jù)API應(yīng)該有一定的靈活性,從而能夠按需快速響應(yīng)前端的需求。
準(zhǔn)確一致
數(shù)據(jù)的準(zhǔn)確性,一致性是數(shù)據(jù)API的基線。
安全合規(guī)
提供安全合規(guī)的數(shù)據(jù),確保數(shù)據(jù)的隱私,分級和和合規(guī),也是數(shù)據(jù)API必須保證的。
所以,我們歸納出一個高質(zhì)量的數(shù)據(jù)API的邏輯結(jié)構(gòu)如下:
要包括靈活的參數(shù)解析,安全的數(shù)據(jù)權(quán)限,快速的數(shù)據(jù)緩存,根據(jù)數(shù)據(jù)合規(guī)和區(qū)域特性,制定不同的數(shù)據(jù)存儲的架構(gòu),并且要有有效的日志追蹤體系,從而保障數(shù)據(jù)服務(wù)的質(zhì)量(SLA)。
以上這所有的,一切都是數(shù)據(jù)中臺中,數(shù)據(jù)API平臺組件應(yīng)該提供的基礎(chǔ)能力。
那么一個好的數(shù)據(jù)API平臺應(yīng)該是怎樣的呢?
請關(guān)注《凱哥講數(shù)據(jù)中臺》系列
推薦閱讀-2019 凱哥講數(shù)據(jù)中臺
#凱哥講數(shù)據(jù)中臺#從招行組織結(jié)構(gòu)調(diào)整看傳統(tǒng)數(shù)據(jù)管理部門急需的五大轉(zhuǎn)型
凱哥講數(shù)據(jù)中臺:數(shù)據(jù)中臺賦能企業(yè)數(shù)字化轉(zhuǎn)型的四個關(guān)鍵成功因素
數(shù)據(jù)驅(qū)動的數(shù)字化轉(zhuǎn)型:從流程驅(qū)動到數(shù)據(jù)驅(qū)動
加入凱哥講數(shù)字化的知識星球
