999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于搜索引擎的慢查詢優化系統

2017-04-22 10:11:20陳倫躍殷峰
現代計算機 2017年8期
關鍵詞:搜索引擎數據庫實驗

陳倫躍,殷峰

(1.四川大學計算機學院,成都 610065;2.西南民族大學校園網絡管理中心,成都 610064)

基于搜索引擎的慢查詢優化系統

陳倫躍1,殷峰2

(1.四川大學計算機學院,成都 610065;2.西南民族大學校園網絡管理中心,成都 610064)

信息系統一般需要一個數據持久層來對系統中的信息進行存儲和查詢,而數據持久層所面臨的慢查詢問題會極大地影響系統的用戶體驗。目前的研究可以較好地解決由于數據量的增長所帶來的慢查詢問題,而對由業務分化帶來的慢查詢問題無能為力。當業務分化后,數據源將處于不同的業務部門,甚至不同公司的管理下,數據查詢時連接操作大大增加。分析在實際生產環境中所面對的慢查詢問題,創造性地提出一種使用搜索引擎技術用于改善數據持久層查詢性能的系統。該系統具有低侵入性、快速開發、性能優良等優點。

慢查詢;搜索引擎;查詢優化;系統設計

0 引言

信息系統一般需要一個數據持久層來對系統中的信息進行存儲和查詢。當信息系統所承擔的業務快速擴展之后,其已有的數據持久層將面臨諸多挑戰。其中慢查詢問題是很多系統都會面臨的挑戰,且會極大地影響系統的用戶體驗。當業務規模快速增長后,系統處理的數據規模快速增長,使得數據庫的查詢變慢。針對數據量增長帶來的慢查詢問題,已有相對充分的研究。但更嚴重的問題是隨著新的業務不斷擴展,老的業務不斷分化,系統中會出現越來越多的獨立子系統使得系統整體的數據模型越來越復雜。不同子系統的數據源往往處于不同業務部門甚至不同公司的管理之下,而一些業務需求常常橫跨了多個獨立的子業務,造成許多查詢需要鏈接多張表,這也會帶來慢查詢問題。

針對慢查詢問題,已有的方案主要著眼于對數據存儲本身的優化,但在實際生產中,即使每個子系統的查詢得到了充足的優化,跨多個子系統的業務的查詢服務仍然會受制于連接的性能。由于業務的分化擴展,多個數據源的鏈接操作在實際生產中是無法避免的。為了解決業務分化帶來的慢查詢問題,需要一種可以獨立于原有數據持久層之外,與業務架構無關的優化方案。

針對業務分化造成的慢查詢問題及已有解決方案的不足,本文提出了基于搜索引擎的慢查詢優化系統。該系統綜合了許多現有方案的優點。首先,系統的侵入性低,可以獨立于原有數據持久層提供服務,既不需要在系統初期做出特殊設計,也不需要對已有的業務代碼進行大規模的修改,最重要的是可以解決由于業務分化帶來的慢查詢問題;其次,該系統具有良好的查詢性能,系統使用搜索引擎集群提供查詢服務的增強,可以從根本上緩解慢查詢問題,當業務進一步發展時也可以彈性地對系統進行擴容;最后,搜索引擎有許多成熟的開源產品可以使用,對已有系統使用該解決方案進行改造需要的研發、資金、時間成本低。

1 相關工作

為了解決慢查詢問題,已有3種傳統解決方案。

第一種,進行數據庫性能的調優,讀寫分離,分庫分表等工作,如文獻[1]討論了在SQL Server上的調優問題。但是這種解決方案只能暫時緩解慢查詢問題,隨著業務的進一步發展,仍然會面臨性能的瓶頸,因而這是一種治標不治本的解決方案;其次,該方案只能優化由數據量增加帶來的查詢性能瓶頸,不能改善由于業務分化,數據連接操作變多帶來的性能瓶頸。

第二種,使用新的數據存儲技術改寫原有的數據持久層,例如文獻[2][3]中提到的NoSQL數據庫。這些新型存儲技術已經在實踐中證明了其具有良好的性能,可以有效地解決慢查詢問題。但是使用這種方案將大規模地改造已有的數據持久層,面臨著數據遷移,業務分流等問題,勢必會影響已有系統的正常運行。同時,該解決方案也和第一種方案一樣不能改善由于業務分化,數據連接操作變多帶來的性能瓶頸。

