企業(yè)運(yùn)營(yíng)多年會(huì)積累大量的數(shù)據(jù),這些數(shù)據(jù)會(huì)存儲(chǔ)在各種應(yīng)用系統(tǒng)和技術(shù)平臺(tái)中,例如關(guān)系型數(shù)據(jù)庫(kù),Hadoop 分布式文件系統(tǒng)和文件系統(tǒng),也會(huì)以各種各樣的格式存儲(chǔ),例如服務(wù)器日志,JSON,Parquet,純文本,數(shù)據(jù)庫(kù)導(dǎo)出文件等,如何經(jīng)濟(jì)的統(tǒng)一管理這些數(shù)據(jù),并且在數(shù)據(jù)加工和分析需要的時(shí)候能夠快速訪問和查詢這些數(shù)據(jù),無需頻繁移動(dòng)和多份復(fù)制,是企業(yè)面臨的挑戰(zhàn)。
業(yè)界十年前提出了數(shù)據(jù)湖的概念,發(fā)展到今天,公有云服務(wù)商更多的把低成本,高可用性,安全的對(duì)象存儲(chǔ)作為推薦的數(shù)據(jù)湖解決方案,同時(shí)為了讓用戶有效使用這些數(shù)據(jù)創(chuàng)造價(jià)值,湖(數(shù)據(jù)湖)倉(cāng)(數(shù)據(jù)倉(cāng)庫(kù))一體解決方案也在不斷發(fā)展,但現(xiàn)在其他方案存在諸多限制,例如很多的湖倉(cāng)一體引擎都是基于 Hadoop 或 Spark 技術(shù)體系之上,因此:
·技術(shù)組件眾多,部署復(fù)雜,手工維護(hù)工作量較大,
·不同查詢場(chǎng)景下數(shù)據(jù)往往要多份復(fù)制,數(shù)據(jù)膨脹比較快,
·支持的 SQL 有限,提供的分析功能過于簡(jiǎn)單,
·安全管控能力較弱
·還需要使用其他多種工具再加工等等
這些對(duì)于技術(shù)人員相對(duì)較少的企業(yè)級(jí)客戶來說,都會(huì)帶來巨大的挑戰(zhàn),也不利于數(shù)據(jù)的快速應(yīng)用。
Oracle 多年來一直提供基于 Oracle SQL 的融合的企業(yè)級(jí)全數(shù)據(jù)管理解決方案,這些技術(shù)在公有云中也不斷發(fā)展完善,逐漸形成了基于 SQL 的湖倉(cāng)一體的數(shù)據(jù)湖倉(cāng)(Lake House=Data Lake+DataWarehouse)解決方案,幫助企業(yè)實(shí)現(xiàn)低成本統(tǒng)一存儲(chǔ)各種類型數(shù)據(jù),并且能夠利用 Oracle SQL 和高效穩(wěn)定安全的企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)引擎來靈活和深度使用這些數(shù)據(jù),從而幫助企業(yè)創(chuàng)造價(jià)值,提升數(shù)字化轉(zhuǎn)型的敏捷性。
Oracle 湖倉(cāng)一體(LakeHouse)模式結(jié)合了來自數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖的最佳元素。它提供了多個(gè) Oracle 云服務(wù)協(xié)同工作的現(xiàn)代化數(shù)據(jù)平臺(tái),可輕松融合訪問數(shù)據(jù),移動(dòng)數(shù)據(jù)、統(tǒng)一治理,并提供根據(jù)用戶的應(yīng)用場(chǎng)景和偏好使用最佳的開源和商業(yè)工具的能力。
Oracle Lakehouse 模式的關(guān)鍵元素包括:
1、數(shù)據(jù)倉(cāng)庫(kù):用于結(jié)構(gòu)化,高價(jià)值的數(shù)據(jù),直接從應(yīng)用數(shù)據(jù)庫(kù)集成過來,也可以存儲(chǔ)其他數(shù)據(jù)技術(shù)的處理結(jié)果,以結(jié)構(gòu)化為主,包括各種數(shù)據(jù)類型,屬性圖,地理,JSON 等,同時(shí)可以直接融合訪問數(shù)據(jù)湖中的數(shù)據(jù)。
2、數(shù)據(jù)湖:用于原始的、不易理解的、價(jià)值較低的數(shù)據(jù)或歷史數(shù)據(jù)。通常用于加載到數(shù)據(jù)倉(cāng)庫(kù)之前的暫存,歷史冷數(shù)據(jù)的存檔和用于訓(xùn)練機(jī)器學(xué)習(xí)模型的綜合數(shù)據(jù)的存儲(chǔ)
3、管理的開源服務(wù):支持用于數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)分析的主流開源技術(shù),包括 Apache Hadoop、Apache Spark 和 Redis 等,通過組件也可以直接訪問湖中數(shù)據(jù)。
4、數(shù)據(jù)集成:數(shù)據(jù)湖倉(cāng)中的數(shù)據(jù)可以根據(jù)需要和使用場(chǎng)景在數(shù)據(jù)湖、數(shù)據(jù)倉(cāng)庫(kù)和開源分析環(huán)境之間移動(dòng)和靈活處理,批量,實(shí)時(shí)或基于服務(wù)調(diào)用方式。
5、數(shù)據(jù)目錄:維護(hù)所有可用數(shù)據(jù)的統(tǒng)一的、完整的視圖,可定義業(yè)務(wù)視圖,以便發(fā)現(xiàn)和管理。
如下圖所示,Oracle 提供了一系列云平臺(tái)服務(wù),支持?jǐn)?shù)據(jù)湖倉(cāng)的卓越實(shí)現(xiàn),各組件、數(shù)據(jù)目錄和數(shù)據(jù)湖之間的緊密集成,實(shí)現(xiàn)了針對(duì)對(duì)象存儲(chǔ)的無縫查詢,在 OCI 或客戶的數(shù)據(jù)中心提供全面的數(shù)據(jù)和隱私保護(hù)(具體服務(wù)介紹請(qǐng)見本文尾部)。
Oracle 湖倉(cāng)一體解決方案不同之處在于:
·集成數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖:能處理所有數(shù)據(jù)的融合分析任務(wù),考慮數(shù)據(jù)存儲(chǔ)的時(shí)候,可以根據(jù)數(shù)據(jù)類型,讀寫需求,整體成本,選擇最合適的存儲(chǔ)方式,而不是為了適應(yīng)某種技術(shù)需要逐層處理和匯總加工。
·消除數(shù)據(jù)孤島:數(shù)據(jù)可以根據(jù)需要在倉(cāng)庫(kù)和湖之間協(xié)同訪問,無論是結(jié)構(gòu)化,半結(jié)構(gòu)化還是非結(jié)構(gòu)化數(shù)據(jù),都可以針對(duì)內(nèi)容進(jìn)行查詢。也可以按需進(jìn)行移動(dòng),加工和轉(zhuǎn)換。
·支持流行的開源技術(shù)和商業(yè)工具:支持用戶對(duì)于開源和商業(yè)工具技術(shù)路線的選擇來訪問所有數(shù)據(jù)。Oracle 提供了豐富的 SQL,支持統(tǒng)一對(duì)數(shù)據(jù)進(jìn)行查詢和處理,用戶也可以通過開源的 Hadoop 相關(guān)組件,聯(lián)合查詢數(shù)據(jù)。
·適用場(chǎng)景的廣泛性:支持多種數(shù)據(jù)源、數(shù)據(jù)格式和數(shù)據(jù)類型(結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化)。支持各種數(shù)據(jù)消費(fèi)程序和工作負(fù)載,包括所有行業(yè)的大數(shù)據(jù)分析、SQL 和 BI、數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)。
下面我們就以跨境電商的數(shù)據(jù)應(yīng)用場(chǎng)景為例,介紹一下 Oracle 湖倉(cāng)一體是如何實(shí)現(xiàn)數(shù)據(jù)融合分析探索的。其中涉及到的數(shù)據(jù)包括網(wǎng)站日志,訂單歷史數(shù)據(jù),應(yīng)用系統(tǒng)數(shù)據(jù)和第三方數(shù)據(jù)等。使用的場(chǎng)景是收集網(wǎng)站日志,分析網(wǎng)站指標(biāo)和用戶瀏覽行為,結(jié)合商品信息和歷史訂單,利用機(jī)器學(xué)習(xí)能力實(shí)現(xiàn)商品關(guān)聯(lián)分析。
電商日志存儲(chǔ)的信息比較多,尤其是用戶訪問網(wǎng)站的行為或網(wǎng)站統(tǒng)計(jì)指標(biāo)的來源,因?yàn)槿罩局邪▉碓L者IP地址,瀏覽器類型,訪問時(shí)間,訪問頁面,上一個(gè)訪問頁面,會(huì)話 ID 等信息,有的自開發(fā)網(wǎng)站也會(huì)把應(yīng)用訪問或操作信息以 JSON 方式記錄在日志中,雖然現(xiàn)在很多網(wǎng)站也采用埋點(diǎn)的方式來記錄和分析用戶的行為,但日志分析也有諸多優(yōu)勢(shì),例如可以不改變現(xiàn)有網(wǎng)頁,基于 Oracle 湖倉(cāng)一體技術(shù)快速獲取和啟動(dòng)分析。
針對(duì)網(wǎng)站日志,Oracle 支持多種方式收集,針對(duì)應(yīng)用部署在第三方云上,日志也在其中,可以通過開源的 FileBeat / Fluented 把日志收集到 Oracle Streaming Service 或 kafka,Oracle 提供了 Service Connector 可以直接把數(shù)據(jù)從 Streaming Service 存儲(chǔ)到對(duì)象存儲(chǔ)中,如果應(yīng)用部署在 Oracle 云中,那么可以啟動(dòng) Oracle 提供的部署在 VM 的 Agent 服務(wù),通過配置 Service Connector,也可以把日志數(shù)據(jù)直接收集,自動(dòng)化存儲(chǔ)到對(duì)象存儲(chǔ)中,而 ADW 可以直接通過外部表方式使用 OracleSQL 查詢這些日志數(shù)據(jù),無需移動(dòng)或預(yù)先轉(zhuǎn)化和提取。
如下是基于 Magento 構(gòu)建的示例電商網(wǎng)站,與 Ngnix 集成后生成的網(wǎng)站訪問日志,通過 Service Connector 自動(dòng)抽取以后的格式,其中某一條示例:
其中 “data” 后面的內(nèi)容就是來自于 Ngnix 日志,包括客戶端瀏覽器里類型,訪問狀態(tài),訪問者 IP,訪問方法,訪問的頁面 URI,從哪個(gè)頁面跳轉(zhuǎn)過來,內(nèi)容長(zhǎng)度,日志文件來源等,Oracle ServiceConnector 在抽取時(shí)會(huì)在每一條后面加上一些系統(tǒng)參數(shù),例如時(shí)間,租戶和實(shí)例信息等,獲取的內(nèi)容會(huì)定期以壓縮文件 gz 形式傳輸存儲(chǔ)在配置的對(duì)象存儲(chǔ) bucket 中。
這種格式日志存儲(chǔ)在對(duì)象存儲(chǔ)中,可以通過 Oracle Function 編寫代碼處理,也可以通過 Data Flow 服務(wù)按需通過 Spark 腳本處理,或者通過 OracleData Integration 圖形化界面處理,但如果只是進(jìn)行一些統(tǒng)計(jì)查詢,也可以通過 ADW 直接訪問和查詢?nèi)罩緮?shù)據(jù),只是簡(jiǎn)單配置和映射,無需編寫代碼和移動(dòng)數(shù)據(jù)。
如下是 ADW 中通過配置,將特定 bucket 下收集的所有日志壓縮文件映射成外部表 ECOM_ACCESS_LOG_EXT_JSON,其中 objstorage_05 是事先配置的可訪問 bucket 的憑證:
執(zhí)行顯示成功后,查詢 ECOM_ACCESS_LOG_EXT_JSON 內(nèi)容,可以看到表只有一個(gè)類型是 BLOB 的字段??梢岳?ADW 對(duì) JSON 的支持,無需把 JSON 格式拆開,即可通過函數(shù)實(shí)現(xiàn)對(duì) JSON 內(nèi)部?jī)?nèi)容的提取,同時(shí)可以利用 ADW 對(duì)正則表達(dá)式的支持,過濾掉一部分網(wǎng)頁上圖片或其他文件的鏈接,只統(tǒng)計(jì)主頁面,創(chuàng)建視圖,具體如下:
對(duì)視圖 v_ecom_log_mgt 進(jìn)行查詢,可以看到如下結(jié)果:
直接在 Oracle 分析云 OAC 中將視圖 v_ecom_log_mgt 加入生成新的數(shù)據(jù)集,可以看到如下效果:
如果這些數(shù)據(jù)格式不滿足業(yè)務(wù)人員分析需求,也可以通過 OAC 中的數(shù)據(jù)流對(duì)這個(gè)數(shù)據(jù)集進(jìn)行加工,無需編碼,生成新的數(shù)據(jù)集,例如可以提取 URL 中的商品代碼,拆分出瀏覽器和操作系統(tǒng)信息等:
用生成的新的日志數(shù)據(jù)集創(chuàng)建數(shù)據(jù)分析項(xiàng)目,和商品數(shù)據(jù)集輕建模關(guān)聯(lián),簡(jiǎn)單拖曳,即可以快速形成數(shù)據(jù)分析圖表,包括訪問的客戶端 IP 分布,操作系統(tǒng)瀏覽器分布,訪問的動(dòng)態(tài)商品 ID 和 SKU,網(wǎng)頁訪問路徑等,也可以針對(duì)某些客戶或時(shí)間段靈活過濾,如圖:
接下來我們可以針對(duì)用戶瀏覽的商品 SKU,結(jié)合歷史購(gòu)買記錄,利用 ADW 的機(jī)器學(xué)習(xí)能力,進(jìn)行商品關(guān)聯(lián)分析,看看客戶歷史購(gòu)買特定商品的同時(shí)購(gòu)買可能性比較大的其他商品有哪些,這樣就可以在用戶瀏覽這些商品的時(shí)候,進(jìn)行關(guān)聯(lián)推薦。
有些跨境電商企業(yè)已經(jīng)構(gòu)建了大數(shù)據(jù)集群,存儲(chǔ)和處理產(chǎn)生的歷史數(shù)據(jù),為了節(jié)省成本,往往會(huì)把大數(shù)據(jù)產(chǎn)生的數(shù)據(jù)存儲(chǔ)在對(duì)象存儲(chǔ)中,以 Parquet 或者 ORC 格式,針對(duì)這些數(shù)據(jù),可以以文件方式存儲(chǔ)到對(duì)象存儲(chǔ)上,ADW 也可以無需移動(dòng),直接配置即可查詢?cè)L問。
Parquet 文件已經(jīng)帶有了數(shù)據(jù)格式,因此 format 中不用定義格式,ADW 會(huì)自動(dòng)讀取并且進(jìn)行數(shù)據(jù)格式映射,建立外部表 sales_history_ext。為了業(yè)務(wù)人員分析方便,可以直接構(gòu)建業(yè)務(wù)視圖,把原始列名轉(zhuǎn)化為具有業(yè)務(wù)語義的名稱,這樣可以直接作為數(shù)據(jù)集快速分析:
在 OAC 中通過拖曳形成分析圖表,瀏覽商品購(gòu)買地區(qū)分布和價(jià)格折扣,稅率等分布,可以看到商品在歐洲,東非和西亞銷售比較好。
使用 ADW 提供的 Machine Learning 的 Web 界面,可以利用 SQL 實(shí)現(xiàn)機(jī)器學(xué)習(xí)建模和預(yù)測(cè),我們使用銷售歷史數(shù)據(jù),將訂單和客戶作為購(gòu)買商品的分布鍵,對(duì)商品關(guān)聯(lián)性進(jìn)行智能分析,可以獲得商品關(guān)聯(lián)關(guān)系,即客戶在購(gòu)買商品 A 的同時(shí),購(gòu)買可能性比較大的商品有哪些。以前面查詢的商品 2798,2799 和 2807 為例,可以在 Machine Learning 中通過機(jī)器學(xué)習(xí)獲得關(guān)聯(lián)度比較高的其他商品:
也可以在 OAC 中關(guān)聯(lián)數(shù)據(jù)集,實(shí)現(xiàn)商品關(guān)聯(lián)的動(dòng)態(tài)過濾和聯(lián)動(dòng)分析:
第三方提供的導(dǎo)出數(shù)據(jù),或者應(yīng)用批量導(dǎo)出的數(shù)據(jù),如果是以 CSV 方式,可以直接被 ADW 作為外部表使用,如果是 JSON 格式,和前面解析日志文件內(nèi)容類似,ADW 也能夠完美支持,不需要預(yù)先處理拆分JSON 的關(guān)鍵字和值,而是按照需求,可以直接使用 SQL 或者視圖方式定義,提取出 JSON 整個(gè)字符串中的特定關(guān)鍵字取值。
最后介紹一下 Oracle 云中湖倉(cāng)一體解決方案相關(guān)的關(guān)鍵云服務(wù):
·Oracle 自治數(shù)據(jù)倉(cāng)庫(kù)云服務(wù)(ADW)提供了簡(jiǎn)單,快速,彈性的企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)/數(shù)據(jù)集市能力,自動(dòng)優(yōu)化數(shù)據(jù)管理和處理交付,易于管理和使用,聚焦在數(shù)據(jù)本身和業(yè)務(wù)。
·Streaming Service 支持實(shí)時(shí)數(shù)據(jù)流接收和訂閱,與 Kafka 兼容,接收和發(fā)布實(shí)時(shí)數(shù)據(jù)流,例如事件,日志提取等,也可自建 Kafka 集群
·Big Data Service 提供安全可靠,靈活擴(kuò)展的Hadoop集群及相關(guān)組件,支持?jǐn)?shù)據(jù)快速寫入,簡(jiǎn)單查詢,復(fù)雜計(jì)算多種場(chǎng)景。
·Cloud SQL 支持通過 SQL 統(tǒng)一訪問大數(shù)據(jù)云 Hadoop,Hive,Kafka 中的數(shù)據(jù),支持結(jié)合 ADW 通過 SQL 融合分析跨平臺(tái)數(shù)據(jù)
·通過 HDFS Connector,可實(shí)現(xiàn)大數(shù)據(jù)云服務(wù)數(shù)據(jù)和對(duì)象存儲(chǔ)之間的集成,包括把數(shù)據(jù)卸載到對(duì)象存儲(chǔ)中,或者導(dǎo)入數(shù)據(jù)和通過 Hive 外部表方式直接訪問對(duì)象存儲(chǔ)中數(shù)據(jù),也支持其他組件外部表訪問,例如 Presto。
·Analytics Cloud 提供經(jīng)典商務(wù)報(bào)表,敏捷可視化和機(jī)器學(xué)習(xí)能力,便于快速探索和數(shù)據(jù)洞察,轉(zhuǎn)化數(shù)據(jù)價(jià)值
·Data Flow 提供了 Spark 離線計(jì)算服務(wù),按需啟動(dòng)停止和按使用計(jì)費(fèi)。它提供日志管理和運(yùn)行時(shí)環(huán)境來執(zhí)行應(yīng)用程序,消除了設(shè)置基礎(chǔ)設(shè)施、集群配置、軟件安裝、存儲(chǔ)和安全性的需要。
·Data Science 提供了交互協(xié)同的機(jī)器學(xué)習(xí)環(huán)境,內(nèi)置多種 Python 機(jī)器學(xué)習(xí)開發(fā)包,支持?jǐn)?shù)據(jù)科學(xué)家構(gòu)建、訓(xùn)練、部署和管理機(jī)器學(xué)習(xí)模型。數(shù)據(jù)科學(xué)家可以使用 Oracle 增強(qiáng)的 Oracle 加速數(shù)據(jù)科學(xué)(ADS)庫(kù)進(jìn)行自動(dòng)化機(jī)器學(xué)習(xí)(AutoML)、模型評(píng)估和模型解釋。
·Data Catalog 支持作為單一協(xié)作環(huán)境來管理技術(shù)、業(yè)務(wù)和運(yùn)營(yíng)元數(shù)據(jù)??梢詮母鞣N可使用公共或私有 IP 地址訪問的受支持?jǐn)?shù)據(jù)源中獲取技術(shù)元數(shù)據(jù),可以組織、查找、訪問、理解、豐富和激活此元數(shù)據(jù)。利用按需或基于計(jì)劃的自動(dòng)收集來確保數(shù)據(jù)目錄始終具有最新信息。
·Data Integration 是一項(xiàng)完全托管的無服務(wù)器云服務(wù),提供圖形化的 Oracle 數(shù)據(jù)流設(shè)計(jì)器,有助于簡(jiǎn)化復(fù)雜的數(shù)據(jù)提取、轉(zhuǎn)換和加載過程。