李曉英,何首武,蘇樹海
(1.桂林理工大學(xué)南寧分校,廣西南寧 530001;2.武漢大學(xué)計算機學(xué)院,湖北武漢 430072)
?
基于NoSQL的海量出租車GPS數(shù)據(jù)Web服務(wù)研究*
李曉英1,2,何首武1,蘇樹海1
(1.桂林理工大學(xué)南寧分校,廣西南寧530001;2.武漢大學(xué)計算機學(xué)院,湖北武漢430072)
【目的】針對傳統(tǒng)關(guān)系型數(shù)據(jù)庫擴展性差、存取效率低等問題,提出一種基于非關(guān)系型數(shù)據(jù)庫(NoSQL)的海量出租車GPS數(shù)據(jù)Web服務(wù)方案,滿足海量空間數(shù)據(jù)高效存儲管理與實時在線服務(wù)的需求。【方法】利用MongoDB地理空間索引實現(xiàn)基于位置的查詢,基于Node.js技術(shù)提供Web service服務(wù),采用Express MVC框架構(gòu)建Web應(yīng)用?!窘Y(jié)果】與MySQL Spatial相比,MongoDB在區(qū)域查詢方面具有較高的查詢效率,數(shù)據(jù)量多時,其性能尤為顯著?!窘Y(jié)論】基于NoSQL的出租車GPS數(shù)據(jù)Web服務(wù)方案可以支持海量位置數(shù)據(jù)的實時查詢與地圖顯示,具有一定的應(yīng)用參考價值。
基于位置的服務(wù)NoSQLNode.jsMongoDBWeb服務(wù)
【研究意義】近年來,隨著基于位置的服務(wù)(Location-based Services,LBS)應(yīng)用的不斷發(fā)展,以及云計算、大數(shù)據(jù)等技術(shù)的興起,數(shù)據(jù)正以前所未有的速度增長和累積[1]?;谶@些數(shù)據(jù)的Web服務(wù)和應(yīng)用對后臺數(shù)據(jù)庫提出更高的要求,而傳統(tǒng)的關(guān)系數(shù)據(jù)庫在海量數(shù)據(jù)的高并發(fā)讀寫、高效率存儲訪問以及高可擴展性方面已經(jīng)顯得力不從心,非關(guān)系型數(shù)據(jù)庫(NoSQL)是目前應(yīng)對這一問題的有效方案[2-3]。NoSQL是一個云計算背景下的分布式、非關(guān)系型數(shù)據(jù)庫系統(tǒng),支持半結(jié)構(gòu)化、結(jié)構(gòu)化數(shù)據(jù)的高并發(fā)讀寫,具有良好的可伸縮性和可擴展性[4]。MongoDB是一個面向集合的、模式自由的文檔型數(shù)據(jù)庫,旨在為Web應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案?!厩叭搜芯窟M展】近年來,關(guān)于MongoDB的LBS研究和應(yīng)用日趨深入。在學(xué)術(shù)研究方面,吳飛[5]利用MongoDB的地理空間索引,研究基于MongoDB的LBS數(shù)據(jù)管理系統(tǒng)關(guān)鍵技術(shù);劉卓[6]利用MongoDB分布式部署方案,實現(xiàn)對存儲在 MongoDB 集群架構(gòu)上的空間數(shù)據(jù)進行讀寫、查詢操作,經(jīng)過對數(shù)據(jù)存取性能的綜合分析,驗證此種基于NoSQL的空間數(shù)據(jù)云存儲方案是高效可行的;宋平亮[7]基于MongoDB和Node.js研究航道數(shù)據(jù)的Web服務(wù)和應(yīng)用,實現(xiàn)在Web地圖上進行指定區(qū)域查詢、坐標點臨近查詢、復(fù)合地理空間查詢和航跡查詢等一系列船舶監(jiān)控功能。在基于MongoDB的LBS應(yīng)用方面,快的打車在其出租車打車核心業(yè)務(wù)中使用MongoDB;奇虎360也在MongoDB上構(gòu)建眾多應(yīng)用,其中包括外部面向用戶的服務(wù)以及內(nèi)部商業(yè)應(yīng)用?!颈狙芯壳腥朦c】MongoDB原生支持地理位置索引,可直接用于位置距離計算和查詢,而且在性能上也能高度優(yōu)化[8]。據(jù)此,本研究基于MongoDB實現(xiàn)出租車GPS位置數(shù)據(jù)的高效存儲與查詢服務(wù)?!緮M解決的關(guān)鍵問題】結(jié)合NoSQL數(shù)據(jù)庫與Node.js Web技術(shù)探討出租車數(shù)據(jù)的Web服務(wù)和應(yīng)用,提出一種高響應(yīng)的海量位置數(shù)據(jù)存儲、管理以及Web應(yīng)用的解決方案。
近年來,位置服務(wù)(LBS)需求呈大幅度增長趨勢,從地址點導(dǎo)航到興趣點推薦,不僅可引導(dǎo)用戶找到附近的產(chǎn)品和服務(wù),還可獲得更高的便捷性和安全性。然而,部分LBS應(yīng)用仍采用關(guān)系型數(shù)據(jù)庫來管理數(shù)據(jù)。從GPS數(shù)據(jù)管理角度來看,海量數(shù)據(jù)無時無刻不在產(chǎn)生,關(guān)系數(shù)據(jù)庫難以支撐海量數(shù)據(jù)的存儲和管理,成為制約LBS應(yīng)用發(fā)展的瓶頸。因此,本研究基于NoSQL數(shù)據(jù)庫,提出一種出租車位置數(shù)據(jù)的存儲模型,利用MongoDB的地理空間索引及查詢機制,結(jié)合Node.js Web服務(wù)技術(shù),研究這些數(shù)據(jù)的服務(wù)和應(yīng)用模式,以期為海量GPS位置數(shù)據(jù)的存儲、管理以及Web應(yīng)用提供一種有效的解決方案。
基于上述思路,本研究構(gòu)建出租車GPS數(shù)據(jù)的Web服務(wù)方案體系架構(gòu)(圖1),從軟件層次上劃分為以下3層:
(1)表示層:是面向用戶的顯示和交互界面,可以運行于Web瀏覽器或移動端。該層負責(zé)用戶查詢交互、從Web服務(wù)層接口獲取數(shù)據(jù)并在地圖可視化顯示等操作。其中,HTML構(gòu)建Web頁面結(jié)構(gòu),CSS渲染樣式,JavaScript完成數(shù)據(jù)解析以及地圖API調(diào)用。
(2)Web服務(wù)層:基于Node.js技術(shù)提供HTTP服務(wù)以及REST風(fēng)格的Web service服務(wù)[9],包括處理路由、模板、數(shù)據(jù)獲取等。該層以Express為開發(fā)框架,Embedded JavaScript(EJS)作為模板引擎,通過Mongoose實現(xiàn)MongoDB數(shù)據(jù)庫操作。
(3)數(shù)據(jù)庫層:負責(zé)存儲出租車GPS數(shù)據(jù),包括數(shù)據(jù)庫構(gòu)建、原始數(shù)據(jù)的遷移、地理索引的構(gòu)建等。
圖1體系架構(gòu)
Fig.1System architecture
1.1關(guān)鍵技術(shù)
1.1.1Node.js技術(shù)
Node.js是一個可以讓JavaScript運行在服務(wù)器端的平臺,用于方便地搭建響應(yīng)速度快、易于擴展的Web應(yīng)用。Node.js使用事件驅(qū)動、異步式I/O 模型而得以輕量和高效,同時使用Module模塊劃分不同的功能,以簡化應(yīng)用開發(fā)[10]。
Node.js可以很方便地通過相應(yīng)的數(shù)據(jù)庫驅(qū)動模塊與MongoDB實現(xiàn)數(shù)據(jù)庫連接。Mongoose是MongoDB Node.js數(shù)據(jù)庫驅(qū)動,提供一種在Node環(huán)境中操作MongoDB數(shù)據(jù)庫的便捷封裝。它包裝更高層次、更直接的API語法,通過Schema方式將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為JavaScript對象以供應(yīng)用使用[11]。
1.1.2Express架構(gòu)
Express是一個基于Node.js平臺的極簡、靈活的Web應(yīng)用開發(fā)框架[12]。Express架構(gòu)是一個典型的MVC(Model-View-Controller)框架(圖2),用戶通過瀏覽器發(fā)起請求,由路由控制器接受,并根據(jù)不同的路徑定向到不同的控制器。控制器處理用戶的具體請求,可能會訪問數(shù)據(jù)庫中的對象,即模型部分,從模型獲取數(shù)據(jù)。然后,調(diào)用模板引擎生成HTML頁面,最后由控制器返回給瀏覽器,完成一次請求。
圖2Express MVC框架
Fig.2Express MVC framework
在Express MVC架構(gòu)中,模板引擎以數(shù)據(jù)和頁面模板為輸入,生成 HTML 頁面。Embedded JavaScript (EJS)是一個JavaScript實現(xiàn)的標準模板引擎,具有易于學(xué)習(xí)、維護性良好的HTML代碼結(jié)構(gòu)[13]。
Node.js使用JavaScript作為服務(wù)器端的執(zhí)行語言,可以與MongoDB很好地配合開發(fā)Web應(yīng)用。因此,本研究結(jié)合MongoDB與Node.js技術(shù)開展研究,以Express為開發(fā)框架、EJS作為模板引擎、Mongoose實現(xiàn)數(shù)據(jù)庫連接。
1.2出租車GPS數(shù)據(jù)庫構(gòu)建
1.2.1數(shù)據(jù)模型
出租車GPS數(shù)據(jù)信息包含車牌號、采集時間、采集點經(jīng)度與緯度、車輛狀態(tài)、行駛速度、行駛方向等7個要素,其詳細描述如表1所示。
區(qū)別于關(guān)系型數(shù)據(jù)庫,MongoDB是一個模式自由的數(shù)據(jù)庫,意味著存入數(shù)據(jù)之前并不需要事先定義數(shù)據(jù)結(jié)構(gòu)與類型。MongoDB的邏輯結(jié)構(gòu)由文檔(document)、集合(collection)、數(shù)據(jù)庫三部分組成,其中文檔相當(dāng)于關(guān)系數(shù)據(jù)庫中的一行記錄,集合對應(yīng)于關(guān)系型數(shù)據(jù)庫里的表。將關(guān)系數(shù)據(jù)模型映射到MongoDB中即為MongoDB文檔數(shù)據(jù)模型,其json格式描述如下:
{
“_id”:ObjectedId(“56ee181abb27d9f253cd078-
6”),
“name”:”粵B000H6”,
“time”:”2011/04/18 00:08:01 ”,
“jd”:114.118286,
“wd”:22.573967,
“status”:0,
“v”:22,
“angle”:3
}
表1出租車GPS數(shù)據(jù)說明
Table 1Taxi GPS data description
字段Fieldname描述Fielddescription類型Fieldtype示例Fieldvaluename車牌號Platenumber字符型Char粵B000H6time采集時間Collectiontime日期時間型Datetime2011/04/1808:01:00jd經(jīng)度Longitude浮點型Float114.118286wd緯度Latitude浮點型Float22.573967status車輛狀態(tài)Vehiclestate整型Integer0v速度Speed浮點型Float22angle行駛方向Drivedirection整型Integer3
1.2.2地理索引設(shè)計
在MongoDB中,建立地理索引的鍵必須是一對值,即包含兩個元素的數(shù)組或包含兩個鍵的內(nèi)嵌文檔。在關(guān)系型數(shù)據(jù)模型中,出租車位置由2個字段描述,如果將其直接映射到MongoDB則會形成2個獨立的鍵值對{"jd":114.118286,"wd":22.57396},無法直接創(chuàng)建地理索引,因此需要對該兩個字段進行合并(“gps”:[114.118286,22.573967]),然后才能創(chuàng)建地理索引。合并后的MongoDB文檔模型如下所示:
{
“_id”:
“name”:”粵B000H6”,
“time”:”2011/04/18 00:08:01”,
“jd”:114.118286,
“wd”:22.573967,
“status”:0,
“v”:22,
“angle”:3,
“gps”:[114.118286,22.573967]
}
1.2.3數(shù)據(jù)查詢方案
MongoDB支持鄰域查詢($near)和范圍查詢($within)。$near命令將指定坐標附近的記錄按照由近到遠的順序返回。$within區(qū)域查詢則返回某區(qū)域內(nèi)的所有對象,區(qū)域可以是矩形、圓形或多邊形。其中,矩形區(qū)域查詢通過左上點和右下點來指定矩形范圍,圓形區(qū)域查詢通過圓心與半徑來指定圓形范圍,多邊形區(qū)域查詢則需要指定多邊形的各個頂點。
1.3基于Node.js的出租車GPS數(shù)據(jù)Web服務(wù)設(shè)計與實現(xiàn)
出租車GPS數(shù)據(jù)Web應(yīng)用采用Express MVC框架,分為對象模型層、控制器層與視圖層3層,下面將逐層介紹Web服務(wù)的設(shè)計與實現(xiàn)。
1.3.1對象模型層
Mongoose是MongoDB的一個對象模型工具,封裝MongoDB對文檔的增刪改查(CRUD)操作。該層主要完成出租車對象模型設(shè)計,首先根據(jù)出租車數(shù)據(jù)表創(chuàng)建對象Schema,然后將其發(fā)布為Model模型。這里,Schema僅是一種數(shù)據(jù)庫原型或模型骨架,并不具備數(shù)據(jù)庫的操作能力。Model則是由Schema構(gòu)造來的,除具有Schema定義的數(shù)據(jù)庫骨架以外,還具有數(shù)據(jù)庫操作行為。出租車對象模型關(guān)鍵javascript代碼如下:
var mongoose=require(‘mongoose’);//導(dǎo)入mongoose模塊
var Schema=mongoose.Schema;
var TaxiSchema = new Schema({
name:String,
time:Date,
jd:Number,
wd:Number,
status:Number,
v:Number,
angle:Number
});//定義Schema
exports.Taxi=mongoose.model(‘Taxi’,TaxiSchema);//將Schema發(fā)布為Model
1.3.2控制器層
控制器層負責(zé)系統(tǒng)的業(yè)務(wù)邏輯實現(xiàn),通過Express路由控制實現(xiàn)客戶端請求URL的路徑映射功能。根據(jù)系統(tǒng)功能需求與REST設(shè)計風(fēng)格,設(shè)計路由(表2)。
表2路由規(guī)劃
Table 2The plan of Express router
序號Number路由名稱Name方法Method路由功能Routingfunction1/Get首頁Index2/KNNQueryPost出租車鄰近點查詢Taxinearbyquery3/WithinBoxPost矩形區(qū)域查詢Rectangleareaquery4/WithinCenterPost圓形區(qū)域查詢Circularareaquery5/TrackPost出租車軌跡查詢Taxitrajectorydataquery……
下面以“/WithinCenter”的路徑處理為例,簡述“區(qū)域查詢(圓形)”的設(shè)計過程:首先從客戶端獲取用戶查詢條件,包括用戶位置信息與圓形區(qū)域檢索半徑,然后執(zhí)行mongodb查詢并提取數(shù)據(jù),最終返回查詢結(jié)果到客戶端(圖3)。
圖3“區(qū)域查詢(圓形)”通信圖[14]
Fig.3The communication diagram of the circular region query[14]
1.3.3視圖層
在視圖層EJS模板中,靜態(tài)部分由HTM5頁面實現(xiàn),動態(tài)部分則嵌入EJS標簽。視圖層設(shè)計中,地圖顯示直接調(diào)用騰訊地圖API[15]來實現(xiàn),時間查詢通過簡單的時間選擇對話框完成,區(qū)域設(shè)置則通過簡單的文本框設(shè)置,查詢結(jié)果json數(shù)據(jù)由EJS引擎渲染到頁面并在地圖標記,其頁面設(shè)計示例——“區(qū)域查詢(圓形)”如圖4所示。
圖4頁面設(shè)計示例
Fig.4Example of a page view
2.1實驗環(huán)境與數(shù)據(jù)
本研究搭建Node.js Web開發(fā)環(huán)境,數(shù)據(jù)庫層分別選用MongoDB與MySQL,對Web服務(wù)在區(qū)域查詢方面進行性能對比,實驗環(huán)境如表3所示。其中,MySQL通過MySQL Spatial Extensions(空間索引)[16]實現(xiàn)區(qū)域查詢。實驗數(shù)據(jù)采用2011-04-18至2011-04-26的深圳市出租車GPS軌跡數(shù)據(jù),車輛總數(shù)為13 799臺,數(shù)據(jù)文件約1.7億條記錄,數(shù)據(jù)總量大小約10 G。
表3實驗環(huán)境
Table 3Testing environment
硬件環(huán)境Hardwareenvironment軟件環(huán)境Softwareenvironment2CoreIntelCorei32310M2.10GHzCPU;8GMemory;500GBHarddisk64BitWindows8;MongoDB3.2.1;Nodev5.8.0;Express4.13.4;mongoose4.4.10;SublimeText2;TencentmapopenplatformJavaScriptAPIV2;MySQL5.5.38
2.2區(qū)域查詢性能分析
試驗分別對MongoDB與MySQL所存儲的相同數(shù)據(jù)集的不同量級(從50 MB到500 MB)進行半徑為0.5 km和1 km的地理范圍查詢,連續(xù)多次測試并取平均值。當(dāng)數(shù)據(jù)量小于150萬條,兩者的Web響應(yīng)時間差別并不明顯;隨著數(shù)據(jù)規(guī)模增加,MySQL Spatial的查詢耗時劇增,接近直線趨勢;而MongoDB耗時很少,并且增幅不大(圖5)。
將查詢區(qū)域半徑擴大至2.5 km的幾何區(qū)域時,實驗發(fā)現(xiàn),基于MySQL Spatial的查詢響應(yīng)時間已遠超出可等待的范圍,因此只測試MongoDB的查詢性能。從圖6可以看出,隨著數(shù)據(jù)量增大,MongoDB Web響應(yīng)時間有所增加,但整體耗時很少,可以支持地圖實時瀏覽。
圖5MongoDB與MySQL區(qū)域查詢性能對比
Fig.5Performance comparison for regional query based on MongoDB and MySQL
圖6區(qū)域半徑為2.5 km時MongoDB區(qū)域查詢響應(yīng)時間
Fig.6Response time of regional query based on MongoDB when region radius is 2.5 km
位置數(shù)據(jù)的高速增長態(tài)勢,給海量空間數(shù)據(jù)分布式存儲、管理與網(wǎng)絡(luò)在線服務(wù)提出了巨大的挑戰(zhàn)。MongoDB數(shù)據(jù)庫原生支持地理位置索引并且性能高度優(yōu)化,Node.js可以方便地搭建輕量、高效和易于擴展的Web服務(wù),本文結(jié)合MongoDB數(shù)據(jù)庫與Node.js Web技術(shù),探討一種出租車GPS數(shù)據(jù)的Web服務(wù)方案。實驗結(jié)果驗證該方案具有較好地時效性,為更高層次的應(yīng)用提供參考。
[1]孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J].計算機研究與發(fā)展,2013,50(1):146-169.
MENG X F,CI X.Big data management:Concepts,techniques and challenges[J].Journal of Computer Research and Development,2013,50(1):146-169.
[2]BANKER K.MongoDB實戰(zhàn)[M].丁雪豐,譯.北京:人民郵電出版社,2012.
BANKER K.MongoDB in Action[M].DING X F,trans.Beijing:Posts & Telecom Press,2012.
[3]申德榮,于戈,王習(xí)特,等.支持大數(shù)據(jù)管理的NoSQL系統(tǒng)研究綜述[J].軟件學(xué)報,2013,24(8):1786-1803.
SHEN D R,YU G,WANG X T,et al.Survey on NoSQL for management of big data[J].Journal of Software,2013,24(8):1786-1803.
[4]CATTELL R.Scalable SQL and NoSQL data stores
[J].ACM SIGMOD Record,2010,39(4):12-27.
[5]吳飛.基于MongoDB的LBS數(shù)據(jù)管理系統(tǒng)關(guān)鍵技術(shù)研究[J].測繪通報,2014(7):121-124.
WU F.Key technology research of LBS data management system based on MongoDB [J].Bulletin of Surveying and Mapping,2014(7):121-124.
[6]劉卓.基于NoSQL的空間數(shù)據(jù)云存儲的研究[D].開封:河南大學(xué),2014.
LIU Z.Research of Spatial Data Cloud Storage Based on NoSQL Database[D].Kaifeng:Henan University,2014.
[7]宋平亮.基于MongoDB的航道數(shù)據(jù)Web服務(wù)研究[D].大連:大連海事大學(xué),2015.
SONG P L.Research on Channel Data Web Service based on MongoDB[D].Dalian:Dalian Maritime University,2015.
[9]黃揚子.基于NodeJS平臺搭建REST風(fēng)格Web服務(wù)[J].無線互聯(lián)科技,2015(16):57-59.
HUANG Y Z.Build a REST-style web services based on Node JS [J].Wireless Internet Technology,2015(16):57-59.
[10]郭家寶.Node.js開發(fā)指南[M].北京:人民郵電出版社,2012.
GUO J B.Node.js Development Guide[M].Beijing:Posts & Telecom Press,2012.
[11]Mongoose Document [EB/OL].[2015-05-07].
http://www.nodeclass.com/api/mongoose.html.
[12]STRONGLOOP.Express[EB/OL].[2016-05-20].http://www.expressjs.com.cn/.
[13]BITOVI.EJS [EB/OL].[2016-05-11].http://www.embeddedjs.com/.
[14]GOMAA H.軟件建模與設(shè)計:UML、用例、模式和軟件體系結(jié)構(gòu)[M].彭鑫,吳毅堅,趙文耘,等譯.北京:機械工業(yè)出版社,2014:96-100.
GOMAA H.Software Modeling & Design:UML,Use Cases,Patterns,& Software Architectures[M].PENG X,WU Y J,ZHAO W Y,et al,trans.Beijing:China Machine Press,2014:96-100.
[15]騰訊地圖開放平臺JavaScript API V2[EB/OL].
[2016-05-21].http://lbs.qq.com/javascript_v2/index.html.
Tencent Map Open Platform JavaScript API V2 [EB/OL].[2016-05-21].http://lbs.qq.com/javascript_v2/index.html.
[16]張明波,申排偉,陸鋒,等.空間數(shù)據(jù)引擎關(guān)鍵技術(shù)與應(yīng)用分析[J].地球信息科學(xué),2004,6(4):80-84.
ZHANG M B,SHEN P W,LU F,et al.Analysis and discussion on spatial data engine technologies[J].Geo-information Science,2004,6(4):80-84.
(責(zé)任編輯:米慧芝)
Research of Massive Taxi GPS Data Web Service Based on NoSQL
LI Xiaoying1,2,HE Shouwu1,SU Shuhai1
(1.Campus of Nanning,Guilin University of Technology,Nanning,Guangxi,530001,China;2.Computer School,Wuhan University,Wuhan,Hubei,430072,China)
【Objective】In order to meet the demand of massive spatial data storage management and real-time online service,the massive taxi GPS data Web service based on NoSQL was discussed in this paper.The solution is to overcome the problem of poor scalability and low access efficiency in traditional relational database.【Methods】In our solution,location-based query was realized by the MongoDB geospatial indexes.Web services was built on the Node.js technology.The Express MVC framework was used for building Web application.【Results】The region query experiments on the MongoDB and MySQL Spatial Extensions was carried out for performance comparisons.The results showed that MongoDB had higher query efficiency.When there was large amount of data,its performance was particularly significant.【Conclusion】The taxi GPS data Web service based on NoSQL can support the real-time query and display of location data on the digital map.The result has certain reference value for the similar study.
location-based services(LBS),NoSQL,Node.js,MongoDB,Web service
2016-05-25
2016-07-27
李曉英(1981-),女,講師,武漢大學(xué)計算機學(xué)院訪問學(xué)者,主要從事大數(shù)據(jù)與數(shù)據(jù)管理方面的研究,E-mail:409057436@qq.com。
TP311
A
1002-7378(2016)03-0231-06
網(wǎng)絡(luò)優(yōu)先數(shù)字出版時間:2016-08-26【DOI】10.13657/j.cnki.gxkxyxb.20160826.002
網(wǎng)絡(luò)優(yōu)先數(shù)字出版地址:http://www.cnki.net/kcms/detail/45.1075.N.20160826.1048.004.html
*2016年度廣西高校中青年教師基礎(chǔ)能力提升項目(KY2016YB911),2015年度廣西職業(yè)教育教學(xué)改革立項項目“計算機應(yīng)用技術(shù)(Web方向)‘產(chǎn)品驅(qū)動’實踐教學(xué)體系的改革研究與實踐”和桂林理工大學(xué)南寧分校課程改革與建設(shè)立項建設(shè)項目(2014KGB09,2015KGA06)資助。