第三種,為原有的系統增加分布式索引,如文獻[4-5]中提到的解決方案便可以用于改善數據庫的檢索性能。這種解決方案具有系統侵入性小的優點,不會大規模影響到原有系統的運行;同時具有較好的性能,可以有效地解決慢查詢問題;最后也能夠較為有效地解決業務分化的問題。但是該解決方案較為復雜,沒有成熟的開源產品可以使用,尚處于理論研究階段,因而該方案在實際工程中的使用也較為困難。

在搜索引擎應用的研究上,目前主要著眼于在垂直檢索領域,利用搜索引擎信息檢索的能力為相應的專業領域提供參考建議與決策支持,如文獻[6][7]分別研究了搜索引擎在圖書館情報學和農業上的應用。而很少有將搜索引擎用于提供信息系統底層服務的研究。

基于對慢查詢問題及已有解決方案不足的分析,本文創造性地提出了使用搜索引擎優化慢查詢問題,開闊了搜索引擎應用的研究范圍,也為解決慢查詢問題提供了思路。

2 理論分析

為了優化查詢性能,無論關系型數據庫、NoSQL數據庫,還是搜索引擎,都有相應的索引機制。不同的索引機制決定了不同系統在性能上的差別。本節將對數據庫索引與搜索引擎索引的異同進行討論。

傳統的關系型數據庫與NoSQL數據庫多使用樹形結構的正排索引,如關系型數據庫中常使用B+樹,NoSQL數據庫中常使用LSM樹。這些樹形結構的索引讀寫性能平衡。當這些數據庫進行查詢時,將從根節點開始,自頂向下訪問索引文件,其時間代價為O(logn),其中的n為數據的規模。與數據庫不同,搜索引擎主要使用倒排索引技術。以開源搜索工具包Lucene的索引為例,為一組單詞建立索引時,其結構如圖1所示:

圖1 搜索引擎索引結構

搜索引擎的倒排索引由3部分組成,分別是詞典索引(Term Index)、詞典(Term Dictionary)、文檔位圖(Position Graph)組成。詞典索引使用前綴樹進行組織,對關鍵字前綴建立了索引。詞典中包含了所有的關鍵字,并指向相應的文檔位圖。文檔位圖中記錄了每個關鍵字在哪些文檔中出現過,及指向這些文檔的指針。當搜索引擎進行檢索時,它先使用詞典索引對檢索的關鍵字進行查詢,當在詞典中查到相應的關鍵字之后,直接從文檔位圖中讀出所有待檢索文檔的位置信息。可見,搜索引擎在查詢時主要的性能開銷為對詞典索引和詞典的訪問,其時間代價為O(loglen),其中的len為關鍵字長度的規模。

從上述分析中可以發現,相較于數據庫的索引,搜索引擎使用的倒排索引在檢索時具有以下的優點:首先,當數據量較大時,數據的規模n遠遠大于關鍵字長度len的規模,在對一張長表進行檢索時,搜索引擎檢索的時間代價O(loglen)遠小于數據庫檢索的時間代價O(logn);其次,搜索引擎的詞典索引文件及詞典只對關鍵字的種類進行索引,體積更小,可以在內存中保存,而數據庫的索引只能保存在磁盤中,因而對搜索引擎索引文件的訪問速度更快;再而,通用信息檢索引擎對不同的數據類型采用了不同的索引方式,上面分析是針字符串的,例如針對整數,有TrieIntField類型,針對經緯度,就可以用GeoHash編碼,檢索引擎幾乎可以為文件中的任意字段建立索引,而數據庫的索引對某些字段的索引效率較低,如數據重復且分布平均的表字段;最后,在數據庫中給兩個字段獨立建立的索引無法聯合起來使用,必須對聯合查詢的場景建立復合索引,而通用信息檢索引擎可以使用AND或者OR組合使用索引進行檢索。需要指出的是,在由于業務分化造成的慢查詢問題中,數據庫分別屬于不同的業務部門,甚至不同的公司管理,它們無法建立復合索引,也無法使用NoSQL技術構建一張公用的大表,這時搜索引擎對多表聯合進行檢索的能力更顯得重要。

