0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數(shù)據(jù)處理和數(shù)據(jù)工程的4個設計原則

汽車玩家 ? 來源:今日頭條 ? 作者:聞數(shù)起舞 ? 2020-05-03 17:35 ? 次閱讀

設計模式的實踐在面向對象編程(OOP)中最為流行,在Erich Gamma和Richard Helm的經(jīng)典著作《設計模式:可重用的面向對象軟件的元素》中已得到有效的解釋和總結。 以下是維基百科中"設計模式"的定義:

"軟件設計模式是針對軟件設計中給定上下文中的常見問題的通用,可重用的解決方案。 它不是可以直接轉換為源代碼或機器代碼的最終設計。 它是如何解決可在許多不同情況下使用的問題的描述或模板。 設計模式是形式化的最佳實踐,程序員可以在設計應用程序或系統(tǒng)時用來解決常見問題。"

對于數(shù)據(jù)科學,許多人可能會問過同樣的問題:數(shù)據(jù)科學編程是否具有設計模式? 我會說是的。 但是,為了將它們與OOP區(qū)別開來,我將它們稱為"數(shù)據(jù)科學設計原理",其本質含義與OOP設計模式相同,但級別更高。 受羅伯特·馬丁(Robert Martin)的"清潔架構"一書的啟發(fā),本文重點介紹了數(shù)據(jù)處理和數(shù)據(jù)工程的4個頂級設計原則。 我的下一篇文章將討論優(yōu)化性能的通用設計原理。 在這兩個領域中,都有可重復使用的解決方案和最佳實踐,它們已被證明能夠:

· 縮短整體開發(fā)周期;

· 使數(shù)據(jù)過程更易于維護(無論使用哪種編程語言或數(shù)據(jù)準備工具);

· 使系統(tǒng)更加開放和易于操作;

· 從一開始就確保數(shù)據(jù)質量。

設計原則1:始終從數(shù)據(jù)集和數(shù)據(jù)實體的設計入手

每個數(shù)據(jù)過程都具有3個最小的組成部分:輸入數(shù)據(jù),輸出數(shù)據(jù)和它們之間的數(shù)據(jù)轉換。 無論何時設計數(shù)據(jù)流程,首先要做的就是清楚地定義輸入數(shù)據(jù)集以及輸出數(shù)據(jù)集,包括:

· 所需的輸入數(shù)據(jù)集和參考數(shù)據(jù)

· 要創(chuàng)建的輸出數(shù)據(jù)集

· 每個數(shù)據(jù)集中的數(shù)據(jù)字段

· 每個字段的數(shù)據(jù)類型,例如文本,整數(shù),浮點數(shù),列表等,

· 確定每個記錄的唯一性的字段

· 每個字段的預期數(shù)據(jù)模式,包括它是否可以缺少值和明確的值列表

· 數(shù)據(jù)集與組織中其他現(xiàn)有數(shù)據(jù)集的關系

這類似于應用于數(shù)據(jù)庫的所謂數(shù)據(jù)建模,有時也稱為"數(shù)據(jù)庫邏輯設計"。 此處的關鍵字是"邏輯的",因為它應該在實施決策之前發(fā)生。 數(shù)據(jù)集可以寫入磁盤并永久存儲在公司內部,并且最終將成為其他流程和應用程序訪問或使用的真正資產(chǎn)。 因此,它是真正重要的,并且應該準確準確地定義,并采用由數(shù)據(jù)治理驅動的最佳實踐和策略。 特別是,應根據(jù)業(yè)務需求或下游組件或流程的需求定義輸出數(shù)據(jù)集。 輸入數(shù)據(jù)集應與其源保持一致,以便可以輕松地在不同系統(tǒng)之間跟蹤數(shù)據(jù)沿襲。

在進行邏輯設計之后,可以將給定數(shù)據(jù)集的物理位置和數(shù)據(jù)結構確定為系統(tǒng)設計的一部分。 通常,物理結構可能與邏輯設計不同。 一個典型的例子是,邏輯設計中的字段名稱應使用普通詞以使其更有意義和可讀性,而物理字段名稱必須考慮系統(tǒng)或軟件的限制。 例如:

· 邏輯字段名稱:員工名稱

· 物理字段名稱(不能有空格,并且對字符數(shù)有限制):emp_nm

更改組織中的數(shù)據(jù)平臺時,邏輯定義不應更改,而數(shù)據(jù)集的物理表示形式可以根據(jù)系統(tǒng)要求和功能進行重新設計。

