一種數據存儲方法、數據讀取方法及其對應的系統的制作方法
【專利摘要】本發明公開了一種數據存儲方法、數據讀取方法及其對應的系統,其中,數據存儲方法包括:在DDL框架層定義分庫分表規則;在DDL框架層按照定義的分庫分表規則將源數據進行分庫分表,并將分庫分表后的子數據塊存儲至對應的主數據庫中;每一個主數據庫將自身的子數據塊同步至該主數據庫對應的多個從數據庫中;其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。通過本發明,能夠對大批量的數據按照一定的規則進行分庫分表,減輕了數據庫的壓力,也能夠實現數據的讀寫分離功能。
【專利說明】
一種數據存儲方法、數據讀取方法及其對應的系統
技術領域
[0001]本發明涉及數據處理技術領域,具體涉及一種數據存儲方法、數據讀取方法及其對應的系統。
【背景技術】
[0002]目前J2EE應用開發很多使用Spring+Mybatis框架進行開發,但是Spring+Mybatis本身無法實現分庫分表與讀寫分離的功能,也無法實現動態的切換數據源。當應用系統有大規模的數據時,需要根據一定的規則對數據分庫分表,減輕數據庫壓力。同時也需要能夠同時連接多個異構數據庫,來實現一定的業務流程。
【發明內容】
[0003]本發明所要解決的技術問題是提供一種數據存儲方法、數據讀取方法及其對應的系統,能夠解決現有技術的不足。
[0004]本發明解決上述技術問題的技術方案如下:
[0005]—方面,本發明提供了一種數據存儲方法,包括:
[0006]Sla、在DDL框架層定義分庫分表規則;
[0007]S2a、在DDL框架層按照定義的分庫分表規則將源數據進行分庫分表,形成多個子數據快,并將每一個子數據塊存儲至對應的主數據庫中;
[0008]S3a、每一個主數據庫將自身的子數據塊同步至該主數據庫對應的多個從數據庫中;
[0009]其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。
[0010]另一方面,本發明提供了一種數據讀取方法,包括:
[0011 ] Slb、在DDL框架層定義每個主數據庫對應的多個從數據庫的數據查詢路由規則;
[0012]S2b、當接收到數據讀取請求時,根據數據讀取請求中的請求數據標識,查找對應的主數據庫;
[0013]S3b、根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從從數據庫中查找與數據讀取請求對應的數據。
[0014]再一方面,本發明提供了一種數據存儲系統,包括:
[0015]第一規則定義單元,用于在DDL框架層定義分庫分表規則;
[0016]分庫存儲單元,用于在DDL框架層按照定義的分庫分表規則將源數據進行分庫分表,形成多個子數據塊,并將每一個子數據塊存儲至對應的主數據庫中;
[0017]數據同步單元,用于將每一個主數據庫中的子數據塊同步至對應的多個從數據庫中;
[0018]其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。
[0019]又一方面,本發明提供了一種數據讀取系統,包括:
[0020]第二規則定義單元,用于在DDL框架層定義每個主數據庫對應的多個從數據庫的數據查詢路由規則;
[0021 ]第一查找單元,用于當接收到數據讀取請求時,根據數據讀取請求中的請求數據標識,查找對應的主數據庫;
[0022]第二查找單元,用于根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從從數據庫中查找與數據讀取請求對應的數據。
[0023]本發明提供的一種數據存儲方法、數據讀取方法及其對應的系統,對大批量的數據按照一定的分庫分表規則進行分庫形成多個子數據塊,并將子數據塊存儲至對應的主數據庫中,且每一個主數據庫對應有多個從數據庫,每一個主數據庫中的數據同步至多個從數據庫中,將主數據庫作為寫數據庫,將多個從數據庫作為讀數據庫,在實現數據讀取時,首先定位到主數據庫,在按照一定的查詢路由規則從從數據庫中查找對應的數據,實現讀寫分離的功能。
【附圖說明】
[0024]圖1為本發明實施例一的一種數據存儲方法流程圖;
[0025]圖2為在DDL框架中定義數據存儲規則示意圖;
[0026]圖3為數據存儲流程圖;
[0027]圖4為本發明實施例二的一種數據讀取方法流程圖;
[0028]圖5為本發明實施例三的一種數據存儲系統示意圖;
[0029]圖6為本發明實施例四的一種數據讀取系統示意圖。
【具體實施方式】
[0030]以下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并非用于限定本發明的范圍。
[0031]實施例一、一種數據存儲方法。下面結合圖1-圖3對本實施例提供的數據存儲方法進行說明。
[0032]參見圖1,本實施例提供的數據存儲方法包括:Sla、在DDL框架層定義分庫分表規則。
[0033]S2a、在DDL框架層按照定義的分庫分表規則將源數據進行分庫分表,形成多個子數據塊,并將每一個子數據塊存儲至對應的主數據庫中。
[0034]S3a、每一個主數據庫將自身的子數據塊同步至對應的多個從數據庫中;
[0035]其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。
[0036]具體的,當有大量數據需要存儲時,應用程序在DDL(Distributed Data Layer,分布式數據層)框架層定義數據的分庫分表規則,具體主要是定義源數據的數據劃分規則以及將源數據劃分后形成的每一個子數據塊對應存儲的數據庫類型,比如,哪些子數據塊存儲在Oracle數據庫中,哪些子數據塊存戶在Mysql數據庫中。
[0037]在DDL框架層,按照定義的劃分規則,將源數據劃分為多個子數據塊,并且按照定義的每一個子數據塊對應存儲的數據庫類型,將多個子數據塊存儲至對應類型數據庫的主數據庫中。其中,可參見圖2,J2EE應用層的Web層將源數據發送給服務層,服務層又將源數據發送給DDL框架層的分布式數據層(Distributed Data Layer),分布式數據層定義源數據的分庫分表規則,將分庫分表后的每一個子數據塊存儲至對應的主數據庫中,每一個主數據庫對應有多個從數據庫,每一個主數據庫將存儲在自身的子數據塊同步存儲至該主數據庫對應的多個從數據庫中,即每一個從數據庫中的數據與主數據庫中的數據一致。參見圖3,J2EE層將源數據發送給DDL框架層,在DDL框架層定義源數據的分庫分表規則以及每一個主數據庫對應的多個從數據庫的數據查詢路由規則,按照分庫分表規則將源數據劃分為多個子數據塊,將每一個子數據塊存儲至對應的主數據庫中,所有的主數據庫作為寫數據庫,所有對應的從數據庫作為讀數據庫,因此,將主數據庫中的數據同步至從數據庫之后,將所有的從數據庫的屬性設置為read-only(只讀)屬性。比如,現需要將各個省市的身份證信息存儲于數據庫中,可以按照身份證所屬省市進行劃分,并將劃分后的各個省市的身份證信息存儲至對應類型的主數據庫中,例如,北京地區的身份證信息存儲于Orale數據的主數據庫中,上海地區的身份證信息存儲于Mysql數據庫的主數據庫中。每一個主數據庫對應多個從數據庫,將每一個主數據庫中的數據同步至對應的多個從數據庫中,主數據庫作為寫數據庫,多個從數據庫作為讀數據庫。
[0038]另外,數據分庫分表規則是可以動態調整變化的,本實施例可使用注解ShardingRule的方式能動態改變分庫分表規則。
[0039]實施例二、一種數據讀取方法。下面結合圖4對本實施例提供的數據讀取方法進行描述。
[0040]參見圖4,本實施例提供的數據讀取方法包括:Slb、在DDL框架層定義每個主數據庫對應的多個從數據庫的數據查詢路由規則。
[0041 ] S2b、當接收到數據讀取請求時,根據數據讀取請求中的請求數據標識,查找對應的主數據庫。
[0042]S3b、根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從從數據庫中查找與數據讀取請求對應的數據。
[0043]具體的,上述實施例一將大批量的數據分庫分表存儲至對應的數據庫中后,應用程序可以在DDL框架中定義每個主數據庫對應的多個從數據庫的數據查詢路由規則,即在同一個主數據庫下,查詢每一個從數據庫的順序,具體可以為輪詢查詢,也可以為每一個從數據庫設置優先級,先查詢優先級高的從數據庫,再查詢優先級低的從數據庫。
[0044]當接收到數據讀取請求時,首先根據數據讀取請求中的請求數據標識,查找對應的主數據庫,比如,數據讀取請求中請求讀取上海的身份證信息時,先查找對應存儲上海身份證信息的主數據庫,然后根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從該主數據庫對應的從數據庫中查找與數據讀取請求對應的數據。
[0045]實施例三、一種數據存儲系統。下面結合圖5對本實施例提供的數據存儲系統進行說明。
[0046]參見圖5,本實施例提供的數據存儲系統包括第一規則定義單元51、分庫存儲單元52、數據同步單元53和屬性設置單元54。
[0047]其中,第一規則定義單元51,主要用于在DDL框架層定義分庫分表規則。
[0048]分庫存儲單元52,主要用于在DDL框架層按照第一規則定義單元51定義的分庫分表規則將源數據進行分庫分表,形成多個子數據塊,并將每一個子數據塊存儲至對應的主數據庫中。
[0049]數據同步單元53,主要用于將每一個主數據庫中的子數據塊同步至對應的多個從數據庫中,其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。
[0050]其中,第一規則定義單元51具體用于:
[0051]在DDL框架層定義源數據的分庫分表規則以及劃分后的每一子數據塊對應存儲的數據庫類型;
[0052]分庫存儲單元52具體用于:
[0053]在DDL框架層按照定義的數據源的分庫分表規則,將源數據劃分為多個子數據塊,并將每一個子數據塊存儲至對應類型數據庫的主數據庫中。
[0054]本實施例提供的數據存儲系統還包括屬性設置單元54,主要用于將所有的從數據庫的屬性設置為read-only屬性。
[0055]實施例四、一種數據讀取系統。下面結合圖6對本實施例提供的數據讀取系統進行描述。
[0056]參見圖6,本實施例提供的數據讀取系統包括第二規則定義單元61、第一查找單元62和第二查找單元63。
[0057]其中,第二規則定義單元61,主要用于用于在DDL框架層定義每個主數據庫對應的多個從數據庫的數據查詢路由規則。
[0058]第一查找單元62,主要用于當接收到數據讀取請求時,根據數據讀取請求中的請求數據標識,查找對應的主數據庫。
[0059]第二查找單元63,主要用于根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從從數據庫中查找與數據讀取請求對應的數據。
[0060]本發明提供的一種數據存儲方法、數據讀取方法及其對應的系統,對大批量的數據按照一定的分庫分表規則進行分庫形成多個子數據塊,并將子數據塊存儲至對應的主數據庫中,且每一個主數據庫對應有多個從數據庫,每一個主數據庫中的數據同步至多個從數據庫中,將主數據庫作為寫數據庫,將多個從數據庫作為讀數據庫,在實現數據讀取時,首先定位到主數據庫,在按照一定的查詢路由規則從從數據庫中查找對應的數據,實現讀寫分離的功能;另外,多個主數據庫可能會屬于異構數據庫,只需要在DDL框架層定義好分庫分表的路由規則即可將分庫分表后的數據存儲至對應類型的主數據庫中,實現了異構數據庫之間的同時使用。
[0061]在本說明書的描述中,參考術語“實施例一”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體方法、裝置或者特點包含于本發明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、方法、裝置或者特點可以在任一個或多個實施例或示例中以合適的方式結合。此外,在不相互矛盾的情況下,本領域的技術人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結合和組合。
[0062]以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種數據存儲方法,其特征在于,包括: Sla、在DDL框架層定義分庫分表規則; S2a、在DDL框架層按照定義的分庫分表規則將源數據進行分庫分表,形成多個子數據快,并將每一個子數據塊存儲至對應的主數據庫中; S3a、每一個主數據庫將自身的子數據塊同步至該主數據庫對應的多個從數據庫中; 其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。2.如權利要求1所述的一種數據存儲方法,其特征在于,所述步驟Sla具體包括: 在DDL框架層定義源數據的分庫分表規則以及劃分后的每一個子數據塊對應存儲的數據庫類型; 所述步驟S2a具體包括: 在DDL框架層按照定義的數據源的分庫分表規則,將源數據劃分為多個子數據塊,并將每一個子數據塊存儲至對應類型數據庫的主數據庫中。3.如權利要求1所述的一種數據存儲方法,其特征在于,將所有的從數據庫的屬性設置為只讀read-only屬性。4.如權利要求2所述的一種數據存儲方法,其特征在于,使用注解ShardingRule的方式動態定義分庫分表規則。5.一種數據讀取方法,其特征在于,包括: Slb、在DDL框架層定義每個主數據庫對應的多個從數據庫的數據查詢路由規則; S2b、當接收到數據讀取請求時,根據數據讀取請求中的請求數據標識,查找對應的主數據庫; S3b、根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從從數據庫中查找與數據讀取請求對應的數據。6.如權利要求5所述的一種數據讀取方法,其特征在于,使用注解ShardingRule的方式動態定義每一個主數據庫對應的多個從數據庫的數據查詢路由規則。7.一種數據存儲系統,其特征在于,包括: 第一規則定義單元,用于在DDL框架層定義分庫分表規則; 分庫存儲單元,用于在DDL框架層按照定義的分庫分表規則將源數據進行分庫分表,形成多個子數據塊,并將每一個子數據塊存儲至對應的主數據庫中; 數據同步單元,用于將每一個主數據庫中的子數據塊同步至對應的多個從數據庫中;其中,所有的主數據庫作為寫數據庫,所有的從數據庫作為讀數據庫。8.如權利要求7所述的一種數據存儲系統,其特征在于,所述第一規則定義單元具體用于: 在DDL框架層定義源數據的分庫分表規則以及劃分后的每一個子數據塊對應存儲的數據庫類型; 所述分庫存儲單元具體用于: 在DDL框架層按照定義的數據源的分庫分表規則,將源數據劃分為多個子數據塊,并將每一個子數據塊存儲至對應類型數據庫的主數據庫中。9.如權利要求7所述的一種數據存儲系統,其特征在于,還包括: 屬性設置單元,用于將所有的從數據庫的屬性設置為只讀read-only屬性。10.一種數據讀取系統,其特征在于,包括: 第二規則定義單元,用于在DDL框架層定義每個主數據庫對應的多個從數據庫的數據查詢路由規則; 第一查找單元,用于當接收到數據讀取請求時,根據數據讀取請求中的請求數據標識,查找對應的主數據庫; 第二查找單元,用于根據該主數據庫對應的多個從數據庫的數據查詢路由規則,從從數據庫中查找與數據讀取請求對應的數據。
【文檔編號】G06F17/30GK105912678SQ201610228439
【公開日】2016年8月31日
【申請日】2016年4月13日
【發明人】張少峰
【申請人】北京思特奇信息技術股份有限公司