侯寧


摘 要:傳統計算機算法在大數據環境下效率較差。為此,從數據處理并行角度出發探索大數據環境下實現先進先出的新算法邏輯,通過先進先出算法實現對成本的有效計算,尤其是提高計算容錯性,利用優化的并行化計算模式提高算法時間效率。對傳統成本算法與新的并行化先進先出成本算法在實際數據上進行比較實驗,結果表明并行化的先進先出成本算法在時間效率上優于傳統成本算法,且隨著數據量的不斷擴大時間效率更加明顯,而先進先出的計算模型與傳統算法在計算誤差上并無擴大,說明并行化的先進先出成本算法在大數據環境下優于傳統成本算法。
關鍵詞:大數據環境;先進先出成本算法;并行化計算;時間效率
DOI:10. 11907/rjdk. 182526
中圖分類號:TP312
文獻標識碼:A文章編號:1672-7800(2019)006-0085-04
Abstract: With the popularity of large data environment, the traditional computer algorithms show some problems such as poor efficiency in large data environment. This paper explores a new arithmetic logic to implement FIFO in large data environment from the point of data processing parallelism. Through the first-in-first-out (FIFO) algorithm, the cost can be calculated effectively, especially the fault tolerance can be improved in large data mode. By using the optimized parallel computing mode, the time efficiency of the algorithm is improved. Experiments on real data show that parallel first-in-first-out cost algorithm is superior to traditional cost algorithm in time efficiency and time efficiency is more obvious with the continuous expansion of data volume, and the first-in-first-out calculation model is also better than the traditional algorithm. There is no expansion in the calculation error. This shows that the parallel first in first out cost algorithm is better than the traditional cost algorithm in big data environment.
Key Words: first-in-first-out; Parallelization; Time efficiency
0 引言
成本是企業核算經濟效益的基本內容和中心環節。在企業成本核算的一般程序中,約當產量比例法是生產費用在月末完工產品和產品分配環節應用較廣的一種方法[1],不同的約當產量法產品成本的真實性與正確性不同,在復雜連續生產條件下,先進先出計價具有實物流轉與成本流轉一致、如實反映本月實際成本水平、提供真實生產占用資金數據、真實反映產品成本降低情況等優勢[2]。約當產量比例法相比于傳統的成本計算方法,只是將數據統一為按月度計算,在算法本質上并沒有改變,因此需要一種成本算法對傳統模型進行改進。而涉及數據庫設計時,經常需要處理多對多關系,處理效率及便利性對算法執行效率極為重要[3],將數據庫中的多對多數據關系改進后引入到成本計算模型中,形成先進先出的成本關系是本文研究的算法模型之一。對象和關系數據是業務實體模型的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中關系數據無法直接表達為多對多關聯和繼承關系。因此,把對象持久化到關系數據庫中,需要進行對象/關系映射[4],而成本計算中也需要對象/關系的映射,因此先進先出的成本算法模型需要一種并行化的映射模式以提高算法執行效率。高效的服務器算法是大數據環境中的關鍵技術[5],并行化計算模式是高效算法的重要組成部分之一。本文提出的并行化模式正是基于高效的服務器算法模式之上,引入基于多對多的數據關系下的先進先出算法模型進行企業成本計算,并通過改進窗口函數模型進行邏輯優化。
1 算法結構分析
1.1 先進先出模型
先進先出是財務管理中常見的一種存貨計價方法。先進先出法指按照先購進存貨先發出的原則,對先發出存貨的個別計價方法。該方法根據存貨批次逐一對生產成本進行計算, 對實際存貨加以計價 [6]。采用這種方法,先購入的存貨成本在后購入存貨成本之前轉出,據此確定發出存貨和期末存貨的成本[7]。具體做法是,接收有關存貨時,逐筆登記每批存貨的數量、單價和金額;發出存貨時,按照先進先出原則計價,逐筆登記存貨發出和結存金額。
按照原材料編碼提供各原材料當月的總耗用量,見表 1;當月產品的實際產量見表 2;產品耗用原材料的工藝信息,即在沒有損耗的前提下,單位產品理論上耗用多少單位的原材料,見表 3。
以上是基于大數據環境下的先進先出計算模型流程,此模型在實際成本計算中由于使用了先進先出思想,因此對成本的計算步驟可查,容錯性較高,間接提高了成本計算的準確性。同時算法不存在時間等待,具有一定的高效性。
1.2 并行計算模型優化
成本計算常見邏輯主要是通過嵌套循環遍歷原材料入庫表與使用表,最終處理得到原材料入庫表與使用表間的多對多數據關系。這種算法邏輯采用循環方式,只能對數據進行串行處理,因此時間復雜度較高。本文以空間換時間[5],將串行計算模型改為并行計算模型。新的算法邏輯每次同時處理多張原材料使用表,一次性得到各原材料入庫與使用數據的對應關系,算法邏輯如下:
(1)對原材料使用表按照原材料名稱、使用日期先后排序,對原材料入庫表也按照原材料名稱、入庫日期先后排序。
(2)每張原材料使用表要計算出當前使用表總數[TUA]與前一張使用表總數[TUB],每張入庫表要計算出當前入庫表總數[TWA]與截止到前一張入庫的匯總數[TWB]。將改造后的原材料使用表與入庫表通過名稱進行關聯,由此形成新的入庫與使用關聯數據表。對關聯數據表中的每組數據同時進行處理,得到兩個數據:①當前原材料使用量即本組數據對應的由入庫狀態轉變成使用狀態的數量,稱之為[TRA]。[TRA]的計算由[TUA]與[TWA]和[TWB]的差值之一組成;②之前的原材料使用量,即前組數據對應的由入庫狀態轉變為使用狀態的數量,稱之為[TRB]。[TRB]的計算由[TUB]與[TWA]和[TWB]的差值之一組成。
(3)關聯數據表中的每組數據并行化計算[TRA]-[TRB],兩者之差[TRC]即為本組數據對應的入庫表中進入本組使用表的數目,最后篩選出[TRC>]0的每組數據即為查詢結果。
2 算法偽代碼分析
為驗證新算法邏輯的可行性,在SQL Server2012環境中使用窗口函數對大數據樣本下的新算法邏輯進行數據模擬,以實例詳細闡述基于SQL Server窗口函數的算法實踐。事實證明,窗口函數是應對大數據處理的一種有效解決方案[8]。現假設有如表 6所示的若干原材料入庫表及表7所示的若干原材料使用表,經過SQL代碼處理后得到關聯數據表 8。
3 實驗數據分析
將原材料入庫表與原材料使用表取10%的數據作為實驗數據。表9、表10為傳統成本計算模型與先進先出的并行化算法比較。
由表 9、表 10可知,基于先進先出的并行算法相比一般串行算法邏輯有時間效率優勢,且當數據量越來越大時,時間效率越發明顯。同時算法計算誤差與傳統算法計算誤差一致,因此該算法在提升時間效率的同時保證了算法計算誤差沒有擴大。
4 結語
在SQL Server2012環境中使用窗口函數對大數據樣本進行處理,實踐證明使用先進先出的并行化計算邏輯后,相比傳統算法降低了時間復雜度,同時計算誤差上沒有擴大,說明基于先進先出的并行化成本計算模型在大數據環境下比傳統成本算法擁有更好的性能。未來可引入更加精確的成本計算方法如基于產品特征的成本計算模型以提高成本計算精度,同時針對時間效率可在并行化模式基礎上加入排序算法以優化數據存取效率,從而進一步降低算法的時間復雜度。
參考文獻:
[1] 吳晶晶. 基于先進先出計價的約當產量比例法應用問題研究[J]. 赤峰學院學報:自然科學版,2017, 33(11):130-132.
[2] 王大江. 基于先進先出計價的約當產量法研究[J]. 渭南師范學院學報,2015, 30(2):85-89.
[3] 韋金興. 用編程的方法處理數據庫中多對多關系——以計量標準和計量設備為例[J]. 計算機光盤軟件與應用,2014(20):92-93.
[4] 覃遠霞. 基于關系數據庫的對象/關系映射研究[J]. 科技風,2008(5):54-55.
[5] 喬平安,顏景善,周敏. 基于Linux系統的構建高性能服務器的研究[J]. 計算機與數字工程,2016(4):653-657.
[6] 林瓏. 存貨計價與核算的研究[J]. 當代經濟,2015(9):120-121.
[7] 財政部. 企業會計準則 [M]. 北京:經濟科學出版社,2006.
[8] 宋光旋,趙大鵬,王曉玲. IM2:一種改進的MIN/MAX窗口函數優化技術[J]. 華東師范大學學報:自然科學版,2018(1):104-116.
[9] 李帥,吳斌,杜修明,等. 基于Spark的BIRCH算法并行化的設計與實現[J]. 計算機工程與科學,2017, 39(1):35-41.
[10] 李慧彥. 一種并行化的分類算法研究[J]. 智能計算機與應用, 2017,7(3):127-129.
[11] 蔡洪基. 從網狀到關系數據庫映射的研究[D]. 天津:南開大學, 2007.
[12] 林菁. 一種從關系數據庫到XML映射方法的研究及應用[J]. 電腦知識與技術,2006(20):17-19.
[13] 楊景常,周國權. 先進先出(FIF0)存儲器技術在高速數據采集中的應用[J]. 西華大學學報:自然科學版, 2002, 21(2):20-21.
[14] 溫惠英,徐建閩,鄒亮. 基于遺傳算法的離散時間動態網絡最短路徑求解[J]. 華南理工大學學報:自然科學版,2008,36(2):13-16.
[15] 張帆,邵之江,仲衛濤,等. 基于Matlab的分布式并行優化計算環境[J]. 系統仿真學報,2002,14(9):1145-1148.
[16] 賀繼剛,楊曉偉,吳廣潮,等. 基于模板保留的快速并行細化算法[J]. 計算機應用與軟件,2007,24(12):26-28.
[17] 李俠民,徐美瑞. ?兩個快速的完全的并行細化算法[J]. 計算機研究與發展,1996(7):521-527.
[18] 劉漢興,田緒紅,孫微微. 基于Web的XML與數據庫映射[J]. 現代計算機,2002(11):83-86.
[19] 劉喜重,朱玉文,但軍波,等. OOAD中的信息結構及數據庫映射的實現[J]. 計算機工程與應用, 2005, 41(30):169-170.
[20] 魏群,段國林,蔡瑾,等. ?STEP模型基于數據倉庫的關系數據庫映射實現[J]. 機械設計與制造,2010(5):209-211.
(責任編輯:杜能鋼)