999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

體育競賽實時數據分享系統儲存方案設計與優化

2021-03-24 09:56:14石清
軟件工程 2021年3期

石清

摘? 要:在“互聯網+”概念的影響下,越來越多的信息技術應用于體育產業。本文通過構建基于MEAN框架的體育競賽實時數據管理系統,設計了一種結合本地存儲與遠端云數據庫的分布式存儲方案,既實現數據的實時分享,又保障數據的可靠性。并通過實驗的方式比較了基于HTML5 Local Storage本地存儲的兩種方法與本地NoSQL數據庫的性能差異,從而實現系統存儲方案的優化。

關鍵詞:實時數據共享;競賽系統;MEAN框架;RESTful接口

中圖分類號:TP311? ? ?文獻標識碼:A

Abstract: Under the influence of the Internet + concept, more and more information technology is used in sports industry. By constructing a real-time data management system for sports competitions based on the MEAN (MongoDB +

Express + AngularJS + NodeJS) framework, this paper proposes to design a distributed storage scheme that combines local storage and remote cloud database, which realizes real-time data sharing and guarantees data reliability. Performance difference between the two methods based on HTML5 Local Storage and local NOSQL (Not Only SQL) database is compared through experiment, so to optimize the system storage scheme.

Keywords: real-time data sharing; competition system; MEAN framework; RESTful interface

1? ?引言(Introduction)

隨著互聯網信息技術的發展,云計算和云數據庫以其可伸縮性、高可靠性等特點受到了開發者和企業的青睞,越來越多的企業將其服務和數據轉移到云上。這些海量的數據如果可以通過接口的形式實現共享,將為大數據的分析和挖掘提供數據。然而沖突數據和時效錯誤數據相疊加而產生的錯誤數據將產生嚴重的后果,德國數據分析機構的調查顯示:美國每年因為劣質數據而造成的損失高達6,000 億美元[1]。因此,保證數據的可靠性乃是數據最重要的因素之一,建立在低質量數據基礎之上的數據分析、數據挖掘將會變成一紙空談,甚至會產生重大的錯誤。

有時為了確保數據的可靠性,往往會以犧牲數據的實時性為代價。而體育賽事信息的變動和不確定性,要求信息傳播最大程度地追求時效性與接收的便捷性[2]。而傳統競賽服務系統多采用C/S構架,前期需要較大的硬件成本投入,同時開發周期長、成本高,除個別大型綜合性賽事外,單項體育比賽的競賽系統幾乎不具備實時分享數據的能力。而基于B/S

架構的系統除了開發周期端、成本低、系統可擴展性高之外,數據信息服務通過連接特定的數據接口,實現數據實時通訊,既能服務于電視直播、現場大屏幕的數據需求,還能為所有對實時數據有需求的應用提供數據支持。賽后,所有的數據還可用于其他分享和數據挖掘,以達到數據價值利用最大化。本文研究的目的就是建立一套體育競賽數據管理系統,既要滿足實時傳播的需要,又要建立在高可靠性的數據基礎之上。

2? ?系統框架(System framework)

2.1? ?相關技術介紹

本文采用MEAN框架進行系統開發。MEAN框架是一個JavaScript平臺下現代Web開發框架的總稱,是MongoDB、Express、Angular、Node.js四個框架的第一個字母組合的簡稱。Node.js是一個基于Chrome JavaScript運行時建立的平臺,用于搭建響應速度快、易于擴展的網絡應用[3]。Node.js本身的特點非常適合在分布式設備上運行數據密集型的實時應用。它采用一系列“非阻塞”I/O模型庫來支持事件循環方式,為文件系統、數據庫等資源提供接口,通過異步的方式實現數據的非阻塞傳輸。Express是一款基于Node.js的Web應用開發框架。Express雖然規模小巧,卻為Web和移動應用程序提供一組強大的功能。Angular是由Google公司開發和維護前端的應用框架,其核心特點包括MVVM、模塊化、自動化雙向數據綁定、語義化標簽、依賴注入等。MongoDB是NoSQL的一種,可以方便地存儲復雜的數據類型。其由于高性能、易部署、易使用,以及存儲數據方便等特點,是目前應用最廣泛的NoSQL數據庫。

2.2? ?RESTful接口