綜上所述,雖然數據庫的搜索結構具有讀寫平衡的優點,但在進行查詢操作時,搜索引擎的效率將明顯高于數據庫,特別是當檢索數據量較大時,檢索一些不適合建立數據庫索引的字段時,或者需要對多個字段進行檢索時,這種性能差距將更為巨大。

3 實驗驗證

為了驗證兩種解決方案在實際生產中慢查詢的性能差距,本文使用MySQL數據庫及OpenSearch搜索引擎進行了實驗對比。實驗平臺配置如下:操作系統:Win7sp1,處理器:i5-3470,內存:12GB,MySQL數據庫與OpenSearch搜索引擎分別使用最新(2016年8月)的免費版,實驗中禁用了各自的緩存。實驗數據使用MovieLens數據集[8],該數據集包含了:由260000個用戶針對40000部電影打出的24000000個電影評分。實驗中為搜索引擎和數據庫分別建立了合適的索引結構。實驗數據集的數據模型如圖2所示:

圖2 實驗數據集數據模型

實驗中設計了三種查詢場景來對比數據庫查詢速度與搜索引擎查詢速度之間的區別。這三個實驗分別是:查找2016年所有的動作電影;查找2016年前1000條用戶為電影打出的滿分;查找2016年所有被用戶打過滿分的動作電影。這三個實驗分別包含了對小表的查詢,對大表的查詢,對大表的連接操作三種代表性情形。實驗對每種查詢場景分別重復了1000次,并取得了查詢時間的平均值。實驗結果如圖3所示:

圖3 實驗結果

三個實驗展現了使用搜索引擎替代數據庫執行某些慢查詢語句時的性能優勢。當涉及到全文檢索(如實驗中的genres字段),超長表(如實驗中的ratings表),多表鏈接(如實驗三中設計的場景)時,搜索引擎執行相同的查詢的速度遠快于數據庫,這驗證了上文理論分析的正確性。而當只是對一張較小的表(如實驗一中的場景)進行查詢時,這種優勢便不明顯了,這是由于當問題規模較小時,搜索引擎的檢索速度反而會由于更復雜的計算而慢于數據庫。同時,實驗證明了,在慢查詢問題中,連接操作才是最為消耗性能的,在使用數據庫進行執行時,實驗三的執行時間是實驗一和實驗二執行時間之和的5.1倍。可見,優化單表的查詢速度并不是解決慢查詢問題的核心途徑,優化連接性能甚至避免過多的連接才是解決慢查詢問題的方法。

4 基于搜索引擎的慢查詢優化系統

基于上述理論分析及實驗結果,本文提出了一種基于搜索引擎的慢查詢優化系統。該系統遵循CAP理論[9]和BASE原則[10]進行設計,其核心思路是:讀寫分離,主要使用搜索引擎提供讀服務,保障核心查詢服務的高可用性,主要使用原有數據持久層提供寫服務,保障寫入性能不下降;寫入數據與搜索引擎進行異步的數據同步,保障數據的最終一致性;搜索引擎獨立于數據庫進行集群部署,保障系統的容錯性,彈性擴容性與低侵入性。下面將具體描述該系統。

在數據寫入時,由于數據庫在寫入時的性能、可靠性優于搜索引擎,所以系統對數據庫進行同步的寫入。對搜索引擎文檔的寫入操作為:先寫入緩存并加以持久化,緩存記錄的信息為預寫式日志。當緩存中仍然有數據沒有寫入搜索引擎的文檔庫中時,便持續異步向搜索引擎中寫入數據。最后,系統定期對比數據庫的日志信息與緩存信息,重做緩存或搜索引擎中的寫入失敗。這樣的寫入方案一方面利用了數據庫的事務性保證數據不會丟失,另一方面用緩存機制與異步寫入解決了搜索引擎文檔寫入性能瓶頸,定時的數據校正保證了數據的最終一致性。寫入的系統流程如圖4所示:

圖4 數據的寫入流程

