一种管理数据表的共享关系的方法和装置制造方法及图纸

技术编号:11175428 阅读:170 留言:0更新日期:2015-03-20 04:32
本发明专利技术公开了一种管理数据表的共享关系的方法和装置,所述方法包括:根据数据库中多个数据表的各个列的数据类型,形成包含所述多个数据表的超级表架构;根据超级表架构中未被任何数据表占据的空穴,评估所述超级表架构的空余存储量;根据所述超级表架构的空余存储量,确定所述多个数据表的共享关系。所述装置与上述方法对应。利用上述方法和装置,可以有效管理数据库中的大量数据表之间的共享关系,从而设计或者优化数据表之间的共享方案。

【技术实现步骤摘要】
一种管理数据表的共享关系的方法和装置
本专利技术涉及数据库以及数据库中的数据表,更具体而言,涉及管理数据表的共享关系的方法和装置。
技术介绍
随着信息技术和互联网的发展,资源共享成为一种趋势。例如,在数据库领域中,多个用户可以共同使用同一数据库,从而以高密度部署来实现最大可能的资源共享,节省硬件和软件成本。此时,每个用户并不独立地拥有共享的数据库,因此这样的用户往往称为“租户”(tenant),其表示使用数据库服务的一个逻辑实体。另一方面,在实现共享的同时,出于安全的需要并满足各个租户独有的需求,需要在各个租户的数据之间进行一定隔离。因此,对于支持多租户的数据库来说,需要在共享和隔离之间达到一种平衡。 更具体而言,数据的隔离通常意味着,不同租户使用不同架构的数据表来存储各自的数据;而数据的共享意味着,多个租户在一定程度上保持表架构的一致性,从而至少部分地共享数据表。在现有技术中,已经提出了若干种方案,这些方案通过使用例如数据透视表(pivot table)、私有表、预分配的字段、定制列、块折叠以及一些表架构映射技术来解决数据表架构的差异,从而实现数据表的共享。然而,这些解决表架构差异的方案仍存在一些不足,例如空闲数据较多,额外而昂贵的连接(join)成本,附加的谓词项,难以使用对定制列的索引等等。一些方案在逻辑上共享表架构,但物理上仍使用隔离的数据表。一些方案虽然支持物理上共享的数据表,但需要附加的操作和开销来实现共享,例如数据词典的查询、表描述符的映射、数据类型的映射、字段指针的关联等。因此,希望提出改进的方案,能够为数据库中的大量数据表设计出有效的共享表架构,从而高效地实现共享。
技术实现思路
鉴于以上提出的问题,提出本专利技术,旨在为数据库中的多个数据表提供更有效的共享方案。 根据本专利技术一个实施例,提出了一种管理数据表的共享关系的方法,包括:根据数据库中多个数据表的各个列的数据类型,形成包含所述多个数据表的超级表架构;根据超级表架构中未被任何数据表占据的空穴,评估所述超级表架构的空余存储量;根据所述超级表架构的空余存储量,确定所述多个数据表的共享关系。 根据另一实施例,提出了一种管理数据表的共享关系的装置,包括:形成单元,配置为,根据数据库中多个数据表的各个列的数据类型,形成包含所述多个数据表的超级表架构;估计单元,配置为根据超级表架构中未被任何数据表占据的空穴,评估所述超级表架构的空余存储量;以及确定单元,配置为根据所述超级表架构的空余存储量,确定所述多个数据表的共享关系。 利用上述方法和装置,可以有效管理数据库中的大量数据表之间的共享关系,从而设计或者优化数据表之间的共享方案。 【附图说明】 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。 图1示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框图; 图2示出根据本专利技术一个实施例的管理数据表的共享关系的方法的流程图; 图3示出根据一个实施例添加数据表以形成超级表架构的步骤; 图4A和4B示出形成过程中的超级表架构的例子; 图5示出根据一个实施例所形成的超级表架构; 图6示出根据一个实施例管理数据表的共享关系的流程图; 图7示出拆分得到的两个超级表架构的例子; 图8示出超级表架构ST2中的空穴矩阵的排布; 图9示出根据一个实施例拆分得到的四个超级表架构; 图10示出根据一个实施例确定用于存储新数据表的表架构的流程图; 图11示出在一个例子中确定用于新数据表的表架构的示意图;以及 图12示出根据本专利技术一个实施例的管理数据表的共享关系的装置的框图。 【具体实施方式】 在附图中显示了本公开的一些优选实施方式,下面将参照附图更详细地描述这些优选实施方式。然而,可以以各种形式实现本公开,其不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。 所属
的技术人员知道,本专利技术可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本专利技术还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。 可以以一种或多种程序设计语言或其组合来编写用于执行本专利技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。 下面将参照本专利技术实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本专利技术。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。 也可以把这些本文档来自技高网
...
一种管理数据表的共享关系的方法和装置

