本公開涉及分布式存儲,尤其涉及一種數據存儲和數據庫訪問的方法、裝置、電子設備及介質。
背景技術:
1、隨著各類應用的數據量呈指數級增加以及高并發(fā)訪問場景的出現,對于數據庫容量以及訪問性能的要求也越來越高。由此產生了分布式存儲技術,分布式存儲的基本思想是將原來集中式數據庫中的數據分散存儲到多個通過網絡連接的數據存儲節(jié)點上,以獲取更大的存儲容量和更高的并發(fā)訪問量。
2、在實現本公開構思的過程中,發(fā)明人發(fā)現相關技術中至少存在如下技術問題:在基于分布式數據庫進行數據存儲時,相關技術中大多是利用用戶差異來劃分至不同的存儲節(jié)點的數據表中進行存儲,然而這一劃分過程會使得部分數據表存儲量非常大,部分數據表存儲量較小,導致存在嚴重的數據傾斜,在應用訪問數據庫的過程中,也會對應產生熱點數據集中訪問某個存儲節(jié)點的問題;在用戶數據體量動態(tài)變化的場景下,這種劃分方式也無法適配于用戶數據體量動態(tài)變化的情形。因此相關技術中的存儲邏輯在面對不同用戶數據量級差異較大的情形時,對分布式數據庫性能和存儲架構的穩(wěn)定性具有不利影響。
技術實現思路
1、為了解決上述技術問題或者至少部分地解決上述技術問題,本公開的實施例提供了一種數據存儲和數據庫訪問的方法、裝置、電子設備及介質。
2、第一方面,本公開的實施例提供一種數據存儲的方法。上述數據存儲的方法包括:接收數據存儲請求,上述數據存儲請求攜帶有請求用戶標識和待存儲數據;根據上述請求用戶標識,確定對應的目標用戶數據規(guī)模標簽;根據數據路由分組配置信息,確定與上述目標用戶數據規(guī)模標簽對應的目標分組路由算法;上述數據路由分組配置信息用于將不同規(guī)模的用戶數據劃分于數據庫不同存儲節(jié)點的數據表中,使得各存儲節(jié)點之間的數據量級負載均衡;根據上述目標分組路由算法,對上述待存儲數據進行分組和轉發(fā)給對應存儲節(jié)點,并構建上述待存儲數據與所存儲的數據表之間的存儲映射關系。
3、根據本公開的實施例,上述數據路由分組配置信息包含:用戶數據規(guī)模標簽與分組路由算法的對應關系;上述根據數據路由分組配置信息,確定與上述目標用戶數據規(guī)模標簽對應的目標分組路由算法,包括:根據上述對應關系,確定與上述目標用戶數據規(guī)模標簽對應的目標分組路由算法;在上述目標用戶數據規(guī)模標簽為第一等級規(guī)模的用戶標簽的情況下,上述目標分組路由算法包括:針對上述待存儲數據的屬性信息執(zhí)行第一路由分組運算,使得上述待存儲數據劃分至第一數量的數據表中;在上述目標用戶數據規(guī)模標簽為第二等級規(guī)模的用戶標簽的情況下,上述目標分組路由算法包括:針對上述待存儲數據的屬性信息執(zhí)行第一路由分組運算,得到第一邏輯分組結果;針對上述第一邏輯分組結果執(zhí)行第二路由分組運算,使得上述待存儲數據劃分至第二數量的數據表中;其中上述第二等級規(guī)模大于上述第一等級規(guī)模,上述第二數量大于上述第一數量。
4、根據本公開的實施例,上述第一路由分組運算包括:哈希取模運算;上述第二路由分組運算包括:按照預設時間段進行分組運算;上述屬性信息包括:請求用戶標識。
5、根據本公開的實施例,根據上述請求用戶標識,確定對應的目標用戶數據規(guī)模標簽,包括:基于上述請求用戶標識,在預先配置的用戶標簽配置表中進行匹配,得到匹配用戶數據規(guī)模標簽;上述用戶標簽配置表包含:用戶標識、用戶數據規(guī)模標簽和標簽時間;上述標簽時間用于指示用戶數據規(guī)模標簽的有效時間;根據上述匹配用戶數據規(guī)模標簽對應的匹配標簽時間,確定上述數據存儲請求的接收時刻對應的目標用戶數據規(guī)模標簽。
6、根據本公開的實施例,上述標簽時間采用用戶數據規(guī)模標簽的起始時刻表示,用于指示從前一個起始時刻到后一個起始時刻之間的時段有效。其中,根據上述匹配用戶數據規(guī)模標簽對應的匹配標簽時間,確定上述數據存儲請求的接收時刻對應的目標用戶數據規(guī)模標簽,包括:在上述匹配標簽時間包含多個匹配起始時刻且均早于上述接收時刻的情況下,將上述多個匹配起始時刻中最晚的匹配起始時刻所對應的匹配用戶數據規(guī)模標簽確定為上述目標用戶數據規(guī)模標簽;在上述匹配標簽時間包含多個匹配起始時刻且上述接收時刻落入第一匹配起始時刻與第二匹配起始時刻之間的時段的情況下,將上述第一匹配起始時刻對應的匹配用戶數據規(guī)模標簽確定為上述目標用戶數據規(guī)模標簽。
7、根據本公開的實施例,上述標簽時間采用用戶數據規(guī)模標簽的持續(xù)時段信息進行表示;其中,根據上述匹配用戶數據規(guī)模標簽對應的匹配標簽時間,確定上述數據存儲請求的接收時刻對應的目標用戶數據規(guī)模標簽,包括:在上述匹配標簽時間包含一個或多個匹配持續(xù)時段信息的情況下,確定上述接收時刻所落入的目標匹配持續(xù)時段信息;將上述目標匹配持續(xù)時段信息對應的匹配用戶數據規(guī)模標簽確定為上述目標用戶數據規(guī)模標簽。
8、根據本公開的實施例,上述數據存儲的方法還包括:根據統計時段內目標用戶的已入庫數據和數據庫訪問性能至少一項,為上述目標用戶生成上述統計時段內的規(guī)模標簽信息;根據上述規(guī)模標簽信息,生成或更新上述用戶標簽配置表內的用戶數據規(guī)模標簽。
9、根據本公開的實施例,上述數據存儲的方法應用于包含數據庫中間件的存儲服務端或包含數據庫中間件的存儲需求端。其中,根據上述目標分組路由算法,對上述待存儲數據進行分組和轉發(fā)給對應存儲節(jié)點,并構建上述待存儲數據與所存儲的數據表之間的存儲映射關系,包括:對上述待存儲數據的屬性信息執(zhí)行上述目標分組路由算法,將上述待存儲數據分組劃分于上述數據庫不同存儲節(jié)點的對應數據表中;構建待存儲數據和所存儲的數據表之間的關聯關系;根據上述待存儲數據的請求用戶標識、目標用戶數據規(guī)模標簽和對應的標簽時間,對上述關聯關系進行關聯拓展,得到多維度的存儲映射關系;上述存儲映射關系包含:用戶標識、用戶數據規(guī)模標簽、標簽時間與所存儲的數據表之間的關聯關系。
10、第二方面,本公開的實施例提供一種數據訪問的方法。該方法應用于包含數據庫中間件的存儲需求端,包括:接收數據訪問請求,上述數據訪問請求攜帶有:訪問用戶標識和針對待訪問數據的數據操作指令;上述數據操作指令包括以下至少一種:查詢指令、修改指令、刪除指令;根據上述訪問用戶標識,確定對應的訪問用戶數據規(guī)模標簽;根據預先構建的存儲映射關系,查詢與上述訪問用戶標識和上述訪問用戶數據規(guī)模標簽對應的目標數據表;將針對目標數據表中待訪問數據的數據操作指令轉發(fā)給對應的存儲節(jié)點。
11、第三方面,本公開的實施例提供一種數據訪問的方法。該方法應用于包含數據庫中間件的存儲服務端,包括:接收數據訪問請求,上述數據訪問請求攜帶有:訪問用戶標識和針對待訪問數據的數據操作指令;上述數據操作指令包括以下至少一種:查詢指令、修改指令、刪除指令;根據上述訪問用戶標識,確定對應的訪問用戶數據規(guī)模標簽;根據預先構建的存儲映射關系,查詢與上述訪問用戶標識和上述訪問用戶數據規(guī)模標簽對應的目標數據表;針對上述目標數據表中的待訪問數據執(zhí)行上述數據操作指令,得到數據操作結果。
12、根據本公開的實施例,上述第二方面或第三方面所提供的數據訪問的方法中,上述數據訪問請求還攜帶有:針對待訪問數據的搜索時段;上述存儲映射關系包含:用戶標識、用戶數據規(guī)模標簽、標簽時間與所存儲的數據表之間的關聯關系;上述標簽時間用于指示用戶數據規(guī)模標簽的有效時間。其中,根據預先構建的映射關系,查詢與上述訪問用戶標識和上述訪問用戶數據規(guī)模標簽對應的目標數據表,包括:在上述映射存儲關系的標簽時間中篩選與上述搜索時段匹配的目標標簽時間;在上述目標標簽時間的限定時段內,查詢與上述訪問用戶標識、上述訪問用戶數據規(guī)模標簽對應的目標數據表。
13、第四方面,本公開的實施例提供一種數據存儲的裝置。上述裝置為包含數據庫中間件的存儲需求端或包含數據庫中間件的存儲服務端,包括:存儲請求接收模塊、存儲標簽確定模塊、路由算法確定模塊和分組路由模塊。上述存儲請求接收模塊用于接收數據存儲請求,上述數據存儲請求攜帶有請求用戶標識和待存儲數據。上述存儲標簽確定模塊用于根據上述請求用戶標識,確定對應的目標用戶數據規(guī)模標簽。上述路由算法確定模塊用于根據數據路由分組配置信息,確定與上述目標用戶數據規(guī)模標簽對應的目標分組路由算法;上述數據路由分組配置信息用于將不同規(guī)模的用戶數據劃分至數據庫不同存儲節(jié)點的數據表中,使得各存儲節(jié)點之間的數據量級負載均衡。上述分組路由模塊用于根據上述目標分組路由算法,對上述待存儲數據進行分組和轉發(fā)給對應存儲節(jié)點,并構建上述待存儲數據與所存儲的數據表之間的存儲映射關系。
14、第五方面,本公開的實施例提供一種數據訪問的裝置。上述裝置為包含數據庫中間件的存儲需求端,包括:第一訪問請求接收模塊、第一訪問標簽確定模塊、第一存儲表查詢模塊和轉發(fā)模塊。上述第一訪問請求接收模塊用于接收數據訪問請求,上述數據訪問請求攜帶有:訪問用戶標識和針對待訪問數據的數據操作指令;上述數據操作指令包括以下至少一種:查詢指令、修改指令、刪除指令。上述第一訪問標簽確定模塊用于根據上述訪問用戶標識,確定對應的訪問用戶數據規(guī)模標簽。上述第一存儲表查詢模塊用于根據預先構建的存儲映射關系,查詢與上述訪問用戶標識和上述訪問用戶數據規(guī)模標簽對應的目標數據表。上述轉發(fā)模塊用于將針對目標數據表中待訪問數據的數據操作指令轉發(fā)給對應的存儲節(jié)點。
15、第六方面,本公開實施例提供一種數據訪問的裝置。上述裝置為包含數據庫中間件的存儲服務端,包括:第二訪問請求接收模塊、第二訪問標簽確定模塊、第二存儲表查詢模塊和數據操作模塊。上述第二訪問請求接收模塊用于接收數據訪問請求,上述數據訪問請求攜帶有:訪問用戶標識和針對待訪問數據的數據操作指令;上述數據操作指令包括以下至少一種:查詢指令、修改指令、刪除指令。上述第二訪問標簽確定模塊用于根據上述訪問用戶標識,確定對應的訪問用戶數據規(guī)模標簽。上述第二存儲表查詢模塊用于根據預先構建的存儲映射關系,查詢與上述訪問用戶標識和上述訪問用戶數據規(guī)模標簽對應的目標數據表。上述數據操作模塊,用于針對上述目標數據表中的待訪問數據執(zhí)行上述數據操作指令,得到數據操作結果。
16、第七方面,本公開的實施例提供了一種電子設備。上述電子設備包括處理器、通信接口、存儲器和通信總線,其中,處理器、通信接口和存儲器通過通信總線完成相互間的通信;存儲器,用于存放計算機程序;處理器,用于執(zhí)行存儲器上所存放的程序時,實現如上所述的數據存儲的方法或數據訪問的方法。
17、第八方面,本公開的實施例提供了一種計算機可讀存儲介質。上述計算機可讀存儲介質上存儲有計算機程序,上述計算機程序被處理器執(zhí)行時實現如上所述的數據存儲的方法或數據訪問的方法。
18、本公開實施例提供的上述技術方案至少具有如下優(yōu)點的部分或全部:
19、由于不同用戶對應有各自的用戶數據規(guī)模標簽,在數據路由分組配置信息中針對不同的用戶數據規(guī)模標簽配置不同的分組路由算法,在接收到數據存儲請求后,根據請求用戶標識確定對應的目標用戶數據規(guī)模標簽,并根據數據路由分組配置信息,確定與上述目標用戶數據規(guī)模標簽對應的目標分組路由算法;據此執(zhí)行對應的目標分組路由算法,使得不同規(guī)模的用戶數據在劃分對應于數據庫的各個存儲節(jié)點的數據表的過程中實現各存儲節(jié)點之間的數據量級負載均衡,一方面實現不同用戶數據量級別下的均勻分組存儲,避免不同存儲節(jié)點之間數據存儲量在數量級別上的差異較大,有效解決數據傾斜的問題,同時也有效避免熱點數據集中于某個存儲節(jié)點導致的訪問集中對數據庫穩(wěn)定性的影響;另一方面,在用戶的數據體量在動態(tài)變化的情況下也會反映到對應的用戶數據規(guī)模標簽以及對應的分組路由算法的變化,從而動態(tài)適配于用戶數據體量發(fā)生變化的情形而進行對應均衡化存儲和訪問,實現動態(tài)適配存儲和訪問。