在數據進行查詢時,系統先對查詢的復雜程度進行判斷。當查詢所涉及到的表規模小于10萬、不涉及到1個以上的鏈接操作、不涉及到對數據庫未建立索引的字段進行查詢,系統判定為簡單查詢。執行簡單查詢時,搜索引擎的性能優勢并不明顯,因而直接使用數據庫進行查詢并輸出。而當執行復雜的查詢時,系統首先使用搜索引擎進行查詢。當搜索引擎搜索失敗時,失敗可能是由于搜索引擎中相應的數據尚未同步造成的,因而此時系統繼續使用數據庫進行搜索并輸出。這樣的設計保障了該系統中查詢操作的高可用性。查詢的系統流程如圖5所示:

圖5 數據的查詢流程

基于上面對讀寫流程的討論,從整個信息系統的層次架構上來看,該系統中除數據庫為原有的以外,其余部分皆是新增至原始的數據持久層之上的,搜索引擎只提供查詢加速的服務,最終的數據仍然以原有的數據源層為準,搜索引擎不直接與數據源層進行交互,因而本文提出的系統可以看作增強數據庫查詢性能的中間件。系統架構如圖6所示:

圖6 系統層次結構

該系統架構有以下優點。首先,該系統作為獨立的一層,可以單獨選取工程方案,有許多實用的開源產品可供使用,節約了研發成本與時間;其次,系統支持彈性擴展,當查詢性能再次遭遇瓶頸時可以繼續擴展性能,而不需要對其他層做出修改;其次,系統對原有系統的侵入性小,原有的業務層和數據持久層可以不做改變,這有利于系統的穩定性;最重要的是,該系統作為中間件可以橫跨多個子業務為高層業務提供統一的分布式索引,無論數據持久層分裂成了多少個單獨管理的數據源,該系統都只對應著同一個搜索引擎,并一同建立索引,這相當于在寫入搜索引擎時便已經對所有的表的字段進行了連接操作,這解決了由于業務分化造成的慢查詢問題。

綜上所述,基于本文提出的慢查詢優化系統具有以下一些優點:首先,可以有效解決由于業務分化帶來的慢查詢問題;其次,該解決方案有著優良的性能,在性能不足時還可以繼續彈性擴容而不影響其他層的業務;最后,該解決方案有著成熟的開源搜索工具可以使用,稍加開發便可以成為查詢優化中間件,具有極低的時間、資金成本。

5 結語

本文分析了生產環境所面臨的慢查詢問題,查詢會極大地影響系統的用戶體驗。本文指出了業務的分化是造成這類問題的主要原因。針對該問題,已有三種解決方案,分別是:針對慢查詢語句進行調優,使用NoSQL技術重構系統數據持久層,設計并架設合適的分布式索引。這三種解決方案都有著明顯的缺點,因而較難滿足實際應用中的需求。基于實際生產中的需求及已有方案的缺點,并結合對數據庫及搜索引擎索引原理的分析,本文提出了基于搜索引擎的慢查詢優化系統,該系統能夠有效解決實際生產中面臨的慢查詢問題,同時具有低侵入性、快速開發、性能優良等優點。本文對信息系統解決慢查詢問題有著實際的參考意義。基于該系統和已有的開源搜索工具可以進一步開發出專用的查詢優化分布式中間件,有著進一步研究的價值。

[1]朱喜梅.基于SQL Server數據庫的性能調優策略與研究[D].哈爾濱理工大學,2009.

[2]覃雄派,王會舉,李芙蓉,等.數據管理技術的新格局[J].軟件學報,2013(2):175-197.

[3]申德榮,于戈,王習特,等.支持大數據管理的NoSQL系統研究綜述[J].軟件學報,2013(8):1786-1803.

[4]吳煒,蘇永紅,李瑞軒,等.基于DHT的分布式索引技術研究與實現[J].計算機科學,2010,37(2):65-70.

[5]隆飛,翁海星,高明,等.基于LSM Tree的分布式索引實現[J].華東師范大學學報自然科學版,2016(5).

[6]周威.知識搜索引擎在圖書館參考咨詢中的應用研究[D].東北師范大學,2010.

[7]劉艷華,徐勇.不同搜索引擎在農業領域的應用效果對比[J].農業網絡信息,2009(8):25-29.

[8]MovieLens.http://grouplens.org/datasets/movielens/

[9]Gilbert S,Lynch N.Brewer's Conjecture and the Feasibility of Consistent,Available,Partition-Tolerant Web Services[J].Acm Sigact News,2002,33(2):51-59.

[10]Pritchett D.BASE:An Acid Alternative[J].Queue,2008,6(3):48-55.

