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