分区表中的唯一值估计的制作方法

文档序号:6380899阅读:177来源:国知局
专利名称:分区表中的唯一值估计的制作方法
技术领域
这里描述的主题涉及分区的数据库表的操纵。
背景技术
近些年来,计算机处理硬件的中央处理单元(CPU)已经基本上体验到了最大的性能提高,这些提高主要是通过处理器核心数目的增加而实现的,而非通过提高时钟速率实现的。因此,为了最大化性能,通过允许并行执行以及具有与核心的数量良好匹配(scalewell)的体系结构,如今的软件有利地利用了多核CPU的优势。对于数据管理系统而言,要充分利用并行处理能力所带来的优势,一般需要将存储的数据分区成多个扇区(section)或“分区”,以便对它们并行执行计算。数据库程序或者数据库管理系统一般用具有行和列的二维表的形式来显示数据。但是,数据典型地存储为一维数据串。基于行的存储典型地将行中的值一起串行化(serialize),然后是下一行中的值,这样持续下去,相应地,基于列的存储将列的值一起串行化,然后是下一列中的值,这样持续下去。一般而言,当需要对于许多行计算聚集(aggregate)但只是所有数据列中显然较小的子集时,基于列的系统有着更高的效率,这是因为读取较小的子集相比于读取所有数据而言将会更为快捷。当一列中的新值被即刻提供给所有行时,基于列的系统可以更有效率,这是因为列数据可以被高效地写入并且取代旧的列数据,而不涉及这些行中的任何其它列。当单一行中的多个列在同一个时间被需要时,以及当行的大小相对较小时,基于行的系统将更为高效,这是因为整个行可以通过单一磁盘搜索来取回(retrieve)。如果所有列数据在同一时间被提供而写一个新行时,基于行的系统也将更为高效,这是因为整个行可以通过单一磁盘搜索而被写入。基于列的存储可以促进使用多个处理器核心并行执行操作。在列存储中,数据已经被垂直的分区,所以对于不同列的操作可以容易地并行处理。如果多个列需要被搜索或者整合,则这些操作中的每一个都可以被分配给不同的处理器核心。此外,对一个列的操作可以通过将列分区为由不同处理器核心处理的多个扇区而被并行化。列数据典型地是统一类型,其可以为优化存储大小以使得那些与基于行的数据存储并不适用的基于列的数据存储可被使用而带来机会。例如,当今一些压缩机制可以利用邻近数据间的相似性来进行压缩。为了改善基于列的数据的压缩,典型的解决方法是对行进行排序(sorting)。例如,使用位图索引,通过按照大概的大小次序,排序能够改善压缩。在传统的系统中,柱形压缩通常以取回效率为代价来实现对存储空间需求的减少。当数据位于单一位置时,从单一行中取回所有的数据可能更为高效,如基于行的体系结构。进一步的,邻近压缩完成的越多,则随机访问将变得越发困难,这是因为数据典型地需要被解压缩才能被读取。因此,传统的基于列的体系结构通常可以通过附加的以最小化访问压缩数据的需求为目标的机制而被丰富。这些附加的机制可以导致更低的压缩效率和/或增加访问压缩数据的处理需求。当今可用的相关数据库管理系统可以基于被应用来划分(split)数据库的特定标准来实现分区。通常,分区键(key)被用来基于一定标准分配分区。通常使用的方法包括范围分区、列表分区、哈希(hash)分区、轮循(round robin)分区、以及组合分区。在范围分区中,分区可以通过确定分区键是否在该排列中而被定义。例如,分区可以被创建为包括邮政编码在70000和79999之间的列中所有的行。在列表分区中,分区可以被分配值的列表,并且如果分区键具有列表中的一个值,则能够选择该分区。例如,分区被建立为包括与北欧国家相关的数据,该分区可以包括其中国家名称的列包括文本字符串值冰岛、挪威、瑞典、芬兰、丹麦、等等的所有的行。在哈希分区中,哈希函数的值可以确定分区中的成员。例如,对于具有四个分区的分区方法,哈希函数可以返回从O到3的值以便指定四个分区中的一个。轮循分区可以被用来根据在可用分区或者服务器或服务器过程当中的预设旋转(pre-setrotation),在多个数据分区和/或服务器或服务器过程中分布存储和/或处理载荷。例如,第一数据单元可以导向三个分区中的第一分区,第二数据单元导向第二分区,第三数据单元导向第三分区,第四数据单元导向第一分区,依此类推。在组合分区中,能够允许其它分区方法的一定组合,例如,首先应用范围分区然后应用哈希分区。