The Slow Query Optimization System Based on Search Engine

CHEN Lun-yue1,YIN Feng2
(1.College of Computer Science,Sichuan University,Chengdu 610065; 2.The Campus Network Management Center,Southwest University for Nationalities,Chengdu 610064)

Generally,there is a data persistence layer to store and query the information in any information system.The often faced slow-query problem will greatly affect the system's user experience.Present studies can solve some problems caused by the growth of the data quite well.But when facing the problem caused by the business differentiation,the present studies work bad.Usually,the data source will be under the management of different business divisions,even different companies,which caused the increase of join operations in data querying.Analyzes the slow-query problem faced in real production environment,and creatively puts forward a system using the search engine technology to improve query performance.The system has several advantages including:low invasive,agile development,good performance,etc.

Slow Query;Search Engine;Query Optimization;System Design

1007-1423(2017)08-0026-05

10.3969/j.issn.1007-1423.2017.08.006

殷鋒(1972-),男,貴州榕江人,教授,研究方向為數據挖掘、中間件、分布式計算、軟件測試陳倫躍(1992-),男,四川成都人,碩士研究生,研究方向為態勢感知、民航大數據

2016-12-15

2017-02-20

猜你喜歡
搜索引擎數據庫實驗
記一次有趣的實驗
做個怪怪長實驗
數據庫
財經(2017年2期)2017-03-10 14:35:35
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
網絡搜索引擎亟待規范
中國衛生(2015年12期)2015-11-10 05:13:38
基于Nutch的醫療搜索引擎的研究與開發
主站蜘蛛池模板: 色综合日本| 亚洲福利片无码最新在线播放| 欧美日韩中文字幕在线| 中文字幕亚洲另类天堂| 区国产精品搜索视频| 国产成人综合日韩精品无码不卡 | 国产精品男人的天堂| 国产精品污污在线观看网站| 91破解版在线亚洲| 在线综合亚洲欧美网站| 国产精品黑色丝袜的老师| 秘书高跟黑色丝袜国产91在线| 91无码人妻精品一区二区蜜桃| 五月天综合网亚洲综合天堂网| 素人激情视频福利| 久久久精品国产SM调教网站| 一区二区三区国产精品视频| 无码专区国产精品一区| 成人国产精品2021| 高清无码一本到东京热| 91人妻在线视频| 欧美日韩一区二区在线播放| 国产一区亚洲一区| 91一级片| 久久国产免费观看| 久久精品一卡日本电影| 亚洲av无码片一区二区三区| 亚洲三级视频在线观看| 中文字幕精品一区二区三区视频| 操美女免费网站| 大陆国产精品视频| 精品综合久久久久久97| 欧美日韩导航| 精品撒尿视频一区二区三区| 2021国产精品自拍| 一级看片免费视频| 欧美成在线视频| 久久久久国产精品嫩草影院| 日韩性网站| 国产黄在线免费观看| 在线观看国产黄色| 国产欧美网站| 欧美日韩高清在线| 亚洲欧美另类久久久精品播放的| 欧美日韩高清在线| 亚洲乱强伦| 亚洲日韩AV无码精品| 欧美日韩高清| 99r在线精品视频在线播放| 超碰精品无码一区二区| 欧美性爱精品一区二区三区 | 思思99热精品在线| 中文字幕在线播放不卡| 国产成人免费高清AⅤ| 亚洲综合色区在线播放2019| 日本91在线| 免费播放毛片| 亚洲国产高清精品线久久| 亚洲美女一区二区三区| 日韩国产综合精选| 国产精品太粉嫩高中在线观看| 国产成人久久777777| 国产福利小视频在线播放观看| 亚洲无码视频图片| 四虎精品黑人视频| 日本在线视频免费| 在线精品视频成人网| 亚洲色欲色欲www网| 日韩天堂网| 婷婷午夜天| 日韩高清无码免费| 国内毛片视频| 日本手机在线视频| 午夜三级在线| 波多野结衣一区二区三区AV| 99999久久久久久亚洲| 亚洲成aⅴ人在线观看| 无码中文字幕乱码免费2| 色综合天天娱乐综合网| 日韩中文字幕免费在线观看| 日韩AV无码免费一二三区| 国产亚洲精品97在线观看|