• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Django和MySQL的網(wǎng)絡(luò)化測(cè)試數(shù)據(jù)查詢系統(tǒng)研究

      2019-04-03 01:44:10羅廣恒
      智能物聯(lián)技術(shù) 2019年2期
      關(guān)鍵詞:自動(dòng)測(cè)試測(cè)試數(shù)據(jù)數(shù)據(jù)表

      羅廣恒

      (中國(guó)電子科技集團(tuán)公司第十研究所,四川成都610036)

      0 引言

      自動(dòng)測(cè)試系統(tǒng)(ATS)是指完全或大部分代替人工,利用計(jì)算機(jī)執(zhí)行程序控制測(cè)試儀器和被測(cè)設(shè)備,自動(dòng)進(jìn)行測(cè)量以及數(shù)據(jù)處理,自動(dòng)顯示、輸出或保存測(cè)試結(jié)果的系統(tǒng)。隨著各生產(chǎn)行業(yè)智能制造的發(fā)展,高效靈活的生產(chǎn)模式、產(chǎn)業(yè)鏈的有效協(xié)作與整合、新型生產(chǎn)服務(wù)型制造、系統(tǒng)開發(fā)和云制造等智能化優(yōu)勢(shì)越來(lái)越多地得到企業(yè)的認(rèn)同和追逐。智能工廠創(chuàng)造價(jià)值的主要技術(shù)前提是大量生產(chǎn)數(shù)據(jù)的集成[1],自動(dòng)測(cè)試系統(tǒng)實(shí)現(xiàn)了生產(chǎn)現(xiàn)場(chǎng)測(cè)試數(shù)據(jù)的采集,但對(duì)測(cè)試數(shù)據(jù)的后端應(yīng)用卻較為不足。因此,從生產(chǎn)現(xiàn)場(chǎng)管理或企業(yè)運(yùn)營(yíng)角度來(lái)說(shuō),將自動(dòng)化與信息化技術(shù)緊密結(jié)合,把來(lái)自不同測(cè)試系統(tǒng)的測(cè)試數(shù)據(jù)網(wǎng)絡(luò)化歸集、融合、分析和可視化的需求,顯得越來(lái)越迫切。近年來(lái),隨著計(jì)算機(jī)技術(shù)的蓬勃發(fā)展,開源軟件在操作系統(tǒng)、數(shù)據(jù)庫(kù)、Web服務(wù)等各個(gè)方面的應(yīng)用已成為主流,使用開源軟件可快速、低成本構(gòu)建企業(yè)獨(dú)特的應(yīng)用系統(tǒng)。本文運(yùn)用開源的Django網(wǎng)絡(luò)框架和MySQL數(shù)據(jù)庫(kù)構(gòu)建自動(dòng)測(cè)試數(shù)據(jù)查詢系統(tǒng),突破測(cè)試測(cè)量中數(shù)據(jù)孤島的現(xiàn)狀,實(shí)現(xiàn)測(cè)試數(shù)據(jù)從測(cè)試端到應(yīng)用端的網(wǎng)絡(luò)連通。

      1 Django網(wǎng)絡(luò)框架

      Django是一種基于python語(yǔ)言的具有完整架站能力的開源網(wǎng)絡(luò)框架。通過(guò)Django,設(shè)計(jì)人員可以專注于網(wǎng)站應(yīng)用業(yè)務(wù)邏輯的實(shí)現(xiàn),而無(wú)須處理網(wǎng)絡(luò)底層協(xié)議、線程、進(jìn)程等方面的問(wèn)題,這樣大大提高了開發(fā)效率和Web應(yīng)用質(zhì)量[2]。測(cè)試數(shù)據(jù)查詢系統(tǒng)基于B/S架構(gòu),分為三層設(shè)計(jì),包括前端、后端和數(shù)據(jù)庫(kù),Django的MTV模型(即Model+Template+View設(shè)計(jì)模式)基于這三層設(shè)計(jì)優(yōu)化而來(lái),框架結(jié)構(gòu)如圖1所示。

      Model:使用ORM(對(duì)象數(shù)據(jù)映射)機(jī)制,封裝與應(yīng)用程序業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)及對(duì)數(shù)據(jù)的處理方法,是Django框架和數(shù)據(jù)庫(kù)的交互層;

      Template:通過(guò)格式化模板,將數(shù)據(jù)與HTML語(yǔ)言、Js語(yǔ)言等結(jié)合起來(lái)的引擎,用于Web頁(yè)面的前端渲染;

      View:負(fù)責(zé)實(shí)際的業(yè)務(wù)邏輯實(shí)現(xiàn),即后端的查詢操作和數(shù)據(jù)處理。

      在工程開發(fā)時(shí),Django用文件夾(包)的形式組織腳本文件和靜態(tài)文件,通過(guò)路由文件進(jìn)行路徑關(guān)聯(lián),從而使整個(gè)工程目錄清晰有序,適用于前后端設(shè)計(jì)人員的分離和協(xié)同開發(fā)。

      圖2所示為測(cè)試數(shù)據(jù)查詢系統(tǒng)的文件組織結(jié)構(gòu)圖,在shell中執(zhí)行django-admin startproject xxx語(yǔ)句,可自動(dòng)創(chuàng)建工程目錄和manage.py文件,然后根據(jù)需要在此基礎(chǔ)上進(jìn)行文件擴(kuò)展和應(yīng)用創(chuàng)建。測(cè)試數(shù)據(jù)查詢系統(tǒng)中建立了賬戶管理應(yīng)用和數(shù)據(jù)查詢應(yīng)用,在項(xiàng)目設(shè)計(jì)過(guò)程中,主要就是圍繞這2種應(yīng)用,運(yùn)用MTV的思想進(jìn)行前后端設(shè)計(jì)。測(cè)試數(shù)據(jù)查詢系統(tǒng)中的應(yīng)用說(shuō)明見表1。

      表1 測(cè)試數(shù)據(jù)查詢系統(tǒng)中的應(yīng)用說(shuō)明

      圖1 Django網(wǎng)絡(luò)框架結(jié)構(gòu)圖

      2 測(cè)試數(shù)據(jù)庫(kù)搭建

      同Oracle、SQL Server等大型數(shù)據(jù)庫(kù)相比,MySQL在功能性和安全性等方面表現(xiàn)得差一些,規(guī)模也較小。但由于MySQL的開源特性,可以以較低的資金和開發(fā)成本滿足大多數(shù)中小用戶的使用需求。本文選用MySQL作為測(cè)試數(shù)據(jù)庫(kù)的搭建平臺(tái),適用于由若干自動(dòng)測(cè)試設(shè)備和計(jì)算機(jī)構(gòu)建的企業(yè)局域網(wǎng)環(huán)境。在數(shù)據(jù)頻次不高、數(shù)據(jù)量較小的情況下,使用一臺(tái)服務(wù)器即可滿足要求,后期隨著數(shù)據(jù)容量增加可考慮通過(guò)建設(shè)分布式數(shù)據(jù)庫(kù)的方式來(lái)提高系統(tǒng)性能。

      2.1 測(cè)試數(shù)據(jù)表設(shè)計(jì)

      測(cè)試數(shù)據(jù)查詢系統(tǒng)使用MySQL作為數(shù)據(jù)存儲(chǔ)和管理的數(shù)據(jù)庫(kù)管理系統(tǒng),作為一種關(guān)系型數(shù)據(jù)庫(kù),數(shù)據(jù)表的設(shè)計(jì)應(yīng)遵循固定的范式[3]。數(shù)據(jù)表中盡量不要出現(xiàn)重復(fù)字段,并且每個(gè)字段不能再拆分。

      Django自帶網(wǎng)站的后臺(tái)應(yīng)用管理功能,包括賬戶的登陸管理、權(quán)限管理、應(yīng)用管理等,功能已較為齊備。因此,為了方便設(shè)計(jì),賬戶管理應(yīng)用的數(shù)據(jù)表直接沿用Django的用戶表和用戶權(quán)限管理表,然后再關(guān)聯(lián)自定義的用戶信息附加表即可,本文重點(diǎn)介紹測(cè)試數(shù)據(jù)表的設(shè)計(jì)方法。從測(cè)試數(shù)據(jù)查詢系統(tǒng)業(yè)務(wù)應(yīng)用的角度出發(fā),管理人員或技術(shù)人員除了關(guān)注測(cè)試本身的信息,包括測(cè)試項(xiàng)目、測(cè)試時(shí)間、測(cè)試產(chǎn)品、測(cè)試指標(biāo)和測(cè)試結(jié)論等信息,還關(guān)注與測(cè)試相關(guān)的工藝環(huán)節(jié)和工程信息,以便進(jìn)行多層次查詢和分類統(tǒng)計(jì)分析。隨著網(wǎng)絡(luò)化自動(dòng)測(cè)試站的增加,測(cè)試數(shù)據(jù)的存儲(chǔ)量隨著時(shí)間呈指數(shù)級(jí)增長(zhǎng),為了提高測(cè)試數(shù)據(jù)的存儲(chǔ)、刪減、修改和查詢效率,依據(jù)層級(jí)關(guān)系,測(cè)試數(shù)據(jù)庫(kù)中將建成測(cè)試結(jié)果表、測(cè)試記錄表、工程信息表、產(chǎn)品信息表和調(diào)試工藝表,各表之間通過(guò)id進(jìn)行外鍵關(guān)聯(lián),實(shí)現(xiàn)聯(lián)合查詢。以測(cè)試數(shù)據(jù)中較為重要的測(cè)試記錄表和測(cè)試結(jié)果表為例,其表中字段的定義如表2所示。

      圖2 測(cè)試數(shù)據(jù)查詢系統(tǒng)的文件組織結(jié)構(gòu)

      2.2 數(shù)據(jù)庫(kù)的創(chuàng)建及訪問(wèn)

      Django使用ORM機(jī)制在數(shù)據(jù)庫(kù)和業(yè)務(wù)應(yīng)用之間進(jìn)行映射,這樣在訪問(wèn)數(shù)據(jù)庫(kù)時(shí),不需構(gòu)建復(fù)雜且難以拼裝的SQL語(yǔ)句,通過(guò)簡(jiǎn)單地操作對(duì)象的屬性和方法即可輕松實(shí)現(xiàn)數(shù)據(jù)的訪問(wèn),甚至進(jìn)行一些功能性的操作。在MySQL數(shù)據(jù)庫(kù)中創(chuàng)建2.1節(jié)的數(shù)據(jù)表,只需在相應(yīng)應(yīng)用的models.py文件中編寫數(shù)據(jù)模型類,然后執(zhí)行數(shù)據(jù)遷移操作,每個(gè)數(shù)據(jù)模型類都是django.db.models.Model的子類,都將對(duì)應(yīng)著數(shù)據(jù)庫(kù)中的一張數(shù)據(jù)表。下面將具體討論如何運(yùn)用ORM機(jī)制創(chuàng)建和訪問(wèn)MySQL數(shù)據(jù)庫(kù)。

      第一步:在遠(yuǎn)程服務(wù)器上安裝MySQL數(shù)據(jù)庫(kù),并設(shè)置數(shù)據(jù)庫(kù)的名稱、管理員賬戶、地址和端口號(hào),本系統(tǒng)中使用的是MySQL5.7版本。

      第二步:在shell中,運(yùn)行命令pip install PyMySQL(也可通過(guò)離線文件包安裝),安裝MySQL的python庫(kù),作為Django訪問(wèn)MySQL的引擎。

      第三步:在Django的工程腳本文件settings.py中,設(shè)置MySQL引擎和訪問(wèn)數(shù)據(jù)庫(kù)的地址、端口、用戶名、密碼等信息,用于連接遠(yuǎn)程數(shù)據(jù)庫(kù)。

      DATABASES={

      表2 測(cè)試數(shù)據(jù)庫(kù)中測(cè)試結(jié)果表和測(cè)試記錄表示例

      ′db01′:{

      ′ENGINE′:′django.db.backends.mysql′,

      ′NAME′:′數(shù)據(jù)庫(kù)名′,

      ′USER′:′用戶名’

      ′PASSWORD′:′密碼

      ′HOST′:′遠(yuǎn)程地址

      ‘PORT′:端口號(hào),

      },

      }

      第四步:在Django數(shù)據(jù)查詢應(yīng)用的腳本文件models.py中,創(chuàng)建相關(guān)數(shù)據(jù)表的類,并在類中定義字段的類型和關(guān)聯(lián)關(guān)系,下面以測(cè)試結(jié)果表和測(cè)試數(shù)據(jù)表為例進(jìn)行說(shuō)明。

      #測(cè)試記錄表的類

      class MeasureRecord(models.Model):

      measurename=models.CharField(max_length=20)

      projectname=models.ForeignKey(ProjectDb,on_delete=models.DO_NOTHING,related_name=“prjname”)

      people=models.ForeignKey(User,on_delete=models.DO_NOTHING)

      product=models.ForeignKey(ProductDb,on_delete=models.DO_NOTHING)

      craft=models.ForeignKey(CraftDb,on_delete=models.DO_NOTHING)

      starttime=models.DateTimeField()

      endtime=models.DateTimeField()

      def__str__(self):

      return self.measurename

      def get_absolute_url(self):

      return reverse(“record:datadetail”,args=[self.id,])

      class Meta:

      app_label="RecordApp"

      #測(cè)試結(jié)果表的類

      class MeasureResult(models.Model):

      record=models.ForeignKey(MeasureRecord,on_delete=models.CASCADE)

      quotaname=models.CharField(max_length=20)

      resultvalue=models.CharField(max_length=20)

      conclusion=models.CharField(max_length=20)

      starttime=models.DateTimeField()

      endtime=models.DateTimeField()

      def__str__(self):

      return self.quotaname

      class Meta:

      app_label=“RecordApp”

      第五步:執(zhí)行數(shù)據(jù)表遷移工作,在shell中執(zhí)行命令“python manage.py migrate應(yīng)用名”,則Django將調(diào)用ORM機(jī)制在數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建與models.py中的類相對(duì)應(yīng)的數(shù)據(jù)表。

      第六步:從models.py文件中導(dǎo)入類到應(yīng)用的views.py文件,并創(chuàng)建類相對(duì)應(yīng)的對(duì)象,通過(guò)對(duì)象的函數(shù)訪問(wèn)數(shù)據(jù)庫(kù)中的表和字段,執(zhí)行數(shù)據(jù)的查詢操作,包括簡(jiǎn)單查詢、過(guò)濾、跨表查詢等。

      #依據(jù)id號(hào)進(jìn)行簡(jiǎn)單查詢示例

      from.models import MeasureRecord,MeasureResult#導(dǎo)入類

      def DataDetail(request,id):

      reslist=MeasureResult.objects.filter(record_id=id)#創(chuàng)建對(duì)象并用filter函數(shù)執(zhí)行過(guò)濾操作

      record=MeasureRecord.objects.get(id=id)#創(chuàng)建對(duì)象并用get函數(shù)執(zhí)行查詢操作

      3 Web頁(yè)面設(shè)計(jì)

      用戶通過(guò)瀏覽器的Web頁(yè)面執(zhí)行數(shù)據(jù)庫(kù)的查詢操作,查詢進(jìn)程、查詢結(jié)果等信息通過(guò)Web頁(yè)面進(jìn)行可視化展示。Web頁(yè)面的設(shè)計(jì)應(yīng)遵從用戶至上的理念,以方便用戶理解和操作為前提進(jìn)行開發(fā),并配以生動(dòng)的色彩、圖形、排版等形式,讓數(shù)據(jù)以最直觀的方式呈現(xiàn)出來(lái)。

      3.1 查詢功能

      為了提高數(shù)據(jù)查詢的靈活性,數(shù)據(jù)查詢的關(guān)鍵詞包含工程代碼、產(chǎn)品名稱、工藝名稱、測(cè)試項(xiàng)目和測(cè)試起止時(shí)間,用戶可自由選擇組合關(guān)鍵詞進(jìn)行查詢。查詢功能的設(shè)計(jì)主要包括:用戶權(quán)限認(rèn)證、關(guān)鍵詞自動(dòng)關(guān)聯(lián)和依據(jù)關(guān)鍵詞進(jìn)行數(shù)據(jù)查詢3個(gè)方面。

      用戶權(quán)限認(rèn)證是指執(zhí)行查詢函數(shù)之前對(duì)當(dāng)前是否登錄以及登錄用戶是否授權(quán)進(jìn)行查詢。為降低開發(fā)難度,直接沿用Django的用戶權(quán)限認(rèn)證函數(shù),只要在查詢函數(shù)之前添加裝飾函數(shù)@login_required(login_url=“/account/login/”)即可。關(guān)鍵詞自動(dòng)關(guān)聯(lián)是根據(jù)數(shù)據(jù)庫(kù)的已有數(shù)據(jù),按照“工程代碼-產(chǎn)品名稱”進(jìn)行二級(jí)聯(lián)動(dòng),即初始查詢頁(yè)面會(huì)在下拉框中顯示數(shù)據(jù)庫(kù)已有的工程代碼列表,用戶選定某一項(xiàng)工程代碼之后,頁(yè)面會(huì)自動(dòng)查詢并顯示該工程代碼對(duì)應(yīng)的全部產(chǎn)品列表。當(dāng)用戶選定或錄入關(guān)鍵詞之后,查詢函數(shù)將依據(jù)關(guān)鍵詞組裝ORM查詢語(yǔ)句,執(zhí)行查詢,查詢完成后,將查詢結(jié)果進(jìn)行整理并轉(zhuǎn)換成JSON格式,最終渲染到Web頁(yè)面中來(lái),用戶即可看到生動(dòng)靈活的可視化數(shù)據(jù)。數(shù)據(jù)查詢函數(shù)的執(zhí)行流程如圖3所示。

      圖3 數(shù)據(jù)查詢函數(shù)執(zhí)行流程

      3.2 Js庫(kù)和模板的應(yīng)用

      Js(JavaScript)是一種面向客戶端瀏覽器的基于對(duì)象、事件驅(qū)動(dòng)式的腳本語(yǔ)言。得益于開源技術(shù)的蓬勃發(fā)展,目前在網(wǎng)絡(luò)上有各式各樣面向不同功能的Js庫(kù),Js庫(kù)簡(jiǎn)化了Js編程,使代碼更簡(jiǎn)潔,可以直接運(yùn)用在Html頁(yè)面中。在本系統(tǒng)中,主要運(yùn)用的Js庫(kù)及其功能如表3所示。

      表3 測(cè)試數(shù)據(jù)查詢系統(tǒng)中應(yīng)用的Js庫(kù)

      Django有一套自成體系的模板系統(tǒng),包含很多內(nèi)置標(biāo)簽和接口函數(shù),方便頁(yè)面的繼承和擴(kuò)展。在頁(yè)面設(shè)計(jì)中使用模板和Js庫(kù),后臺(tái)程序只需要將JSON格式的數(shù)據(jù)傳遞給指定路徑的Html模板文件,就可以很便利地動(dòng)態(tài)生成Html頁(yè)面。

      圖4 網(wǎng)站管理頁(yè)面

      4 系統(tǒng)實(shí)現(xiàn)和優(yōu)化

      4.1 系統(tǒng)實(shí)現(xiàn)

      以一臺(tái)連網(wǎng)的Windows服務(wù)器布置網(wǎng)站服務(wù)端程序和MySQL數(shù)據(jù)庫(kù),開啟服務(wù)端的網(wǎng)絡(luò)服務(wù)后,將10臺(tái)自動(dòng)測(cè)試系統(tǒng)通過(guò)終端計(jì)算機(jī)接入局域網(wǎng),終端上的應(yīng)用程序?qū)y(cè)試數(shù)據(jù)自動(dòng)上傳到服務(wù)端的數(shù)據(jù)庫(kù)中。測(cè)試數(shù)據(jù)查詢系統(tǒng)主要包括用戶權(quán)限認(rèn)證和測(cè)試數(shù)據(jù)查詢兩個(gè)模塊。

      4.1.1 用戶權(quán)限認(rèn)證

      用戶主要分為管理員用戶、普通用戶和未注冊(cè)用戶,由于本系統(tǒng)沿用Django自帶的用戶權(quán)限控制模塊,因此在瀏覽器中將直接使用系統(tǒng)默認(rèn)的管理頁(yè)面。

      管理員用戶:主要指對(duì)網(wǎng)站進(jìn)行后臺(tái)管理的人員,按權(quán)限范圍又可分為超級(jí)管理員和受限管理員。主要功能包括用戶管理、應(yīng)用模塊管理、歷史操作追溯等。當(dāng)管理員通過(guò)超鏈接進(jìn)入后臺(tái)管理頁(yè)面時(shí),首先輸入用戶名和密碼,然后進(jìn)入網(wǎng)站管理頁(yè)面,如圖4所示。

      普通用戶:由于系統(tǒng)面向的是企業(yè)用戶,因此不采用開放注冊(cè)的模式,用戶只能通過(guò)管理員添加。普通用戶是指經(jīng)過(guò)管理員在Users組中添加賬戶的用戶,其可以正常訪問(wèn)網(wǎng)站,通過(guò)自動(dòng)測(cè)試系統(tǒng)的終端應(yīng)用向數(shù)據(jù)庫(kù)上傳測(cè)試數(shù)據(jù),在瀏覽器中查詢、修改和刪除測(cè)試數(shù)據(jù)等。

      未注冊(cè)用戶:未注冊(cè)用戶是指在Users組中沒有相關(guān)賬戶的用戶,其不能訪問(wèn)網(wǎng)站,也不能通過(guò)自動(dòng)測(cè)試系統(tǒng)的終端應(yīng)用向數(shù)據(jù)庫(kù)上傳測(cè)試數(shù)據(jù)。

      4.1.2 測(cè)試數(shù)據(jù)添加

      測(cè)試數(shù)據(jù)添加主要分兩種,一種是通過(guò)自動(dòng)測(cè)試系統(tǒng)軟件在當(dāng)前項(xiàng)目測(cè)試完成后自動(dòng)添加,前提是確保測(cè)試時(shí)自動(dòng)測(cè)試系統(tǒng)已正常接入測(cè)試局域網(wǎng),然后通過(guò)自動(dòng)測(cè)試軟件訪問(wèn)網(wǎng)絡(luò)端的測(cè)試數(shù)據(jù)庫(kù),自動(dòng)找到對(duì)應(yīng)的測(cè)試數(shù)據(jù)表并追加測(cè)試數(shù)據(jù);另一種是自動(dòng)測(cè)試在離線環(huán)境下完成,測(cè)試數(shù)據(jù)無(wú)法即時(shí)上傳到服務(wù)器數(shù)據(jù)庫(kù)中,而是保存在本地的MySQL數(shù)據(jù)庫(kù),可以通過(guò)使用Navicat軟件訪問(wèn)測(cè)試數(shù)據(jù)服務(wù)器,然后手動(dòng)上傳數(shù)據(jù)至服務(wù)端。

      4.1.3 測(cè)試數(shù)據(jù)查詢

      從遠(yuǎn)程計(jì)算機(jī)的瀏覽器輸入服務(wù)端的網(wǎng)頁(yè)地址,瀏覽器首先訪問(wèn)網(wǎng)站的登陸頁(yè)面,輸入用戶名和密碼后,進(jìn)入測(cè)試數(shù)據(jù)查詢頁(yè)面。如圖5所示,為查詢頁(yè)面的最終效果,頁(yè)面按照典型的空間布局方式(上、下、左、右、中)分割,包括用戶管理區(qū)、功能導(dǎo)航區(qū)、數(shù)據(jù)查詢區(qū)和圖形化分析展示區(qū)。數(shù)據(jù)查詢區(qū)可實(shí)現(xiàn)6種關(guān)鍵詞(工程代碼、產(chǎn)品名稱、工藝名稱、測(cè)試項(xiàng)目、開始時(shí)間和結(jié)束時(shí)間)的組合查詢,選擇或錄入查詢關(guān)鍵詞,點(diǎn)擊查詢按鈕即可將數(shù)據(jù)庫(kù)中的信息按條件可視化地展示在數(shù)據(jù)網(wǎng)格中。查詢出的數(shù)據(jù)自動(dòng)分頁(yè)展示,用戶可自定義按照時(shí)間順序正序或倒序排列數(shù)據(jù),數(shù)據(jù)中的不合格項(xiàng)以紅底色顯現(xiàn),頁(yè)面右端將以柱狀圖分析各工程的指標(biāo)合格率。由此,用戶在遠(yuǎn)程計(jì)算機(jī)上即可實(shí)現(xiàn)測(cè)試數(shù)據(jù)的網(wǎng)絡(luò)化查詢,后期將在此基礎(chǔ)上進(jìn)行深度開發(fā),如擴(kuò)展數(shù)據(jù)表和字段、強(qiáng)化后端查詢和數(shù)據(jù)處理、增強(qiáng)數(shù)據(jù)分析能力等,讓該系統(tǒng)變得更豐富、更智能。

      圖5 查詢頁(yè)面實(shí)際應(yīng)用展示

      4.2 持續(xù)優(yōu)化

      隨著系統(tǒng)使用過(guò)程中數(shù)據(jù)量的不斷積累,會(huì)面臨數(shù)據(jù)量大導(dǎo)致效率無(wú)法滿足要求的情況,因此需要探索對(duì)數(shù)據(jù)庫(kù)查詢性能的持續(xù)優(yōu)化。查詢性能的優(yōu)化主要涉及MySQL數(shù)據(jù)庫(kù)中表結(jié)構(gòu)優(yōu)化、索引優(yōu)化和查詢操作優(yōu)化。當(dāng)單表中存儲(chǔ)數(shù)據(jù)量過(guò)大,查詢?nèi)哂噙^(guò)多時(shí),會(huì)直接導(dǎo)致數(shù)據(jù)庫(kù)執(zhí)行許多不必要的操作和遍歷大量無(wú)關(guān)數(shù)據(jù),影響查詢時(shí)間。因此,在數(shù)據(jù)表設(shè)計(jì)時(shí),可以以工程代碼為后綴對(duì)測(cè)試結(jié)果表和測(cè)試數(shù)據(jù)表進(jìn)行分表存儲(chǔ),這樣,當(dāng)執(zhí)行查詢時(shí),就不會(huì)去訪問(wèn)無(wú)關(guān)工程的數(shù)據(jù)表,大大減少遍歷的數(shù)據(jù)行。同時(shí),在測(cè)試數(shù)據(jù)表中,以測(cè)試項(xiàng)目作索引,并進(jìn)行排序,也可提高數(shù)據(jù)的檢索速度。其缺點(diǎn)是,當(dāng)新增工程時(shí),需要在Django的models.py文件中新增以工程代碼為標(biāo)識(shí)的數(shù)據(jù)表類,并執(zhí)行數(shù)據(jù)表遷移操作,在數(shù)據(jù)庫(kù)中增加新的數(shù)據(jù)表。

      另一方面,由于MySQL的數(shù)據(jù)是存儲(chǔ)在磁盤上的,訪問(wèn)MySQL需要進(jìn)行磁盤的IO操作,因此直接從MySQL中讀取數(shù)據(jù)不如直接從內(nèi)存中讀取數(shù)據(jù)的效率高。為了提高訪問(wèn)效率,可以在數(shù)據(jù)庫(kù)和應(yīng)用程序之間放置一個(gè)基于內(nèi)存的緩存系統(tǒng)。在查詢數(shù)據(jù)時(shí),先從內(nèi)存中查找,如果找到則使用,沒有找到再訪問(wèn)真正的數(shù)據(jù)庫(kù),并將查詢到的結(jié)果放入緩存中供第二次查詢時(shí)使用。本系統(tǒng)在后期優(yōu)化中,將考慮采用目前較為流行的Redis NoSQL數(shù)據(jù)庫(kù)(以下簡(jiǎn)稱Redis)作為MySQL數(shù)據(jù)庫(kù)的緩存,形成以MySQL(主)+Redis(輔)的數(shù)據(jù)存儲(chǔ)形式。需要注意的是,Redis是以鍵-值對(duì)的形式存儲(chǔ)在內(nèi)存中,而MySQL是按行存儲(chǔ)數(shù)據(jù)的,要將行數(shù)據(jù)存儲(chǔ)于Redis中,需要在Redis中找到一種對(duì)應(yīng)于MySQL行的數(shù)據(jù)結(jié)構(gòu)。由于JSON格式也是一種鍵-值對(duì)的形式,并且能被python識(shí)別和使用,因此,可將結(jié)果集格式化為若干JSON對(duì)象,然后將JSON對(duì)象序列化為字符串存入Redis中。

      5 結(jié)語(yǔ)

      運(yùn)用Django和MySQL可以成功搭建網(wǎng)絡(luò)化測(cè)試數(shù)據(jù)查詢系統(tǒng),開源軟件提供了功能豐富的庫(kù)和框架,具有很強(qiáng)的實(shí)用性和擴(kuò)展性,讓設(shè)計(jì)人員在開發(fā)過(guò)程中更專注于查詢邏輯和用戶體驗(yàn),而不需理會(huì)底層復(fù)雜的協(xié)議和算法。該系統(tǒng)讓原來(lái)離線的測(cè)試數(shù)據(jù)統(tǒng)一歸集于網(wǎng)絡(luò)數(shù)據(jù)庫(kù),并利用瀏覽器遠(yuǎn)程查詢和可視化展示。本文所探討的測(cè)試數(shù)據(jù)網(wǎng)絡(luò)化方法,是實(shí)現(xiàn)智能物聯(lián)的基礎(chǔ)技術(shù)途徑之一,其以較低的成本和靈活的技術(shù)手段快速搭建起整個(gè)系統(tǒng),并最終成功部署應(yīng)用,可供中小型企業(yè)(項(xiàng)目)參考應(yīng)用。同時(shí),參閱互聯(lián)網(wǎng)上的各種技術(shù)方案,該系統(tǒng)還可以繼續(xù)擴(kuò)展和優(yōu)化,如提高數(shù)據(jù)查詢性能、增加業(yè)務(wù)處理工作流程、強(qiáng)化數(shù)據(jù)分析能力等。

      猜你喜歡
      自動(dòng)測(cè)試測(cè)試數(shù)據(jù)數(shù)據(jù)表
      湖北省新冠肺炎疫情數(shù)據(jù)表
      黨員生活(2020年2期)2020-04-17 09:56:30
      測(cè)試數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
      JXG-50S型相敏軌道電路接收器自動(dòng)測(cè)試臺(tái)
      可并行測(cè)試的電磁兼容自動(dòng)測(cè)試系統(tǒng)的實(shí)現(xiàn)
      關(guān)于某型雷達(dá)自動(dòng)測(cè)試系統(tǒng)的幾點(diǎn)認(rèn)識(shí)和建議
      電子制作(2018年11期)2018-08-04 03:26:00
      基于自適應(yīng)粒子群優(yōu)化算法的測(cè)試數(shù)據(jù)擴(kuò)增方法
      空間co-location挖掘模式在學(xué)生體能測(cè)試數(shù)據(jù)中的應(yīng)用
      體育科技(2016年2期)2016-02-28 17:06:21
      圖表
      一種衛(wèi)星低頻接口自動(dòng)測(cè)試系統(tǒng)
      航天器工程(2014年4期)2014-03-11 16:35:47
      沾益县| 扶余县| 永寿县| 盐亭县| 乐昌市| 保靖县| 章丘市| 乐平市| 田林县| 兰考县| 运城市| 泾川县| 佳木斯市| 榆林市| 万山特区| 大姚县| 莫力| 三门峡市| 富民县| 武陟县| 邓州市| 施秉县| 通江县| 通河县| 平武县| 孟连| 合肥市| 夏津县| 易门县| 乌兰察布市| 嘉义市| 兴安县| 长汀县| 邻水| 阿城市| 陆河县| 镇江市| 盈江县| 叶城县| 共和县| 淳化县|