发明内容
在一个方面,一种方法包括应用估计算法以产生数据库表的列中的数据的唯一性度量(uniqueness metric),所述数据库表的列被跨越多个数据分区来划分,通过将唯一性度量与阈值进行对比,将列分类为有类别的(categorical)和无类别的(non-categorical),并且分配第一估计因子和第二估计因子之一到所述列。如果所述列被分类为有类别的,则所述分配包括第一估计因子,如果所述列被分类为无类别的,则所述分配包括第二估计因子。第二估计因子大于第一估计因子。该方法还包括,计算对在所述数据库表执行数据库操作所需的系统资源的成本估计,以及改进成本估计。所述成本估计包括使用分配的第一估计因子或第二估计因子以及作为估计函数的输入的所述表中的行数而确定的、跨越所述多个数据分区中所有分区的所述列中的不同值的估计的总数。在当前主题的一些变型中,以下特征中的一个或多个可以选择性地包括在任何可行的组合中。成本估计的改进可以选择性地包括使用在开发至少部分操作计划中的成本估计,用于执行涉及按照最优次序的数据库表的至少一个列和其它列的一个或多个数据库操作,经由与计算系统或设备相关联的显示设备显示成本估计,发送包含成本估计的电子消息给用户或者另一个机器,并且生成包括成本估计的报告。所述一个或多个数据库操作可以选择性地包括联接(join)。所述估计算法可以选择性地包括选择多个数据分区中的一个数据分区,查询所选择的数据分区的字典有关在所选择的数据分区中的所述列中唯一值的总数,计算唯一值的总数与所选择的数据分区中包含的所述列的行数的比值(ratio),假定所述比值代表了多个数据分区中所有其它数据分区中的唯一值的分布,并且返回所计算的比值作为唯一性度量。所述估计算法可以额外地或者替换地选择性地包括查询字典有关多个数据分区的两个或更多个数据分区中的每一个数据分区,比较有关两个或更多个数据分区中的每一个数据分区的从字典返回的随机采样,以及返回唯一性度量作为随机采样之间的相异程度。查询多个数据分区的两个或更多个数据分区中每一个数据分区的字典,并比较从有关两个或更多个数据分区中每一个数据分区的字典返回的随机采样;而后返回该唯一性度量作为随机采样间的相异度。所述查询可以选择性地包括请求随机采样,随机采样包括有关所述两个或更多个数据分区中的每一个数据分区的所述列中的预设数量的唯一值。所述估计算法可以额外地或者替换性地选择性地包括请求来自多个数据分区的一个或多个所选择的数据分区中的每一个数据分区的字典返回具有相同的特定大小的各自的Bloom过滤器,并且基于从所述一个或多个所选择的数据分区中返回的Bloom过滤器被填充的程度来返回所述唯一性度量。如这里所使用的,字典可以包括在各自数据分区中各自列的唯一值的列表。本主题的一些实施方式可以包括,但不限于,描述了一致包含一个或多个特征的系统和方法,以及包含有形体现的机器可读介质的物品,该机器可读介质可操作以引起一个或多个机器(例如,计算机等)产生此处描述的操作。类似的,还描述了可以包含一个或多个处理器以及耦合到该一个或多个处理器的一个或多个存储器的计算机系统。可以包含计算机可读存储介质的存储器可以包含、编码、存储等等引起一个或多个处理器执行一个或多个此处描述操作的一个或多个程序。与本主题的一个或多个实施方式一致的计算机实现的方法可以由驻留在单一的计算机系统或多个计算机系统中的一个或多个数据处理器来实现。这种多个计算机系统可以被连接并通过一个或多个连接方式交换数据和/或命令或其它指令等,包含但不限于通过网络(例如,因特网、无线广域网、局域网、广域网、有线网等等)连接、通过多个计算机系统中的一个或多个之间的直接连接等。在附图和下面的描述中阐述此处描述的主题的一个或多个变形的细节。通过该描述、附图和权利要求,此处描述的主题的其它特征和优点将是显而易见的。尽管为了说明的目的关于企业资源软件系统或其它商业软件解决方案或体系结构描述了本公开的主题的某些特征,应当容易理解的是,这些特征并不是用于限制的目的。本公开的权利要求书旨在定义要求保护的主题的范围。


