CN102999526B - 一种数据库关系表的拆分、查询方法及系统 - Google Patents
一种数据库关系表的拆分、查询方法及系统 Download PDFInfo
- Publication number
- CN102999526B CN102999526B CN201110276279.2A CN201110276279A CN102999526B CN 102999526 B CN102999526 B CN 102999526B CN 201110276279 A CN201110276279 A CN 201110276279A CN 102999526 B CN102999526 B CN 102999526B
- Authority
- CN
- China
- Prior art keywords
- calculation
- result
- field
- coordinate
- fractionation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库关系表的拆分、查询方法及系统,以解决传统数据库关系表的水平拆分方法查询效率较低的问题。根据数据库关系表中的n个拆分字段,选取拆分字段为坐标轴,拆分字段计算结果为坐标值,建立n维坐标系,确定坐标系中对应的分库,将关系数据库中的一行记录放置到对应的分库中。在查询时根据拆分字段及拆分字段的计算结果查找对应的分库。对于查询条件中提供的拆分字段,可能没有提供所有的拆分字段,但只需查找所提供拆分字段计算结果对应的分库,而不需要查询所有的分库,因此查询方法简单,查询时间比较短,效率较高。
Description
技术领域
本申请涉及数据库技术,特别是涉及一种数据库关系表的拆分、查询方法及系统。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。其中,由关系数据结构组成的数据库系统被称为关系数据库系统。
关系数据库中对数据的操作几乎全部建立在一个或多个关系表上,通过对这些关系表格的分类、合并、连接或选取等运算来实现数据的管理。
在关系数据库中随着关系表的数据量增加,单库难以支撑对数据的存储和查找,故引入表的水平拆分,按照一定的规则将表的记录分散存放在各个分库中,各分库存放的记录无交集,所述记录为关系数据库关系表中的一行记录。一条记录存放于哪个分库取决于该记录一个或几个字段的取值,这样的字段叫拆分字段。所述字段为关系数据库关系表中的列。
在关系数据库中,有时需要记录几个实体的多对多关系,例如,用户对产品的访问行为(用户<->产品);微博的用户关注关系(关注者<->被关注者)。并希望可以同时查询几个实体,例如,某个用户访问了哪些产品、某个产品被哪些用户访问;某人关注了谁、某人被谁关注了。
例如,计算某条记录的拆分字段值得到分库的序号,所述记录则存放在此分库中。使用的关系表包含3个字段,一行记录表示某个产品(product值)被某个用户(user值)访问一次,visitInfo中记录访问信息(如时间戳、URL-Reference等)。
参照图1,给出了本申请现有技术所述水平拆分方式1拆分结果图。
设水平拆分方式1为选取产品+用户字段作为拆分字段。
分库数量n一定,如果以水平拆分方式1以产品+用户作为拆分字段,即产品拆分字段值的计算结果加上用户拆分字段值的计算结果,得到对应的和作为拆分字段。则一个产品可能在所有的分库中,一个用户的访问记录也可能在所有的分库中。在这种方式中,需要同时知道产品和用户的拆分字段才能唯一确定一个分库,因此当要查询用户访问记录时,需要查询所有分库,当要查询产品的被访问记录时,也要查询所有分库,查询1个分库作为1次物理查询。
通常要同时实现上述两种查询,假设查看产品被访问记录和用户访问记录的频率一样,都是每秒查询1次,对于水平拆分方式1,则总物理查询时间为:
1×n+1×n秒,其中,n为分库数量。
有上述内容可知水平拆分方式1查询时需要同时知道产品标识和用户标识来计算拆分字段,方法复杂,并且查询时间很长。
参照图2,给出了本申请现有技术所述水平拆分方式2拆分结果图。
参照图3,给出了本申请现有技术所述水平拆分方式3拆分结果图。
设水平拆分方式2为选取产品作为拆分字段,拆分字段值的计算结果相同的产品被分在同一个分库中。设水平拆分方式3为选取用户作为拆分字段,拆分字段值的计算结果相同的用户被分在同一个分库中。
水平拆分方式2和水平拆分方式3基本一致,以水平拆分方式2为例。水平拆分方式2以产品为拆分字段,分库数量同样为n,一个确定的产品的所有记录位于同一个分库上,若想查出某产品的被访问记录,只需要查询一个分库,即1次物理查询。而用户原则上可以访问所有产品,那么某一个用户的访问记录则可能分布在所有分库上,故若想查出某个用户的访问记录,需要查询所有分库,若有n个分库,即需要进行n次物理查询。
假设查看产品被访问记录和用户访问记录的频率一样,都是每秒1次,对于水平拆分方式2,则总物理查询时间为:
1×1+1×n秒,其中,n为分库数量。
水平拆分方式2比水平拆分方式1方法简单并且查询时间少,但分库数量很多时,此种方式查询时间也比较长,查询效率比较低。
发明内容
本申请提供一种数据库关系表的拆分、查询方法及系统,以解决传统数据库关系表的水平拆分方法查询效率较低的问题。
为了解决上述问题,本申请公开了一种数据库关系表的拆分方法,包括:
根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中;
执行查询时,通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库。
优选的,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询每个拆分字段值的计算结果对应的分库时,
通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
所述各个拆分字段值的计算结果分别对应的分库为要查询的分库。
优选的,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询多个拆分字段值的计算结果共同确定的分库时,
通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
所述各个拆分字段值的计算结果共同对应的分库为要查询的分库。
优选的,所述拆分字段值的计算结果,包括:
所述拆分字段哈希值取模的计算结果,或
所述拆分字段整数值取模的计算结果。
本申请还公开了一种数据库关系表的查询方法,包括:
获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库;所述分库的建立方法包括:
根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中。
优选的,所述获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询每个拆分字段值的计算结果对应的分库时,
获取查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
所述各个拆分字段值的计算结果分别对应的分库为要查询的分库。
优选的,所述获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询多个拆分字段值的计算结果共同确定的分库时,
获取查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
所述各个拆分字段值的计算结果共同对应的分库为要查询的分库。
相应的,本申请还公开了一种数据库关系表的拆分系统,包括
建立坐标系模块,用于根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
选取分库模块,用于所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
放置记录模块,用于对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中;
查询模块,用于执行查询时,通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库。
优选的,所述查询模块,包括:
第一选取及计算子模块,用于通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
第一查找分库子模块,用于查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
第一确定分库子模块,用于所述各个拆分字段值的计算结果分别对应的分库为要查询的分库。
优选的,所述查询模块,包括:
第二选取及计算子模块,用于通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
第二查找分库子模块,用于查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
第二确定分库子模块,用于所述各个拆分字段值的计算结果共同对应的分库为要查询的分库。
优选的,所述拆分字段值的计算结果,包括:
所述拆分字段哈希值取模的计算结果,或
所述拆分字段整数值取模的计算结果。
相应的,本申请还公开了一种数据库关系表的查询系统,包括:
查询模块,获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库;
分库建立模块,用于建立所述查询模块查找的分库,其具体包括:
建立坐标系模块,用于根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
选取分库模块,用于所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
放置记录模块,用于对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中。
与现有技术相比,本申请包括以下优点:
在本申请所述的方法及系统中,根据数据库关系表中的n个拆分字段,选取拆分字段为坐标轴,拆分字段计算结果为坐标值,建立n维坐标系,确定坐标系中对应的分库,将关系数据库中的一行记录放置到对应的分库中。在查询时根据拆分字段及拆分字段的计算结果查找对应的分库。对于查询条件中提供的拆分字段,可能没有提供所有的拆分字段,但只需查找所提供拆分字段计算结果对应的分库,而不需要查询所有的分库,因此查询方法简单,查询时间比较短,效率较高。
其次,本申请所述的方法,在查询时可以查询每个拆分字段值的计算结果对应的分库,也可以查询多个拆分字段值的计算结果共同确定的分库。查询方法非常的灵活,适应于各种需求的查询。
附图说明
图1是本申请现有技术所述水平拆分方式1拆分结果图;
图2是本申请现有技术所述水平拆分方式2拆分结果图;
图3是本申请现有技术所述水平拆分方式3拆分结果图;
图4是本申请实施例所述一种数据库关系表的拆分方法流程图;
图5是本申请实施例所述一种数据库关系表的拆分方法中第一种查询方法流程图;
图6是本申请实施例所述一种关系数据库的拆分方法中二维拆分示意图;
图7是本申请实施例所述一种数据库关系表的拆分方法中第二种查询方法流程图;
图8是本申请实施例所述一种数据库关系表的拆分方法中三维拆分示意图;
图9是本申请实施例所述一种数据库关系表的拆分系统结构图;
图10是本申请实施例所述一种数据库关系表的查询系统结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请提供一种数据库关系表的拆分、查询方法及系统,以解决传统数据库关系表的水平拆分方法查询效率较低的问题。
参照图4,给出了本申请实施例所述一种数据库关系表的拆分方法流程图。
步骤101,根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
根据数据库关系表中的字段,选取n个字段作为拆分字段,根据所述的n个拆分字段,选取每个拆分字段为一个坐标轴,计算拆分字段的值,选取所述拆分字段值的计算结果作为对应坐标轴的坐标值,根据上述坐标轴和坐标值建立n维坐标系,其中n为正整数。
例如,坐标轴上的值可以是对应拆分字段值的某个函数(如哈希值取模)得到的值,该函数称为坐标映射函数。根据所述的函数可以计算出拆分字段值对应的坐标值。
在关系数据库中,有时需要记录几个实体的多对多关系,因此数据库关系表中通常包含有很多个字段。上述根据数据库关系表中的字段,选取n个字段作为拆分字段,因此数据库关系表中可能仅含有n个字段,也可能含有多于n个字段,本申请对此不做限定。
步骤102,所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
所述的n维坐标系中含有n个坐标轴,在每个坐标轴上各取某一坐标值,则可以得到n个坐标值,所述n个坐标值可以共同确定坐标系中的唯一的一个点,选取所述的点为一个分库。因此每个分库都含有n个拆分字段,所有n个拆分字段值的计算结果共同确定了唯一的分库。
上述n个坐标值可以共同确定唯一的分库,因此可以将n个坐标值作为分库名称。还可以建立一张对照表,通过表中的记录将分库标识和坐标值对应起来。当然本申请并不限于此两种具体实施方式。
步骤103,对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中;
对于数据库关系表中的一行记录,所述记录含有n个拆分字段,计算每个拆分字段的值,得到n个拆分字段的计算结果,分别查找每个拆分字段对应坐标轴的坐标值,则n个坐标轴上对应的坐标值可以共同确定唯一的分库,将所述记录放置到对应的分库中。
例如,根据上例中所述的函数可以计算出拆分字段值得到对应的计算结果,然后查找对应的坐标值。
上述将n个坐标值作为分库名称,此时就可以根据坐标值查找名称对应的分库。还可以根据上述的对照表,查找所述坐标值对应的分库。
步骤104,执行查询时,通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库。
执行查询时,首先查看查询条件中提供的拆分字段和拆分字段值,然后计算所提供拆分字段值得到相应的结果,根据拆分字段值的计算结果查找对应的分库。
例如,执行查询时,可以根据SQL语句中提供的拆分字段,然后如上述所述根据函数计算拆分字段值得到相应的计算值,然后查找对应的分库。
综上所述,根据数据库关系表中的n个拆分字段,选取拆分字段为坐标轴,拆分字段计算结果为坐标值,建立n维坐标系,确定坐标系中对应的分库,将关系数据库中的一行记录放置到对应的分库中。在查询时根据拆分字段及拆分字段的计算结果查找对应的分库。对于查询条件中提供的拆分字段,可能没有提供所有的拆分字段,但只需查找所提供拆分字段值的计算结果对应的分库,而不需要查询所有的分库,因此查询方法简单,查询时间比较短,效率较高。
参照图5,给出了本申请实施例所述一种数据库关系表的拆分方法中第一种查询方法流程图。
所述第一种查询方法为在多个拆分字段的情况下,查询每个拆分字段值的计算结果对应的分库。
优选的,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询每个拆分字段值的计算结果对应的分库时,
步骤201,通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
在执行查询时,首先要查看查询条件中提供的拆分字段,然后根据查询条件中提供的m个拆分字段和相应的拆分字段值,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数。
例如,根据上例所述函数可以计算出拆分字段值得到对应的计算结果。
步骤202,查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
在n维坐标系中查找要查询的拆分字段对应的坐标轴,在坐标轴上查找要查询的拆分字段值计算结果对应的坐标值,查找所述坐标值对应的分库。
若以坐标值为分库名称,则可根据坐标值查找名称对应的分库;若采用对照表,则可以根据上述的对照表,查找所述坐标值对应的分库。
步骤203,所述各个拆分字段值的计算结果分别对应的分库为要查询的分库。
上述步骤中,每个拆分字段值得计算结果都会查找到对应的分库,则所有查找的分库都是要查询的分库。
在关系数据库中,有时需要记录几个实体之间多对多的关系,因此通常在查询时也需要同时查询几个实体。
例如,假设数据库关系表中的一行记录中记录了表示某个产品(product值)被某个用户(user值)访问一次的信息,visitInfo中记录访问信息(如时间戳、URL-Reference等),将所述记录放置到16个分库中。
现有技术中以用户为拆分字段,则确定用户的访问记录只要查询1个分库即可,而产品的被访问记录则要查询16个分库。因此要了解用户的访问记录和产品的被访问记录总共需要查询17个分库。
参照图6,给出了本申请实施例所述一种关系数据库拆分方法中二维拆分示意图。
在本申请所述的方法中,分别以用户和产品为拆分字段,建立二维坐标系,横轴为产品拆分字段,纵轴为用户拆分字段,可以采用拆分字段哈希值取模的计算值作为相应的坐标值。
假设,查询某个产品的被访问记录,产品拆分字段哈希值取模的计算值为2。则查询产品拆分字段对应的横轴上,坐标值为2对应的分库,分库号为3、7、11和15,总共4个分库。
然后查询某个用户的访问记录,用户拆分字段哈希值取模的计算值为1,则查询用户拆分字段所对应的纵轴上,坐标值为1对应的分库,分库号为5、6、7和8,总共4个分库。
在本实施例中各个拆分字段值的计算结果对应的分库都要查询,则最终查询的分库总共有8个。
假设,查询1个分库作为1次物理查询,查看产品被访问记录和用户访问记录的频率一样,都是每秒查询1次。
现有技术中,执行查询的时间是1×17=17秒,
本实施例所述的拆分方法中,执行查询的时间是1×8=8秒。
由此可见,本实施例所述的拆分方法中,执行查询的方法比较简单,并且查询时间较短,效率较高。
上述实施例中采用计算拆分字段哈希值取模的方法,现有技术中也可以采用此种方法,但具体所选取模值的不同会导致分库的不同,本申请对模值的选取不做限定。
现有技术中若以用户为拆分字段,产品的被访问记录要查询所有的16个分库。而在本申请所述的方法中,若产品拆分字段哈希值取模的计算值为2,则只需查上述分库号为3、7、11和15的总共4个分库。
由上述可知,本申请所述的方法中比现有技术查询的分库少,因此时间也比较短,效率较高。
参照图7,给出了本申请实施例所述一种数据库关系表的拆分方法中第二种查询方法流程图。
所述第二种查询方法为在多个拆分字段的情况下,查询每个拆分字段值的计算结果共同对应的分库。
优选的,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询多个拆分字段值的计算结果共同确定的分库时,
步骤301,通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
在执行查询时,首先要查看查询条件中提供的拆分字段,然后根据查询条件中提供的m个拆分字段和拆分字段值,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数。
例如,根据上例中所述的函数可以计算出拆分字段值得到对应的计算结果。其中,当m=n时,就可以共同确定唯一的分库。
步骤302,查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
在n维坐标系中查找要查询的拆分字段对应的坐标轴,在坐标轴上查找要查询的拆分字段值计算结果对应的坐标值,查找所述坐标值对应的分库。
若以坐标值为分库名称,则可根据坐标值查找名称对应的分库;若采用对照表,则可以根据上述的对照表,查找所述坐标值对应的分库。
步骤303,所述各个拆分字段值的计算结果共同对应的分库为要查询的分库。
上述步骤中,各个拆分字段值的计算结果都会查找到对应的分库,则各个拆分字段值的计算结果会共同对应其中的某一些分库,所述的共同对应的分库即为要查找的分库。
例如,如表1所示的数据库关系表,假设数据库关系表中的一行记录中记录了表示某个消费者(buyer)从某个商家(seller)那里买了某个产品(product)的信息,将所述记录放置到18个分库中。
消费者(buyer) | 商家(seller) | 产品(product) |
B | tmall | Nokia |
A | Suning | HTC |
C | Best Buy | Nokia |
C | Suning | Nokia |
A | tmall | HTC |
B | Best Buy | HTC |
... | ... | ... |
表1
现有技术中以产品为拆分字段,若要查询消费者A在商家tmall的购买记录,则要查询18个分库。
参照图8,给出了本申请实施例所述一种数据库关系表的拆分方法中三维拆分示意图。
在本申请所述的方法中,分别以消费者、商家和产品为拆分字段,建立三维坐标系,x轴为商家拆分字段,y轴为消费者拆分字段,z轴为产品拆分字段。可以采用拆分字段哈希值取模的计算值作为相应的坐标值。
假设,要查询消费者A在商家tmall的购买记录,因此首先以消费者为拆分字段,消费者拆分字段哈希值取模的计算结果为s2。则查询消费者拆分字段对应的x轴上,坐标值为s2对应的分库,分库号为2、5、8、11、14和17。
然后以商家为拆分字段,商家拆分字段哈希值取模的计算结果为b3。则查询商家拆分字段所在的y轴上,坐标值为b3对应的分库,分库号为7、8、9、16、17和18。
若要查询消费者A在商家tmall的购买记录,则要查询上述s2和b3共同对应的分库,即分库号为8和17的两个分库。
假设,查询1个分库作为1次物理查询,每秒查询1次。
现有技术中,执行查询的时间是1×18=18秒,
本申请实施例所述的拆分方法中,执行查询的时间是1×2=2秒。
由此可见,本实施例所述的拆分方法中,执行查询的方法比较简单,并且查询时间较短,效率较高,此种方法在分库较多时,优点更加明显。
现有技术中若以产品为拆分字段,若要查询消费者A在某个的购买某种产品的记录,则要查询18个分库。在本申请所述的方法中,若消费者拆分字段哈希值取模的计算结果为s2,只需查询上述s2对应的分库号为2、5、8、11、14和17的6个分库即可。
由上述可知,本申请所述的方法中比现有技术中查询的分库少,因此时间也比较短,效率较高。
上述两个实施例中论述了两种查询方法,可以查询每个拆分字段值的计算结果对应的分库,也可以查询多个拆分字段值的计算结果共同确定的分库。查询方法非常的灵活,适应于各种需求的查询。
优选的,所述拆分字段值的计算结果,包括:
所述拆分字段哈希值取模的计算结果,或
所述拆分字段整数值取模的计算结果。
对于拆分字段值的计算结果,可以采用拆分字段哈希值取模的计算结果,也可以采用拆分字段整数值取模的计算结果。
上述实施例中采用的是计算拆分字段哈希值取模的方法,也可以采用计算拆分字段整数值取模的方法。当然还可以采用其他的计算方法,本申请对此不做限定。
相应的,本申请还提供了一种数据库关系表的查询方法,包括:
获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库;所述分库的建立方法包括:
根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中。
优选的,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询每个拆分字段值的计算结果对应的分库时,
通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
所述各个拆分字段值的计算结果分别对应的分库为要查询的分库。
优选的,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询多个拆分字段值的计算结果共同确定的分库时,
通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
所述各个拆分字段值的计算结果共同对应的分库为要查询的分库。
参照图9,给出了本申请实施例所述一种数据库关系表的拆分系统结构图。
在本申请实施例所述的数据库关系表的拆分系统中,包括建立坐标系模块11、选取分库模块12、放置记录模块13和查询模块14,其中,
建立坐标系模块11,用于根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
选取分库模块12,用于所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
放置记录模块13,用于对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中;
查询模块14,用于执行查询时,通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库。
优选的,所述查询模块14,包括:
第一选取及计算子模块141,用于通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
第一查找分库子模块142,用于查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
第一确定分库子模块143,用于所述各个拆分字段值的计算结果分别对应的分库为要查询的分库。
优选的,所述查询模块14,包括:
第二选取及计算子模块144,用于通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
第二查找分库子模块145,用于查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
第二确定分库子模块146,用于所述各个拆分字段值的计算结果共同对应的分库为要查询的分库。
优选的,所述拆分字段值的计算结果,包括:
所述拆分字段哈希值取模的计算结果,或
所述拆分字段整数值取模的计算结果。
参照图10,给出了本申请实施例所述一种数据库关系表的查询系统结构图。
在本申请所述的数据库关系表的查询系统中,包括:查询模块21和分库建立模块22,其中:
查询模块21,获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库;
分库建立模块22,用于建立所述查询模块查找的分库,其具体包括:
建立坐标系模块221,用于根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数;
选取分库模块222,用于所述n维坐标系中在n个坐标轴上分别选取某一坐标值,所述n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
放置记录模块223,用于对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找所述n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种数据库关系表的拆分方法及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据库关系表的拆分方法,其特征在于,包括:
根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数,其中,所述拆分字段值的计算结果,包括:拆分字段哈希值取模的计算结果,或拆分字段整数值取模的计算结果;
所述n维坐标系中在n个坐标轴上分别选取某一坐标值,n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中;
执行查询时,通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库。
2.根据权利要求1所述的方法,其特征在于,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询每个拆分字段值的计算结果对应的分库时,
通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
各个拆分字段值的计算结果分别对应的分库为要查询的分库。
3.根据权利要求1所述的方法,其特征在于,所述通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询多个拆分字段值的计算结果共同确定的分库时,
通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
各个拆分字段值的计算结果共同对应的分库为要查询的分库。
4.一种数据库关系表的查询方法,其特征在于,包括:
获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库;所述分库的建立方法包括:
根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数,其中,所述拆分字段值的计算结果,包括:拆分字段哈希值取模的计算结果,或拆分字段整数值取模的计算结果;
所述n维坐标系中在n个坐标轴上分别选取某一坐标值,n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中。
5.根据权利要求4所述的方法,其特征在于,所述获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询每个拆分字段值的计算结果对应的分库时,
获取查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
各个拆分字段值的计算结果分别对应的分库为要查询的分库。
6.根据权利要求4所述的方法,其特征在于,所述获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库,包括:
当查询多个拆分字段值的计算结果共同确定的分库时,
获取查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
各个拆分字段值的计算结果共同对应的分库为要查询的分库。
7.一种数据库关系表的拆分系统,其特征在于,包括:
建立坐标系模块,用于根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数,其中,所述拆分字段值的计算结果,包括:拆分字段哈希值取模的计算结果,或拆分字段整数值取模的计算结果;
选取分库模块,用于所述n维坐标系中在n个坐标轴上分别选取某一坐标值,n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
放置记录模块,用于对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中;
查询模块,用于执行查询时,通过查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库。
8.根据权利要求7所述的系统,其特征在于,所述查询模块,包括:
第一选取及计算子模块,用于通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
第一查找分库子模块,用于查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
第一确定分库子模块,用于各个拆分字段值的计算结果分别对应的分库为要查询的分库。
9.根据权利要求7所述的系统,其特征在于,所述查询模块,包括:
第二选取及计算子模块,用于通过查询条件中提供的m个拆分字段,分别计算每个拆分字段值得到相应的计算结果,其中m≤n,m为正整数;
第二查找分库子模块,用于查找拆分字段对应的坐标轴上,拆分字段值的计算结果对应的坐标值所对应的分库;
第二确定分库子模块,用于各个拆分字段值的计算结果共同对应的分库为要查询的分库。
10.一种数据库关系表的查询系统,其特征在于,包括:
查询模块,获取查询条件中提供的拆分字段,根据拆分字段值的计算结果查找对应的分库;
分库建立模块,用于建立所述查询模块查找的分库,其具体包括:
建立坐标系模块,用于根据数据库关系表中的字段,选取n个字段作为拆分字段,选取每个拆分字段为一个坐标轴,选取拆分字段值的计算结果为相应坐标轴的坐标值,建立n维坐标系,n为正整数,其中,所述拆分字段值的计算结果,包括:拆分字段哈希值取模的计算结果,或拆分字段整数值取模的计算结果;
选取分库模块,用于所述n维坐标系中在n个坐标轴上分别选取某一坐标值,n个坐标值共同确定坐标系内唯一的点,选取所述点为一个分库;
放置记录模块,用于对于数据库关系表中的一行记录,通过所述记录中n个拆分字段值的计算结果,查找n个计算结果对应坐标轴的坐标值共同确定对应的分库,将所述记录放置到对应的分库中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110276279.2A CN102999526B (zh) | 2011-09-16 | 2011-09-16 | 一种数据库关系表的拆分、查询方法及系统 |
HK13106085.8A HK1179364A1 (zh) | 2011-09-16 | 2013-05-23 | 種數據庫關係表的拆分、查詢方法及系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110276279.2A CN102999526B (zh) | 2011-09-16 | 2011-09-16 | 一种数据库关系表的拆分、查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999526A CN102999526A (zh) | 2013-03-27 |
CN102999526B true CN102999526B (zh) | 2016-04-06 |
Family
ID=47928100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110276279.2A Active CN102999526B (zh) | 2011-09-16 | 2011-09-16 | 一种数据库关系表的拆分、查询方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102999526B (zh) |
HK (1) | HK1179364A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714945A (zh) * | 2013-12-11 | 2015-06-17 | 世纪禾光科技发展(北京)有限公司 | 一种搭建商品信息系统的方法及系统 |
CN104933066B (zh) * | 2014-03-19 | 2019-03-15 | 北京畅游天下网络技术有限公司 | 一种数据处理的方法和系统 |
CN105446991B (zh) * | 2014-07-07 | 2018-10-30 | 阿里巴巴集团控股有限公司 | 数据存储方法、查询方法及设备 |
CN108829899B (zh) * | 2014-07-24 | 2021-08-20 | 北京古盘创世科技发展有限公司 | 数据表储存、修改、查询和统计方法 |
CN105989060A (zh) * | 2015-02-09 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 数据管理方法、装置 |
CN104598652B (zh) * | 2015-02-14 | 2017-11-24 | 广州华多网络科技有限公司 | 一种数据库查询方法及装置 |
CN106294423A (zh) * | 2015-05-25 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 数据库分表的写入方法及装置 |
CN106528579A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种基于分库分表结构数据库的查询方法、装置及系统 |
CN105574074A (zh) * | 2015-11-23 | 2016-05-11 | 江苏瑞中数据股份有限公司 | 一种基于智能电网wams的时序大数据存储方法 |
CN105930387A (zh) * | 2016-04-14 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种基于数据路由、分库分表的数据操作系统及方法 |
CN107515867B (zh) * | 2016-06-15 | 2021-06-29 | 阿里巴巴集团控股有限公司 | 一种NoSQL数据库的数据存储、查询方法和装置以及一种rowKey全组合的生成方法和装置 |
CN107229688A (zh) * | 2017-05-12 | 2017-10-03 | 上海前隆金融信息服务有限公司 | 一种数据库水平分库分表方法及系统、服务器 |
CN114238345A (zh) * | 2017-05-26 | 2022-03-25 | 创新先进技术有限公司 | 一种数据库的处理、数据查询方法及设备 |
CN110019544B (zh) * | 2017-09-30 | 2022-08-19 | 北京国双科技有限公司 | 数据查询方法及系统 |
CN108256091A (zh) * | 2018-01-25 | 2018-07-06 | 郑州云海信息技术有限公司 | 一种基于SQLite数据库的垂直拆分方法 |
CN110413606A (zh) * | 2018-04-27 | 2019-11-05 | 贵州白山云科技股份有限公司 | 一种数据表水平拆分方法及装置 |
CN110210307B (zh) * | 2019-04-30 | 2023-11-28 | 中国银联股份有限公司 | 人脸样本库部署方法、基于人脸识别业务处理方法及装置 |
CN111125158B (zh) * | 2019-11-08 | 2023-03-31 | 泰康保险集团股份有限公司 | 数据表处理方法、装置、介质及电子设备 |
CN117407430B (zh) * | 2023-12-05 | 2024-04-16 | 支付宝(杭州)信息技术有限公司 | 数据查询方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566986A (zh) * | 2008-04-21 | 2009-10-28 | 阿里巴巴集团控股有限公司 | 联机事务处理中的数据处理方法和装置 |
CN102033938A (zh) * | 2010-12-10 | 2011-04-27 | 天津神舟通用数据技术有限公司 | 基于二级映射的集群动态扩展方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249118B2 (en) * | 2002-05-17 | 2007-07-24 | Aleri, Inc. | Database system and methods |
-
2011
- 2011-09-16 CN CN201110276279.2A patent/CN102999526B/zh active Active
-
2013
- 2013-05-23 HK HK13106085.8A patent/HK1179364A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566986A (zh) * | 2008-04-21 | 2009-10-28 | 阿里巴巴集团控股有限公司 | 联机事务处理中的数据处理方法和装置 |
CN102033938A (zh) * | 2010-12-10 | 2011-04-27 | 天津神舟通用数据技术有限公司 | 基于二级映射的集群动态扩展方法 |
Non-Patent Citations (1)
Title |
---|
多维技术在面向学科知识仓库中的使用——以构建多维电子期刊数据库模型为例;赵霞琦等;《现代图书情报技术》;20060430(第4期);正文第56-59页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102999526A (zh) | 2013-03-27 |
HK1179364A1 (zh) | 2013-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999526B (zh) | 一种数据库关系表的拆分、查询方法及系统 | |
CN105488043B (zh) | 基于Key-Value数据块的数据查询方法及系统 | |
CN104063487B (zh) | 基于关系型数据库及k‑d树索引的文件数据管理方法 | |
CN105404634B (zh) | 基于Key-Value数据块的数据管理方法及系统 | |
US7974981B2 (en) | Multi-value property storage and query support | |
CN104794249A (zh) | 一种数据库的实现方法和设备 | |
CN105446991A (zh) | 数据存储方法、查询方法及设备 | |
JP2011530767A (ja) | データベースストレージスペースを節約するための方法及びシステム | |
CN102270225A (zh) | 数据变更日志监控方法和数据变更日志监控装置 | |
CN104112008A (zh) | 一种多表数据关联查询优化方法和装置 | |
CN102446326A (zh) | 一种信息推送的方法、系统及设备 | |
CN104090962A (zh) | 面向海量分布式数据库的嵌套查询方法 | |
CN103914456A (zh) | 一种数据存储方法和系统 | |
CN106095863A (zh) | 一种多维度数据查询和存储系统和方法 | |
CN103020054A (zh) | 模糊查询方法及系统 | |
CN105224532A (zh) | 数据处理方法及装置 | |
CN106202209B (zh) | 面向商品筛选应用的分布式结构化数据存储及查询方法 | |
CN104699816A (zh) | 一种数据处理方法及装置 | |
CN106415534A (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
CN102737123A (zh) | 一种多维数据分布方法 | |
CN105279177A (zh) | 一种数据结构转换方法及装置 | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN107735781A (zh) | 存储查询结果的方法和装置、计算设备 | |
CN101645062A (zh) | 一种报表生成方法、系统及信息管理设备 | |
US8195703B1 (en) | System and method for storage of disparate items by a database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1179364 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1179364 Country of ref document: HK |