在系統設計和實現的過程中,始終以RESTful接口的形式實行數據的互聯共享。無論是現場比分、歷史戰績,還是賽隊或隊員的相關信息都可以通過統一的數據接口實現訪問,從而避免了運動項目或賽事因業務與功能的不同,建立數據彼此獨立、相互封閉信息的“信息孤島”[4];以資源的方式提供數據服務可以提高體育信息數據的有效集成,擴大媒介的傳播效果[5]。以信息服務為目標,提供體育賽事相關資料的綜合性服務,必將成為大型體育賽事信息服務變革的方式,對于實現信息服務系統化、標準化以及提高信息利用率,具有重要意義[6]。

進行RESTful風格的API設計時,需要客戶端和服務器之間的交互在請求之間是無狀態的。所謂無狀態即所有的資源都是通過URI進行定位的,而且該URI提供的資源與其他資源無關,也不會因為其他資源的變化而改變[7]。例如,查詢某運動員的成績,如果查詢成績時需要登錄成績管理系統,進入特定的成績查詢頁面,執行相關操作后獲取該名運動員的歷史成績,上述情況則屬于有狀態,因為查詢運動員歷史成績的每一步操作都依賴于前一步操作的結果,只要前置操作失敗,則后續操作就無法執行。如果在瀏覽器地址欄中輸入一個URL地址即可返回某運動員的歷史成績,則該情況屬于無狀態,因為獲取運動員成績資源不依賴于其他資源或狀態,而是與一個URL地址相對應,可以通過HTTP的GET方法得到該資源。

3? ?數據存儲方案設計(Design of data storage)

高質量的數據信息服務,除了追求數據在分享方面的高效之外,對數據的準確性也有相當高的要求。不以數據質量為前提的數據服務,其后果必然是災難性的。因此,系統的數據存儲方案就顯得格外重要,既要保證數據便于分享,也要保證數據準確。如果僅僅采用單一性的數據庫將很難滿足需求。

系統存儲方案采用的是本地與云端同步存儲的模式,如圖1所示。系統前端通過AJAX發送數據到云數據庫,并通過云數據庫實現數據的實時分享,但由于不可預測的網絡原因,存儲過程有可能會出現長時間延遲,甚至失敗。而競技體育賽事往往無法重賽,如果出現數據丟失的情況將是非常嚴重的事故。這不僅無法滿足數據分享的需求,更有可能因為競賽數據的丟失導致賽事無法正常進行。本地存儲由于沒有網絡依賴,能保證數據的完整性和準確性。系統通過同時向本地和云端存儲數據,確保競賽數據不會丟失。同時,將本地數據與云數據庫進行數據一致性校對,避免由于網絡原因造成云端數據丟失,確保云端數據的完整性。用戶通過向云數據庫發送請求,獲取準確的競賽實時數據。

在數據庫選擇方面,以MySQL為代表的傳統關系型數據庫在處理海量數據文檔時有其固有的局限性,很難滿足海量數據的柔性管理需求[8]。而以MongoDB為代表的NoSQL數據庫卻能夠很好地應對非結構化的數據存儲,對于表結構需要臨時調整、字段不固定、快速響應海量數據寫入等方面都具有相當明顯的優勢。同時有研究表明,MongoDB數據庫與MySQL數據庫相比,多線程、高并發情況下的數據插入性能明顯高得多[7]。最終,系統服務器端選擇以MongoDB為存儲數據庫。

本地存儲的選擇,同樣將MongoDB作為主要的候選對象,同時,由于整個競賽系統只需要存儲與比賽相關的數據信息,而運動員信息、賽隊信息、往期賽事成績等相關數據無須進行存儲,數據量并不大。在確認云端數據完整無誤之后,本地數據可以刪除。所以,HTML5 Local Storage也可作為候選對象。

4? 存儲性能優化(Storage performance optimization)

在明確存儲方案之后,為進一步優化該方案,在系統設計過程中,對本地各存儲備選方案進行了性能測試,以選出最優本地存儲方案。

4.1? ?測試環境

測試環境使用的是Intel Core i7 2.5 GHz CPU,16 GB

內存、AMD Radeon R9 M370X 2048 MB顯存的GPU,操作系統為macOS Sierra 10.12.1,測試用的瀏覽器分別是Safari、Chrome和Opera。由于在macOS中不支持Windows操作系統下常用的IE瀏覽器,因此沒有在IE瀏覽器中進行測試。

4.2? ?測試方法

分別調用HTML5原生Local Storage方法、自定義基于Angular Service規范的HTML5 Local Storage方法(以下簡稱Angular Local Storage Service),以及本地MongoDB Service方法,比較它們在相同存儲次數下所消耗的時間。存儲的對象是一個不斷增加的MongoDB ObjectId對象數組。設置這樣的存儲測試方法,一方面是因為摩托艇這類環圈競速賽比賽規則的原因;另一方面這也是NoSQL數據庫的優勢所在,無須像SQL數據庫一樣,每條數據順序插入數據庫中,而只需要修改文檔數據庫的字段內容即可。同時,該數據結構也更有利于進行與云端的數據一致性校驗。

