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

来源:https://www.cnblogs.com/milton/archive/2022/05/02/16216347.html
-Advertisement-
Play Games

聲明 個人原創, 轉載需註明來源 https://www.cnblogs.com/milton/p/16216347.html 數據類產品 最近的項目需要接觸大數據處理相關的產品, 涉及了ETL, 數據挖掘和統計, 數據可視化等功能, 因此瞭解了一下這個行業的產品和工具. 最近看的產品主要是 Qua ...


聲明

個人原創, 轉載需註明來源 https://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. 跟隨監管及市場需求, 定期維護

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背景 之前有文章提供了springboot多數據源動態註冊切換的整合方案,在後續使用過程中,發現在事務控制中有多種bug發生,決定對此問題進行分析與解決 前情提要 多數據源切換流程結構圖如下所示,包含幾個組成元素 自定義的數據源配置處理,通過DruidDataSource對象動態註冊到系統中 自定義 ...
  • 1.在pom.xml加入SpringSecurity的依賴 <!-- SpringSecurity對Web應用進行許可權管理 --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-secu ...
  • 使用Metalama為VisualStudio "重構"\ LiveTemplate 菜單中動態添加功能 ...
  • C#自定義配置文件教程,C#App.Config自定義配置文件教程,C#web.Config自定義配置節點 ...
  • 我前面幾篇隨筆介紹了關於幾篇關於SqlSugar的基礎封裝,已經可以直接應用在Winform項目開發上,並且基礎介面也通過了單元測試,同時測試通過了一些Winform功能頁面;本篇隨筆繼續深化應用開發,著手在在.net6框架的Web API上開發應用,也就是基於.net core的Web API應用... ...
  • 本文講講 Ubuntu 18 及以上版本配置 IP 的方法,為什麼它值得一講,因為以 Ubuntu 16 為首的版本的配置方法已經不適用了,如果你還不知道,那本文正好 get 一個新技能。 Ubuntu 18 之後版本配置方法 需要使用 netplan 工具。 對應配置文件: /etc/netpla ...
  • 文件和目錄 1. 文件系統 我們可以把一個磁碟分成一個或多個分區,每個分區包含一個文件系統,這個文件系統由很多柱面組成,而柱面中有一個非常重要的概念叫做 i 節點。 i 節點包含了文件的大部分信息,如文件類型,文件訪問許可權位,文件大小和指向文件數據的指針等,大多數信息都存在st_mode成員中,有兩 ...
  • MySQL學習(第一節自習課) 一. 軟體下載、安裝 下載地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->installer->community1 離線安裝版本,不要選帶web路徑的是離線安裝版本。 安裝省略 進程名稱:mysqld. ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...