如果流程需要多個步驟,則還需要定義中間數(shù)據(jù)集的內容,這可以用于不同目的:

· 用于數(shù)據(jù)質量檢查

· 提供流程檢查點和階段,以便在流程失敗時無需始終從頭開始重新運行

· 充當另一個子流程的輸入,或可供其他系統(tǒng)或用戶使用

與用于數(shù)據(jù)處理邏輯的代碼相比,數(shù)據(jù)實體花費更長的時間和更多的精力來進行更改以產(chǎn)生更大的影響,這主要是因為它已經(jīng)保存了數(shù)據(jù)并且可以被其他流程使用。 另一方面,一旦定義了輸入,中間和輸出數(shù)據(jù)集,則數(shù)據(jù)處理本身的框架就位。 我們經(jīng)??吹綌?shù)據(jù)工程師開始構建流程,而沒有先明確定義輸出。 這很容易導致2種后果:1)更改輸出時,進行更大的更改,甚至對流程進行修改; 2)輸出取決于處理邏輯,因此,錯過了一些要求或定義不明確。 因此,在開始設計技術流程之前,請務必先定義數(shù)據(jù)集。 實際上,無論如何,處理邏輯很大程度上取決于輸入和輸出的數(shù)據(jù)定義。

數(shù)據(jù)集和數(shù)據(jù)實體的邏輯設計還與遵循組織標準的初始業(yè)務需求收集,數(shù)據(jù)發(fā)現(xiàn)和數(shù)據(jù)治理過程緊密相關。 此外,謹慎的邏輯設計應考慮組織內的數(shù)據(jù)共享,如果在公司的其他地方存在字段或數(shù)據(jù),則應避免重復數(shù)據(jù)集(請參閱我的文章:主數(shù)據(jù)管理:數(shù)據(jù)策略的重要組成部分)。 最后,具有良好治理的清晰數(shù)據(jù)集邏輯設計是從一開始就確保數(shù)據(jù)質量的關鍵步驟(請參閱我的文章:確保和維持數(shù)據(jù)質量的7個步驟)。

設計原則2:將業(yè)務規(guī)則與處理邏輯分開

在羅伯特·馬?。≧obert Martin)的"清潔體系架構"一書中,原則之一是從軟件角度尤其是從OOP功能將業(yè)務規(guī)則與插件分開。 但是,在數(shù)據(jù)工程中,存在相似的原理,而業(yè)務規(guī)則具有更廣泛的含義。 首先,業(yè)務規(guī)則由不同類型組成,例如,營銷,財務,安全性或合規(guī)性中的特定方法。 在許多情況下,業(yè)務部門也可以驅動數(shù)據(jù)清理和標準化的規(guī)則,因此,它們被視為業(yè)務規(guī)則。 業(yè)務規(guī)則通常具有3個特征:

· 需要由業(yè)務組織或業(yè)務分析師進行審查

· 可能經(jīng)常更改并且需要快速周轉

· 如果未正確配置或執(zhí)行它們,則會導致嚴重的影響和后果

業(yè)務規(guī)則的管理和執(zhí)行對于數(shù)據(jù)過程的成功至關重要。 好的設計應考慮以下方面:

1.模塊化

相同類型的規(guī)則應在相同的數(shù)據(jù)過程,模塊或功能中處理。 另一方面,不同類型的規(guī)則不應駐留在相同的流程,模塊或功能中。 否則,將難以管理業(yè)務規(guī)則變更的影響,并且流程將變得更加難以維護。

讓我們舉一個處理客戶調查數(shù)據(jù)的小例子,您需要清理原始數(shù)據(jù),對其進行標準化,然后將標準化數(shù)據(jù)加載到數(shù)據(jù)庫表中。 這里的輸出是標準數(shù)據(jù)庫表,而您的測量數(shù)據(jù)是原始輸入。 有兩種構建過程的方法:

數(shù)據(jù)處理和數(shù)據(jù)工程的4個設計原則

數(shù)據(jù)清理規(guī)則與字段映射規(guī)則不同:數(shù)據(jù)清理規(guī)則基于輸入數(shù)據(jù)的值,而字段映射則基于輸入和輸出的數(shù)據(jù)結構。鑒于此,選項1更好,因為它允許獨立于字段映射的規(guī)則來更改數(shù)據(jù)清理規(guī)則,因此與選項2相比,它具有更大的靈活性和簡便性,并且對規(guī)則修改的影響較小。分離不同類型的規(guī)則可以更好地管理規(guī)則,同時對其他類型的規(guī)則以及其他處理邏輯的影響最小。此外,針對一種業(yè)務規(guī)則的特殊功能或模塊可以在需要時成熟為獨立的服務,然后可以針對其他用例輕松地進行單獨更改或增強。