測試的存儲次數分別為100、1,000、2,000、3,000、4,000和5,000,最終判斷Safari、Chrome和Opera三款瀏覽器的性能優劣。由于在真實比賽過程中,系統存儲數據I/O的頻次遠低于實驗設計,同時實驗的主要目的是為了找出在較低頻次下,各個儲存方案的性能差異,因此本次實驗的最大測試次數設置為5,000,沒有繼續增大循環測試次數。

實際測試過程中,通過在循環開始前后分別調用Date.now()方法獲取系統時間,通過比較兩次系統時間的時間差來確定循環運行所消耗的時間。以HTML5 Local Storage測試的實驗代碼為例:

saveByLocalStorage(data){

let tempArray = [];

let tempObject = {};

let startTime = Date.now();

for(let i=0;i

tempArray.push(data);

tempObject['result'] = tempArray;

localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(tempObject));

}

let endTime = Date.now();

console.log("LocalStorage Testing Duration Time :" +

(endTime - startTime));}

Angular的結構框架不推薦直接使用組件獲取或者保存數據,雖然直接調用HTML5 Local Storage方法可以實現數據的存儲和讀取,但是與Angular的理念不一致。因此在開發的過程中獨立編寫了一個基于HTML5 Local Storage的Service,再通過Angular的依賴注入機制應用于系統之中。

class LocalStorageService {

constructor(storage) {

this.storage = storage; }

get(key) {

try {

return JSON.parse(this.storage.getItem(key));

}

catch (error) { return null; }

}

set(key, value) {

this.storage.setItem(key, JSON.stringify

(value));}

remove(key) {

this.storage.removeItem(key);

}

}

保存到本地MongoDB數據庫時,利用Angular的Observable對象,借助RxJS庫對數據流進行異步處理,在Angular中幾乎都使用該方法來處理AJAX請求和響應。在Angular前端設置比賽成績的Service的數據服務之前,需要在服務器端創建RESTful風格的數據接口用以滿足前端的需要。由于是以競賽成績為測試內容,而競賽成績本身屬于敏感信息,不能允許任意用戶進行隨意的創建、修改和刪除,因此在接口設計時除GET方法外,其他所有方法都進行了權限管理,必須管理員用戶才可以訪問這些接口。

5? ?實驗結果(Experimental results)

在實際測試中,分別在Safari、Chrome和Opera三款瀏覽器運行測試程序,所有測試結果均在console面板中顯示。從測試結果來看,Safari、Chrome和Opera三款瀏覽器在HTML5 Local Storage、Angular Local Storage Service和本地MongoDB Service這三項測試中,所表現出的性能沒有顯著差異。這三款瀏覽器在HTML5 Local Storage和Angular Local Storage Service的測試對比中,均表現出用Angular Service標準寫出的方法比直接調用HTML5 Local Storage有5%左右的性能優勢。用Angular Service標準編寫的服務本身調用的就是HTML5 Local Storage,雖然只是用Angular Service的規范將HTML5 Local Storage進行封裝,但Angular Service服務由于在構建Component時已經加載成功,因此會表現出5%左右的性能優勢。

而無論是HTML5 Local Storage還是Angular Local Storage Service,在測試次數在3,000以下時,與本地MongoDB Service都存在著數量級上的優勢。隨著測試次數增多,它們之間的差異雖然縮小,性能差距依然在三倍以上。

具體測試結果如表1—表3所示。

從整體的測試結果來看,使用Local Storage的存儲方案明顯會更加具有優勢。Angular Local Storage Service的方法雖然在開發過程中比直接調用HTML5 Local Storage要復雜一些,但是其兼顧Angular Service的模式,同時還具備5%左右的性能優勢,所以在最終開發過程中選用的是Angular Local Storage Service的開發方式。

6? ?結論(Conclusion)

對于追求時效性的B/S架構系統來說,以RESTful風格進行API設計將極大地方便數據分享和協同開發的效率,降低開發過程中出錯的概率。同時,將所有的數據以資源的形式為外界提供服務時,將最大程度消除信息化障礙,確保所有人能夠暢通地獲取體育服務信息。

