數據類產品設計和實現思路

聲明

個人原創, 轉載需註明來源 //www.cnblogs.com/milton/p/16216347.html

數據類產品

最近的項目需要接觸大數據處理相關的產品, 涉及了ETL, 數據挖掘和統計, 數據可視化等功能, 因此了解了一下這個行業的產品和工具. 最近看的產品主要是 Quantexa CDI(contextual decision intelligence), SAS, OneTrust GRC. 結合對數據業務的理解分析一下這類產品的設計和技術實現.


業務場景拆分

數據類產品從業務場景上, 可以分為

  • 應對監管需求, 對自身業務的數據進行抽取和處理, 部署監管要求的規則, 生成符合監管要求的報告
  • 科研類場景(例如醫藥,勘探), 對線上線下採集的數據進行收集, 分析和驗證
  • 廣告推薦類產品, 根據數據進行決策
  • 金融風控, 反洗錢, 打分, 決策, 預警等
  • 工業自動化, 配合ERP, MES, IOT等系統進行數據的進一步分析和報告

不同的數據狀態, 可以分為

  • 靜態數據分析, 一般針對日誌, 交易流水等存量資訊進行事故分析, 用於周期跑批, 問題復盤, 案件調查等業務場景
  • 動態數據分析, 數據對象為實時的日誌, 交易流水, 感測器記錄等, 常用於業務監控和自動化, 例如網路安全的預警, 攔截, 交易的攔截, 風險預警等業務場景.

從純粹的功能上, 可以分為以下幾個功能模組:

  • 輸入適配
  • 建模轉換
  • 分析處理
  • 輸出適配
  • 行業邏輯

下面對各類分別說明


1. 輸入適配

這部分對標 SAS 的 SAS/ACCESS,

數據輸入相當於ETL中的E部分, 是整個系統的數據入口. 數據輸入模組通過已有的或用戶定義的規則, 將原始數據接入處理系統. 在數據產品中數據輸入是重要性很高, 並且對於用戶體驗和產品整體性能影響很大的一個模組.

數據輸入主要分為以下幾部分內容

介面適配

  • 數據源
    • 常見的傳統關係型資料庫 Oracle, DB2, SQL Server, MySQL, PostgreSQL
    • MongoDB, Redis, Hive, Clickhouse, TIDB 等新型資料庫
    • 以及 Spark, Kafka 等消息資料庫
  • 各種文件類型的解析, 例如CSV, Excel, Access, log日誌等
  • 壓縮文件格式的處理
  • 被動接收數據, 通過對第三方系統提供數據介面, 接收第三方系統推送的數據
  • 數據採集, 通過內建工具或用戶自定義工具採集數據

格式適配

  • 行數據, 傳統的關係型數據主要使用行數據
  • 列數據, HBASE等列資料庫
  • 地理數據, 二維, 三維坐標數據
  • 文本數據, HTML, XML, JSON 這類非結構數據

數據存儲

  • 對於讀取頻次較低, 或邏輯較為簡單的數據規則, 可以直接從數據源讀取數據進行處理
  • 對於讀取速度較慢的數據, 需要頻繁讀取的數據, 可以將數據快取在本地, 方便後續環節處理

預處理

這一步與校驗和轉換的區別在於是否與業務邏輯有關. 這一步僅在數據層面對讀取的數據進行凈化, 篩除無效的值以及做一些基礎轉換.

第三方數據導入

從第三方介面獲取數據, 如徵信介面, 高風險IP和地區名單等

技術面分析

數據輸入部分, 涉及的技術實現主要包含以下幾部分

1) 數據輸入框架

便於擴展新的數據源, 數值類型, 數據格式, 預處理規則等. 使數據系統適用於更多的業務場景, 避免過早遇到功能或性能瓶頸.

2) 數據存儲機制

  • 面向不同場景的需求, 用於存儲結構化, 半結構化和非結構化的數據, 需要滿足分析模組對數據容量, 訪問速度的要求
  • 提供MB級到PB級的數據存儲方案, 實現對不同體量的數據的存儲, 並保證數據存取速度, 保證數據的完整性和安全性
  • 對高速率數據的接收能力, 類似雙十一這種峰值每秒百萬交的數據接收, 如何保證高效且不丟失數據

3) 數值類型識別

將數據值抽象為幾種固定的基礎數值類型, 並在基礎數值類型上擴展出有實際意義的數值類型, 對輸入的數據需要有一定的自動識別能力.

4) 數據格式處理

  • 對常見格式的自動識別和處理, 例如CSV, Excel, Access
  • 對常見媒體格式的處理, 圖片格式, 影片格式, 流媒體解析(和存儲)
  • 對不同類型壓縮文件的解壓處理
  • 對非行結構數據的識別, 例如HTML, XML, JSON等
  • 對非結構化數據的識別, 例如新聞內容, 聊天記錄等

5) 預處理規則

  • 簡單的過濾邏輯, 例如數值校驗, 臟數據清理, 重複數據的判斷和清理
  • 基本的路由規則, 將數據分發到不同的流水線

6) 預警機制

當數據錯誤率超出預設閾值時, 通過多種途徑發出預警


2. 建模轉換

這部分對標於 SAS 的 Base SAS, SAS/WA 和 SAS/MDDB Server

數據建模和轉換是原始數據和分析處理之間的橋樑, 屬於ETL的T和L部分. 校驗轉換的職能主要有

模型定義

