一种数据库模式的数据表重构方法、装置及系统与流程

文档序号:15445794发布日期:2018-09-14 23:20阅读:221来源:国知局
本发明涉及电网调度通信领域,特别涉及一种数据库模式的数据表重构方法、装置及系统。
背景技术
::saas是software-as-a-service的简称,随着互联网技术的发展和应用软件的成熟,在21世纪初,兴起了一种完全创新的软件应用模式。它是一种通过internet提供服务的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用。用户不需购买完整的软件,而改用向提供商租用基于web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,从而,很大程度上降低了企业的经营成本。由于在saas系统中,所有租户共用一个运行实例,因此,如何管理好租户数据是一个很有难度的问题。在saas系统中,一般采用的数据模型有独立数据库、共享数据库独立模式(schema)和共享数据库共享模式。而从成本等方面的因素考虑,一般会采用共享数据库共享模式的数据模型。在这种模型之下,又提出了各种数据库模式,如extensiontablelayout数据库模式,这种数据库模式来源于copelandgp,khoshafiansn.adecompositionstoragemodel[c]//acmsigmodinternationalconferenceonmanagementofdata.acm,1985:268-279;universaltablelayout数据库模式,这种数据库模式来源于maierd,ullmanjd.maximalobjectsandthesemanticsofuniversalrelationdatabases[j].acmtransactionsondatabasesystems,1983,8(1):1-14;chunktablelayout数据库模式,它是由tgrust等人(aulbachs,grustt,jacobsd,etal.multi-tenantdatabasesforsoftwareasaservice:schema-mappingtechniques[c]//acmsigmodinternationalconferenceonmanagementofdata,sigmod2008,vancouver,bc,canada,june.dblp,2008:1195-1206)提出来的一种分块数据库模式。其中,我们重点关注universaltablelayout数据库模式,这种数据库模式在实际的生产中使用最普遍,如当前最知名的saas系统salesforce.com使用的就是这种数据库模式。但是,在这种数据库模式中,存在很明显的一些不足,所有租户的数据被放到了一张数据表中,这样,用户的操作速度将会是一个很严重的问题,因而,我们需要采取一些方式来对其中的数据表进行重构,既能保证用户的操作速度,也不会出现数据库维护成本的大量增加。技术实现要素:本发明的主要目的是提出一种基于universaltablelayout数据库模式的数据表重构方法,旨在克服以上问题。为实现上述目的,本发明提出的一种基于universaltablelayout数据库模式的数据表重构方法,其特征在于,包括如下步骤:s10;租户将数据输入在universaltablelayout数据库模式中的数据表mt_data中,每行数据记录匹配一个租户id和表id,所述租户id用以标识租户身份,所述表id用以标识当前租户的数据表名称;s20将数据表mt_data划分为与租户id值一一对应的每个租户的数据表;s30将每个租户的数据表按照表id划分,且所划分的数据表中部分表之间存在外键约束;s40根据存在的外键约束生成数据表间的有向图;s50从有向图中的所有路径中剔除被包含路径,由此获得有纯净路径的有向图;s60将有向图中的每条纯净路径上的数据划分为一个数据表,重构数据库。优选地,所述s30中生成有向图的方法为:若数据表a引用数据表b的主键作为外键,则我们画一条从表a指向表b的有向箭头,依此为所有数据表之间添加有向箭头生成数据表间的有向图。优选地,所述s40包括:s401在所生成的有向图中找到所有路径的出度非0的数据表,依次以出度非0的数据表为起点,找出所有的路径;s402根据路径的路程大小对有向图中的所有路径依次排序;s403在所有路径中剔除被包含的路程较小的路径,获得有纯净路径的有向图。本发明还公开了一种基于universaltablelayout数据库模式的数据表重构装置,包括:输入模块,用于租户将数据输入在universaltablelayout数据库模式中的数据表mt_data中,每行数据记录匹配一个租户id,所述租户id用以租户身份的标识;第一划分模块,用于将数据表mt_data划分为与租户id值一一对应的每个租户的数据表;第二划分模块,用于将每个租户的数据表按照表id划分,且所划分的数据表中部分表之间存在外键约束;生成模块,用于根据存在的外键约束生成数据表间的有向图;剔除模块,用于从有向图中的所有路径中剔除被包含路径,由此获得有纯净路径的有向图;重构模块,用于将有向图中的每条纯净路径上的数据划分为一个数据表,重构数据库。优选地,所述剔除模块包括:寻找单元,用于在所生成的有向图中找到所有路径的出度非0的数据表,依次以出度非0的数据表为起点,找出所有的路径;排序单元,用于根据路径的路程大小对有向图中的所有路径依次排序;剔除单元,用于在所有路径中剔除被包含的路程较小的路径,获得有纯净路径的有向图。本发明还公开了一种基于universaltablelayout数据库模式的数据表重构系统,包括服务器和universaltablelayout数据库,还包括如上所述的基于universaltablelayout数据库模式的数据表重构装置,用于实现如上所述的基于universaltablelayout数据库模式的数据表重构方法。与现有技术相比,本发明具有以下优势:(1)本发明提供了一种划分universaltablelayout数据库模式中数据表的方法,通过这个方法,saas系统的管理员可以实现数据表的划分,避免在一张数据表中出现海量数据,同时,最大程度的减少跨库连接操作。(2)本发明进行数据表的划分时,充分考虑了逻辑表之间的关系,尽量将有外键约束的数据表划分到一个数据库。(3)本发明适用于saas系统中数据量比较大,对高并发量有一定要求的情况。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。图1为将数据表按照租户id划分为多个数据表的示意图;图2为租户数据表关系图的示意图;图3为以a为起点两条路径图示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。本发明提出的一种基于universaltablelayout数据库模式的数据表重构方法,其特征在于,包括如下步骤:s10;租户将数据输入在universaltablelayout数据库模式中的数据表mt_data中,每行数据记录匹配一个租户id和表id,所述租户id用以标识租户身份,所述表id用以标识当前租户的数据表名称;s20将数据表mt_data划分为与租户id值一一对应的每个租户的数据表;s30将每个租户的数据表按照表id划分,且所划分的数据表中部分表之间存在外键约束;s40根据存在的外键约束生成数据表间的有向图;s50从有向图中的所有路径中剔除被包含路径,由此获得有纯净路径的有向图;s60将有向图中的每条纯净路径上的数据划分为一个数据表,重构数据库。优选地,所述s30中生成有向图的方法为:若数据表a引用数据表b的主键作为外键,则我们画一条从表a指向表b的有向箭头,依此为所有数据表之间添加有向箭头生成数据表间的有向图。优选地,所述s40包括:s401在所生成的有向图中找到所有路径的出度非0的数据表,依次以出度非0的数据表为起点,找出所有的路径;s402根据路径的路程大小对有向图中的所有路径依次排序;s403在所有路径中剔除被包含的路程较小的路径,获得有纯净路径的有向图。本发明还公开了一种基于universaltablelayout数据库模式的数据表重构装置,包括:输入模块,用于租户将数据输入在universaltablelayout数据库模式中的数据表mt_data中,每行数据记录匹配一个租户id,所述租户id用以租户身份的标识;第一划分模块,用于将数据表mt_data划分为与租户id值一一对应的每个租户的数据表;第二划分模块,用于将每个租户的数据表按照表id划分,且所划分的数据表中部分表之间存在外键约束;生成模块,用于根据存在的外键约束生成数据表间的有向图;剔除模块,用于从有向图中的所有路径中剔除被包含路径,由此获得有纯净路径的有向图;重构模块,用于将有向图中的每条纯净路径上的数据划分为一个数据表,重构数据库。优选地,所述剔除模块包括:寻找单元,用于在所生成的有向图中找到所有路径的出度非0的数据表,依次以出度非0的数据表为起点,找出所有的路径;排序单元,用于根据路径的路程大小对有向图中的所有路径依次排序;剔除单元,用于在所有路径中剔除被包含的路程较小的路径,获得有纯净路径的有向图。本发明还公开了一种基于universaltablelayout数据库模式的数据表重构系统,包括服务器和universaltablelayout数据库,还包括如上所述的基于universaltablelayout数据库模式的数据表重构装置,用于实现如上所述的基于universaltablelayout数据库模式的数据表重构方法。由于本发明的一种基于universaltablelayout数据库模式的数据表重构装置采用了本发明的基于universaltablelayout数据库模式的数据表重构方法的所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。具体实操实例:(1)我们根据universaltablelayout数据库模式中数据表mt_data的每行数据记录的租户id值,将数据表mt_data划分为多张数据表,即每一个租户一张数据表,如图1所示。(2)继续对每个租户的数据表按照表id进行划分,这样又会将每个租户的数据表划分为多个表,这里我们以其中任意一个租户为例,进行具体介绍。(3)假设某个租户按照表id进行划分之后,得到了12张数据表,分别是a、b、c、d、e、f、g、h、i、j、k、l。其中,表a与表b和e之间存在外键约束,表c与表b之间存在外键约束,表d与表c之间存在外键约束,表f与表a和g之间存在外键约束,表g与表h之间存在外键约束,表h与表c和d之间存在外键约束,表i与表g之间存在外键约束。最终构成的图如图2所示,其中每个节点代表一张数据表。(4)以所有出度非0的点作为起点,寻找所有路径①a为起点,两条路径分别为a、e和a、b,这里称前一个为ⅰ路径,后面的为ⅱ路径。②c为起点,一条路径为c、b,这里称路径为ⅲ路径。③d为起点,两条路径分别为d、h、c、b和d、c、b,这里称前一个为ⅳ路径,后面的为ⅴ路径。④f为起点,两条路径分别为f、a、b和f、g、h、c、b,以及f、a、e依次称为ⅵ路径、ⅶ路径和ⅷ路径。⑤g为起点,一条路径为g、h、c、b,这里称路径为ⅸ路径。⑥h为起点,一条路径为h、c、b,这里称路径为ⅹ路径。⑦i为起点,一条路径为i、g、h、c、b,这里称路径为ⅺ路径。(5)然后根据路径长短,对路径序列从长到短进行排序,则依次是ⅶ、ⅺ、ⅳ、ⅸ、ⅴ、ⅵ、ⅷ、ⅹ、ⅰ、ⅱ、ⅲ。(6)这里我们假设有一个结果集r,我们要将上面的部分路径序列添加到结果集r中。添加的方式如下:①首先,挑选第一个路径序列加入结果集②依次挑选后面的路径序列加入结果集③后面的路径序列加入结果集时,要保证该路径序列没有被结果集中的路径序列包含④直到检查完上述所有的路径序列(7)所以,最终结果集r={ⅶ、ⅺ、ⅳ,ⅵ,ⅷ}。(8)所以,最终需要在universaltablelayout数据库模式下建立5张数据表,依次包含ⅶ、ⅺ、ⅳ,ⅵ,ⅷ中所对应的数据表。(9)每条路径上涉及到的数据表存储到一个数据库中。这样既可以减少单个数据库的压力,又可以有效避免跨库连接操作的情况。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的
技术领域
:均包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1