山起超
摘要:為了可以使數(shù)據(jù)和請(qǐng)求量在不斷擴(kuò)大的過(guò)程中所致使的緩慢問(wèn)題能夠得到有效的解決,該文基于數(shù)據(jù)庫(kù)算法設(shè)計(jì)了軟件應(yīng)用框架。并對(duì)數(shù)據(jù)庫(kù)的算以及Web服務(wù)進(jìn)行詳細(xì)的分析。在采用緩存層的同時(shí)引入websocket數(shù)據(jù)響應(yīng)處理的方法,這種方法對(duì)于數(shù)據(jù)庫(kù)的緩存性能可以起到有效地改善。在實(shí)際使用的時(shí)候應(yīng)用這種框架設(shè)計(jì)方法,并研究了緩存性能,然后對(duì)于緩存性能進(jìn)行研究,最后實(shí)現(xiàn)數(shù)據(jù)庫(kù)中的各個(gè)層。采用該方法對(duì)于提高數(shù)據(jù)庫(kù)的緩存性能有著良好的作用,并且還可以使Web軟件應(yīng)用的響應(yīng)靈敏度以及數(shù)據(jù)庫(kù)性能得以提升。
關(guān)鍵詞:數(shù)據(jù)庫(kù);Web;軟件應(yīng)用框架;設(shè)計(jì)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)32-0099-02
1背景
在當(dāng)前網(wǎng)絡(luò)技術(shù)不斷發(fā)展的現(xiàn)如今,社會(huì)中越來(lái)越多的企業(yè)都選擇通過(guò)Web來(lái)對(duì)應(yīng)用系統(tǒng)進(jìn)行設(shè)計(jì),Web應(yīng)用有著許多的特點(diǎn),例如,信息量較大、用戶(hù)數(shù)量較多、系統(tǒng)的結(jié)構(gòu)較為復(fù)雜以及有著較多的功能等,并且在當(dāng)前Web開(kāi)發(fā)方式已經(jīng)無(wú)法滿(mǎn)足應(yīng)用開(kāi)發(fā)的需求了。在使用期間還需要提高程序的應(yīng)變能力,并且由于在維護(hù)過(guò)程也存在著一定程度上的難度,而且代碼的數(shù)量也非常的龐大,所以需要設(shè)計(jì)開(kāi)發(fā)一個(gè)軟件應(yīng)用框架?,F(xiàn)如今這方面的研究設(shè)計(jì)人員都想利用現(xiàn)代化技術(shù)來(lái)對(duì)軟件應(yīng)用框架開(kāi)展設(shè)計(jì),并且還希望能夠使所有的應(yīng)用都在此框架中進(jìn)行,這無(wú)疑是一個(gè)巨大的挑戰(zhàn)。體系結(jié)構(gòu)、公用服務(wù)功能以及系統(tǒng)部分的整合等都是包含在軟件的非業(yè)務(wù)邏輯中,在整體的系統(tǒng)框架中應(yīng)用軟件然后來(lái)對(duì)骨架進(jìn)行創(chuàng)建,從而使軟件在使用過(guò)程中能夠更加的方便快捷,并且還可以提高軟件的質(zhì)量,使開(kāi)發(fā)周期得以縮短。本文主要是基于Web及數(shù)據(jù)庫(kù)算法的軟件應(yīng)用框架進(jìn)行設(shè)計(jì)分析。
2數(shù)據(jù)庫(kù)算法
當(dāng)前,雖然具有種類(lèi)多樣的與數(shù)據(jù)源集成的方式,但是中間件、聯(lián)邦數(shù)據(jù)庫(kù)以及數(shù)據(jù)倉(cāng)庫(kù)這三種是使用最為頻繁的。數(shù)據(jù)倉(cāng)庫(kù)指的是面向主體的數(shù)據(jù)集合,通常情況下對(duì)于此進(jìn)行應(yīng)用是在支持管理決策的時(shí)候,數(shù)據(jù)倉(cāng)庫(kù)自身所具有的特點(diǎn)是能夠?qū)崿F(xiàn)數(shù)據(jù)集成,還可以提供一些簡(jiǎn)單的數(shù)據(jù)訪問(wèn),支持?jǐn)?shù)據(jù)決策,并且處理也相對(duì)十分簡(jiǎn)單,通常是在較為簡(jiǎn)單的系統(tǒng)中進(jìn)行應(yīng)用。而中間件則是一個(gè)獨(dú)立的服務(wù)程序,并且主要是使用在分布式軟件中,通過(guò)中間見(jiàn)可以達(dá)到資源共享的目的。一般應(yīng)用中間件的情況極為普遍,它是一種應(yīng)用十分不變的數(shù)據(jù)庫(kù)集成算法,是通過(guò)利用數(shù)據(jù)源的局部模式以及全局模式來(lái)使不同數(shù)據(jù)源數(shù)據(jù)的集成得以實(shí)現(xiàn)。而聯(lián)邦數(shù)據(jù)庫(kù)系統(tǒng)存在的目的是為了可以實(shí)現(xiàn)數(shù)據(jù)共享,并且聯(lián)邦數(shù)據(jù)庫(kù)與他的數(shù)據(jù)局相比較而言,操作十分的獨(dú)立。除此之外,數(shù)據(jù)庫(kù)之間需要利用添加與訪問(wèn)對(duì)方的數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)之間的傳遞和共享。
3數(shù)據(jù)庫(kù)設(shè)計(jì)
Web軟件應(yīng)用需要跨多種數(shù)據(jù)庫(kù)來(lái)對(duì)數(shù)據(jù)進(jìn)行調(diào)用,所以設(shè)計(jì)數(shù)據(jù)庫(kù)成為整個(gè)系統(tǒng)中十分重要的一個(gè)環(huán)節(jié)。在對(duì)比分析不同類(lèi)型的數(shù)據(jù)庫(kù)之后,本文會(huì)選擇通下列的方式設(shè)計(jì)數(shù)據(jù)庫(kù):
1)選擇適合的字段。采用長(zhǎng)整形、二進(jìn)制以及字符串這三種類(lèi)型的字段,并以字符串來(lái)取代符點(diǎn),日期是通過(guò)以長(zhǎng)整形來(lái)替代。
2)選擇定義與操作數(shù)據(jù)的語(yǔ)言。
在選擇數(shù)據(jù)語(yǔ)言定義的時(shí)候,由于系統(tǒng)正處于初始化階段內(nèi)所以全部的數(shù)據(jù)庫(kù)可以同時(shí)建立,因此就需要根據(jù)不同的數(shù)據(jù)庫(kù)選擇不同的定義語(yǔ)言;而由于數(shù)據(jù)庫(kù)沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),所以操作數(shù)據(jù)的語(yǔ)言必須要進(jìn)行合理的規(guī)劃。本文所設(shè)計(jì)的數(shù)據(jù)庫(kù)是采用標(biāo)準(zhǔn)通用的SQL語(yǔ)言。
4軟件應(yīng)用框架設(shè)計(jì)
4.1軟件框架結(jié)構(gòu)
本文設(shè)計(jì)的軟件應(yīng)用框架結(jié)構(gòu)是基于Web以及數(shù)據(jù)庫(kù)算法來(lái)進(jìn)行的,并且為了可以避免在數(shù)據(jù)量較多的時(shí)候,應(yīng)用系統(tǒng)發(fā)生崩潰,Web層以及數(shù)據(jù)層在Web的基礎(chǔ)上都增添一個(gè)Web緩存層,并通過(guò)利用Web緩存層使用內(nèi)存作為主要的存取媒介,這樣可以使讀寫(xiě)速度提升。并且需要在數(shù)據(jù)庫(kù)層內(nèi)來(lái)設(shè)計(jì)主數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)服務(wù)器,而之所以需要設(shè)計(jì)主數(shù)據(jù)庫(kù)的目的是為了更新數(shù)據(jù)緩存以及復(fù)制數(shù)據(jù)庫(kù)。通過(guò)實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě),那么在數(shù)據(jù)進(jìn)行更新的過(guò)程中,Web則會(huì)把信息傳輸?shù)骄彺鎸又校瑥亩梢允沟肳eb緩存與Web和共同開(kāi)展工作,從而使得Web層中數(shù)據(jù)的負(fù)載率得到有效的降低。
4.2框架的設(shè)計(jì)
數(shù)據(jù)庫(kù)中的Web軟件應(yīng)用框架的服務(wù)層則是通過(guò)WebServer模塊以及緩存模塊這兩個(gè)模塊來(lái)實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽(tīng),而客戶(hù)層則是采用Java作為Web代碼實(shí)現(xiàn)數(shù)據(jù)的請(qǐng)求,除此之外,還包括管理日志、管理通道、發(fā)布消息以及處理數(shù)據(jù)等眾多的功能。監(jiān)聽(tīng)器是為了使客戶(hù)請(qǐng)求監(jiān)聽(tīng)的過(guò)濾的目的得以實(shí)現(xiàn),并且還具有查找實(shí)體、通過(guò)數(shù)據(jù)庫(kù)返回的信息以及調(diào)用緩存等眾多功能嘲。而在數(shù)據(jù)庫(kù)中建設(shè)通道是為了實(shí)現(xiàn)通信,數(shù)據(jù)的處理就是實(shí)現(xiàn)XML與JSON的數(shù)據(jù)處理。框架中的緩存模塊具有緩存池,并且緩存模塊可以使組件以及配置管理所具有的緩存作用得以實(shí)現(xiàn)。除此之外,緩存池的存在還可以使組件在訪問(wèn)過(guò)程中調(diào)用存取需要使用到的數(shù)據(jù),并且在經(jīng)過(guò)服務(wù)調(diào)取之后,還會(huì)通過(guò)Hash算法對(duì)生成的Key進(jìn)行計(jì)算,最終生成HasyKY,以此來(lái)使在不同的服務(wù)器中訪問(wèn)緩存數(shù)據(jù)的目的得以實(shí)現(xiàn)??蚣苤械男奶菫榱吮苊鈹?shù)據(jù)在進(jìn)行傳送的過(guò)程中發(fā)生停止傳送的情況,因?yàn)閭魉鸵坏┩V?,服?wù)器與客戶(hù)端之間的連接請(qǐng)求斷裂。而應(yīng)用框架中的管理體制可以使服務(wù)器與客戶(hù)端兩者信息以及請(qǐng)求管理的目的得以實(shí)現(xiàn)。
5系統(tǒng)的實(shí)現(xiàn)
5.1實(shí)現(xiàn)客戶(hù)層
通常情況下是使用Struts框架來(lái)實(shí)現(xiàn)客戶(hù)層。Struts Web層的應(yīng)用架構(gòu)屬于開(kāi)源免費(fèi),并且對(duì)于提高JSP、面向?qū)ο笠约皹?biāo)簽庫(kù)的技術(shù)水平具有良好的效果,除此之外,還可以使開(kāi)發(fā)人員使用MVC設(shè)計(jì)開(kāi)發(fā)所需要的時(shí)間得以減少。根據(jù)JSP來(lái)實(shí)現(xiàn)Struts中的視圖部分,除了需要標(biāo)準(zhǔn)的標(biāo)簽庫(kù),還可以使用Struts中的自定義標(biāo)簽庫(kù),通過(guò)與Action之間進(jìn)行互相的映射,從而使用戶(hù)數(shù)據(jù)封裝的目的是得以實(shí)現(xiàn),并且還具有眾多的其他功能,例如表單驗(yàn)證。Struts中的控制器含有Action類(lèi),它是屬于將業(yè)務(wù)邏輯以及用戶(hù)請(qǐng)求進(jìn)行連接的一個(gè)重要的橋梁,并且還可以通過(guò)調(diào)用模型來(lái)更新模型的狀態(tài),從而實(shí)現(xiàn)應(yīng)用程序流程。將Action應(yīng)用在較為大型的系統(tǒng)中是為了讓其充當(dāng)業(yè)務(wù)邏輯處理與用戶(hù)請(qǐng)求兩者之間的適配器,應(yīng)用其的主要作用是用以對(duì)請(qǐng)求以及業(yè)務(wù)邏輯進(jìn)行區(qū)分;除此之外,Struts自身沒(méi)有模型組件,但是它卻可以對(duì)于M部分的問(wèn)題進(jìn)行有效的解決,因?yàn)樵诋?dāng)前Struts對(duì)于客戶(hù)層問(wèn)題還沒(méi)有一個(gè)良好的解決方法,但是M部分都是系統(tǒng)Nebula狀態(tài),所以還是屬于Web層框架。
5.2實(shí)現(xiàn)服務(wù)層
服務(wù)層在系統(tǒng)框架中具有十分重要的作用,服務(wù)層的存在可以使策略為JavaBran業(yè)務(wù)邏輯目的得以實(shí)現(xiàn),在J2EE規(guī)范中JavaBran結(jié)構(gòu)有著十分詳細(xì)的定位,JavaBran結(jié)構(gòu)主要分為可視化與非可視化。但通常情況下,Web應(yīng)用使用的是使非可視化JavaBran。與普通Java類(lèi)相比來(lái)說(shuō),JavaBran并沒(méi)有額外的其他附加功能,JavaBrml如果是在分布式的大型應(yīng)用環(huán)境下的話(huà),那么就需要通過(guò)開(kāi)發(fā)人員自身的操作來(lái)實(shí)現(xiàn)。但如果JavaBran應(yīng)用在較小型化的項(xiàng)目時(shí),會(huì)更加的簡(jiǎn)單,并且還具有比普通Java類(lèi)更好的運(yùn)行效率,不需要再增加其他的應(yīng)用服務(wù)器就可以使系統(tǒng)正常運(yùn)行。
5.3實(shí)現(xiàn)數(shù)據(jù)層
如果選擇單獨(dú)數(shù)據(jù)層來(lái)解決Web應(yīng)用架構(gòu)中數(shù)據(jù)持久化的問(wèn)題,會(huì)致使與業(yè)務(wù)數(shù)據(jù)相關(guān)的操作都可以在數(shù)據(jù)層實(shí)現(xiàn),例如,數(shù)據(jù)的查詢(xún)、添加、修改以及刪除,數(shù)據(jù)庫(kù)的訪問(wèn)等。由于數(shù)據(jù)層中的服務(wù)都是抽象化的,所以在對(duì)數(shù)據(jù)源更改、數(shù)據(jù)庫(kù)移植以及結(jié)構(gòu)變化的過(guò)程中,只要修改數(shù)據(jù)層即可。通過(guò)JBDC實(shí)現(xiàn)數(shù)據(jù)層,其是Java訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn),除此之外,還可以為系統(tǒng)提供上層接口。
6結(jié)束語(yǔ)
綜上所述,如果在數(shù)據(jù)庫(kù)緩存中添加Web軟件應(yīng)用框架,在對(duì)軟件框架進(jìn)行的過(guò)程中,那么讀寫(xiě)的時(shí)候?qū)?huì)使數(shù)據(jù)庫(kù)壓力得到極大程度的降輕,并且如果同時(shí)也在對(duì)Socket進(jìn)行使用的話(huà),那么軟件在使用過(guò)程中的訪問(wèn)速度將會(huì)得到極為有效的提升。本文主要基于此對(duì)于軟件系統(tǒng)框架進(jìn)行了設(shè)計(jì),并在最后對(duì)對(duì)于框架中的各數(shù)據(jù)層、服務(wù)層以及客服層都一一進(jìn)行了實(shí)現(xiàn)。通過(guò)詳細(xì)的分析數(shù)據(jù)庫(kù)算法的緩存數(shù)量,可以清楚地了解到所設(shè)計(jì)的軟件系統(tǒng)框架對(duì)于系統(tǒng)的緩存能力具有良好的提升作用,并且在對(duì)于軟件系統(tǒng)框架中的數(shù)據(jù)庫(kù)性能進(jìn)行加強(qiáng)方面的目的也得以實(shí)現(xiàn),除此之外,對(duì)于系統(tǒng)響應(yīng)的靈敏度也進(jìn)行了提升。