2.業(yè)務規(guī)則的元數(shù)據(jù)存儲

只要有可能,應將經(jīng)常更改的部分業(yè)務規(guī)則抽象出來并存儲在與編程代碼本身分開的存儲庫(例如數(shù)據(jù)庫)中。 有了這種分離之后,便可以在其之上構建應用程序或API,業(yè)務分析人員和/或業(yè)務用戶可以通過該應用程序或API查看和修改業(yè)務規(guī)則。 在處理方面,引擎僅在執(zhí)行時從存儲庫中讀取規(guī)則,然后將規(guī)則應用于輸入數(shù)據(jù),而無需將任何業(yè)務邏輯硬編碼到流程本身中。

3.業(yè)務規(guī)則的版本控制和記錄

在將業(yè)務規(guī)則存儲在元數(shù)據(jù)存儲庫中并進行單獨管理之后,進一步的版本控制和日志記錄功能將變得非常強大,從而使用戶能夠在批準之前更改新版本中的規(guī)則,并將結果與先前版本的結果進行比較 或發(fā)布更改。 此外,記錄每個業(yè)務規(guī)則之前和之后的結果對于控制規(guī)則執(zhí)行的準確性以及確保從規(guī)則引擎創(chuàng)建的輸出數(shù)據(jù)的質量至關重要。

設計原則3:從一開始就構建異常

數(shù)據(jù)永遠不可能是完美的,因此,我們永遠都不會假設輸入數(shù)據(jù)是完美的。 在初始設計中應考慮數(shù)據(jù)異常處理,例如以下內容:

· 數(shù)據(jù)集是否具有預期的格式?

· 輸入數(shù)據(jù)集的記錄數(shù)是否正確或為空? 如果文件為空,許多編程語言都不會失敗-需要顯式捕獲空文件異常。

· 每列的數(shù)據(jù)類型正確嗎? 同樣,當某些記錄中的幾個值的格式錯誤時,某些程序可能會靜默失敗。

· 定義引發(fā)異常的條件:1)在繼續(xù)進行過程中是否應該發(fā)出警告,或者過程是否失敗; 2)誰將是收到警報的收件人?

首先,處理數(shù)據(jù)異常對于確保數(shù)據(jù)質量至關重要。 設計良好的流程應預先定義所有這些異常,并在流程中捕獲它們。 這些異常不僅可以導致實時警報,還可以饋入集中式數(shù)據(jù)質量報告和儀表板。

設計原則4:使用標準輸入和輸出易于集成

我們如何使數(shù)據(jù)流程易于集成? 一個重要原則是創(chuàng)建標準化的輸入層和標準化的輸出層,以"封裝"主過程。 如下圖所示,用于標準化輸入數(shù)據(jù)的過程應與主過程分離并分離,其中其輸出是主過程的標準輸入數(shù)據(jù)集。 將來,如果有更多類型的輸入數(shù)據(jù),則可以構建和集成一個單獨的標準化過程,而無需更改主要過程。 這也適用于輸出-當需要生成潛在不同格式的輸出時,應首先生成標準輸出層。 這樣就可以通過構建單獨的流程從標準輸出中生成將來的輸出,而無需更改主流程。 顯然,標準輸入和輸出數(shù)據(jù)集在連接點起作用,這樣其他流程可以輕松地與主流程集成。

數(shù)據(jù)處理和數(shù)據(jù)工程的4個設計原則

結論

本文總結了數(shù)據(jù)處理和工程的4個設計原理。 這些原則不僅應由數(shù)據(jù)架構師用于設計大型系統(tǒng),而且還應由數(shù)據(jù)科學家和數(shù)據(jù)工程師用于較小的流程。 如果以有紀律的方式采用這些原則,那么精心設計的數(shù)據(jù)流程將使維護變得更加容易,變更的效率更高,而對系統(tǒng)其他部分的影響則更少,并且最后提供的數(shù)據(jù)質量將比那些未遵循的過程更好。 遵循以上原則。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)處理

    關注

    0

    文章

    576

    瀏覽量

    28509
  • OOP
    OOP
    +關注

    關注

    0

    文章

    14

    瀏覽量

    8783