模型定義是分析和處理的需求, 不同的分析處理, 需要的數據輸入格式, 品質和數量都會不同, 這些會體現在模型定義上. 例如對於證券分析, 對於股票有不同時間單位的價格, 3秒, 5秒, 1天, 5天, 對每個時間單位有高值, 低值, 開盤, 收盤等不同價格, 只有滿足這些數據欄位和格式, 才能進行後續的數據分析處理.

當數據導入後, 需要對數據數值和格式進行判斷, 推薦最接近的模型

數據管理

  1. 查看數據
  2. 編輯單個數據
  3. 批量編輯數據
  4. 合併多個數據
  5. 拆分數據

數據轉換

數據轉換用於將原始數據適配至模型輸入

  1. 編輯轉換規則, 對源數據進行轉換. 例如從英制距離轉為公里, 從日期文本轉換為時間戳, 或者人民幣按當時的浮動匯率轉為美元
  2. 編輯轉換規則, 對源數據進行聚合轉換, 例如提取每日統計值產生新的數據序列
  3. 插件形式的數據轉換, 例如使用第三方介面從文本中提取關鍵詞, 提取熱詞
  4. 用規則組合創建管道, 用於複雜的數據轉換

技術實現

數據的校驗和轉換涉及的技術實現主要有

  1. 數據模型設計, 允許用戶創建自定義的數據模型
  2. 數據查看和手工編輯, 批量編輯
    • 本地的數據查看和編輯
    • 第三方數據源(關係型資料庫, 列資料庫, NoSQL等)的查看和編輯
  3. 數據轉換規則管理
  4. 第三方轉換介面的接入
  5. 數據管道的配置

3. 分析處理

數據分析和處理是數據類產品的核心模組, 主要負責模型的運行, 這一步集中了大量的計算和數據處理, 因此要設計合理的機制方便硬體擴容

任務分發

採用合適的任務分發機制, 確保資源分配均衡合理, 使用必要的緩衝機制削平業務毛刺.

資源管理

  • 對不同任務使用的計算資源進行調配, 實時增加/減少計算資源.
  • 根據任務的負載自動創建和分配資源, 以保證分析處理的服務品質
  • 當任務空閑時回收資源

性能監控

對計算資源的負載和錯誤率進行監控, 實時預警

技術實現

技術上, 對於分片較小的任務場景, 可以使用集中服務註冊和分發機制, 對於分片較大的任務, 可以採用消息隊列機制, 技術上的目標主要有

  1. 儘可能簡單穩健, 易於維護
  2. 任務定時機制
  3. 有完善的完成確認機制, 確保任務不丟失
  4. 保證集群的工作效率
  5. 便於擴容

視業務場景不同, 可以採用Dubbo, Spring Cloud, Kafka 或 K8s 等不同維度的方案


4. 輸出適配

這部分對標於 SAS 的 SAS/GHAPH, SAS/IntrNet

輸出功能包括數據可視化, 數據導出, 數據輸出介面, 自動化操作(預警, 攔截等). 數據輸出功能實際上分布於系統中的每個環節.

從產品功能上分, 主要有以下幾方面

數據可視化

數據可視化包括以下幾方面

  • 結構化數據可視化
    • 行資料庫可視化
    • 列資料庫可視化
  • 半結構化數據可視化
    • MongoDB等文檔型資料庫
    • Memcache, Redis等NoSQL資料庫
    • HTML, XML, JSON等格式化文本
  • 非結構化數據可視化
    • 新聞內容聊天記錄等
  • 二進位內容可視化
    • 圖片
    • 音頻
    • 影片
    • 行業數據格式

數據導出格式化

導出格式化包括

  • 輸出CSV, Excel
  • 輸出圖片(各種chart), gif(動態chart), svg等
  • 輸出PDF
  • 輸出音頻, 影片
  • 其他行業格式

數據裝載(Load)

將數據通過介面, 導出至其他持久化存儲

  • 關係型資料庫
  • 非關係型資料庫

輸出至介面

根據業務場景的需要, 通過介面與第三方系統集成, 實現業務聯動, 對實時數據處理產生的預警, 攔截和報告, 使用多種途徑進行傳輸.

技術實現

在技術上

  1. 數據查看, 對各種數值類型的查看
  2. 對數據生成各種類型的chart, 以及動態chart
  3. 對不同格式文件和數據的生成
  4. 處理異構數據之間的映射轉換
  5. 第三方介面適配

5. 行業邏輯

這部分對標於 SAS 的 SAS/QC, SAS/ETS, SAS/OR, SAS/ITSV, SAS/GIS, SAS/CFO Vision

行業邏輯是搭建在前面的功能模組之上的上層建築, 通過行業經驗以及監管需求創建好標準數據模型和輸入輸出機制, 預置業內常見第三方系統的適配, 降低行業用戶使用門檻, 實現快速部署. 主要的產品功能包括

介面集成

對行業常見的上下游系統介面, 包括監管介面, 進行集成, 用戶只需要配置賬戶環境, 就可以進行數據導入導出

數據模型管理

內建行業數據模型, 只需要用戶數據滿足模型入參條件, 就可以使用內建的模型進行處理

報表管理

內建常用報表, 用戶可以直接使用或只需要少量修改, 就可以用於己方業務

用戶培訓

提供相關的業務培訓, 覆蓋用戶需求

技術實現

技術上更多的是調研客戶的行業需求, 包括監管規定, 當前用戶的使用習慣

  1. 總結出標準的數據模型, 處理流程和報表格式
  2. 在基礎模組之上實現業務邏輯
  3. 適配上下游系統介面
  4. 跟隨監管及市場需求, 定期維護