包含在说明书中并构成说明书一部分的附图,显示了此处公开的主题的某些方面,并且与说明书一起帮助解释与公开的实施方式相关的一些原理。图1是示出与本主题的至少一些实施方式相符的商业软件系统体系结构的特征的示图;图2是示出与本主题的至少一些实施方式相符的具有一个或多个特征的方法的方面的处理流程图;图3是示出与本主题的至少一些实施方式相符的多级分区方法的特征的示图;图4是示出与本主题的至少一些实施方式相符的数据库管理系统体系结构的特征的示图;图5是示出与本主题的至少一些实施方式相符的另一个数据库管理系统体系结构的特征的示图;以及图6是示出与本主题的至少一些实施方式相符的多租赁(mult1-tenancy)数据库结构的特征的示图。实际中,相同的参考标号表示相同的结构、特征或元素。
具体实施方式
表中不同属性的数量,例如,一个或多个列中不同值的数量,可以是有效的数据库管理中重要的确定,特别是对于跨越多个数据分区划分的大型数据库的管理中,其可以选择性地由分离的数据服务器或数据服务器过程来控制。例如,确定诸如联接等操作所需的资源,对于调度和分配对这样的操作足够的资源是必须的。这样的操作通常需要多个联接,并且按照最优的次序确定用于执行那些联接或其它操作的操作计划也可能需要至少估计在所述表的一个或多个列跨越数据分区划分时所述列中非重复的(non-duplicative)值的数量。但是,在分区的表中,确定不同值的准确计数是很昂贵的。通常,每个分区中不同值的数量的计数必须被确定,然后这些计算必须被整合到一起以消除重复(duplicates)。例如,第一分区可以在其唯一计数中包括也出现在另一个分区上的值,并且因此在那个第二分区上也被计数为唯一。在不产生实质运行时通信量的情况下,这样的计算对于在分区表中执行是很困难的,运行时通信量在性能方面是损失严重的(costly)。与当前主题相符的方法、系统、生产工艺等,联合其它可能的优点,能够提供改进的方法,用来获得跨越多个数据分区划分的表中的不同值的数量的合理估计。以这种方式,能够避免对于一个或多个表或列操作确定处理要求而对分区的过度读取。与一个或多个实施方式相符的,基于一列或多列中的值的小采样(smallsampling),每一列可以被分类为有类别的列(categorical column)或无类别的列(non-categorical column)。如这里所使用的,有类别的列可以是这样的列,其被估计为包含比在列中的行实质上更少的唯一值。换句话说,这样的列包含在个别的数据记录中频率地重复的数据值。作为一个非限制性的例子,有类别的列的数据内容可以包括国家、州、部分、市、眼睛色彩、零件号码、邮政编码、组织角色、等等。图1示出了可以实现当前主题的一个或多个特征的系统的示图。计算系统102能够包括一个或多个核心软件平台模块104,其提供了商业软件系统或者包括数据库管理特征的其它软件的一个或多个特征。计算机系统也可以集成或者提供网关,用户可以通过网关访问由一个或多个外部软件组件106提供的功能。一个或多个客户机108可以经由直接连接、本地终端、或通过网络110(例如,区域网、广域网、无线网、因特网等等)访问计算机系统。估计代理112或者其它可比较的功能可以访问包括至少一个表116的数据库114,而表116可以依次包括至少一列。估计代理112可以实现一种估计算法,该估计算法使得计算系统的一个或多个处理器来执行一个或多个这里描述的功能。数据库表可以存储任何数据类型,潜在地包括但不限于,商业计划(business scenario)的定义、商业过程、以及一个或多个商业配置、以及与商业计划的实例或定义、商业过程、以及一个或多个商业配置相关的交易(transactional)数据、元数据、主数据,等等,和/或与商业计划或者商业过程等的特定实例相关的数据对象和/或商业对象的具体实例。表可以跨越一个或多个数据分区120、122、124来划分,所述数据分区可以经由单一的服务器或服务器过程来访问,或者经由两个或更多并行服务器或者服务器过程来访问,例如,如下所述的。可以作为数据库管理模块等的一部分的列存储引擎126可以维持这样一个字典,其包含表的每一列中的多个分区120、122、124中的每一个分区的唯一(不同,等)值的列表。图2示出了过程流程图200,该流程图200示出了方法特征,这些方法特征中的一个或多个可以包括在当前主题的实施方式中。在202,估计算法例如由估计代理来应用,或者在其它方式中由一个或多个处理器应用,以生成代表在数据库表的列中的数据的唯一性度量。所述列可以跨越多个数据分区来划分,例如,如上所讨论的。唯一性度量可使用几种可能的估计算法中的一种来计算。在204,通过将唯一性度量与阈值进行比较,所述列被分类为有类别的或者无类别的。在206,第一或者第二估计因子被分配给所述列。如果所述列被分类为有类别的,则第一估计因子被分配给列,如果所述列被分类为无类别的,则大于第一估计因子的第二因子被分配给列。在210,计算对于在数据库表上执行数据库操作所需的系统资源的成本估计。成本估计包括使用分配的第一估计因子或第二估计因子以及表中的行数作为成本估计函数的输入,确定跨越多个数据分区中的所有数据分区的列中的不同值的估计的数量。在212,改进成本估计。改进包括在开发或确定用于执行联接或其它数据库操作的操作计划的至少一部分中使用成本估计,所述联接或其它数据库操作涉及按照最优次序的数据库表的所述列和/或一个或多个其它列。分区还可以选择性地包括经由与计算系统或设备相相关联的显示设备来显示成本估计,将包含成本估计的电子消息发送给用户或另一台机器,生成包括成本估计的报告,例如,在通过估计的唯一值数量对列进行排队(ranking)时等等。在一些实施方式中,估计算法可以包括选择多个分区中的一个分区,并且查询所选择的数据分区的字典有关在所选择的数据分区中的列中的唯一值的总数。计算唯一值与所选择的数据分区中包含的列的行数的比值,并假定其代表了在多个数据分区中的所有其它数据分区中唯一值的分布。在这个例子中,唯一性度量可以是所计算的唯一值与行数的比值。如果在所选择的数据分区中的列的唯一值数量基本上小于行数(例如,唯一值与行数的比值低于阈值),则列被分类为是有类别的。在其它的实施方式中,估计算法可以向多个数据分区中的两个或更多个数据分区上的字典发送查询。查询可以请求在两个或更多个数据分区中的每一个数据分区上的列中预设数量的唯一值的随机采样。两个或更多个数据分区可以选择性地包括所述多个数据分区中的所有数据分区。从两个或更多个数据分区上的字典中返回的随机采样可以被比较,并且唯一性度量可以代表随机采样之间的类似程度。在这个例子中,如果随机采样之间的相似度高于阈值,则所述列将被分类为有类别的,因为采样的数据分区中的列部分之间的唯一值的副本指示单一性的较低程度。如果随机采样的相似度低于阈值,则所述列被分类为无类别的。在另一个实施方式中,估计算法可以利用Bloom过滤器,Bloom过滤器是用于测试某个要素是否为集合中的一员的具有良好空间效率的概率(probabilistic)数据结构。估计算法可以请求来自表或列的一个或多个数据分区的字典返回具有相同的、特定大小的bloom过滤器。用于每个采样的分区的Bloom过滤器被填充的程度可以用来确定所述列是否应当被划分为有类别的。例如,如果所述一个或多个数据分区被填充的Bloom过滤器结果小于预定阈值量,则所述列可以被分类为有类别的。如果所述一个或多个数据分区被填充的Bloom过滤器结果大于预定阈值量,则所述列可以被分类为无类别的。在另一个例子中,用于两个或更多个分区的、使用相同大小和哈希函数生成的bloom过滤器可以被比较。如果集合比特大多数相同则所述列可以被分类为有类别的,如果集合比特并非大多数相同则所述列可以被分类为无类别的。
当前主题的一些实施方式可以结合多级的分区方法来使用。在图3所示的一个非限制性例子中,根据月份的范围分区可以被用来划分在几个并行服务器或数据服务器过程中的每一个上的多个分区中的数据记录。如图3的框架300中所示,对于一年中的第一季度的每个月,数据库可以被范围分区为一个分区。因此,在第一数据过程服务器304上的3级第一数据分区302被子分区(subpartition)为2级第一一月分区306、2级第一二月分区308、以及2级第一三月分区310。在第二数据过程服务器314上的I级第二数据分区312被子分区为2级第二一月分区316、2级第二二月分区318、以及2级第二三月分区320。在图3中所示的例子中,在I级第一数据库分区302和I级第二数据库分区312之间的数据库上的数据的分区可以通过使用哈希分区方法来达成,在哈希分区方法中基于数据库的一个或多个列中的数据记录的值、使用哈希函数计算数据记录的哈希值(hashvalue)。图3示出分别包含(hosting) 了两个I级分区302和312的两个服务器过程304和314,但是这种简化的表述并不是意图进行限定。与I级数据分区相关联的任何数量的并行服务器过程都在当前主题的范围内。此外,第一级分区并不需要在两个或更多个服务器过程之间,相反地,也可以在单一服务器过程内被执行。图3还示出了与主服务器324通信的客户端108指引数据请求和查询以及新的数据被存储到两个或更多个服务器过程304、314上的两个或更多个I级数据分区302、312中合适的一个。在一些实施方式中,主服务器324可以执行哈希函数的计算,以确定响应于查询或请求指示哪个服务器过程304、314中可以接收新的数据以及从哪里找到新的数据的哈希值。在与当前主题的各方面相符的其它实施方式中,客户端108可以执行主服务器324 —个或多个上述功能,并且能够选择性地消除在跨越两个或更多个并行服务器过程304,314分配和维持数据时对分离的主服务器324的需要。在再一个其它的实施方式中,主服务器可以被认为是被动源(passive resource),例如,储存能够被一个或多个独立主服务器机器或者所有独立主服务器机器、与服务器过程304、314、客户端108等协同定位(co-located)的一个或多个索引服务器呼叫的元数据或者其它数据、规则、属性、标准等的储存库。此外,虽然在图3中描绘的方法使用了哈希分区以将数据分布在并行的服务器304、314上,并且使用了范围分区以进一步将数据从两个或更多个I级分区302、312分配到第二级分区中(例如,子分区),通过使用这些分区方法或者其它分区方法或者在不同次序下的其它分区方法(例如,轮循分区)的实施方式也在当前主题的范围中。例如,范围分区(或者其它分区方法)可以在第一级被使用,以分配数据到两个或更多个并行服务器过程中,哈希分区(或者与在第一级所使用的分区方法不同的一些其它分区方法)可以在第二级使用。范围分区可以应用在具有顺序性质的任何数据上(例如,邮递编码、日期、电话号码、目录页码、等等)。如这里所讨论的,范围分区中的日期值的使用在某些应用中具有特殊的优势,其中日期本身就是在数据库的查询中提供的查询值。在这种情况下,查询本身可以指派哪个2级分区需要被搜索以回复所述查询。在再一个实施方式中,多级分区可以在单一服务器过程或者物理服务器内执行。以这种方式,多级分区树形结构可以以改进的并行机制来创造数据存储的多级子分区,其中所述改进的并行机制可以提高数据库操作的效率,所述操作例如索引、合并、裁剪、数据检索(data retrieval)、等等。使用哈希分区作为用于I级分区的第一分区方法,并且使用范围分区作为用于2级分区的第二分区方法,这在启用基于时间的分区而不需要将旧数据与新数据频繁地合并或结合方面具有优势。在传统的方法中,装载到表中的数据必须最后合并到主索引中。这样的合并的定义典型地基于主索引的大小。通过根据时间范围(例如,月、周、年、或者一段其它的时间)在第二级进行分区,更多最近(并且因此通常更频繁地访问)的数据记录被保存在一起,而旧数据记录则保留在不需要那么频繁访问(并且因此重新索引和/或解压缩和重新压缩)的分区中。使用哈希分区,例如,作为用于数据服务器过程之间的第一级分区的第一分区方法,包括记录之间的实质改变(改变很多)的包含线项目编号或一些其它键值一个或多个列可以被选择作为哈希列。哈希值可以使用哈希函数基于一个或多个列中的每一列中的数据记录值来计算。如果多个列被使用,则哈希函数可以包括多个列中的数据记录值的串联。在其它实施方式中,第一分区方法可以选择性地包括轮循分区、范围分区、或者一些它形式的分区。能够选择性地包括范围分区(或者能够选择性地包括哈希分区、轮循分区、或者一些其它形式的分区)的第二分区方法可以包括基于一个或多个第二列的第二分区标准的估计,其并不包括在第一分区标准的评估(evaluation)中使用的一个或多个第一列。同样,虽然第一分区标准可以包括数据记录的主键值,但是第二分区标准并不包括。在进一步的变型中,除了以上讨论的I级分区和2级分区等级,还可以使用另外的分区等级(partitioning level)。例如,另外的层(layer)可以包括另外的哈希分区等级。在一些实施方式中,第三分区层可以用来替代例如用来跟踪数据库的改变的历史表或数据库中的一个或多个表。对于当前主题的各种实施方式的一种潜在应用可以包括对企业资源计划(ERP)系统、其它商业软件体系结构、或者其它数据密集型计算应用或软件体系结构的数据库需求的操控。在一些例子中,这样的应用可以提供为在特定组织的控制下、在一个或多个处理器上运行的独立的、定制化的软件安装。这种安排对于大规模组织非常有效,所述大规模组织有非常娴熟的内部(in-house)信息技术(IT)团队,并且对于定制商业上可用的商业软件解决方案以便与组织专用的商业过程和功能一起工作所需要的计算硬件和咨询服务中的进行大小相当的资本投资是可行的。图1的示图描绘了这样的系统的例子。替换地或者附加地,表或者表内的范围可以被分配给不同的数据库分区,所述不同的数据库分区被分配给不同的主机,例如,数据分布和/或可测量性原因。图4示出了与包括用于可测量性原因的数据分布的实施方式相符的企业资源系统体系结构400的例子。这样的配置可以用于大型的、定制的(on-premise)或者独立的具有高性能需求的系统。每个数据服务器过程402及其相关联的数据分区404可被分配给离散主机406。主机406可以是具有一个或多个物理处理器的独立机器,或者是在大型系统302上的虚拟机,如图4中所示。图4中标记为名称服务器412的中央组件知道系统的拓扑以及数据如何分布。在具有数据分布的系统中,名称服务器知道哪些表和表中的哪些分区位于哪个数据服务器过程402上。一个或多个客户端414(例如客户机308)可以经由直连或经网络416访问名称服务器412。在数据分布情景中,分区可通过表方式或通过拆分表来进行。利用表方式分区,名称服务器基于表的当前分布(分配给每一数据库服务器过程402的表的数量),分配新的表给数据库服务器过程402。接着,用于该表的数据将仅仅驻留在数据库服务器过程402上。指定在多个数据库服务器过程402上拆分表也是可能的。基于通过应用指定的大小估计,命称服务器412可以选择性地将表分区。当记录插入到拆分的表中时,可以基于名称服务器信息将记录分布给其它数据库服务器过程402。较小的组织也可受益于业务软件功能的使用。然而,这样的组织可能缺乏必要的硬件资源、IT支持、和/或利用独立业务软件软件体系结构产品所需要的咨询预算,并且在某些情况下可以通过软件即服务(Software as a service, SaaS)配置提供更有效的服务,在软件即服务配置中,业务软件系统体系结构被托管(hosted on)在诸如服务器和数据储存库的计算硬件上,所述服务器和数据储存库被保持在远离组织位置处并且由在组织处的授权用户经由诸如网络浏览器的瘦客户机或通过网络来访问。在软件递送(delivery)配置中,被提供给多个组织中的每一个的业务软件系统的服务被托管在专用系统上,该专用系统仅能够访问该组织,其中该专用系统处的软件安装可以以与以上描述的单独的例子相同的方式来定制和配置,所定制的软件安装局部地运行于组织的硬件上。然而,为了更有效地使用SaaS供应商的计算资源并且提供重要的性能冗余和更好的可靠性,能够有利是在包括多个服务器并以安全的方式维护多个承租者的全部的数据的单个系统上托管多个承租者,同时也提供为每一承租者的业务过程量身定制的定制解决方案。如图5的系统体系结构500中所示,与当前主题的实现方案相一致的数据分区也可以用在多承租环境中。多个承租者502,每一个与另一个相隔离并且可以由多个组织中的单独组织504中的客户机414经由网络416来访问,多个承租者502可由同一主机406主控(host),主机406可以为图5中所示的较大系统302上的虚拟机或包括一个或多个物理处理器的单独系统。承租者502也可选地分布在多于一个的主机406上的多个数据库服务器过程402上。以这种方式,由于扩容的原因,表或表内的区域被分配给不同的数据库服务器过程402,所述不同的数据库服务器过程402分配给不同的主机406。可替代地,一个或多个承租者502可由单个数据库服务器过程402来提供服务,所述单个数据库服务器过程402访问与其他承租者502隔离的各个承租者502的数据分区404 (或多个数据分区404)。为由单个软件传输体系结构500所支持的多个组织中的每一个而提供商业过程的定制化,由数据库管理系统314所存储的该数据和数据对象,可包括如图6所示的三种内容类型:核心软件平台内容602(例如,商业过程的标准定义)、系统内容604、以及承租方内容606。核心软件平台内容602包括地标核心功能的内容并且不可被承租方修改。系统内容604在某些例子中可由核心软件平台的运行时间所创建,并且可以包括存储有与给定商业过程的特定实例相关联的离散数据的核心数据对象,并且可以用每个承租方提供的数据进行修改。保留在这些数据对象中的数据是特定的承租方:例如,承租方组中的每个承租方502可以存储自身存货清册、销售订单、等等。对承租方组中每个承租方502均隔离的承租方内容606包括数据对象或者对其它数据对象的扩充,所述数据对象或者扩充为了承租方组中特定承租方502被定制化以反映商业过程和数据,所述商业过程和数据对于特定的承租方而言是特定的,并且仅可被在相应的承租方的授权用户访问。这样的数据对象可以包括一个键域(例如,存货跟踪中的“客户”),也包括一个或多个主数据,商业配置信息、交易数据、或者类似的其它内容。例如,承租方内容606可以反映特定承租方的修改或者对商业过程的标准模板定义的改变,以及与各个处理步骤(例如,所生成条件表中的记录、访问序列、价格计算结果、其它特定承租方值、等等)相关的商业对象的特定承租方定制化。承租方组中特定承租方502的软件平台内容602、系统内容604、以及承租方内容606的组合可被访问,以便根据承租方的定制和商业数据而提供商业过程定义和/或与商业过程的特定实例相关的状态信息,从而使得承租方组中每个承租方502都可以被提供对定制化的解决方案的访问,该解决方案中的数据只对来自承租方502中的用户可用。此处描述的主题的一个或多个方面或特征可以在数字电子电路、集成电路、专门设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)计算硬件、固件、软件和/或其组合中实现。这些不同的方面或特点可以包括在包含至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现,可编程处理器可以是专用的或通用的,耦接到存储系统、至少一个输入设备以及至少一个输出设备以从其中接收数据和指令并向其发送数据和指令。客户机和服务器一般是互相远离的且通常通过通信网络进行交互。客户机和服务器之间的关系由运行在各自计算机上的并具有客户机-服务器相互关系的计算机程序虚拟产生。这些计算机程序,其还可以被称为程序、软件、软件应用程序、应用程序、组件、或代码,包括可编程处理器的机器指令,并且可以用高级程序和/或面向对象的编程语言,和/或汇编/机器语言来实现。如此处使用的,术语“机器可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备,比如磁盘、光盘、存储器和/或可编程逻辑器件(PLD),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指任何用于提供机器指令和/或数据给可编程处理器的信号。机器可读介质可以非暂时性地存储这种机器指令,比如作为非暂时性的固态存储器或磁硬盘驱动器或任何其它等效的存储介质。机器可读介质可以可选地或另外地以暂时的方式存储这种机器指令,比如作为处理器高速缓存或其它与一个或多个物理处理器核心相关联的随机存取存储器。为提供与用户的交互,此处描述的主题的一个或多个方面或特征可以在计算机上实现,该计算机具有诸如用于向用户显示信息的阴极射线管(CRT)或液晶显示器(LCD)或光发射二极管(LED)监视器的显示设备和用户用来向计算机提供输入的键盘以及诸如鼠标或轨迹球的指示设备。其它种类的设备也可以用于提供和用户的交互。例如,提供到用户的反馈可以是任何形式的感测反馈,比如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括但不限于,声音、语音或触觉输入。其它可能的输入设备包括但不限于,触摸屏或其它诸如单一或多点电阻或电容轨迹板、语音识别硬件和软件、光学扫描仪、光学指示器、数字图像捕获设备及相关联的解译软件等等。此处描述的主题可以基于想要的配置而体现为系统、装置、方法和/或物品。在前面的说明中提出的实施方式不代表与此处描述的主题一致的所有实施方式。相反,它们仅仅是与所描述主题一致的一些例子。尽管上面已经详细描述了一些变化形式,但是可能做出其它的修改或添加。特别是,可以在此处提出的这些内容之外提供进一步的特征和/或变化。例如,上述实施方式可以指导出所公开的特征的各种组合和子组合和/或上述公开的一些进一步的特征的组合和子组合。另外,附图中示出的和/或本文描述的逻辑流程并不必然要求所显示的特定顺序或连续顺序以获得想要的结果。其它实施方式也在权利要求书的范围之内。
权利要求
1.一种包括存储指令的机器可读介质的计算机程序产品,当所述指令由至少一个可编程处理器执行时,使得所述至少一个可编程处理器执行下列操作,包括: 应用估计算法以生成代表数据库表的列中的数据的唯一性度量,所述列被跨越多个数据分区来划分; 通过比较所述唯一性度量与阈值,将所述列分类为有类别的或无类别的; 将第一估计因子和第二估计因子之一分配给所述列,如果所述列被分类为有类别的,则所述分配包括第一估计因子,如果所述列被分类为无类别的,则所述分配包括第二估计因子,第二估计因子大于第一估计因子; 计算对在所述数据库表执行数据库操作所需的系统资源的成本估计,所述成本估计包括使用分配的第一估计因子或第二估计因子以及作为估计函数的输入的所述表中的行数而确定的、跨越所述多个数据分区中所有分区的所述列中的不同值的估计的总数;并且改进所述成本估计。
2.如权利要求1所述的计算机程序产品,其中,改进所述成本估计包括使用在开发至少部分操作计划中的成本估计,用于执行涉及按照最优次序的数据库表的至少一个列和其它列的一个或多个数据库操作,经由与计算系统或设备相关联的显示设备显示成本估计,发送包含成本估计的电子消息给用户或者另一个机器,并且生成包括成本估计的报告。
3.如权利要求2所述的计算机程序产品,其中,所述一个或多个数据库操作包含联接。
4.如权利要求1所述的计算机程序产品,其中,所述估计算法包括: 选择多个数据分区中的一个数据分区; 查询所选择的数据分区的字典有关在所选择的数据分区中的所述列中唯一值的总数,所述字典包括在所选择的 数据分区中的所述列的唯一值的列表; 计算唯一值的总数与所选择的数据分区中包含的所述列的行数的比值; 假定所述比值代表了多个数据分区中所有其它数据分区中的唯一值的分布;以及 返回所计算的比值作为唯一性度量。
5.如权利要求1所述的计算机程序产品,其中,所述估计算法包括: 查询字典有关多个数据分区的两个或更多个数据分区中的每一个数据分区,所述字典包括所述两个或更多个数据分区中的每一个数据分区中的所述列的唯一值的列表,所述查询包括请求随机采样,所述随机采样包括有关所述两个或更多个数据分区中的每一个数据分区的所述列中的预设数量的唯一值; 比较有关两个或更多个数据分区中的每一个数据分区的从字典返回的所述随机采样;以及 返回所述唯一性度量作为随机采样之间的相异程度。
6.如权利要求1所述的计算机程序产品,其中,所述估计算法包括: 请求来自多个数据分区的一个或多个所选择的数据分区中的每一个数据分区的字典返回具有相同的特定大小的各自的Bloom过滤器,每一个字典包括其各自的数据分区中的所述列的唯一值的列表;以及 基于从所述一个或多个所选择的数据分区中返回的Bloom过滤器被填充的程度来返回所述唯一性度量。
7.一种系统,包括:至少一个可编程的处理器;以及 存储指令的机器可读介质,所述指令在由至少一个处理器运行时,使得至少一个可编程处理器执行以下操作,包括: 应用估计算法以生成代表数据库表的列中的数据的唯一性度量,所述列被跨越多个数据分区来划分; 通过比较所述唯一性度量与阈值,将所述列分类为有类别的或无类别的; 将第一估计因子和第二估计因子之一分配给所述列,如果所述列被分类为有类别的,则所述分配包括第一估计因子,如果所述列被分类为无类别的,则所述分配包括第二估计因子,第二 估计因子大于第一估计因子; 计算对在所述数据库表执行数据库操作所需的系统资源的成本估计,所述成本估计包括使用分配的第一估计因子或第二估计因子以及作为估计函数的输入的所述表中的行数而确定的、跨越所述多个数据分区中所有分区的所述列中的不同值的估计的总数;并且改进所述成本估计。
8.如权利要求7所述的系统,其中,改进所述成本估计包括使用在开发至少部分操作计划中的成本估计,用于执行涉及按照最优次序的数据库表的至少一个列和其它列的一个或多个数据库操作,经由与计算系统或设备相关联的显示设备显示成本估计,发送包含成本估计的电子消息给用户或者另一个机器,并且生成包括成本估计的报告。
9.如权利要求8所述的系统,其中,所述一个或多个数据库操作包含联接。
10.如权利要求7所述的系统,其中,所述估计算法包括: 选择多个数据分区中的一个数据分区; 查询所选择的数据分区的字典有关在所选择的数据分区中的所述列中唯一值的总数,所述字典包括在所选择的数据分区中的所述列的唯一值的列表; 计算唯一值的总数与所选择的数据分区中包含的所述列的行数的比值; 假定所述比值代表了多个数据分区中所有其它数据分区中的唯一值的分布;以及 返回所计算的比值作为唯一性度量。
11.如权利要求7所述的系统,其中,所述估计算法包括: 查询字典有关多个数据分区的两个或更多个数据分区中的每一个数据分区,所述字典包括所述两个或更多个数据分区中的每一个数据分区中的所述列的唯一值的列表,所述查询包括请求随机采样,所述随机采样包括有关所述两个或各个多个数据分区中的每一个数据分区的所述列中的预设数量的唯一值; 比较有关两个或更多个数据分区中的每一个数据分区的从字典返回的所述随机采样;以及 返回所述唯一性度量作为随机采样之间的相异程度。
12.如权利要求7所述的系统,其中,所述估计算法包括: 请求来自多个数据分区的一个或多个所选择的数据分区中的每一个数据分区的字典返回具有相同的特定大小的各自的Bloom过滤器,每一个字典包括其各自的数据分区中的所述列的唯一值的列表;以及 基于从所述一个或多个所选择的数据分区中返回的Bloom过滤器被填充的程度来返回所述唯一性度量。
13.—种计算机实现的方法,包括: 应用估计算法以生成代表数据库表的列中的数据的唯一性度量,所述列被跨越多个数据分区来划分; 通过比较所述唯一性度量与阈值,将所述列分类为有类别的或无类别的; 将第一估计因子和第二估计因子之一分配给所述列,如果所述列被分类为有类别的,则所述分配包括第一估计 因子,如果所述列被分类为无类别的,则所述分配包括第二估计因子,第二估计因子大于第一估计因子; 计算对在所述数据库表执行数据库操作所需的系统资源的成本估计,所述成本估计包括使用分配的第一估计因子或第二估计因子以及作为估计函数的输入的所述表中的行数而确定的、跨越所述多个数据分区中所有分区的所述列中的不同值的估计的总数;并且改进所述成本估计。
14.如权利要求13所述的计算机实现的方法,其中,改进所述成本估计包括使用在开发至少部分操作计划中的成本估计,用于执行涉及按照最优次序的数据库表的至少一个列和其它列的一个或多个数据库操作,经由与计算系统或设备相关联的显示设备显示成本估计,发送包含成本估计的电子消息给用户或者另一个机器,并且生成包括成本估计的报告。
15.如权利要求14所述的计算机实现的方法,其中,所述一个或多个数据库操作包含联接。
16.如权利要求13所述的计算机实现的方法,其中,所述估计算法包括: 选择多个数据分区中的一个数据分区; 查询所选择的数据分区的字典有关在所选择的数据分区中的所述列中唯一值的总数,所述字典包括在所选择的数据分区中的所述列的唯一值的列表; 计算唯一值的总数与所选择的数据分区中包含的所述列的行数的比值; 假定所述比值代表了多个数据分区中所有其它数据分区中的唯一值的分布;以及 返回所计算的比值作为唯一性度量。
17.如权利要求13所述的计算机实现的方法,其中,所述估计算法包括: 查询字典有关多个数据分区的两个或更多个数据分区中的每一个数据分区,所述字典包括所述两个或更多个数据分区中的每一个数据分区中的所述列的唯一值的列表,所述查询包括请求随机采样,所述随机采样包括有关所述两个或更多个数据分区中的每一个数据分区的所述列中的预设数量的唯一值; 比较有关两个或更多个数据分区中的每一个数据分区的从字典返回的所述随机采样;以及 返回所述唯一性度量作为随机采样之间的相异程度。
18.如权利要求13所述的计算机实现的方法,其中,所述估计算法包括: 请求来自多个数据分区的一个或多个所选择的数据分区中的每一个数据分区的字典返回具有相同的特定大小的各自的Bloom过滤器,每一个字典包括其各自的数据分区中的所述列的唯一值的列表;以及 基于从所述一个或多个所选择的数据分区中返回的Bloom过滤器被填充的程度来返回所述唯一性度量。
19.如权利要求13所述的计算机实现的方法,其中,所述应用、计算、分配、计算、以及改进中的至少一个是由至少 一个可编程处理器执行的。
全文摘要
一种估计算法可以生成代表数据库表列中数据的唯一性度量,所述列被跨越多个数据分区来划分。如果唯一性度量低于阈值,则所述列能够被分类为有类别的,如果唯一性度量高于阈值,则所述列能够被分类为无类别的。如果所述列被分类为有类别的,则第一估计因子被分配到所述列,如果所述列被分类为无类别的,则更大的第二估计因子被分配到所述列。计算对在数据库表执行数据库操作所需的系统资源的成本估计。成本估计包括使用分配的第一估计因子或第二估计因子以及作为估计函数的输入的所述表中的行数而确定的、跨越所述多个数据分区中所有分区的所述列中的不同值的估计的总数。
文档编号G06F17/30GK103177061SQ20121044505
公开日2013年6月26日 申请日期2012年9月28日 优先权日2011年12月23日
发明者L·弗里克, S·Y·黄 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1