【技术保护点】
一种管理数据表的共享关系的方法,包括:根据数据库中多个数据表的各个列的数据类型,形成包含所述多个数据表的超级表架构;根据超级表架构中未被任何数据表占据的空穴,评估所述超级表架构的空余存储量;根据所述超级表架构的空余存储量,确定所述多个数据表的共享关系。

【技术特征摘要】
1.一种管理数据表的共享关系的方法,包括: 根据数据库中多个数据表的各个列的数据类型,形成包含所述多个数据表的超级表架构; 根据超级表架构中未被任何数据表占据的空穴,评估所述超级表架构的空余存储量; 根据所述超级表架构的空余存储量,确定所述多个数据表的共享关系。2.根据权利要求1的方法,其中确定所述多个数据表的共享关系包括: 基于所述超级表架构的空余存储量判断与空余存储量有关的预定条件是否得到满足; 在上述预定条件得到满足的情况下,确定所述多个数据表共享使用所述超级表架构。3.根据权利要求2所述的方法,其中确定所述多个数据表的共享关系还包括:在上述预定条件没有得到满足的情况下,拆分上述超级表架构,并用拆分得到的超级表架构替换原超级表架构。4.根据权利要求1的方法,其中形成包含所述多个数据表的超级表架构包括: 对于所述多个数据表中的某个数据表Ti,在超级表架构中创建代表该数据表Ti的新行; 对于该数据表Ti中的某列Cj,在超级表架构中存在与该列Cj具有兼容的数据类型的已有列且该已有列未被占据的情况下,将该列Cj填充在上述新行中与所述已有列对应的位置;否则,在超级表架构中添加新列,将该列Cj填充到上述新行中与所添加的新列对应的位置。5.根据权利要求1的方法,其中评估所述超级表架构的空余存储量包括以下之一:确定所述超级表架构中所有空穴所对应的数据表单元的总数目作为该超级表架构的空余存储量;确定所述超级表架构中所有空穴所对应的总数据存储量作为该数据表架构的空余存储量。6.根据权利要求3的方法,其中所述预定条件包括以下之一: 所述超级表架构的空余存储量小于一预定阈值; 所述超级表架构的空余存储量相对于构成该超级表架构的所述多个数据表的原始存储量的比例小于一预定比例;以及 所述拆分得到的超级表架构的空余存储量之和相对于构成原超级表架构的多个数据表的原始存储量的比例小于一预定比例。7.根据权利要求3的方法,其中所述拆分超级表架构包括:以消除超级表架构中由连续空穴构成的空穴矩阵的方式拆分超级表架构。8.根据权利要求3的方法,其中所述拆分超级表架构包括: 以所述超级表架构中的某个特定行作为标准,在超级表架构中挑选出能够被该特定行所覆盖的缩减行; 将超级表架构拆分为由上述特定行及其缩减行构成的超级表架构,和由剩余行构成的超级表架构。9.根据权利要求1的方法,还包括:响应于创建新数据表的请求,确定用于存储该新数据表的表架构,其包括: 确定所述新数据表的列数η以及各个列的数据类型; 从数据库的已有表架构中获取列数大于或等于上述新数据表的列数η的备选表架构;从备选表架构中获取这样的兼容表架构,所述兼容表架构所包含的η个列的数据类型分别覆盖所述新数据表的η个列的数据类型; 选择一兼容表架构作为用于存储该新数据表的表架构; 在未能获取所述备选表架构,或者未能获取所述兼容表架构的情况下,针对该新数据表创建新的表架构,用于存储该新数据表。10.一种管理数据表的共享关系的装置,包括: 形成单元,配置为,根据数据库中多个数据表的各个列的数据类型,形成包含所述多个数据...

【专利技术属性】
技术研发人员:周祥李硕杨新颖曾脉
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1