麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種分布式數據庫處理的方法和設備的制造方法

文檔序號:9750879閱讀:563來源:國知局
一種分布式數據庫處理的方法和設備的制造方法【
技術領域
】[0001]本發明涉及存儲
技術領域
,尤其涉及一種分布式數據庫處理的方法和設備。【
背景技術
】[0002]隨著應用系統的用戶數量的急劇增加,互聯網的發展以及IT建設的集中化,集中式數據庫系統越來越不能滿足大數據量儲存與大量并發訪問的發展需要,分布式數據系統正在蓬勃發展。尤其是當前計算機行業正在興起去Ι0Ε運動,使得數據庫設備更多地安裝在X86主機上,不使用磁陣設備,并更多地選擇開源數據庫(例如MySQL),這就使得數據變得更為分散,對數據處理的性能要變得更為突出。在分布式數據庫系統中,數據是需要按分區規則存放的。[0003]在數據查詢或更新時,如果能根據查詢條件直接定位到數據所在分布式數據庫,并向該數據庫發起SQL,將能獲取最快的響應性能;否則當無法確定數據所在分布式數據庫時,需要對系統中每個分布式數據庫發起SQL處理,方能獲得正確結果,當系統中分布式數據庫數量很多時,這種處理既消耗性能,又增加響應時延,從而導致用戶滿意度的下降。[0004]具體的,現有技術中,當數據表需要存放到多個分布式數據庫中時,需要遵循某種規則,這種規則就叫做分區規則,否則將導致數據無法管理。當前業界通常的做法是,按數據表的某個(些)字段(下文中稱為分區字段)做函數運算(例如Hash),再對運算結果對數據庫的個數取模,不同模值的記錄使用不同分布式數據庫存放。如圖1所示,對待存儲的數據表的coll字段做Hash運算,然后將Hash值對數據庫個數m取模,不同模值的記錄存放在對應序號的分布式數據庫中。當然,還有其它數據分區規則,例如對字段的函數運算結果值域,甚至字段本身的值域做區間劃分,不同區間的數據使用不同的分庫存放。上述根據分區規則將數據表中的數據記錄存放到多個分布式數據庫中的過程中,用于分區的字段稱為分區字段,例如coll字段。[0005]因為數據是按某個(些)分區字段(如上述的coll字段)的函數計算結果進行分布存放的,因此在用戶查詢數據或更新數據時,如果SQL語句的查詢條件中含有這些分區字段,便可以根據分區字段值做同樣的函數運算,從而通過計算結果可以確定數據所在分布式數據庫,從而將SQL發往該分布式數據庫進行處理便可獲得所需結果。[0006]例如用戶SQL:selectnamefromtablelwherecoll='abc',應用程序便可以根據SQL語句的查詢索引字段coll的值'abc'做Hash運算,再根據運算結果與分區規則共同確定SQL處理數據庫,再將SQL發往對應分布式數據庫去處理。[0007]為獲取快速處理性能,通常會要求用戶在SQL的語句的查詢條件中帶上分區字段,否則系統需要將SQL語句發往每個分布式數據庫處理,這樣做雖然能夠獲得期望的結果,但響應時延和性能消耗顯然不是最好的。然而現實中的很多場景,無法讓用戶在SQL語句的查詢條件中帶上分區字段,從而數據的訪問時延很長。【
發明內容】[0008]本發明提供了一種分布式數據庫存儲和訪問的方法和設備,以解決用戶使用非分區字段訪問數據庫時,需要將訪問請求發往所有數據庫進行處理的技術問題。[0009]為達到上述目的,本發明的實施例采用如下技術方案:[0010]第一方面,提供一種分布式數據庫的處理方法,包括:數據庫處理設備接收第一訪問請求,該第一訪問請求包括第一查詢索引字段及其取值和待訪問的第一目標字段;其中,所述第一查詢索引字段為第一數據表的非分區信息;為了避免按照現有技術將該第一訪問請求發送到所有分布式數據庫處理,數據庫處理設備需要根據所述第一查詢索引字段及其取值,在所述第一數據表的分區路由表中獲取與該第一查詢索引字段對應的分區信息及取值(例如,數據庫處理設備可以向保存有所述第一數據表的分區路由表的數據庫發送查詢請求,并從保存有所述第一數據表的分區路由表的數據庫接收查詢結果,從而獲取與該第一查詢索引字段對應的分區信息及取值),其中所述分區路由表中存儲有所述第一數據表的分區信息及取值和非分區信息及取值的對應關系;根據所述第一查詢索引字段及其取值對應的分區信息及取值,將所述第一訪問請求發送到與該分區信息取值對應的數據庫。數據庫處理設備根據分區信息以及分區規則將第一數據表進行拆分并存儲在多個數據庫中。具體的,所述分區信息包括分區字段或者分區攜帶字段,其中所述分區攜帶字段與所述分區字段存在映射關系。分區攜帶字段可以是分區字段根據預設的變換規則生成,例如,分區攜帶字段可以由字符串前綴和字符串后綴構成,其中字符串前綴為分區字段,字符串后綴為順序數。顯然,由于所述分區攜帶字段與所述分區字段存在映射關系,所以根據分區攜帶字段和分區規則,也能夠確定需要將訪問語句發送的數據庫。本申請實施例提供的方案,當第一訪問請求中的查詢索引字段不是分區信息時,可以根據第一數據表對應的分區路由表確定查詢索引字段的取值對應的分區信息的取值,然后根據分區信息的取值,將第一訪問請求發送到對應的數據庫處理。避免了按照現有技術,需要將第一訪問請求發送到所有數據庫處理的問題,有效的減小了訪問響應的延時,也減小了系統性能消耗。[0011]結合第一方面,在第一方面的第一種可能的實現方式中,所述在所述第一數據表的分區路由表中查找與該第一查詢索引字段對應的分區信息及取值,具體可以為:獲取所述第一數據表關聯的分區路由表;根據所述第一查詢索引字段,在所述第一數據表關聯的分區路由表中,確定與所述第一查詢索引字段關聯的分區路由表;在所述第一查詢索引字段關聯的分區路由表中查找與該第一查詢索引字段對應的分區信息及取值。當該第一數據表存在多個分區路由表時,不需要查詢所有的分區路由表,直接查詢與所述第一查詢索引字段關聯的分區路由表即可,從而加快了查詢與所述第一查詢索引字段及其取值對應的分區信息及其取值的速度,進而進一步減小了訪問響應的延時。[0012]結合第一方面和第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,根據所述第一查詢索引字段及其取值對應的分區信息及取值,將所述第一訪問請求發送到與該分區信息取值對應的數據庫,具體為:根據所述第一查詢索引字段及其取值對應的分區信息及取值,更新所述第一訪問請求,所述更新后的第一訪問請求包括該分區信息及取值和所述待訪問的第一目標字段;將所述更新后的第一訪問請求發送到與該分區信息取值對應的數據庫。更新所述第一訪問請求后,可以使得數據庫處理設備的現有處理邏輯不需要修改,直接按照現有的處理邏輯處理更新后的第一訪問請求即可。[0013]結合第一方面和第一方面的第一至第二種可能的實現方式,在第一方面的第三種可能的實現方式中,在所述接收第一訪問請求之前,該方法還包括:接收插入請求,所述插入請求包括待插入數據,所述待插入數據包括所述分區信息的取值、所述第一查詢索引字段的取值和所述待訪問的第一目標字段的取值;根據所述分區信息的取值,將所述待插入數據插入所述數據庫的分區表中;確定存在所述第一查詢索引字段關聯的分區路由表;將所述第一查詢索引字段的取值和所述分區信息的取值插入到所述第一查詢索引字段關聯的分區路由表中。在插入分區表數據的時候,同步插入分區路由表數據,可以使得分區路由表數據和分區表數據保持同步,以便于后續用戶通過非分區信息訪問數據表時,可以根據分區路由表獲取相應的分區信息及其取值。[0014]結合第一方面和第一方面的第一至第三種可能的實現方式,在第一方面的第四種可能的實現方式中,該方法還包括:接收第二訪問請求,所述第二訪問請求包括第二查詢索引字段及其取值和待訪問的第二目標字段;其中,所述第二查詢索引字段是所述第二數據表的分區信息;根據所述第二查詢索引字段及其取值,將所述第二訪問請求發送到對應的數據庫處理。當數據庫處理設備接收到的訪問請求中的查詢索引字段為分區信息時,則可以直接根據查詢索引字段及其取值,將訪問請求發送到對應的數據庫處理。特別地,當所述第二查詢索引字段為分區攜帶字段時,按照現有技術,該第二訪問請求將被發送到所有分布式數據庫處理。而采用本發明的提供的技術方案,將避免將該第二訪問請求將被發送到所有分布式數據庫處理,從而有效的減小了訪問響應的延時,也減小了系統性能消耗。[0015]第二方面,本發明實施例提供了一種分布式數據庫處理設備,該數據庫處理設備具有實現上述第一方面中數據庫處理設備行為的功能。所述功能可以通過硬件實現,也可以通過硬件執行相應的軟件實現。所述硬件或軟件包括一個或多個與上述功能相對應的模塊。[0016]在一個可能的設計中,數據庫處理設備的結構中包括處理器和存儲器,所述存儲器用于存儲支持數據庫處理設備執行上述方法的程序,所述處理器被配置為用于執行所述存儲器中存儲的程序。所述數據庫處理設備還可以包括通信接口,用于數據庫處理設備與其他設備或通信網絡通信。[0017]第三方面,本發明實施例提供了一種計算機存儲介質,用于儲存為上述數據庫處理設備所用的計算機軟件指令,其包含用于執行上述方面為數據庫處理設備所設計的程序。[0018]可選的,上述方面所述的分區信息具體包括分區字段和/或分區攜帶字段。[0019]在具體實現中,數據庫處理設備可以為Application、DDS或者是Application與DDS合設的一個設備。[0020]相較于現有技術,本發明提供的方案可以在用戶使用非分區字段訪問數據庫時,避免將訪問請求發送到所有分布式數據庫處理,有效的減小了客戶響應時延,同時大大的減小了系統性能消耗。[0021]本發明的這些方面或其他方面在以下實施例的描述中會更加簡明易懂。【附圖說明】[0022]圖1為現有技術中一種分布式數據庫處理的示意圖;[0023]圖2為本發明一實施例提供的分布式數據庫系統的運行架構;[0024]圖3為本發明一實施例所提供的一種可能的分區攜帶字段的生成方法;[0025]圖4為本發明一實施例提供的分布式數據庫系統示意圖;[0026]圖5為本發明一實施例提供的計算機設備示意圖;[0027]圖6為本發明一實施例提供的一種分布式數據庫的處理方法的流程示意圖;[0028]圖7為本發明一實施例提供的另一種分布式數據庫處理方法的流程示意圖;[0029]圖8為本發明一實施例提供的另一種分布式數據庫處理方法的流程示意圖;[0030]圖9為本發明一實施例提供的另一種分布式數據庫處理方法的流程示意圖;[0031]圖10為本發明一實施例提供的另一種分布式數據庫處理方法的流程示意圖;[0032]圖11為本發明一實施例提供的數據庫處理設備的結構示意圖。【具體實施方式】[0033]為使本發明的目的、技術方案和優點更加清楚,下面結合附圖對本發明具體實施例作進一步的詳細描述。[0034]圖2描述了本發明一實施例涉及的分布式數據庫系統的運行架構。該分布式數據庫系統的運行架構200包括應用程序Application201、分布式數據服務中間件202(DistributedDataService,DDS)以及分布式數據庫203(如DB1、DB2、DB3等)。其中,App1ication201可以是任何需要訪問分布式數據庫的應用程序,例如,電信行業的CRM(CustomerRelationshipManagement)系統、華為商城的商品訂購系統等。DDS202包括兩種運行形態:獨立進程運行形態(作為獨立運行的一個裝置)和嵌入式運行形態(作為Application201的一個功能模塊),本發明對DDS的具體運行形態不做限定。Application201通過DDS202對DB1、DB2以及DB3等分布式數據庫進行透明操作。對于Application201而言,分布式數據庫DB1、DB2和DB3在邏輯上是一個統一的整體,在物理上則是分別存儲在不同的物理節點上。當DDS202接收到Application201發送過來的訪問請求后,需要確定將該訪問請求發送到哪個分布式數據庫(即DB1、DB2或者DB3)。在分布式數據庫系統的運行架構202中,Application201以及使用Application的用戶都不必知道所使用的數據存儲在什么地方,簡化了Application的復雜性,即使存儲數據的位置改變了,Application201也不用改變。[0035]在本發明實施例中,用戶通過Application201生成的訪問請求訪問分布式數據庫203,該訪問請求可以是更新請求也可以是查詢請求,具體的,該訪問請求可以是結當前第1頁1 2 3 4 5 6 
當前第1頁1 2 3 4 5 6 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 密云县| 瑞金市| 美姑县| 临澧县| 彰武县| 包头市| 兴山县| 轮台县| 永泰县| 永城市| 筠连县| 酒泉市| 万全县| 黑山县| 遂昌县| 嵊州市| 宁德市| 永春县| 福州市| 信丰县| 九龙城区| 南川市| 石棉县| 双流县| 枝江市| 吉水县| 临汾市| 深泽县| 宣武区| 哈巴河县| 台东市| 吴忠市| 喜德县| 福清市| 白银市| 嵩明县| 襄樊市| 平泉县| 蒙山县| 浦江县| 镇坪县|