發(fā)票真?zhèn)尾樵兎椒ê拖到y(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種發(fā)票真?zhèn)尾樵兎椒ê拖到y(tǒng)。
【背景技術(shù)】
[0002]稅務(wù)行業(yè)是國家財(cái)政收入重要保障行業(yè),隨著近年來我國國民經(jīng)濟(jì)的持續(xù)高速發(fā)展,稅務(wù)信息化建設(shè)工作對國家經(jīng)濟(jì)的宏觀調(diào)控作用越來越顯重要。近年來稅收行業(yè)相關(guān)法律法規(guī)的相繼出臺,對稅務(wù)信息化建設(shè)的規(guī)范程度和戰(zhàn)略規(guī)劃提出更高的要求。傳統(tǒng)的稅務(wù)系統(tǒng)基于J2EE標(biāo)準(zhǔn)的多層分布式架構(gòu)來進(jìn)行開發(fā)的,具有高安全性、伸縮性強(qiáng)、易于維護(hù)等優(yōu)點(diǎn)。但是該架構(gòu)中的數(shù)據(jù)庫采用的是傳統(tǒng)關(guān)系型數(shù)據(jù)庫,發(fā)票查詢數(shù)量一旦到達(dá)一定的臨界值,查詢性能會急劇下降,每條查詢請求的返回時(shí)間都被大幅度延長。雖然可以通過增加底層硬件的配置和分布式數(shù)據(jù)庫等方式來提高系統(tǒng)性能,但性能提升并不明顯,而且服務(wù)器和數(shù)據(jù)庫維護(hù)費(fèi)用都比較高。在大規(guī)模數(shù)據(jù)并發(fā)查詢時(shí),很容易導(dǎo)致數(shù)據(jù)庫死鎖,嚴(yán)重影響查詢效率。
【發(fā)明內(nèi)容】
[0003]基于此,有必要針對上述技術(shù)問題,提供一種能夠在大規(guī)模數(shù)據(jù)并行查詢時(shí)確??焖儆行У呐卸òl(fā)票真?zhèn)蔚陌l(fā)票真?zhèn)尾樵兎椒ê拖到y(tǒng)。
[0004]一種發(fā)票真?zhèn)尾樵兎椒?,所述方法包?
[0005]接收發(fā)票真?zhèn)尾樵冋埱螅?br>[0006]將所述查詢請求轉(zhuǎn)換為NoSQL數(shù)據(jù)庫查詢語言,并在預(yù)先建立的NoSQL數(shù)據(jù)庫中進(jìn)行查詢;
[0007]返回查詢結(jié)果并解析為與所述查詢請求對應(yīng)的信息;
[0008]判斷解析后的信息是否為空;
[0009]若是,則確定所述發(fā)票為偽發(fā)票。
[0010]在其中一個實(shí)施例中,所述接收發(fā)票真?zhèn)尾樵冋埱蟮牟襟E之前,還包括:
[0011]將關(guān)系型數(shù)據(jù)庫中的發(fā)票信息數(shù)據(jù)導(dǎo)入預(yù)先建立的NoSQL數(shù)據(jù)庫;
[0012]將零散的發(fā)票信息數(shù)據(jù)導(dǎo)入至所述NoSQL數(shù)據(jù)庫。
[0013]在其中一個實(shí)施例中,所述將關(guān)系型數(shù)據(jù)庫中的發(fā)票信息數(shù)據(jù)導(dǎo)入預(yù)先建立的NoSQL數(shù)據(jù)庫的步驟包括:
[0014]建立關(guān)系型數(shù)據(jù)庫與所述NoSQL數(shù)據(jù)庫之間的連接;
[0015]通過所述連接,從所述關(guān)系型數(shù)據(jù)庫中導(dǎo)出發(fā)票信息數(shù)據(jù)并進(jìn)行保存;
[0016]將已保存的發(fā)票信息數(shù)據(jù)進(jìn)行清洗;
[0017]將清洗后的發(fā)票信息數(shù)據(jù)導(dǎo)入所述NoSQL數(shù)據(jù)庫。
[0018]在其中一個實(shí)施例中,所述將所述查詢請求轉(zhuǎn)換為NoSQL數(shù)據(jù)庫查詢語言的步驟包括:
[0019]通過第一接口將所述查詢請求轉(zhuǎn)換為所述NoSQL數(shù)據(jù)庫查詢語言;和/或
[0020]通過第二接口增加預(yù)設(shè)組件,通過所述預(yù)設(shè)組件將所述查詢請求轉(zhuǎn)換為所述NoSQL數(shù)據(jù)庫查詢語言。
[0021]在其中一個實(shí)施例中,所述返回查詢結(jié)果并解析為與所述查詢請求對應(yīng)的信息的步驟包括:
[0022]將與所述查詢請求對應(yīng)的記錄通過java進(jìn)程進(jìn)行封裝;
[0023]將封裝后的屬性信息填充到發(fā)票查詢對象中,并返回填充后的發(fā)票查詢對象;
[0024]對所述填充后的發(fā)票查詢對象進(jìn)行解析,得到發(fā)票真?zhèn)闻卸ㄐ畔ⅰ?br>[0025]一種發(fā)票真?zhèn)尾樵兿到y(tǒng),所述系統(tǒng)包括:
[0026]接收模塊,用于接收發(fā)票真?zhèn)尾樵冋埱螅?br>[0027]查詢模塊,用于將所述查詢請求轉(zhuǎn)換為NoSQL數(shù)據(jù)庫查詢語言,并在預(yù)先建立的NoSQL數(shù)據(jù)庫中進(jìn)行查詢;
[0028]解析模塊,用于返回查詢結(jié)果并解析為與所述查詢請求對應(yīng)的信息;
[0029]判斷模塊,用于判斷解析后的信息是否為空;
[0030]確定模塊,用于若解析后的信息為空,則確定所述發(fā)票為偽發(fā)票。
[0031]在其中一個實(shí)施例中,所述系統(tǒng)還包括:
[0032]第一導(dǎo)入模塊,用于將關(guān)系型數(shù)據(jù)庫中的發(fā)票信息數(shù)據(jù)導(dǎo)入預(yù)先建立的NoSQL數(shù)據(jù)庫;
[0033]第二導(dǎo)入模塊,用于將零散的發(fā)票信息數(shù)據(jù)導(dǎo)入至所述NoSQL數(shù)據(jù)庫。
[0034]在其中一個實(shí)施例中,所述第一導(dǎo)入模塊包括:
[0035]連接單元,用于建立關(guān)系型數(shù)據(jù)庫與所述NoSQL數(shù)據(jù)庫之間的連接;
[0036]導(dǎo)出單元,用于通過所述連接,從所述關(guān)系型數(shù)據(jù)庫中導(dǎo)出發(fā)票信息數(shù)據(jù)并進(jìn)行保存;
[0037]清洗單元,用于將已保存的發(fā)票信息數(shù)據(jù)進(jìn)行清洗;
[0038]導(dǎo)入單元,用于將清洗后的發(fā)票信息數(shù)據(jù)導(dǎo)入所述NoSQL數(shù)據(jù)庫。
[0039]在其中一個實(shí)施例中,所述查詢模塊包括:
[0040]第一轉(zhuǎn)換單元,用于通過第一接口將所述查詢請求轉(zhuǎn)換為所述NoSQL數(shù)據(jù)庫查詢語言-M /或
[0041]第二轉(zhuǎn)換單元,用于通過第二接口增加預(yù)設(shè)組件,通過所述預(yù)設(shè)組件將所述查詢請求轉(zhuǎn)換為所述NoSQL數(shù)據(jù)庫查詢語言。
[0042]在其中一個實(shí)施例中,所述解析模塊包括:
[0043]封裝單元,用于將與所述查詢請求對應(yīng)的記錄通過java進(jìn)程進(jìn)行封裝;
[0044]填充單元,用于將封裝后的屬性信息填充到發(fā)票查詢對象中,并返回填充后的發(fā)票查詢對象;
[0045]解析單元,用于對所述填充后的發(fā)票查詢對象進(jìn)行解析,得到發(fā)票真?zhèn)闻卸ㄐ畔ⅰ?br>[0046]上述發(fā)票真?zhèn)尾樵兎椒ê拖到y(tǒng),接收發(fā)票真?zhèn)尾樵冋埱?;將查詢請求轉(zhuǎn)換為NoSQL數(shù)據(jù)庫查詢語言,并在預(yù)先建立的NoSQL數(shù)據(jù)庫中進(jìn)行查詢;返回查詢結(jié)果并解析為與查詢請求對應(yīng)的信息;判斷解析后的信息是否為空;若是,則確定發(fā)票為偽發(fā)票。通過將發(fā)票真?zhèn)尾樵冋埱筠D(zhuǎn)換為NoSQL數(shù)據(jù)庫查詢語言在預(yù)先建立的NoSQL數(shù)據(jù)庫中進(jìn)行查詢,由此能夠克服傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在大規(guī)模數(shù)據(jù)并發(fā)查詢時(shí)性能下降、查詢時(shí)間大幅增加的問題,能夠顯著提升查詢性能和查詢速度。如果查詢結(jié)果為空,則確定發(fā)票為偽發(fā)票。由此根據(jù)查詢結(jié)果能夠快速判定發(fā)票的真?zhèn)巍?br>【附圖說明】
[0047]圖1為一個實(shí)施例中發(fā)票真?zhèn)尾樵兎椒ǖ膽?yīng)用環(huán)境圖;
[0048]圖2為一個實(shí)施例中發(fā)票真?zhèn)尾樵兎椒ǖ牧鞒虉D;
[0049]圖3為傳統(tǒng)的稅務(wù)系統(tǒng)架構(gòu)圖;
[0050]圖4為一個實(shí)施例中NoSQL數(shù)據(jù)庫的結(jié)構(gòu)示意圖;
[0051]圖5為一個實(shí)施例中發(fā)票真?zhèn)尾樵兿到y(tǒng)的結(jié)構(gòu)示意圖;
[0052]圖6為又一個實(shí)施例中發(fā)票真?zhèn)尾樵兿到y(tǒng)的結(jié)構(gòu)示意圖;
[0053]圖7為一個實(shí)施例中第一導(dǎo)入模塊的結(jié)構(gòu)不意圖;
[0054]圖8為一個實(shí)施例中查詢模塊的結(jié)構(gòu)示意圖;
[0055]圖9為一個實(shí)施例中解析模塊的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0056]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0057]本發(fā)明提供的方法應(yīng)用于如圖1所示的應(yīng)用環(huán)境中。其中終端102通過網(wǎng)絡(luò)104與服務(wù)器集群106連接。其中,服務(wù)器集群106上運(yùn)行的NoSQL(Not Only SQL,非關(guān)系型數(shù)據(jù)庫)數(shù)據(jù)庫。數(shù)據(jù)庫中存儲有發(fā)票信息數(shù)據(jù)。用戶通過終端102上的發(fā)票真?zhèn)尾樵冺撁孑斎氲陌l(fā)票代碼、發(fā)票號碼和發(fā)票校驗(yàn)碼等信息生成發(fā)票真?zhèn)尾樵冋埱?。終端包括但不限于能夠進(jìn)行發(fā)票真?zhèn)尾樵兊呐_式電腦、筆記本、平板電腦和個人數(shù)字助理等。服務(wù)器集群106接收到查詢請求后,將傳統(tǒng)的SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)查詢請求轉(zhuǎn)換為NoSQL數(shù)據(jù)庫查詢語言,在NoSQL數(shù)據(jù)庫中進(jìn)行查詢,若存在與查詢請求對應(yīng)的記錄,則返回相應(yīng)的查詢結(jié)果,并解析為與查詢請求對應(yīng)的信息。如果解析后的信息不為空,則確定該發(fā)票為真發(fā)票,并顯示發(fā)票信息。如果解析后的信息為空,則確定該發(fā)票為偽發(fā)票。由于采用了 NoSQL數(shù)據(jù)庫,由此能夠在大規(guī)模數(shù)據(jù)并行查詢時(shí)確??焖儆行У呐卸òl(fā)票真?zhèn)巍?br>[0058]在一個實(shí)施例中,如圖2所示,提供了一種發(fā)票真?zhèn)尾樵兎椒ǎ摲椒蓱?yīng)用于傳統(tǒng)的稅務(wù)系統(tǒng)架構(gòu),具體包括:
[0059]步驟202,接收發(fā)票真?zhèn)尾樵冋埱蟆?br>[0060]傳統(tǒng)的稅務(wù)系統(tǒng)架構(gòu)如圖3所示,包括交互層、應(yīng)用層、業(yè)務(wù)邏輯層、資源訪問層和資源層,其中,交互層具有頁面控制、響應(yīng)控制和請求轉(zhuǎn)發(fā)等功能;應(yīng)用層具有應(yīng)用控制、事務(wù)控制和權(quán)