亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于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ù)表

        羅廣恒

        (中國電子科技集團(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ì)越來越多地得到企業(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)營角度來說,將自動(dòng)化與信息化技術(shù)緊密結(jié)合,把來自不同測(cè)試系統(tǒng)的測(cè)試數(shù)據(jù)網(wǎng)絡(luò)化歸集、融合、分析和可視化的需求,顯得越來越迫切。近年來,隨著計(jì)算機(jī)技術(shù)的蓬勃發(fā)展,開源軟件在操作系統(tǒng)、數(shù)據(jù)庫、Web服務(wù)等各個(gè)方面的應(yīng)用已成為主流,使用開源軟件可快速、低成本構(gòu)建企業(yè)獨(dú)特的應(yīng)用系統(tǒng)。本文運(yùn)用開源的Django網(wǎng)絡(luò)框架和MySQL數(shù)據(jù)庫構(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語言的具有完整架站能力的開源網(wǎng)絡(luò)框架。通過Django,設(shè)計(jì)人員可以專注于網(wǎng)站應(yīng)用業(yè)務(wù)邏輯的實(shí)現(xiàn),而無須處理網(wǎng)絡(luò)底層協(xié)議、線程、進(jìn)程等方面的問題,這樣大大提高了開發(fā)效率和Web應(yīng)用質(zhì)量[2]。測(cè)試數(shù)據(jù)查詢系統(tǒng)基于B/S架構(gòu),分為三層設(shè)計(jì),包括前端、后端和數(shù)據(jù)庫,Django的MTV模型(即Model+Template+View設(shè)計(jì)模式)基于這三層設(shè)計(jì)優(yōu)化而來,框架結(jié)構(gòu)如圖1所示。

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

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

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

        在工程開發(fā)時(shí),Django用文件夾(包)的形式組織腳本文件和靜態(tài)文件,通過路由文件進(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語句,可自動(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ì)過程中,主要就是圍繞這2種應(yīng)用,運(yùn)用MTV的思想進(jìn)行前后端設(shè)計(jì)。測(cè)試數(shù)據(jù)查詢系統(tǒng)中的應(yīng)用說明見表1。

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

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

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

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

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

        測(cè)試數(shù)據(jù)查詢系統(tǒng)使用MySQL作為數(shù)據(jù)存儲(chǔ)和管理的數(shù)據(jù)庫管理系統(tǒng),作為一種關(guān)系型數(shù)據(jù)庫,數(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í)增長,為了提高測(cè)試數(shù)據(jù)的存儲(chǔ)、刪減、修改和查詢效率,依據(jù)層級(jí)關(guān)系,測(cè)試數(shù)據(jù)庫中將建成測(cè)試結(jié)果表、測(cè)試記錄表、工程信息表、產(chǎn)品信息表和調(diào)試工藝表,各表之間通過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ù)庫的創(chuàng)建及訪問

        Django使用ORM機(jī)制在數(shù)據(jù)庫和業(yè)務(wù)應(yīng)用之間進(jìn)行映射,這樣在訪問數(shù)據(jù)庫時(shí),不需構(gòu)建復(fù)雜且難以拼裝的SQL語句,通過簡單地操作對(duì)象的屬性和方法即可輕松實(shí)現(xiàn)數(shù)據(jù)的訪問,甚至進(jìn)行一些功能性的操作。在MySQL數(shù)據(jù)庫中創(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ù)庫中的一張數(shù)據(jù)表。下面將具體討論如何運(yùn)用ORM機(jī)制創(chuàng)建和訪問MySQL數(shù)據(jù)庫。

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

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

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

        DATABASES={

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

        ′db01′:{

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

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

        ′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)行說明。

        #測(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ù)庫中自動(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ì)象,通過對(duì)象的函數(shù)訪問數(shù)據(jù)庫中的表和字段,執(zhí)行數(shù)據(jù)的查詢操作,包括簡單查詢、過濾、跨表查詢等。

        #依據(jù)id號(hào)進(jì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í)行過濾操作

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

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

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

        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ù)庫的已有數(shù)據(jù),按照“工程代碼-產(chǎn)品名稱”進(jìn)行二級(jí)聯(lián)動(dòng),即初始查詢頁面會(huì)在下拉框中顯示數(shù)據(jù)庫已有的工程代碼列表,用戶選定某一項(xiàng)工程代碼之后,頁面會(huì)自動(dòng)查詢并顯示該工程代碼對(duì)應(yīng)的全部產(chǎn)品列表。當(dāng)用戶選定或錄入關(guān)鍵詞之后,查詢函數(shù)將依據(jù)關(guān)鍵詞組裝ORM查詢語句,執(zhí)行查詢,查詢完成后,將查詢結(jié)果進(jìn)行整理并轉(zhuǎn)換成JSON格式,最終渲染到Web頁面中來,用戶即可看到生動(dòng)靈活的可視化數(shù)據(jù)。數(shù)據(jù)查詢函數(shù)的執(zhí)行流程如圖3所示。

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

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

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

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

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

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

        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ù)庫,開啟服務(wù)端的網(wǎng)絡(luò)服務(wù)后,將10臺(tái)自動(dòng)測(cè)試系統(tǒng)通過終端計(jì)算機(jī)接入局域網(wǎng),終端上的應(yīng)用程序?qū)y(cè)試數(shù)據(jù)自動(dòng)上傳到服務(wù)端的數(shù)據(jù)庫中。測(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)的管理頁面。

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

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

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

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

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

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

        從遠(yuǎn)程計(jì)算機(jī)的瀏覽器輸入服務(wù)端的網(wǎng)頁地址,瀏覽器首先訪問網(wǎng)站的登陸頁面,輸入用戶名和密碼后,進(jìn)入測(cè)試數(shù)據(jù)查詢頁面。如圖5所示,為查詢頁面的最終效果,頁面按照典型的空間布局方式(上、下、左、右、中)分割,包括用戶管理區(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ù)庫中的信息按條件可視化地展示在數(shù)據(jù)網(wǎng)格中。查詢出的數(shù)據(jù)自動(dòng)分頁展示,用戶可自定義按照時(shí)間順序正序或倒序排列數(shù)據(jù),數(shù)據(jù)中的不合格項(xiàng)以紅底色顯現(xiàn),頁面右端將以柱狀圖分析各工程的指標(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 查詢頁面實(shí)際應(yīng)用展示

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

        隨著系統(tǒng)使用過程中數(shù)據(jù)量的不斷積累,會(huì)面臨數(shù)據(jù)量大導(dǎo)致效率無法滿足要求的情況,因此需要探索對(duì)數(shù)據(jù)庫查詢性能的持續(xù)優(yōu)化。查詢性能的優(yōu)化主要涉及MySQL數(shù)據(jù)庫中表結(jié)構(gòu)優(yōu)化、索引優(yōu)化和查詢操作優(yōu)化。當(dāng)單表中存儲(chǔ)數(shù)據(jù)量過大,查詢?nèi)哂噙^多時(shí),會(huì)直接導(dǎo)致數(shù)據(jù)庫執(zhí)行許多不必要的操作和遍歷大量無關(guān)數(shù)據(jù),影響查詢時(shí)間。因此,在數(shù)據(jù)表設(shè)計(jì)時(shí),可以以工程代碼為后綴對(duì)測(cè)試結(jié)果表和測(cè)試數(shù)據(jù)表進(jìn)行分表存儲(chǔ),這樣,當(dāng)執(zhí)行查詢時(shí),就不會(huì)去訪問無關(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ù)庫中增加新的數(shù)據(jù)表。

        另一方面,由于MySQL的數(shù)據(jù)是存儲(chǔ)在磁盤上的,訪問MySQL需要進(jìn)行磁盤的IO操作,因此直接從MySQL中讀取數(shù)據(jù)不如直接從內(nèi)存中讀取數(shù)據(jù)的效率高。為了提高訪問效率,可以在數(shù)據(jù)庫和應(yīng)用程序之間放置一個(gè)基于內(nèi)存的緩存系統(tǒng)。在查詢數(shù)據(jù)時(shí),先從內(nèi)存中查找,如果找到則使用,沒有找到再訪問真正的數(shù)據(jù)庫,并將查詢到的結(jié)果放入緩存中供第二次查詢時(shí)使用。本系統(tǒng)在后期優(yōu)化中,將考慮采用目前較為流行的Redis NoSQL數(shù)據(jù)庫(以下簡稱Redis)作為MySQL數(shù)據(jù)庫的緩存,形成以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ùn)用Django和MySQL可以成功搭建網(wǎng)絡(luò)化測(cè)試數(shù)據(jù)查詢系統(tǒng),開源軟件提供了功能豐富的庫和框架,具有很強(qiáng)的實(shí)用性和擴(kuò)展性,讓設(shè)計(jì)人員在開發(fā)過程中更專注于查詢邏輯和用戶體驗(yàn),而不需理會(huì)底層復(fù)雜的協(xié)議和算法。該系統(tǒng)讓原來離線的測(cè)試數(shù)據(jù)統(tǒng)一歸集于網(wǎng)絡(luò)數(shù)據(jù)庫,并利用瀏覽器遠(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
        亚洲高清视频在线播放| 无码人妻精品一区二区三区9厂 | 欧美精品videosex极品| 日产精品久久久久久久蜜臀 | 久久精品日本美女视频| 一本久久伊人热热精品中文| 大量漂亮人妻被中出中文字幕| 激情伊人五月天久久综合| 久久精品成人欧美大片| 国产一区二区三区免费精品| av在线入口一区二区| 亚洲一区二区三区高清在线| 成人毛片无码一区二区三区| 亚洲男人的天堂网站| 国产一区二区三区资源在线观看| 精品一区二区在线观看免费视频| 久久99国产精一区二区三区| 日本国产视频| 日本精品熟妇一区二区三区 | 国产亚洲精品第一综合另类| 狼色精品人妻在线视频| 亚洲无码图| 精品乱色一区二区中文字幕| 99人中文字幕亚洲区三| 婷婷综合另类小说色区| 少妇spa推油被扣高潮| 国产盗摄XXXX视频XXXX| 日本高清视频在线观看一区二区| 妺妺窝人体色www看美女| 亚洲欧美日韩中文天堂| 91九色国产在线观看| 亚洲gay片在线gv网站| 国产真实强被迫伦姧女在线观看| 久久久久亚洲女同一区二区| 蜜桃激情视频一区二区| 日韩视频在线观看| 美丽人妻被按摩中出中文字幕 | 美女被插到高潮嗷嗷叫| 精品国产yw在线观看| 色综合中文综合网| 麻豆av一区二区天堂|