收藏 人收藏

    評論

    相關推薦

    實例篇 4G模組軟件之json數(shù)據(jù)處理!

    今天我會把4G模組軟件的json數(shù)據(jù)處理整理成文,以低功耗模組Air780E為例,一一展示出來:
    的頭像 發(fā)表于 11-12 12:17 ?17次閱讀

    海量數(shù)據(jù)處理需要多少RAM內存

    海量數(shù)據(jù)處理所需的RAM(隨機存取存儲器)內存量取決于多個因素,包括數(shù)據(jù)的具體規(guī)模、處理任務的復雜性、數(shù)據(jù)庫管理系統(tǒng)的效率以及所使用軟件的優(yōu)化程度等。以下是對所需內存量的分析: 一、內
    的頭像 發(fā)表于 11-11 09:56 ?62次閱讀

    FPGA在數(shù)據(jù)處理中的應用實例

    廣泛應用于以太網(wǎng)、USB、PCI Express、SATA、HDMI等通信協(xié)議的處理。它們通過高速串行接口實現(xiàn)數(shù)據(jù)傳輸,并利用硬件加速技術進行協(xié)議解析和數(shù)據(jù)處理,從而提高系統(tǒng)性能。例如,在路由器、交換機等網(wǎng)絡設備中,F(xiàn)PGA可以
    的頭像 發(fā)表于 10-25 09:21 ?150次閱讀

    如何構建一基于Imap4郵件通信協(xié)議與放射性物質監(jiān)測數(shù)據(jù)處理系統(tǒng)

    如何構建一基于Imap4郵件通信協(xié)議與放射性物質監(jiān)測數(shù)據(jù)處理系統(tǒng) 構建一綜合性的數(shù)據(jù)處理和存儲系統(tǒng),該系統(tǒng)將集成郵件監(jiān)控、
    的頭像 發(fā)表于 09-10 18:14 ?185次閱讀

    巖土工程監(jiān)測中振弦采集儀數(shù)據(jù)處理與解讀的挑戰(zhàn)與方法

    巖土工程監(jiān)測中振弦采集儀數(shù)據(jù)處理與解讀的挑戰(zhàn)與方法 巖土工程監(jiān)測是確保工程安全的重要環(huán)節(jié),而振弦采集儀是巖土工程監(jiān)測中常用的一種設備。振弦采
    的頭像 發(fā)表于 06-03 13:59 ?252次閱讀
    巖土<b class='flag-5'>工程</b>監(jiān)測中振弦采集儀<b class='flag-5'>數(shù)據(jù)處理</b>與解讀的挑戰(zhàn)與方法

    振弦采集儀在巖土工程監(jiān)測中的數(shù)據(jù)處理與結果展示

    振弦采集儀在巖土工程監(jiān)測中的數(shù)據(jù)處理與結果展示 河北穩(wěn)控科技振弦采集儀是巖土工程監(jiān)測中常用的一種設備,用于采集地下土體振動信號,通過對數(shù)據(jù)處理
    的頭像 發(fā)表于 05-14 16:41 ?250次閱讀
    振弦采集儀在巖土<b class='flag-5'>工程</b>監(jiān)測中的<b class='flag-5'>數(shù)據(jù)處理</b>與結果展示

    土壤墑情監(jiān)測站系統(tǒng)是一種集成了多種監(jiān)測設備和數(shù)據(jù)處理技術的系統(tǒng)

    JD-TS600土壤墑情監(jiān)測站系統(tǒng)是一種集成了多種監(jiān)測設備和數(shù)據(jù)處理技術的系統(tǒng),用于實時監(jiān)測土壤水分情況,為農(nóng)業(yè)生產(chǎn)提供準確的數(shù)據(jù)支持。本文將介紹土壤墑情監(jiān)測站系統(tǒng)的技術原理、功能特點以及在農(nóng)業(yè)生產(chǎn)
    的頭像 發(fā)表于 04-07 15:31 ?279次閱讀

    工程監(jiān)測振弦采集儀在振動監(jiān)測中的應用與數(shù)據(jù)處理技術

    工程監(jiān)測振弦采集儀在振動監(jiān)測中的應用與數(shù)據(jù)處理技術 振弦采集儀是一種用于振動監(jiān)測和分析的儀器設備。它采用振弦傳感器作為振動信號的采集元件,可以實時測量結構物或設備的振動狀態(tài),并將采集到的振動數(shù)據(jù)進行
    的頭像 發(fā)表于 04-07 13:59 ?506次閱讀
    <b class='flag-5'>工程</b>監(jiān)測振弦采集儀在振動監(jiān)測中的應用與<b class='flag-5'>數(shù)據(jù)處理</b>技術

    工程監(jiān)測儀器振弦采集儀的數(shù)據(jù)處理方法

    工程監(jiān)測儀器振弦采集儀的數(shù)據(jù)處理方法 河北穩(wěn)控科技工程監(jiān)測儀器振弦采集儀是一種用于實時監(jiān)測工程結構振動的儀器設備。它能夠采集到結構振動的數(shù)據(jù)
    的頭像 發(fā)表于 03-27 13:08 ?265次閱讀
    <b class='flag-5'>工程</b>監(jiān)測儀器振弦采集儀的<b class='flag-5'>數(shù)據(jù)處理</b>方法

    巖土工程監(jiān)測中振弦采集儀的操作方法及數(shù)據(jù)處理技術

    巖土工程監(jiān)測中振弦采集儀的操作方法及數(shù)據(jù)處理技術 振弦采集儀是巖土工程監(jiān)測中常用的一種儀器,用于測量地下土層的動力特性和地下水位等參數(shù)。下面是振弦采集儀的操作方法及數(shù)據(jù)處理技術: 巖土
    的頭像 發(fā)表于 03-15 13:31 ?238次閱讀
    巖土<b class='flag-5'>工程</b>監(jiān)測中振弦采集儀的操作方法及<b class='flag-5'>數(shù)據(jù)處理</b>技術

    工程監(jiān)測領域振弦采集儀的數(shù)據(jù)處理與分析方法探討

    工程監(jiān)測領域振弦采集儀的數(shù)據(jù)處理與分析方法探討 在工程監(jiān)測領域,振弦采集儀是常用的一種設備,用于測量和記錄結構物的振動數(shù)據(jù)。數(shù)據(jù)處理和分析是
    的頭像 發(fā)表于 01-10 14:44 ?390次閱讀
    <b class='flag-5'>工程</b>監(jiān)測領域振弦采集儀的<b class='flag-5'>數(shù)據(jù)處理</b>與分析方法探討

    工程監(jiān)測中振弦采集儀的數(shù)據(jù)處理方法研究

    工程監(jiān)測中振弦采集儀的數(shù)據(jù)處理方法研究 工程監(jiān)測中振弦采集儀的數(shù)據(jù)處理方法研究是針對振弦采集儀所采集到的數(shù)據(jù)進行分析和
    的頭像 發(fā)表于 01-09 15:10 ?324次閱讀
    <b class='flag-5'>工程</b>監(jiān)測中振弦采集儀的<b class='flag-5'>數(shù)據(jù)處理</b>方法研究

    數(shù)據(jù)處理

    初學者想請教一下大家,采集的噪聲信號,想要對采集到的數(shù)據(jù)累計到一定數(shù)量再進行處理,計劃每隔0.2秒進行一次數(shù)據(jù)處理,(得到均方根值等一些特征值)請問大家有什么方法可以實現(xiàn)
    發(fā)表于 01-07 10:11

    虹科方案 | 車內智慧大腦:基于車載網(wǎng)絡捕獲的全景數(shù)據(jù)處理

    隨著汽車電子技術的不斷發(fā)展,車載網(wǎng)絡已經(jīng)成為汽車智能化和互聯(lián)互通的關鍵組成部分。然而隨著汽車系統(tǒng)的復雜性增加,CAN的帶寬和數(shù)據(jù)處理能力已不足以滿足快速增長的數(shù)據(jù)需求。為了應對這一挑戰(zhàn),虹科智能互聯(lián)提出了基于車載網(wǎng)絡捕獲的全景數(shù)據(jù)處理
    的頭像 發(fā)表于 12-25 11:34 ?426次閱讀
    虹科方案 | 車內智慧大腦:基于車載網(wǎng)絡捕獲的全景<b class='flag-5'>數(shù)據(jù)處理</b>

    數(shù)據(jù)處理器:DPU編程入門》+初步熟悉這本書的結構和主要內容

    大幅度提高計算速度和效率,以滿足這些增長的計算需求。 其次,網(wǎng)絡和數(shù)據(jù)處理的緊密結合是DPU演進的另一核心驅動力。在當前的計算架構中,數(shù)據(jù)處理和網(wǎng)絡功能通常是分開的,這可能導致延遲增加、數(shù)據(jù)
    發(fā)表于 12-08 18:03