數據存儲方案采用本地與云端同步存儲的模式設計與開發,提高了系統的容錯率,增加了數據的可靠性。在本地存儲方案選擇方面,采用Web瀏覽器提供的Local Storage足以滿足臨時性的需求,且性能與本地MongoDB數據庫相比,在低頻次的使用時具有數量級上的優勢,可優先考慮以HTML5 Local Storage作為臨時存儲數據庫對象。在以Angular為前端開發框架時,基于Angular標準的service存儲性能比直接調用HTML5 Local Storage具有5%左右的性能優勢,可優先考慮。

參考文獻(References)

[1] 杜岳峰,申德榮,聶鐵錚.基于關聯數據的一致性和時效性清洗方法[J].計算機學報,2017,40(1):92-105.

[2] 冉榮.自媒體背景下體育微博的發展及價值[J].新媒在線,2017(11):147-148.

[3] 王伶俐.基于NodeJS + Express框架的輕應用定制平臺的設計與實現[J].計算機科學,2017(11):596-599.

[4] 王家宏,孫晉海,伊超.基于數據集成的水上項目國家隊數據庫網絡管理平臺的設計與開發[J].山東體育學院學報,2015(1):1-7.

[5] 林寧波.大數據時代體育信息傳播改革路徑[J].大統計,2018(3):31-33.

[6] 王廣田,張文蓮.大型體育賽事檔案信息服務的困境與變革[J].山西檔案,2018(7):130-132.

[7] Haviv, Amos Q. MEAN Web Development: Master real-time web application development using a mean combination of MongoDB, Express, Angular JS, and Node.js[M]. Birmingham, UK: Packet Publishing, 2014:2-8.

[8] 胡小春,李陶深,王樂.基于NoSQL的大數據應用設計與性能保障方案研究[J].廣西大學學報(自然科學版),2014(6):633-640.

作者簡介:

石? ?清(1981-),男,碩士,講師.研究領域:體育信息技術,人機工程學.

主站蜘蛛池模板: 欧美一级视频免费| 欧美亚洲国产日韩电影在线| 国产精品va免费视频| 国产视频自拍一区| 一级一级一片免费| 中国黄色一级视频| 毛片免费观看视频| 99视频精品在线观看| 久久精品国产国语对白| 蜜臀AVWWW国产天堂| 在线欧美一区| 久久精品这里只有国产中文精品 | 国产日本一线在线观看免费| 亚洲无码四虎黄色网站| 国产人前露出系列视频| 国产高清在线精品一区二区三区| www.youjizz.com久久| 无码电影在线观看| 1769国产精品视频免费观看| 亚洲成A人V欧美综合| 九九热精品视频在线| 国内精自视频品线一二区| 国产女同自拍视频| 538精品在线观看| 免费A级毛片无码免费视频| 一区二区三区成人| 亚洲国产AV无码综合原创| av一区二区无码在线| 高h视频在线| 手机成人午夜在线视频| 波多野结衣一区二区三区四区| 亚洲看片网| 久久久久久尹人网香蕉| 91精品国产麻豆国产自产在线| 亚洲国产精品一区二区第一页免 | 无码精品国产dvd在线观看9久 | 国产sm重味一区二区三区| 91年精品国产福利线观看久久| 中文字幕在线视频免费| 亚洲一区色| 亚洲成a人片在线观看88| 久久无码av三级| 亚洲综合中文字幕国产精品欧美| 99久久免费精品特色大片| 欧美一区精品| 国产一区二区色淫影院| 午夜福利在线观看成人| 91福利片| 国产日韩丝袜一二三区| 中字无码精油按摩中出视频| 国产毛片基地| 狠狠躁天天躁夜夜躁婷婷| 九九免费观看全部免费视频| 国产毛片不卡| 国产激情影院| 精品成人免费自拍视频| 成人福利在线免费观看| 国产午夜无码专区喷水| 97在线公开视频| 婷婷五月在线| www.91中文字幕| 91色老久久精品偷偷蜜臀| 亚洲视频一区| 99久久国产自偷自偷免费一区| 国产青榴视频| 日韩大乳视频中文字幕 | 亚洲an第二区国产精品| 九九九精品成人免费视频7| 日韩A∨精品日韩精品无码| 欧美综合成人| 精品伊人久久大香线蕉网站| 国产成人精品一区二区三区| 亚洲精品人成网线在线| 99精品这里只有精品高清视频| 手机在线免费不卡一区二| 亚洲一区二区三区香蕉| 91精品人妻一区二区| 69精品在线观看| 欧美a√在线| 欧美性天天| 欧美色视频日本| 第一页亚洲|