摘 要: 本文研究生產(chǎn)采集系統(tǒng)對種類繁多、零散的數(shù)據(jù)進行采集時,如何建立業(yè)務模型,使系統(tǒng)更易于擴展。通過數(shù)據(jù)點、模板、指標的方式,結(jié)合基礎實體,建立動態(tài)業(yè)務數(shù)據(jù)模型,能夠有效支撐生產(chǎn)系統(tǒng)對實時、無關(guān)聯(lián)的數(shù)據(jù)采集和分析報表展現(xiàn)。
關(guān)鍵詞:生產(chǎn)采集 零散數(shù)據(jù) 動態(tài)業(yè)務模型 數(shù)據(jù)點 指標
中圖分類號:TP39 文獻標識碼:A 文章編號:1003-9082(2017)02-0004-02
一、概述
目前流行的關(guān)系數(shù)據(jù)模型設計中,經(jīng)常采用實體-關(guān)系(E-R)模型,結(jié)合面向?qū)ο蟮乃枷?,按照概念模型、物理模型的方法,建立相應的基礎實體、業(yè)務數(shù)據(jù)字體和關(guān)系,并通過ORM工具建立實體類。這種方法在一般的信息系統(tǒng)設計時非常有用,因為這類系統(tǒng)的業(yè)務關(guān)聯(lián)是非常明確的,比如訂購,我們?yōu)槠浣⑾鄳目蛻?、產(chǎn)品、訂單、付款等實體和關(guān)系就可以了。
在一些生產(chǎn)監(jiān)控、實時采集等系統(tǒng)中,由于采集的數(shù)據(jù)種類繁多且非常零散,某些數(shù)據(jù)就是一個實時的值,用于不同的業(yè)務場景分析,它們屬于基礎實體,但業(yè)務之間的相關(guān)性較弱,我們得為這些業(yè)務數(shù)據(jù)按類型分別建立實體,這些實體的結(jié)構(gòu)非常相似,且有新的業(yè)務數(shù)據(jù)要管理時,就需要在數(shù)據(jù)庫層面增加相應的實體表,系統(tǒng)不易于自動擴展。那么,我們考慮以動態(tài)列的方式來實現(xiàn),會不會減少實體表的創(chuàng)建,系統(tǒng)也更容易擴展呢?即我們只建立一個業(yè)務數(shù)據(jù)實體表,該實體建立N個動態(tài)屬性字段,每種業(yè)務數(shù)據(jù)占用一個字段,通過配置定義業(yè)務字段。這種方式在數(shù)據(jù)的采集和管理上都沒有問題,但在數(shù)據(jù)的統(tǒng)計分析中,需要每個業(yè)務定義單獨的查詢語句,且DBMS對字段的數(shù)量也有相應的優(yōu)化要求,如果業(yè)務數(shù)據(jù)類型過多,則要考慮分表管理。
那么,我們考慮將數(shù)據(jù)的存儲由列轉(zhuǎn)為行,是否可以有效解決這個問題呢?答案是肯定的,還需要做一些優(yōu)化來提升系統(tǒng)性能,建立的業(yè)務數(shù)據(jù)字體表關(guān)聯(lián)基礎實體并定義分類,為值建立多個不同數(shù)據(jù)類型的字段,根據(jù)數(shù)據(jù)類型存儲在不同的字段中,便于其中的關(guān)聯(lián)值進行計算。我們把業(yè)務數(shù)據(jù)定義為數(shù)據(jù)點,把業(yè)務數(shù)據(jù)的運算和管理定義為指標,并在界面進行動態(tài)的展示,這種模型可稱之為指標模型。
二、設計方案
采用指標模型來為動態(tài)、分散的業(yè)務數(shù)據(jù)建模的設計方案,主要解決以下業(yè)務需求:
o業(yè)務數(shù)據(jù)分散獨立,基本都是類型和值,且各項數(shù)據(jù)采集或錄入時間不一致。
o業(yè)務數(shù)據(jù)需要按照一定規(guī)則進行計算并呈現(xiàn)。
為此,我們可以為模型建立幾個基本概念:數(shù)據(jù)點、數(shù)據(jù)點模板、指標。數(shù)據(jù)點即業(yè)務數(shù)據(jù)值,包含發(fā)生業(yè)務的時間、填寫時間和數(shù)據(jù)點標識號。數(shù)據(jù)點模板即業(yè)務數(shù)據(jù)分類,通過數(shù)據(jù)點模板,可以靈活定義一類數(shù)據(jù)。指標是對數(shù)據(jù)點模板進行運算的公式定義和結(jié)果展現(xiàn)。
1.數(shù)據(jù)點模板
在數(shù)據(jù)點模板的定義中,即可關(guān)聯(lián)實體的類型,也可為該模板定義可選的全局屬性,全局屬性可以指定值或值由數(shù)據(jù)點生成時選擇,指定了值的數(shù)據(jù)點為全實例化模板,未指定全局屬性值的模板為半實例化模板。如圖1所示。
可以通過分組方式,為同一類的數(shù)據(jù)點模板建立引用關(guān)系,即半實例化模板可以關(guān)聯(lián)多個實例化模板或半實例化模板,模板分組后,可以快速統(tǒng)計組下的所有數(shù)據(jù)點。我們定義石油管線的銷售完成量數(shù)據(jù)點模板組如圖2所示:
2.數(shù)據(jù)點
數(shù)據(jù)點為模板按時間的實例化,數(shù)據(jù)點依賴于模板和實體,在統(tǒng)計分析中可以通過實體維度、時間維度、數(shù)據(jù)點模板維度進行多種組合統(tǒng)計,數(shù)據(jù)點模板的修改記錄歷史。數(shù)據(jù)點可以在邏輯層生成,其業(yè)務流程如圖3所示:
3.指標
指標用于數(shù)據(jù)的運算和呈現(xiàn),其數(shù)據(jù)源為數(shù)據(jù)點模板,支持四則運算和指標嵌套,并封裝為統(tǒng)一的接,通過標準的輸入?yún)?shù)、輸出提供給外部功能使用。
按照指標的運算方式,可分為數(shù)據(jù)點類和公式類。公式類指標支持數(shù)據(jù)點模板的運算,也支持公式類指標再次參與運算,參與運算的結(jié)果值都為數(shù)值型;選擇后將相應的數(shù)據(jù)源使用別名F1、F2、F3……等命名,別名描述運算規(guī)則。
在指標定義時,首先選擇具體數(shù)據(jù)源,系統(tǒng)自動對選擇的源進行公式命名,如F1、F2、F3…,如果選擇有自定義指標源,命名不允許重復。如圖4,選擇的指標中已定義了F1、F2、F3,新的指標只能從F4,F(xiàn)5開始。
指標的輸入?yún)?shù)為所選擇的所有源的參數(shù)的合集,同一實體的參數(shù)只能傳入一個實例化值。指標的結(jié)果輸出為一個聚合值,聚合類型包括Sum,Max,Min,Avg。
在指標管理中,需要提供預解析功能,將自定義的指標解析為數(shù)據(jù)點模板或原始記錄,如圖5所示:
F2為引用的指標,在預解析中,根據(jù)指標關(guān)聯(lián)的數(shù)據(jù)點模板,將F2解析為多個數(shù)據(jù)點模板。
在指標取數(shù)中,可以先按數(shù)據(jù)點模板或原始記錄進行統(tǒng)一取數(shù),然后將取出的數(shù)據(jù)進行分發(fā),再將分發(fā)的數(shù)據(jù)按照公式進行運算。
4.界面呈現(xiàn)
為了支持復雜的界面呈現(xiàn)方式,需要支持動態(tài)表單和靜態(tài)表單。動態(tài)表單指管理人員可以直接通過系統(tǒng)功能配置的格式相對簡單、部分數(shù)據(jù)根據(jù)實體動態(tài)生成的表單,如行可以根據(jù)實體類別動態(tài)變化,列固定的錄入表單,動態(tài)表單支持單項錄入、表格錄入。靜態(tài)表單指格式相對復雜,固定的表單。需要管理人員在HTML編輯器中進行頁面設計,然后通過腳本控制加載固定格式的表單,在樣式和控制上可以更加靈活。動態(tài)表單架構(gòu)設計如圖6所示:
表單子模板是將通用表單中具有可復用性的錄入項、表格等元素預先定義和維護起來構(gòu)成組成表單模板的子模板。當子模板發(fā)生變化時,所有引用到子模板的表單模板都會隨著子模板的變化而變化。子模板可以是單個錄入項、多個錄入項的組合、單個表格、表格加錄入項的組合等,按照表單的不同用途可以設計不同的子模板。
三、總結(jié)
指標模型能夠有效的設計出可擴展性較強、業(yè)務較為復雜、性能要求較高的動態(tài)業(yè)務數(shù)據(jù)管理系統(tǒng)。
通過指標模型中對數(shù)據(jù)點模板、數(shù)據(jù)點、指標的設計,涵蓋了數(shù)據(jù)從配置定義、存儲和運算、展示三個層次的管理,對于復雜的業(yè)務,可通過模板組、指標嵌套運算的方式來支撐,提升系統(tǒng)的性能。
參考文獻
[1]Joachim Rossberg Rickard Redler 著,卞軍 周磊 譯,《設計可擴展的.NET應用程序》,清華大學出版社,2005年07月
[2]劉希儉等 編著,《企業(yè)信息化實務指南》,石油工業(yè)出版社,2011年6月
作者簡介:劉穎(1981.5-),女,漢族,四川資中人,講師,研究方向:計算機應用。