【技術實現步驟摘要】
本專利技術涉及分布式數據的查詢,特別涉及包含count,distinct和groupby的查詢。
技術介紹
大數據時代,數據統計是一個常見業務。現在的統計型業務常常構建在關系型數據庫之上,比如mysql。這類關系型數據庫,因為單機的限制,數據量在千萬級別之后,統計性能就會急劇下降。通常地,可以通過對關系型數據庫做水平分片,將數據分布在多個機器上,來解決單機瓶頸的問題。在分片之后,統計類型SQL的執行過程會變成在各個分片節點執行一次統計,然后在中心節點進行一次匯總統計,以保證SQL的語義。對于具有分組,去重,計數功能的SQL會遇到功能和性能上的問題。該類SQL如下:select group_col,count(distinct dist_col)from table group by group_col。其中group_col和dist_col可以是一個或者多個字段名。通常的,如果將該類SQL直接下發到各個分片執行,并在中心節點將各個分片返回的結果進行匯總,會出現結果錯誤。因為在多個分片中,可能出現group_col和dist_col一樣的數據,分片執行再匯總會出現重復計數導致結果變大。另外地,為了保證結果正確,可能采用以下方法執行該類SQL。1.從各個分片節點讀取group_col和dist_col包含的字段值。具體SQL為:select group_col,dist_col from table;2.順序遍歷所有的數據,先根據group_col計算數據所屬于的分組,再在該分組內根據dist_col執行去重操作。3.所有數據遍歷完成后,計算各個分組中去重 ...
【技術保護點】
基于分片關系型數據庫的查詢方法,其特征在于,包括步驟:S101、接收語義如下的查詢語句:SELECT列名稱A,COUNT(DISTINCT列名稱B)FROM表名稱T?GROUP?BY列名稱G;列名稱G是列名稱A的子集;S102、在各分片節點分別執行SELECT列名稱C?FROM表名稱T,列名稱C是列名稱A與列名稱B的并集;將上述各分片節點的查詢結果中的每條紀錄進行處理,處理即根據每條記錄的b值取其hash值,hash值相同的記錄放入相同的數據管道,b值為記錄中列名稱B所對應的值;S103、對在相同數據管道的紀錄,分別根據G列的值進行分組,在各分組內計算該分組內不同b值出現的個數count,每個分組計算結果對應一條對應關系(g,count);S104、將各管道中上述分組計算獲得的對應關系(G,COUNT)合并,即根據列名稱G,合并g值相同的紀錄,合并后的記錄的COUNT列的值為合并的所有對應關系的COUNT列的值相加;合并的結果即為查詢結果。
【技術特征摘要】
1.基于分片關系型數據庫的查詢方法,其特征在于,包括步驟:S101、接收語義如下的查詢語句:SELECT列名稱A,COUNT(DISTINCT列名稱B)FROM表名稱T GROUP BY列名稱G;列名稱G是列名稱A的子集;S102、在各分片節點分別執行SELECT列名稱C FROM表名稱T,列名稱C是列名稱A與列名稱B的并集;將上述各分片節點的查詢結果中的每條紀錄進行處理,處理即根據每條記錄的b值取其hash值,hash值相同的記錄放入相同的數據管道,b值為記錄中列名稱B所對應的值;S103、對在相同數據管道的紀錄,分別根據G列的值進行分組,在各分組內計算該分組內不同b值出現的個數count,每個分組計算結果對應一條對應關系(g,count);S104、將各管道中上述分組計算獲得的對應關系(G,COUNT)合并,即根據列名稱G,合并g值相同的紀錄,合并后的記錄的COUNT列的值為合并的所有對應關系的COUNT列的值相加;合并的結果即為查詢結果。2.根據權利要求1所述的基于分片關系型數據庫的查詢方法,其特征在于列名稱G等于列名稱A。3.根據權利要求1所述的基于分片關系型數據庫的查詢方法,其特征在于,數據管道的個數N為機器cpu核心數的兩倍,所述步驟“處理即根據每條記錄b值取其hash值,hash值相同的記錄放入相同的數據管道”為根據每條記錄的b值求取該b值對應的hash值,并將該hash值模N,根據模N的值分配該條記錄到對應的數據管道,數值0到N-1分別唯一對應1個數據管道。4.根據權利要求1所述的基于分片關系型數據庫的查詢方法,其特征在在于,在步驟“接收語義如下的查詢語句:SELECT列名稱A,COUNT(DISTINCT列名稱B)FROM表名稱T GROUP BY列名稱G;”之前還包括步驟:讀取數據庫查詢語句,判斷查詢語句是否符合語意;若不符合語意,則返回;若符合語意,則執行上述接收查詢語句的步驟。5.根據權利要求1所述的基于分片關系型數據庫的查詢方法,其特征在于,其中上述S101、S102為根據分片節點中的表T的大小分批執行,上述步驟S103在分片節點執行...
【專利技術屬性】
技術研發人員:劉德建,邱宗銘,陳霖,吳擁民,陳宏展,
申請(專利權)人:福建天晴數碼有限公司,
類型:發明
國別省市:福建;35
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。