CN114116757B - 数据处理方法、装置、电子设备及可读存储介质 - Google Patents
数据处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114116757B CN114116757B CN202010899566.8A CN202010899566A CN114116757B CN 114116757 B CN114116757 B CN 114116757B CN 202010899566 A CN202010899566 A CN 202010899566A CN 114116757 B CN114116757 B CN 114116757B
- Authority
- CN
- China
- Prior art keywords
- node
- data table
- query request
- target data
- attribute
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例公开了一种数据处理方法、装置、电子设备及可读存储介质,包括:获取数据表;根据所述数据表确定根节点,所述根节点具有属性范围A和上下文T;根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;将所述子节点作为当前节点N,确定所述当前节点N的子节点;将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述数据表的联合概率分布模型。
Description
技术领域
本公开涉及计算机技术领域,具体涉及一种数据处理方法、装置、电子设备及可读存储介质。
背景技术
基数估计是数据库查询优化的重要方法,直接关系数据库查询计划生成效果并影响数据库查询执行性能,具有非常重要的意义。在进行数据库查询时,基于查询请求确定查询计划并返回查询结果,不同查询计划的查询结果命中率不同,在进行查询计划优化时,希望能够快速估计每种查询计划命中的记录数(本文中称为“基数”),从而选择优选的查询计划。
可以为数据库中的数据表创建表中属性的联合概率分布(ProbabilityDistribution Function,PDF)模型,用于估计每种查询计划对给定查询请求返回的命中记录的基数。
发明内容
为了解决相关技术中的问题,本公开实施例提供一种数据处理方法、装置、电子设备及可读存储介质。
第一方面,本公开实施例中提供了一种数据处理方法。
具体地,所述一种数据处理方法,包括:
获取数据表;
根据所述数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;
根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;
将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;
将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;
基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述数据表的联合概率分布模型。
结合第一方面,本公开在第一方面的第一种实现方式中:
所述确定子节点,包括确定所述子节点的属性范围、条件、上下文;
所述将所述子节点作为当前节点N,包括将所述子节点的属性范围、条件、上下文作为所述当前节点的属性范围、条件、上下文;
所述子节点的属性范围是所述子节点的父节点的属性范围的子集,所述子节点的条件是所述子节点的父节点的属性范围的子集;
所述子节点的上下文是所述上下文T的子集;
当所述子节点是条件概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性依赖于所述子节点的条件的联合概率分布;当所述子节点是概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性的联合概率分布。
结合第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述概率节点是条件为空集的节点,所述条件概率节点是条件不为空集的节点。
结合第一方面的第一种实现方式,本公开在第一方面的第三种实现方式中,还包括:
如果所述当前节点N的条件为空集且所述当前节点N的属性范围中仅包括一个属性,或者如果所述当前节点N的条件不为空集且所述当前节点N的条件中的属性与所述当前节点N的属性范围中的属性均不相关,则确定所述当前节点为叶子节点。
结合第一方面,本公开在第一方面的第四种实现方式中,还包括:
所述确定子节点,包括确定所述子节点和所述子节点与所述子节点的父节点之间的关系,其中,根据所述子节点表示的联合概率分布,按照所述关系,能够确定所述子节点的父节点的联合概率分布。
结合第一方面,本公开在第一方面的第五种实现方式中,所述根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点,包括:
将A-H作为所述根节点的第一子节点的属性范围,其中,H包括所述属性范围A中具有强相关性的多个属性;
将H作为所述根节点的第二子节点的属性范围,将A-H作为所述第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述根节点与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述根节点表示的联合概率分布。
结合第一方面,本公开在第一方面的第六种实现方式中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中的多个属性具有强相关性:
将AN-HN作为所述当前节点N的第一子节点的属性范围,其中,HN包括所述属性范围AN中具有强相关性的多个属性;
将HN作为所述当前节点N的第二子节点的属性范围,将AN-HN作为所述当前节点N的第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述当前节点N与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
结合第一方面,本公开在第一方面的第七种实现方式中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中属性不具有强相关性但其中的多个但并非全部属性具有弱相关性:
将属性范围AN划分为多个属性范围A’j,A’j中的属性具有弱相关性或包含单个属性,不同A’j中的属性是彼此独立的;
将A’j作为所述当前节点N的第j个概率子节点的属性范围;
将所述当前节点N的上下文TN中对应于A’j的部分作为所述第j个概率子节点的上下文,
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
结合第一方面,本公开在第一方面的第八种实现方式中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中全部属性具有弱相关性:
通过聚类方法将TN划分为多个上下文Ti,作为所述当前节点的第i个概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
结合第一方面,本公开在第一方面的第九种实现方式中,当所述当前节点N是条件概率节点时,所述根据在所述当前节点N的上下文TN中,所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点,包括:
以减小所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性的方式,将TN划分为多个上下文Ti,作为所述当前节点的第i个条件概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个条件概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的条件概率子节点之间的关系为:基于所述当前节点N的条件概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
第二方面,本公开实施例提供了一种数据处理方法,包括:
获取目标查询请求;
根据所述目标查询请求确定目标数据表;
使用根据第一方面至第一方面的第九种实现方式中任一项所述的方法,获取所述目标数据表的联合概率分布模型;
使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
结合第二方面,本公开在第二方面的第一种实现方式中,所述目标查询请求的查询范围指定所述目标数据表中的一个或多个属性的取值范围,所述使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围;
根据所述叶子节点的查询范围确定所述叶子节点对应的概率值;
根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
结合第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围,包括:
将所述目标查询请求的查询范围作为根节点的查询范围;
根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围。
结合第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的概率节点且所述节点不是分解节点时,所述节点的子节点的查询范围为R,其中,当所述节点的子节点包括概率节点和条件概率节点时,所述节点称为分解节点。
结合第二方面的第二种实现方式,本公开在第二方面的第四种实现方式中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的分解节点时,所述节点的条件概率子节点的查询范围为R,根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围。
结合第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围,包括:
对于所述节点的条件概率子节点对应的每个叶子节点,求所述叶子节点的上下文条件独立性成立的有效范围与所述查询范围R的交集,根据所述交集确定所述节点的概率子节点的查询范围。
结合第二方面的第二种实现方式,本公开在第二方面的第六种实现方式中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的条件概率节点时,如果所述节点与所述节点的子节点之间的关系为基于所述节点的子节点表示的联合概率分布的和得到所述节点表示的联合概率分布,则所述节点的子节点的查询范围为R。
结合第二方面的第一种实现方式,本公开在第二方面的第七种实现方式中,所述根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
根据所述叶子节点对应的概率值以及所述联合概率分布模型中节点与子节点之间的关系,按照从叶子节点向根节点的方向递推得到所述根节点对应的概率值。
结合第二方面的第一种实现方式,本公开在第二方面的第八种实现方式中,还包括:
根据所述目标数据表中存在与所述目标查询请求匹配的记录的概率和所述目标数据表中记录的数量,估计所述目标数据表中与所述目标查询请求匹配的记录的数量。
结合第二方面的第一种实现方式,本公开在第二方面的第九种实现方式中,所述根据所述目标查询请求确定目标数据表,包括:
确定与所述目标查询请求相关的多个目标数据表;
根据所述目标查询请求连接所述多个目标数据表得到所述目标数据表。
本公开实施例在第三方面中提供了一种数据处理方法,包括:
将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
获取查询请求;
确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据第二方面至第二方面的第九种实现方式中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率。
结合第三方面,本公开在第三方面的第一种实现方式中,所述确定所述目标数据表组的相应子查询请求,包括:
根据所述查询请求确定所述目标数据表组中的数据表的连接关系;
根据所述查询请求和所述连接关系,确定所述子查询请求。
结合第三方面,本公开在第三方面的第二种实现方式中,所述确定所述目标数据表组的相应子查询请求,包括:
确定所述目标数据表组中被所述查询请求涉及的多个数据表;
根据所述查询请求、所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述一个或多个目标数据表组的全外连接表NN中的出现次数,确定所述相应子查询请求。
结合第三方面的第二种实现方式,本公开在第三方面的第三种实现方式中,还包括:
根据所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述全外连接表NN中的出现次数,修正所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率。
结合第三方面,本公开在第三方面的第四种实现方式中,还包括:
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
本公开的第四方面提供了一种数据处理方法,包括:
获取目标查询请求,所述目标查询请求指定至少一个对象属性的取值范围;
根据所述目标查询请求确定目标数据表,所述目标数据表包含多个对象记录和所述至少一个对象属性;
使用根据第一方面至第一方面的第九种实现方式中任一项所述的方法,获取所述目标数据表的联合概率分布模型;
使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率;
根据所述目标数据表的记录数量和所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率,确定符合所述目标查询请求的对象记录数量。
本公开的第五方面提供了一种数据处理方法,包括:
将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
获取查询请求,所述查询请求指定至少一个对象属性的取值范围;
确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求,所述一个或多个目标数据表组中的数据表包含多个对象记录和所述至少一个对象属性;
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据第二方面至第二方面的第九种实现方式中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的对象记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的对象记录的概率和所述全外连接表的记录数量,确定所述全外连接表NN中与所述查询请求匹配的对象记录的数量。
本公开实施例在第六方面中提供了一种数据处理方法,包括:
获取查询请求;
根据所述查询请求确定多个不同查询策略,每个查询策略包括与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
确定每个查询策略的基数估计值,包括:
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据第二方面至第二方面的第九种实现方式中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量,作为所述查询策略的基数估计值;
将基数估计值最小的查询策略作为优选查询策略。
结合第六方面,本公开在第六方面的第一种实现方式中,所述方法还包括:
根据所述查询请求,在预先确定的多个数据表组中选择所述目标数据表组,根据所述目标数据表组确定相应的子查询请求;或者
根据所述查询请求确定所述子查询请求,根据所述子查询请求确定与所述子查询请求相对应的目标数据表组。
结合第六方面,本公开在第六方面的第二种实现方式中:
在同一目标数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同目标数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性。
本公开实施例在第七方面中提供了一种数据处理装置,包括:
第一获取模块,被配置为获取数据表;
第一确定模块,被配置为根据所述数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;
第二获取模块,被配置为根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;
第二确定模块,被配置为将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;
重复模块,被配置为将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;
生成模块,被配置为基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述数据表的联合概率分布模型。
结合第七方面,本公开在第七方面的第一种实现方式中:
所述确定子节点,包括确定所述子节点的属性范围、条件、上下文;
所述将所述子节点作为当前节点N,包括将所述子节点的属性范围、条件、上下文作为所述当前节点的属性范围、条件、上下文;
所述子节点的属性范围是所述子节点的父节点的属性范围的子集,所述子节点的条件是所述子节点的父节点的属性范围的子集;
所述子节点的上下文是所述上下文T的子集;
当所述子节点是条件概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性依赖于所述子节点的条件的联合概率分布;当所述子节点是概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性的联合概率分布。
结合第七方面的第一种实现方式,本公开在第七方面的第二种实现方式中,所述概率节点是条件为空集的节点,所述条件概率节点是条件不为空集的节点。
结合第七方面的第一种实现方式,本公开在第七方面的第三种实现方式中,还包括:
第三确定模块,被配置为如果所述当前节点N的条件为空集且所述当前节点N的属性范围中仅包括一个属性,或者如果所述当前节点N的条件不为空集且所述当前节点N的条件中的属性与所述当前节点N的属性范围中的属性均不相关,则确定所述当前节点为叶子节点。
结合第七方面,本公开在第七方面的第四种实现方式中,还包括:
所述确定子节点,包括确定所述子节点和所述子节点与所述子节点的父节点之间的关系,其中,根据所述子节点表示的联合概率分布,按照所述关系,能够确定所述子节点的父节点的联合概率分布。
结合第七方面,本公开在第七方面的第五种实现方式中,所述根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点,包括:
将A-H作为所述根节点的第一子节点的属性范围,其中,H包括所述属性范围A中具有强相关性的多个属性;
将H作为所述根节点的第二子节点的属性范围,将A-H作为所述第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述根节点与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述根节点表示的联合概率分布。
结合第七方面,本公开在第七方面的第六种实现方式中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中的多个属性具有强相关性:
将AN-HN作为所述当前节点N的第一子节点的属性范围,其中,HN包括所述属性范围AN中具有强相关性的多个属性;
将HN作为所述当前节点N的第二子节点的属性范围,将AN-HN作为所述当前节点N的第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述当前节点N与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
结合第七方面,本公开在第七方面的第七种实现方式中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中属性不具有强相关性但其中的多个但并非全部属性具有弱相关性:
将属性范围AN划分为多个属性范围A’j,A’j中的属性具有弱相关性或包含单个属性,不同A’j中的属性是彼此独立的;
将A’j作为所述当前节点N的第j个概率子节点的属性范围;
将所述当前节点N的上下文TN中对应于A’j的部分作为所述第j个概率子节点的上下文,
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
结合第七方面,本公开在第七方面的第八种实现方式中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中全部属性具有弱相关性:
通过聚类装置将TN划分为多个上下文Ti,作为所述当前节点的第i个概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
结合第七方面,本公开在第七方面的第九种实现方式中,当所述当前节点N是条件概率节点时,所述根据在所述当前节点N的上下文TN中,所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点,包括:
以减小所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性的方式,将TN划分为多个上下文Ti,作为所述当前节点的第i个条件概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个条件概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的条件概率子节点之间的关系为:基于所述当前节点N的条件概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
本公开实施例在第八方面中提供了一种数据处理装置,包括:
第三获取模块,被配置为获取目标查询请求;
第四确定模块,被配置为根据所述目标查询请求确定目标数据表;
第四获取模块,被配置为使用根据第一方面至第一方面的第九种实现方式中任一项所述的方法,获取所述目标数据表的联合概率分布模型;
第一估计模块,被配置为使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
结合第八方面,本公开在第八方面的第一种实现方式中,所述目标查询请求的查询范围指定所述目标数据表中的一个或多个属性的取值范围,所述使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围;
根据所述叶子节点的查询范围确定所述叶子节点对应的概率值;
根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
结合第八方面的第一种实现方式,本公开在第八方面的第二种实现方式中,所述基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围,包括:
将所述目标查询请求的查询范围作为根节点的查询范围;
根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围。
结合第八方面的第二种实现方式,本公开在第八方面的第三种实现方式中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的概率节点且所述节点不是分解节点时,所述节点的子节点的查询范围为R,其中,当所述节点的子节点包括概率节点和条件概率节点时,所述节点称为分解节点。
结合第八方面的第二种实现方式,本公开在第八方面的第四种实现方式中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的分解节点时,所述节点的条件概率子节点的查询范围为R,根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围。
结合第八方面的第四种实现方式,本公开在第八方面的第五种实现方式中,所述根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围,包括:
对于所述节点的条件概率子节点对应的每个叶子节点,求所述叶子节点的上下文条件独立性成立的有效范围与所述查询范围R的交集,根据所述交集确定所述节点的概率子节点的查询范围。
结合第八方面的第二种实现方式,本公开在第七方面的第六种实现方式中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的条件概率节点时,如果所述节点与所述节点的子节点之间的关系为基于所述节点的子节点表示的联合概率分布的和得到所述节点表示的联合概率分布,则所述节点的子节点的查询范围为R。
结合第八方面的第一种实现方式,本公开在第八方面的第七种实现方式中,所述根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
根据所述叶子节点对应的概率值以及所述联合概率分布模型中节点与子节点之间的关系,按照从叶子节点向根节点的方向递推得到所述根节点对应的概率值。
结合第八方面的第一种实现方式,本公开在第八方面的第八种实现方式中,还包括:
第二估计模块,被配置为根据所述目标数据表中存在与所述目标查询请求匹配的记录的概率和所述目标数据表中记录的数量,估计所述目标数据表中与所述目标查询请求匹配的记录的数量。
结合第八方面的第一种实现方式,本公开在第八方面的第九种实现方式中,所述根据所述目标查询请求确定目标数据表,包括:
确定与所述目标查询请求相关的多个目标数据表;
根据所述目标查询请求连接所述多个目标数据表得到所述目标数据表。
本公开实施例在第九方面中提供了一种数据处理装置,包括:
第一分组模块,被配置为将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
第五获取模块,被配置为获取查询请求;
第五确定模块,被配置为确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
第三估计模块,被配置为将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据第二方面至第二方面的第九种实现方式中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
第六确定模块,被配置为根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率。
结合第九方面,本公开在第九方面的第一种实现方式中,所述确定所述目标数据表组的相应子查询请求,包括:
根据所述查询请求确定所述目标数据表组中的数据表的连接关系;
根据所述查询请求和所述连接关系,确定所述子查询请求。
结合第九方面,本公开在第九方面的第二种实现方式中,所述确定所述目标数据表组的相应子查询请求,包括:
确定所述目标数据表组中被所述查询请求涉及的多个数据表;
根据所述查询请求、所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述一个或多个目标数据表组的全外连接表NN中的出现次数,确定所述相应子查询请求。
结合第九方面的第二种实现方式,本公开在第九方面的第三种实现方式中,还包括:
第一修正模块,被配置为根据所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述全外连接表NN中的出现次数,修正所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率。
结合第九方面,本公开在第九方面的第四种实现方式中,还包括:
第四估计模块,被配置为根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
本公开实施例在第十方面提供了一种数据处理装置,包括:
第六获取模块,被配置为获取目标查询请求,所述目标查询请求指定至少一个对象属性的取值范围;
第七确定模块,被配置为根据所述目标查询请求确定目标数据表,所述目标数据表包含多个对象记录和所述至少一个对象属性;
第七获取模块,被配置为使用根据第一方面至第一方面的第九种实现方式中的任一项所述的方法,获取所述目标数据表的联合概率分布模型;
第五估计模块,被配置为使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率;
第八确定模块,被配置为根据所述目标数据表的记录数量和所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率,确定符合所述目标查询请求的对象记录数量。
本公开实施例在第十一方面提供了一种数据处理装置,包括:
第二分组模块,被配置为将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
第八获取模块,被配置为获取查询请求,所述查询请求指定至少一个对象属性的取值范围;
第九确定模块,被配置为确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求,所述一个或多个目标数据表组中的数据表包含多个对象记录和所述至少一个对象属性;
第四估计模块,被配置为将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据第二方面至第二方面的第九种实现方式中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率;
第十确定模块,被配置为根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的对象记录的概率;
第十一配置模块,被配置为根据所述全外连接表NN中存在与所述查询请求匹配的对象记录的概率和所述全外连接表的记录数量,确定所述全外连接表NN中与所述查询请求匹配的对象记录的数量。
本公开实施例在第十二方面提供了一种数据处理装置,包括:
第九获取模块,被配置为获取查询请求;
第十一确定模块,被配置为根据所述查询请求确定多个不同查询策略,每个查询策略包括与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
第五估计模块,被配置为确定每个查询策略的基数估计值,包括:
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据第二方面至第二方面的第九种实现方式中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量,作为所述查询策略的基数估计值;
执行模块,将基数估计值最小的查询策略作为优选查询策略。
结合第十二方面,本公开在第十二方面的第一种实现方式中,所述装置还包括:
第十二确定模块,被配置为根据所述查询请求,在预先确定的多个数据表组中选择所述目标数据表组,根据所述目标数据表组确定相应的子查询请求;或者
根据所述查询请求确定所述子查询请求,根据所述子查询请求确定与所述子查询请求相对应的目标数据表组。
结合第十二方面,本公开在第十二方面的第二种实现方式中:
在同一目标数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同目标数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性。
第十三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如本公开第一方面至第五方面中任一项所述的方法。
第十四方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如本公开第一方面至第五方面中任一项所述的方法。
根据本公开实施例提供的技术方案,可以实现对数据表中属性的联合概率分布的快速建模,得到的模型称为FSPN(Factorize-Sum-Product Network,分解和积网络)模型,FSPN通过条件概率分解方式,将强弱关联属性分解开,使得其能够分别得到处理;对于弱关联属性,使用类似SPN的相加和相乘操作进行处理,对于强关联属性,通过对弱关联属性进行拆解得到条件独立,而后根据强关联属性自身特性可以直接一并处理。通过这种自适应的分解处理,使得FSPN模型能够处理任何关联类型的属性,同时具有高准确度,推理效率快,模型小等优势。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1示出了根据本公开实施例的数据处理方法的流程图。
图2示出了使用根据本公开实施例的数据处理方法对数据表建模的一个具体示例。
图3示出了FSPN模型、SPN模型、AR模型和BN模型之间的关系。
图4示出了根据本公开实施例的数据处理方法的流程图。
图5A示出了根据本公开实施例的数据处理方法的流程图。
图5B示出了根据本公开实施例的数据处理方法的流程图。
图6给出了具有四个表的示例性数据库及其连接关系。
图7示出根据本公开的实施例的数据处理装置的结构框图。
图8示出根据本公开的实施例的数据处理装置的结构框图。
图9示出根据本公开的实施例的数据处理装置的结构框图。
图10示出根据本公开的实施例的电子设备的结构框图。
图11示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
在本公开中,对用户信息或用户数据的获取均为经用户授权、确认,或由用户主动选择的操作。
如上所述,可以为数据库中的数据表创建表中属性的联合PDF模型,用于估计每种查询计划对给定查询请求返回的命中记录的基数。
已有的数据分布建模方法主要包括以下几种:
1.直方图方法,包括多维直方图和单维直方图。多维直方图直接存储概率空间中所有项的概率值,因此存储空间开销很大,单维直方图假设多个变量之间相互独立,此假设在实际数据中一般不成立,容易导致较大误差。
2.和积网络(SPN)方法,通过相加操作将数据分块,通过相乘操作将数据中独立变量分解。在数据关联性不强时中具有推理效率快、模型小、准确度高的优点。然而在数据中存在强关联变量时,SPN无法将其分开,此时模型大小、准确度和推理速度方面的表现都会明显下降。
3.自回归(AR)方法,通过条件概率公式(链式法则)将联合PDF直接表示成多个条件概率乘积形式,使用深度神经网络直接刻画每一个条件PDF。该模型准确度较高,但是模型较大、推理速度慢。
4.贝叶斯网络(BN)方法:通过数据中变量间的因果关系,将联合PDF表示成为贝叶斯网络结构,变量除直接父亲节点外条件独立。该模型准确度高,但同样推理速度慢。
本公开实施例提供了一种数据处理方法,包括:
获取数据表;
根据所述数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;
根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;
将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;
将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;
基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,得到所述数据表的联合概率分布模型。
根据本公开实施例的数据处理方法,可以实现对数据表中属性的联合概率分布的快速建模,得到的模型称为FSPN(Factorize-Sum-Product Network,分解和积网络)模型,FSPN模型综合了已有模型的优点,直接提升了数据联合分布建模方法性能。
与BN和SPN类似,FSPN也是一种图形化的模型。FSPN应用树状结构来对联合PDF建模。但是,FSPN克服了BN和SPN的缺点,因为其应用了自适应操作来分解联合PDF。FSPN比SPN更加简洁和精确,并且比BN的学习和推导速度更快。
具体地,FSPN通过条件概率分解方式,将强弱关联属性分解开,使得其能够分别得到处理;对于弱关联属性,使用类似SPN的相加和相乘操作进行处理,对于强关联属性,通过对弱关联属性进行拆解得到条件独立,而后根据强关联属性自身特性可以直接一并处理。通过这种自适应的分解处理,使得FSPN模型能够处理任何关联类型的属性,同时具有高准确度,推理效率快,模型小等优势。
图1示出了根据本公开实施例的数据处理方法的流程图。
如图1所示,根据本公开实施例的数据处理方法包括步骤S101~S106。
在步骤S101,获取数据表;
在步骤S102,根据所述数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;
在步骤S103,根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;
在步骤S104,将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;
在步骤S105,将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;
在步骤S106,基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,得到所述数据表的联合概率分布模型。
根据本公开的实施例,所述确定子节点,包括确定所述子节点的属性范围、条件、上下文。所述将所述子节点作为当前节点N,包括将所述子节点的属性范围、条件、上下文作为所述当前节点的属性范围、条件、上下文。所述子节点的属性范围是所述子节点的父节点的属性范围的子集,所述子节点的条件是所述子节点的父节点的属性范围的子集。所述子节点的上下文是所述上下文T的子集。当所述子节点是条件概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性依赖于所述子节点的条件的联合概率分布;当所述子节点是概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性的联合概率分布。
根据本公开的实施例,所述概率节点是条件为空集的节点,所述条件概率节点是条件不为空集的节点。
根据本公开的实施例,如果所述当前节点N的条件为空集且所述当前节点N的属性范围中仅包括一个属性,或者如果所述当前节点N的条件不为空集且所述当前节点N的条件中的属性与所述当前节点N的属性范围中的属性均不相关,则确定所述当前节点为叶子节点。
根据本公开的实施例,所述确定子节点,包括确定所述子节点和所述子节点与所述子节点的父节点之间的关系,其中,根据所述子节点表示的联合概率分布,按照所述关系,能够确定所述子节点的父节点的联合概率分布。
根据本公开的实施例,所述根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点,包括:
将A-H作为所述根节点的第一子节点的属性范围,其中,H包括所述属性范围A中具有强相关性的多个属性;
将H作为所述根节点的第二子节点的属性范围,将A-H作为所述第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述根节点与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述根节点表示的联合概率分布。
图2示出了使用根据本公开实施例的数据处理方法对数据表建模的一个具体示例。
具体地,图2示出了属性集合中包含四个属性(即,水浊度(WT)、温度(TP)、浪高(WH)和风力(WF))的海洋气候观测数据表。由于是对整个数据表建模,所以可以将整个数据表的记录作为根节点N1的上下文T,将整个属性集合作为根节点N1的属性范围A。
在本公开中,PrX(Y)表示在上下文X中,属性范围Y中各属性的联合概率分布,PrX(Y|Z)表示在上下文X中,属性范围Y中各属性依赖于条件Z的联合概率分布。
因此,PrT(A)表示在上下文T中,属性范围A中各属性的联合概率分布,FSPN通过对具有不同相关性的属性使用不同方式建模来对联合PDF PrT(A)建模。FSPN的结构如图2中的右图所示。
首先,通过计算T中每对属性的相关性,发现仅WH和WF是强相关的。记H={WH,WF},L={WT,TP}。可以将PrT(A)无损地分解为子节点N2和子节点N3,N2是概率节点,其表示在N2的上下文T中,N2的属性范围L中各属性的联合概率分布,记为PrT(L),N3是条件概率节点,其表示在N3的上下文T中,N3的属性范围H中各属性依赖于条件L的联合概率分布,记为PrT(H|L),于是有PrT(A)=PrT(L)*PrT(H|L)。表示然后,以不同的方式来处理PrT(L)和PrT(H|L)。
L中的两个属性WT和TP在T上是不独立的。但是,如果将T中的所有记录通过节点N2根据TP是否大于60℉分解为上下文为T1的节点N4和上下文为T2的节点N5。则WT和TP在T1和T2上是独立的,进一步可以通过节点N4和N5划分为四个叶子节点L1、L2、L3和L4。这种情况称为上下文独立。由于可以使用两个简单的单变量PDF来对和建模。类似地,可以将建模为和
对于条件PDF PrT(H|L),不需要针对每个值l∈L存储PDF PrT(H|l)。相反,可以递归地将T划分为多个块T’,使得每个T’中的H独立于L,即,PrT’(H)=PrT’(H|L)。在本示例中,通过节点N6和N7递归地将T划分为四个块,得到四个叶子节点L5、L6、L7和L8。于是仅需要对每个块(例如Ta={TP<55°F,WT<0.9})中的PrT’(H)建模。这种情况称为上下文条件独立。H中的属性是强相关的。例如,WF和WH存在近似线性关系。因此,对每个块T’,可以通过多变量PDFPrT’(H)对H中的所有属性一起建模。
最后,基于数据表得到了包含15个节点的FSPN模型,其中7个内部节点代表划分数据的不同操作,8个叶子节点维护不同数据的PDF。
FSPN模型的定义
令F表示对联合PDF PrT(A)建模的FSPN模型。F中的每个节点N可以表示为4元组N={AN,CN,TN,ON},其中节点N主要表示TN中所有记录的条件AN、CN、TN分别称为节点N的属性范围、条件和上下文。如果则N表示即节点N的上下文TN中,节点N的属性范围AN中各属性依赖于节点N的条件的联合概率分布,N称为概率节点。否则,如果则N表示即节点N的上下文TN中,节点N的属性范围AN中各属性依赖于节点N的条件CN的联合概率分布,N称为条件概率节点。F的根节点是概率节点,其中AN=A,TN=T。
ON表示节点N产生其子节点的操作。对于任意内部节点,ON可以是分解、相加和相乘中的一种。下面对ON进行具体说明。
2)相加:该操作划分上下文TN中的元组,从而分别为概率节点或条件概率节点产生潜在的上下文独立性或上下文条件独立性。令T1,T2,……Tn为TN的具有权重w1,w2,……wn的划分上下文。相加操作产生子节点Ni=(AN,CN,Ti,Oi),使得根据本公开的实施例,wi=|Ti|/|TN|,其中|X|表示上下文X中的记录数量。很明显,节点N的所有子节点的类型与节点N的类型相同,即,如果节点N是概率节点,则其所有子节点也是概率节点,如果节点N是条件概率节点,则其所有子节点也是条件概率节点。
在图2所示的示例中,FSPN包含一个分解节点,四个相加节点,两个相乘节点和八个叶子节点,其中有八个概率节点和七个条件概率节点。
图3示出了FSPN模型、SPN模型、AR模型和BN模型之间的关系。参考图3可以看出:
因此,FSPN能够产生上述所有模型。此外,FSPN吸收了AR和SPN的优点,具体地:
1)与AR类似,FSPN并不假设属性之间是相互独立的。分解节点是无损操作,保持了模型的精度。与SPN不同,FSPN仅需要无损地划分强弱相关属性。
2)与SPN类似,FSPN可以使用局部(条件)上下文独立性来加速概率推导。与AR不同,仅通过一次遍历就能推导FSPN的范围查询的概率。
如图3所示,FSPN的精度和效率都远好于其他模型。
通过以从上到下的方式识别用于分解联合PDF的不同操作来构造FSPN。递归地针对每个节点N产生其子节点。节点N的输入包括属性范围AN、属性条件CN、记录上下文TN和属性子集属性子集IN记录CN中独立于AN的属性。
1)叶子节点的处理:
根据本公开的实施例,如果所述当前节点N的条件为空集且所述当前节点N的属性范围中仅包括一个属性,或者如果所述当前节点N的条件不为空集且所述当前节点N的条件中的属性与所述当前节点N的属性范围中的属性均不相关,则确定所述当前节点为叶子节点。
具体地,如果节点N的|AN|=1,则节点N是概率叶子节点。或者,如果节点N的IN=CN,则节点N是条件概率叶子节点。调用PDFModel过程对建模。PDFModel可以应用各种现有工具来对单变量和强相关多变量PDF建模。根据本公开的实施例,选择直方图对非连续属性建模,选择参数高斯混合函数对连续属性建模。根据本公开的实施例,非连续属性的取值范围是集合中的可枚举的非连续值,比如“性别”是非连续属性,其取值是“男”或“女”,“年龄”是非连续属性,其取值可以是范围在0~120内的整数。连续属性的取值是不可枚举的,可以是某个范围内的任意值,例如“水流量”是连续属性,其取值可以是2.31356立方米。
如果节点N不是叶子节点,则确定其操作ON。相关性计算过程计算两个属性之间的相关值。根据本公开的实施例,可以使用第一预设阈值τh和第二预设阈值τl分别用于过滤强相关和独立属性。例如,如果两个属性之间的相关值大于等于第一预设阈值τh,则认为这两个属性具有强相关性。如果两个属性之间的相关值小于第一预设阈值但大于等于第二预设阈值τl,则认为这两个属性具有弱相关性,如果两个属性之间的相关值小于第二预设阈值τl,则认为这两个属性彼此独立。
2)概率节点的处理:
根据本公开的实施例,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中的多个属性具有强相关性:
将AN-HN作为所述当前节点N的第一子节点的属性范围,其中,HN包括所述属性范围AN中具有强相关性的多个属性;
将HN作为所述当前节点N的第二子节点的属性范围,将AN-HN作为所述当前节点N的第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述当前节点N与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
根据本公开的实施例,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中属性不具有强相关性但其中的多个但并非全部属性具有弱相关性:
将属性范围AN划分为多个属性范围A’j,A’j中的属性具有弱相关性或包含单个属性,不同A’j中的属性是彼此独立的;
将A’j作为所述当前节点N的第j个概率子节点的属性范围;
将所述当前节点N的上下文TN中对应于A’j的部分作为所述第j个概率子节点的上下文,
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
根据本公开的实施例,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中全部属性具有弱相关性:
通过聚类方法将TN划分为多个上下文Ti,作为所述当前节点的第i个概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
具体地,根据本公开的实施例,如果节点N是概率节点,计算AN中所有属性两两之间的相关性,通过两个无向图Gh和Gl对计算得到的相关性进行编码。无向图Gh和Gl的顶点是AN中的所有属性。在无向图Gh中,如果两个属性f、g之间的相关性大于等于第一预设阈值τh,则属性f对应的顶点和属性g对应的顶点通过边相互连接。在无向图Gl中,如果两个属性f、g之间的相关性大于等于第二预设阈值τl,则属性f对应的顶点和属性g对应的顶点通过边相互连接。很明显,如果Gh中有边,则每个连通分量代表一组强相关属性。连通分量是由彼此直接相连或经由一个或多个顶点相连的顶点构成的。选择Gh中最大的连通分量,即,包含顶点最多的连通分量作为HN,对节点N使用分解操作,对节点N添加属性范围为AN-HN的概率子节点和属性范围为HN,条件为AN-HN的条件概率子节点。
如果Gh没有边,则检查Gl。如果Gl不是一个连通的整体,则令A’1,A’2,……,A’m表示Gl中所有连通分量和独立顶点的相应属性集合。不同的A’j中的属性是彼此独立的,因此对节点N使用相乘操作,对其添加m个子节点,第j个子节点对应于A’j。对于每个j,将TN投影为TN[A’j],即TN中具有属性集合A’j的部分。
否则,如果Gl是一个连通的整体,则对节点N使用相加操作,划分TN中的记录以产生上下文独立性。可以应用例如聚类方法(例如k-means方法)将TN划分为T1,T2,……,Tn。聚类得到的同一簇中的记录彼此类似,因此对应的PDF变得更简单,于是,属性更有可能彼此独立。对Ti所对应的子节点应用权重wi=|Ti|/|TN|,其中,|Ti|表示Ti中记录的数量,|TN|表示TN中记录的数量。
3)条件概率节点的处理:
根据本公开的实施例,当所述当前节点N是条件概率节点时,所述根据在所述当前节点N的上下文TN中,所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点,包括:
以减小所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性的方式,将TN划分为多个上下文Ti,作为所述当前节点的第i个条件概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个条件概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的条件概率子节点之间的关系为:基于所述当前节点N的条件概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
具体地,如果N是条件概率节点,计算AN中属性与CN-IN中属性两两之间的相关性。令IN初始为空集,令c∈CN-IN表示满足的属性,其中Cor(s,c)表示s与c之间的相关性,认为c独立于AN,将符合上述条件的c加入IN。划分操作逐渐减小AN和CN之间的相关性,节点N的后代中c依赖于AN的可能性较小。如果IN=CN,则将节点N作为叶子节点处理。否则,使用相加操作进一步划分TN中的记录,以产生上下文条件独立性。通过GridSplit方法进行划分操作,返回包含属性CN-IN的表T1,T2,……,Tn。然后,对Ti所对应的子节点应用权重wi=|Ti|/|TN|,其中,|Ti|表示Ti中记录的数量,|TN|表示TN中记录的数量。
下面描述GridSplit方法的细节。注意,为了概率推导的方便,要求每个簇Ti中的属性值必须在一个网格中。为此,GridSplit方法应用启发式双路分割算法。每次选择属性X∈CN-IN和X的值区间中的一个属性值x,将TN划分为两部分。例如,在图2的节点N3中,选择属性TP和值60℉来划分所有记录。一般地,根据以下方式来选择X和x。对于每个属性X∈CN-IN,令KX为预定义的超参数。选择KX-1个点xi来平均划分X的值区间。对于每个xi,尝试将TN划分为两个部分。令m=maxs,cCor(s,c),其中s∈AN,c∈CN-IN,m表示AN中的属性与CN-IN中的属性的最大相关性。令和分别表示通过xi产生的左簇和右簇的值m。可以使用max来代表点xi的划分质量。很明显,的值越小,每个簇中CN-IN中属性独立于AN的可能性越大。挑选使的值最小的属性X和点xi来划分记录TN的上下文。
注意,根据本公开实施例的FSPN构造算法是很通用的框架,可以根据不同需求容易地替换和开发新的相关性度量、聚类和划分方法。
图4示出了根据本公开实施例的数据处理方法的流程图。
如图4所示,根据本公开实施例的数据处理方法,包括步骤S401~S404。
在步骤S401,获取目标查询请求;
在步骤S402,根据所述目标查询请求确定目标数据表;
在步骤S403,获取所述目标数据表的联合概率分布模型;
在步骤S404,使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
根据本公开的实施例,图4所示的方法可以用于确定目标数据表中存在与目标查询请求匹配的记录的概率。
根据本公开的实施例,根据所述目标数据表中存在与所述目标查询请求匹配的记录的概率和所述目标数据表中记录的数量,估计所述目标数据表中与所述目标查询请求匹配的记录的数量。
根据本公开的实施例,所述根据所述目标查询请求确定目标数据表,包括:
确定与所述目标查询请求相关的多个目标数据表;
根据所述目标查询请求连接所述多个目标数据表得到所述目标数据表。
根据本公开的实施例,所述目标查询请求的查询范围指定所述目标数据表中的一个或多个属性的取值范围,所述使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围;
根据所述叶子节点的查询范围确定所述叶子节点对应的概率值;
根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
根据本公开的实施例,所述基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围,包括:
将所述目标查询请求的查询范围作为根节点的查询范围;
根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围。
下面具体描述使用联合概率分布模型确定目标数据表中存在与目标查询请求匹配的记录的概率的方法。
使用FSPN模型进行概率推导
给定查询Q和表示PrT(A)的FSPN模型F,下面描述通过F推导PrT(Q),其中,PrT(Q)表示在上下文T中存在满足查询Q的查询条件的记录的概率。
在FSPN上,概率推导通常遵循分解-累加过程。首先将查询的范围按照从上到下的方式在每个节点上划分为不同的块,然后以从下到上的方式根据操作的语义逐块收集概率值。下面参考图2描述这个过程。
根据本公开的实施例,每个查询Q形成属性空间中的一个超立方体,可以将其记为RQ=<LQ,UQ>,其中LQ=(L1,L2,…,Lk),UQ=(U1,U2,…,Uk)是两个表示约束的极点。在本示例中,设置查询Q,使得LQ=(0.6,35,2.3,10.8),UQ=(1.4,65,3.7,11.5)。
在FSPN模型F的每个的条件概率节点N上,还要求TN中条件属性CN的所有记录的范围形成超立方体。这是通过FSPN构造方法确保的。将TN中条件属性CN的所有记录的范围形成的超立方体记为其中和是两个极点。对于每个属性Ai∈CN,将和中的与该属性Ai相对应的第i个元素分别设置为TN中属性Ai的最大和最小属性值。否则,如果则将将和中的与该属性Ai相对应的第j个元素分别设置为null(空)。例如,在节点L5,两个极点是在叶子节点上,表示上下文条件独立性成立的有效范围。在中有
给定具有属性范围AN的节点N上的超立方体R,将AN满足R的概率记为令R1∩R2表示两个超立方体的重叠超立方体。为了获得首先在F的根上放置查询范围RQ。然后,可以根据以下方式递归地分解查询范围并累计概率值:
1)概率节点的规则:
根据本公开的实施例,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的概率节点且所述节点不是分解节点时,所述节点的子节点的查询范围为R,其中,当所述节点的子节点包括概率节点和条件概率节点时,所述节点称为分解节点。
具体地,当接收到范围R时,
2)分解节点和条件概率节点的规则:
根据本公开的实施例,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的分解节点时,所述节点的条件概率子节点的查询范围为R,根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围。
根据本公开的实施例,所述根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围,包括:
对于所述节点的条件概率子节点对应的每个叶子节点,求所述叶子节点的上下文条件独立性成立的有效范围与所述查询范围R的交集,根据所述交集确定所述节点的概率子节点的查询范围。
根据本公开的实施例,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的条件概率节点时,如果所述节点与所述节点的子节点之间的关系为基于所述节点的子节点表示的联合概率分布的和得到所述节点表示的联合概率分布,则所述节点的子节点的查询范围为R。
规则IV:对于具有概率子节点NL和条件概率子节点NR的分解节点N,当接收到范围R时,将R推到NR,然后收集所有叶子节点返回的范围 和属性ANR上的对应概率Pr(R1),Pr(R2),……,Pr(Rd)。对于每个1≤z≤d,将推到NL并获得属性上的概率然后,返回
规则V:对于具有子节点N1,N2,……Nn的相加节点N,当接收到范围R时,将范围R推到每个子节点Nj,然后收集各个子节点产生的范围和概率。针对子节点N1,N2,……Nn中的每个子节点,将子节点Nj产生的概率与权重wj相乘得到加权概率,向父节点返回针对子节点N1,N2,……Nn收集的所有范围和所述加权概率。
根据本公开的实施例,所述根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
根据所述叶子节点对应的概率值以及所述联合概率分布模型中节点与子节点之间的关系,按照从叶子节点向根节点的方向递推得到所述根节点对应的概率值。
对示例性查询,将范围RQ放到根分解节点N1。首先,通过规则IV,将范围RQ推到节点N1的右子节点N3。然后,根据规则V,将范围RQ递归地推到叶子节点L5、L6、L7和L8。然后,每个叶子节点向节点N3返回根据规则VI得到的交互范围和概率。例如,对于叶子节点L5,交互范围是0.6≤WT≤0.9,55≤TP≤65,而2.3≤WH≤3.7,10.8≤WF≤11.5的概率是0.4*0.5*0.4=0.08。然后,N1收集四个范围Ra、Rb、Rc、Rd及其加权概率0.08、0.06、0.24和0.48。然后,将四个范围Ra、Rb、Rc、Rd分别推到叶子节点N2。以Ra为例。根据规则I和II,将Ra推到叶子节点L1、L2、L3和L4。在节点L1和L2上,0.6≤WT≤0.9且55≤TP≤65的概率分别是0.2和0.6。于是,获得Ra的概率是0.3*(0.2*0.6)+0.7*(0.1*0.3)=0.057。Rb、Rc、Rd的概率分别是0.3、0.2、0.1。通过求和,返回概率Pr(Q)=0.057*0.08+0.06*0.3+0.24*0.2+0.48*0.1=0.11856。
FSPN的推导算法按照上述规则,以递归的方式工作。FSPN的推导算法以节点N和推到节点N上的范围R作为输入。为了获得查询Q在FSPN上的PrT(Q),可以在F的根节点N上调用FSPN推导算法。
下面说明FSPN推导算法的时间和空间复杂度。假设在每个叶子节点上,可以以O(1)时间,通过例如累积直方图或高斯混合函数计算任一范围的概率。令n为FSPN中的节点数,f为FSPN中的分解节点数,d为所有分解节点的右枝的平均叶子节点数。根据规则IV,在每个叶子节点上计算的范围的最大数量为O(fd)。根据其他规则,FSPN推导算法的时间和空间复杂度最多是O(fdn)。该复杂度是很低的,因为首先,FSPN模型的结构很简洁,因此n很小。特别地,f通常是非常小的数,接近FSPN中的O(1),因此fd也不是一个很大的值。其次,通过使用GPU,可以并行计算每个节点上的一组范围,因此FSPN上推导的实际时间成本接近O(n)。与具有n’个节点的SPN相比,由于n<<n’,FSPN上的推导速度要快得多。
图5A示出了根据本公开实施例的数据处理方法的流程图。
如图5A所示,根据本公开实施例的数据处理方法包括步骤S501~S505。
在步骤S501,将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
在步骤S502,获取查询请求;
在步骤S503,确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
在步骤S504,将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
在步骤S505,根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率。
根据本公开的实施例,根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
图5B示出了根据本公开实施例的数据处理方法的流程图。
如图5B所示,根据本公开实施例的数据处理方法包括步骤S506~S509。
在步骤S506,获取查询请求;
在步骤S507,根据所述查询请求确定多个不同查询策略,每个查询策略包括与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
在步骤S508,确定每个查询策略的基数估计值,包括:
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量,作为所述查询策略的基数估计值;
在步骤S509,将基数估计值最小的查询策略作为优选查询策略。
通过根据本公开实施例的数据处理方法,可以针对接收到的查询请求,确定不同查询策略,针对每种查询策略确定其基数估计值,基数估计值最小的查询策略对应于优选的查询策略,根据优选查询策略执行查询请求,可以有效降低查询的时间成本,提高查询效率。
根据本公开的实施例,所述方法还包括:
根据所述查询请求,在预先确定的多个数据表组中选择所述目标数据表组,根据所述目标数据表组确定相应的子查询请求;或者
根据所述查询请求确定所述子查询请求,根据所述子查询请求确定与所述子查询请求相对应的目标数据表组。
根据本公开的实施例,可以根据已知的可能的查询请求或历史数据、经验数据等,预先确定多个数据表组,在接收到查询请求时,从预先确定的数据表组中选择目标数据表组,并根据目标数据表组中的数据表,确定相应的子查询请求。以此方式,可以充分利用历史和经验数据,提高查询效率。或者,可以在接收到查询请求之后,根据预设规则生成子查询请求,根据子查询请求涉及的数据表分别生成子查询请求对应的目标数据表组。以此方式,可以灵活确定目标数据表组,适应不同查询请求的需要。
根据本公开的实施例,在同一目标数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同目标数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性。根据本公开实施例的数据处理方法可以用于针对多个表进行联合查询时的情况进行基数估计,该方法也称为FLAT(Fast Lightweight andAccurate Cardinality Estimation,快速轻量级精确基数估计)算法。
FLAT是基于FSPN建立的,能够支持数据库中多个表的联合查询。首先描述FLAT的主框架,然后描述FLAT的两个基本策略。
FLAT的主框架
基数估计的基本公式是:
Card(t,Q)=Prt(Q)·|t| (1)
其中,Card(t,Q)是查询Q在表t中的基数估计值,即表t中符合查询Q的查询条件的记录数量,|t|是表t的记录数量,Prt(Q)是查询Q在表t中的命中概率,即表t中存在符合查询Q的查询条件的记录的概率。
给定数据库D,D中的所有信息都无损失地包含在数据库D的全外连接表DD中。为了在D上应用基数估计的统计模型,已有技术提供了两种方法:
1)在DD上训练单例模型(singleton model)模型M,使用模型M来处理对D的任意查询。该方法很简单,但牺牲了训练和推导效率。这是因为训练样本大小与DD的大小成正比,其随着DD中表的数量而呈指数增加。同时,无论查询中包含多少个表,该方法都必须遍历整个M以进行概率推导。
2)选择多个子集并针对每个DD’训练模型M’。通过组合多个M’上的概率获得结果。该方法更加有效率和灵活。但是,其仅限于支持单个一对多连接,例如表之间的主-外键(primary-foreign key)连接。在其他多对多连接情况下,例如星型连接情况下,该方法是不适用的。因此,存在改进的空间。
FLAT方法提供了更通用和更准确的方案,其对于连接类型不作限制。下面对FLAT方法的通用过程进行描述。
离线处理:给定具有多个表的数据库D,首先根据所述多个表的连接关系将数据库D组成树状结构J,然后根据J训练多个FSPN。J中的每个节点是D中的一个表,J中的每条边(t,p)表示表t和表p之间的可能连接关系。所述连接不局限于主-外键连接,而是可以是任意算子,即任意属性对之间的相等或不相等关系。可以根据对象对数据库组织结构的先验知识来设置表之间的连接关系,或者可以基于查询任务确定表之间的连接关系。可以很容易地维护多个树以处理表之间的不同类型的连接。同时,可以对同一表进行复制以表示树状结构中的自连接和循环连接。
对于J中的每条边(t,p),可以一起学习t和p,或者分别处理t和p。应用基于相关性的测试方法来决定哪种方法更合适。对于每个(t,p),对全外连接表中的一些记录进行采样,检查t和p之间的成对属性的相关性。如果表t和p的一些属性是相关的,则优选地一起学习t和p。因此,在检查所有边之后,对于与邻居p相关的每个节点t,将{t,p}迭代地收缩为单个节点t。然后,J仍旧是树状结构,J中的每个节点t表示表的集合,每个表的集合包含一个或多个表。针对每个节点t,在节点t的所有表的外连接表TT上学习FSPN模型FT。如果TT的大小超过了存储器大小,则对TT中的一些记录进行采样并基于样本训练TF。
图6给出了具有四个表的示例性数据库及其连接关系。表TA和表TB之间在属性X上的连接关系是多对多连接。利用三个节点A、C和D为四个表建立树状结构。由于表TA和表TB是强相关的,将表TA和表TB合并为节点A,节点A对应表TA和表TB的全外连接表为节点A在表上建立FSPN。
在线处理:由于不同节点上的表是弱相关的,可以认为不同节点上的查询的概率是相互独立的。因此,在线概率推导遵循分治法(Divide And Conquer)框架。对于每个查询Q,令Q[t]表示对节点t中的表的子查询。使用FSPN模型Ft计算概率PrTT(Q[t])。然后,将所有的PrTT(Q[E])组合在一起得到最终结果。
下面分别说明子查询处理和子查询组合的细节。
子查询处理
给定节点t中的表上的查询Q,下面说明如何应用FSPN模型Ft计算概率PrTT(Q)。由于Ft是在TT上训练的,存在两方面的困难:第一,Q可能使用节点t的表之间的不同连接,例如内连接,这种查询称为连接相关查询(Join-Contracted Query)。第二,Q可能仅涉及节点t中的表的一部分,这种查询称为表相关查询(Table-Contracted Query)。下面说明如何支持这两种查询。
对于节点t中的任意一对连接表P、R,P中的每个记录可以与R中的多个记录连接,R中的每个记录也可以与P中的多个记录连接。在TT中添加两个附加属性FP,R和FR,P。对于P中的任意一条记录,其对应的FP,R值表示R中可以与P中的该记录连接的记录的数量。对于R中的任意一条记录,其对应的FR,P表示P中可以与R中的该记录连接的记录的数量。FP,R=0表示P中的记录在R中没有匹配的记录。很明显,对于从P到R的主-外键连接,FR,P仅可以是0或1。将FP,R和FR,P分别称为P和R的分散系数。在FSPN模型Ft中,将所有分散系数列与其他属性一起训练。例如,在图6的节点A中,添加列FA,B表示从表TA到表TB的散射系数,添加列FB,A表示从表TB到表TA的散射系数。然后,可以分如下三种情况I、II、III来计算PrTT(Q):
情况I:
根据本公开的实施例,所述确定所述目标数据表组的相应子查询请求,包括:
根据所述查询请求确定所述目标数据表组中的数据表的连接关系;
根据所述查询请求和所述连接关系,确定所述子查询请求,即下文的Q’。
具体地,在情况I(连接相关查询)中:当查询Q以不同连接方式涉及节点t中的所有表时,令TT’表示基于Q确定的最终连接表。设置另一查询C:对于节点t中的任意连接表对P、R,如果Q对内连接进行查询,则需要移除P的记录中在Q中没有匹配记录的所有记录,以及移除Q的记录中在P中没有匹配记录的所有记录,即,移除FP,R=0和FR,P=0的记录。因此,在C中添加约束FP,R>0和FR,P>0。类似地,对于左外连接在C中添加约束FR,P>0,对于右外连接在C中添加约束FP,R>0。令Q’=Q AND C,有:
Card(TT’)=|TT|·PrTT(Q’)=|TT|·PrTT(Q AND C) (2)
其中,Card(TT’)是查询Q在节点t中的基数估计值,即节点t中符合查询Q的查询条件的记录数量,|TT|是节点t中的所有表的全外连接表TT的记录数量,PrTT(Q’)是查询Q’在全外连接表TT中的命中概率,即全外连接表TT中存在符合查询Q’的查询条件的记录的概率,PrTT(Q AND C)是查询Q AND C在全外连接表TT中的命中概率,即全外连接表TT中存在符合查询Q AND C的查询条件的记录的概率。
情况II:
在情况II(表相关查询)中:由于单个表中的记录在其全外连接表TT中可能出现多次,需要通过去掉这种情况的影响来校正基数估计值。令U={(P1,R1),(P2,R2),…(Pd,Rd)}表示Q在节点t中被涉及的所有连接关系,其中Pj和Rj都是节点t中的表,则令
Card(TT\W,Q)=|TT|·PrTT(Q’) (4)
其中,TT\W表示从外连接表TT中排除了查询Q未涉及的连接关系所对应的内容后得到的表。
对于图6中表TB上的查询Q2,可以通过公式(3)中列FB,A对基数估计值进行校正,以获得PrTT(Q2’)=2/7+(2/7)/2=3/7,因此基数估计值是3。
根据本公开的实施例,所述确定所述目标数据表组的相应子查询请求,包括:
确定所述目标数据表组中被所述查询请求涉及的多个数据表;
根据所述查询请求、所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述一个或多个目标数据表组的全外连接表NN中的出现次数,确定所述相应子查询请求,即下文的
根据本公开的实施例,根据所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述全外连接表NN中的出现次数,修正所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率。
给定查询Q,令N={t1,t2,…,tn}表示J中被Q涉及的所有节点。在对每个节点ti处理子查询Qi=Q[ti]并获得概率PrTTi(Qi)之后,需要将概率PrTTi(Qi)组合以得到最终结果。假设不同节点上的概率相互独立,因此有:
其中,NN表示N中所有表的全外连接表。
其中,f1,f2,……,fd用于校正ti中未被Qi涉及的表的分散影响,f缩减将TTi扩展到NN引起的分散影响。
然后,将所有PrNN(Qi)相乘并获取Q的基数估计:
Card(NN,Q)=|NN|·PrNN(Q) (7)
根据本公开的实施例,根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率PrNN(Q)和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
例如,考虑图6中查询Q3,其涉及三个节点A、C和D。首先,对节点A上的子查询Q3[A],需要使用列FBA缩减对TB的分散影响,使用列FA,{CD}缩减从到的分散影响。根据公式(6),可以得到Pr(Q3[A])=1*4/(4+4)=1/2。类似地,可以得到Pr(Q3[C])=1/2,Pr(Q3[D])=1/2。于是基数估计值为8*(1/8)=1。
分散系数列构建:下面描述如何为每个节点t和每个可能的M构建分散系数列FT,{M}。M可以看作从根t扩展的子树。给定M的结构,可以按照从下向上的方式计算Ft,{M}。
1.对子树M中的每个叶子节点L,针对所有记录设置列FL=1。
2.对M中的每个非叶子节点,针对每个记录r,有:
FO[r]=∏H∈Children(O)∑t′∈H joining rFH[t′] (8)
然后,可以得到Ft,{M}=Ft。基于此得到构造Ft,{M}的规则:
规则I:对于J中的所有节点t,针对所有记录设置Ft,{t}=1,设置k=1。
规则II:从k=1,针对每个节点t和每个以t为根且包含k个节点的M,对于每个能够与M连接的节点S,令M’=M∪{S},计算Ft,{M’}。注意,由于M是树状结构,从S到t仅存在一条路径P=(P0,P1,…,Pn),其中P0=S,Pn=t。令F(0)=FS,{S},对所有1≤i≤n,令
其中,Bi表示N中与Pi连接但不在路径P上的所有表。由于|Bi|<k,所以列已经被计算并存储在表PPi中,表PPi是节点Pi中所有表的外连接表。根据公式(8),可以得到在扫描|M|=k的所有M之后,k=k+1。
注意,计算分散系数列的过程很高效,因为树J的节点数量|J|很小。同时,计算分散系数列的过程容易在不同节点上并行实现。
参考图6,对于节点A,首先通过分别扫描TC和TD中的元素来计算列FA,{C}和FA,{D}。然后,从FA,{C}扩展到FA,{C,D}。此时,有P0=D,P1=A。对于i=1,B1=C,通过公式(9)得到FA,{C,D}=F(1)。FA,{CD}表示节点A中的记录在从节点A到节点C和D的星形连接中的分散系数。节点C中的列FC,{A}和FC,{AD}以及节点D中的列FD,{A}和FD,{AC}可以以类似的方式计算。但是,FC,{AD}表示节点C中的记录在从节点C到节点A到D的链式连接中的分散系数。注意,列FC,{AD}和FD,{AC}中的值是不同的。
根据本公开实施例还提供了一种数据处理方法,包括:
获取目标查询请求,所述目标查询请求指定至少一个对象属性的取值范围;
根据所述目标查询请求确定目标数据表,所述目标数据表包含多个对象记录和所述至少一个对象属性;
使用上文所述的方法,获取所述目标数据表的联合概率分布模型;
使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率;
根据所述目标数据表的记录数量和所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率,确定符合所述目标查询请求的对象记录数量。
本公开实施例还提供了一种数据处理方法,包括:
将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
获取查询请求,所述查询请求指定至少一个对象属性的取值范围;
确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求,所述一个或多个目标数据表组中的数据表包含多个对象记录和所述至少一个对象属性;
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的对象记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的对象记录的概率和所述全外连接表的记录数量,确定所述全外连接表NN中与所述查询请求匹配的对象记录的数量。
根据本公开的实施例,所述对象是用户,所述目标查询请求包含用户属性的取值范围。
根据本公开实施例的数据处理方法可以用于估计目标数据表中存在与所述目标查询请求匹配的用户记录的数量。该实施例可用于估计具有预设用户属性的用户数量,从而为广告或商品的精准投放提供数据支持。
图7示出根据本公开的实施例的数据处理装置700的结构框图。其中,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。
如图7所示,一种数据处理装置700,包括:
第一获取模块701,被配置为获取数据表;
第一确定模块702,被配置为根据所述数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;
第二获取模块703,被配置为根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;
第二确定模块704,被配置为将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;
重复模块705,被配置为将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;
生成模块706,被配置为基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述数据表的联合概率分布模型。
根据本公开的实施例,所述确定子节点,包括确定所述子节点的属性范围、条件、上下文;
所述将所述子节点作为当前节点N,包括将所述子节点的属性范围、条件、上下文作为所述当前节点的属性范围、条件、上下文;
所述子节点的属性范围是所述子节点的父节点的属性范围的子集,所述子节点的条件是所述子节点的父节点的属性范围的子集;
所述子节点的上下文是所述上下文T的子集;
当所述子节点是条件概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性依赖于所述子节点的条件的联合概率分布;当所述子节点是概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性的联合概率分布。
根据本公开的实施例,所述概率节点是条件为空集的节点,所述条件概率节点是条件不为空集的节点。
根据本公开的实施例,所述装置700,还包括:
第三确定模块707,被配置为如果所述当前节点N的条件为空集且所述当前节点N的属性范围中仅包括一个属性,或者如果所述当前节点N的条件不为空集且所述当前节点N的条件中的属性与所述当前节点N的属性范围中的属性均不相关,则确定所述当前节点为叶子节点。
根据本公开的实施例,所述确定子节点,包括确定所述子节点和所述子节点与所述子节点的父节点之间的关系,其中,根据所述子节点表示的联合概率分布,按照所述关系,能够确定所述子节点的父节点的联合概率分布。
根据本公开的实施例,所述根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点,包括:
将A-H作为所述根节点的第一子节点的属性范围,其中,H包括所述属性范围A中具有强相关性的多个属性;
将H作为所述根节点的第二子节点的属性范围,将A-H作为所述第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述根节点与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述根节点表示的联合概率分布。
根据本公开的实施例,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中的多个属性具有强相关性:
将AN-HN作为所述当前节点N的第一子节点的属性范围,其中,HN包括所述属性范围AN中具有强相关性的多个属性;
将HN作为所述当前节点N的第二子节点的属性范围,将AN-HN作为所述当前节点N的第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述当前节点N与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
根据本公开的实施例,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中属性不具有强相关性但其中的多个但并非全部属性具有弱相关性:
将属性范围AN划分为多个属性范围A’j,A’j中的属性具有弱相关性或包含单个属性,不同A’j中的属性是彼此独立的;
将A’j作为所述当前节点N的第j个概率子节点的属性范围;
将所述当前节点N的上下文TN中对应于A’j的部分作为所述第j个概率子节点的上下文,
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
根据本公开的实施例,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中全部属性具有弱相关性:
通过聚类装置将TN划分为多个上下文Ti,作为所述当前节点的第i个概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
根据本公开的实施例,当所述当前节点N是条件概率节点时,所述根据在所述当前节点N的上下文TN中,所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点,包括:
以减小所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性的方式,将TN划分为多个上下文Ti,作为所述当前节点的第i个条件概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个条件概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的条件概率子节点之间的关系为:基于所述当前节点N的条件概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
图8示出根据本公开的实施例的数据处理装置800的结构框图。其中,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。
如图8所示,一种数据处理装置800,包括:
第三获取模块801,被配置为获取目标查询请求;
第四确定模块802,被配置为根据所述目标查询请求确定目标数据表;
第四获取模块803,被配置为获取所述目标数据表的联合概率分布模型;
第一估计模块804,被配置为使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
根据本公开的实施例,所述目标查询请求的查询范围指定所述目标数据表中的一个或多个属性的取值范围,所述使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围;
根据所述叶子节点的查询范围确定所述叶子节点对应的概率值;
根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
根据本公开的实施例,所述基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围,包括:
将所述目标查询请求的查询范围作为根节点的查询范围;
根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围。
根据本公开的实施例,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的概率节点且所述节点不是分解节点时,所述节点的子节点的查询范围为R,其中,当所述节点的子节点包括概率节点和条件概率节点时,所述节点称为分解节点。
根据本公开的实施例,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的分解节点时,所述节点的条件概率子节点的查询范围为R,根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围。
根据本公开的实施例,所述根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围,包括:
对于所述节点的条件概率子节点对应的每个叶子节点,求所述叶子节点的上下文条件独立性成立的有效范围与所述查询范围R的交集,根据所述交集确定所述节点的概率子节点的查询范围。
根据本公开的实施例,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的条件概率节点时,如果所述节点与所述节点的子节点之间的关系为基于所述节点的子节点表示的联合概率分布的和得到所述节点表示的联合概率分布,则所述节点的子节点的查询范围为R。
根据本公开的实施例,所述根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
根据所述叶子节点对应的概率值以及所述联合概率分布模型中节点与子节点之间的关系,按照从叶子节点向根节点的方向递推得到所述根节点对应的概率值。
根据本公开的实施例,所述装置800还包括:
第二估计模块805,被配置为根据所述目标数据表中存在与所述目标查询请求匹配的记录的概率和所述目标数据表中记录的数量,估计所述目标数据表中与所述目标查询请求匹配的记录的数量。
根据本公开的实施例,所述根据所述目标查询请求确定目标数据表,包括:
确定与所述目标查询请求相关的多个目标数据表;
根据所述目标查询请求连接所述多个目标数据表得到所述目标数据表。
图9示出根据本公开的实施例的数据处理装置900的结构框图。其中,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。
如图9所示,一种数据处理装置900,包括:
第一分组模块901,被配置为将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
第五获取模块902,被配置为获取查询请求;
第五确定模块903,被配置为确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
第三估计模块904,被配置为将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
第六确定模块905,被配置为根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率。
根据本公开的实施例,所述确定所述目标数据表组的相应子查询请求,包括:
根据所述查询请求确定所述目标数据表组中的数据表的连接关系;
根据所述查询请求和所述连接关系,确定所述子查询请求。
根据本公开的实施例,所述确定所述目标数据表组的相应子查询请求,包括:
确定所述目标数据表组中被所述查询请求涉及的多个数据表;
根据所述查询请求、所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述一个或多个目标数据表组的全外连接表NN中的出现次数,确定所述相应子查询请求。
根据本公开的实施例,所述装置900还包括:
第一修正模块906,被配置为根据所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述全外连接表NN中的出现次数,修正所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率。
根据本公开的实施例,所述装置900,还包括:
第四估计模块907,被配置为根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
本公开实施例还提供了一种数据处理装置,包括:
第六获取模块,被配置为获取目标查询请求,所述目标查询请求指定至少一个对象属性的取值范围;
第七确定模块,被配置为根据所述目标查询请求确定目标数据表,所述目标数据表包含多个对象记录和所述至少一个对象属性;
第七获取模块,被配置为获取所述目标数据表的联合概率分布模型;
第五估计模块,被配置为使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率;
第八确定模块,被配置为根据所述目标数据表的记录数量和所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率,确定符合所述目标查询请求的对象记录数量。
本公开实施例还提供了一种数据处理装置,包括:
第二分组模块,被配置为将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
第八获取模块,被配置为获取查询请求,所述查询请求指定至少一个对象属性的取值范围;
第九确定模块,被配置为确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求,所述一个或多个目标数据表组中的数据表包含多个对象记录和所述至少一个对象属性;
第四估计模块,被配置为将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率;
第十确定模块,被配置为根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的对象记录的概率;
第十一配置模块,被配置为根据所述全外连接表NN中存在与所述查询请求匹配的对象记录的概率和所述全外连接表的记录数量,确定所述全外连接表NN中与所述查询请求匹配的对象记录的数量。
根据本公开的实施例,所述对象是用户。
本公开实施例还提供了一种数据处理装置,包括:
第九获取模块,被配置为获取查询请求;
第十一确定模块,被配置为根据所述查询请求确定多个不同查询策略,每个查询策略包括与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
第五估计模块,被配置为确定每个查询策略的基数估计值,包括:
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量,作为所述查询策略的基数估计值;
执行模块,将基数估计值最小的查询策略作为优选查询策略。
根据本公开的实施例,所述装置还包括:
第十二确定模块,被配置为根据所述查询请求,在预先确定的多个数据表组中选择所述目标数据表组,根据所述目标数据表组确定相应的子查询请求;或者
根据所述查询请求确定所述子查询请求,根据所述子查询请求确定与所述子查询请求相对应的目标数据表组。
根据本公开的实施例,在同一目标数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同目标数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性。
本公开还公开了一种电子设备,图10示出根据本公开的实施例的电子设备的结构框图。
如图10所示,所述电子设备1000包括存储器1001和处理器1002,其中,存储器1001用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器1002执行以实现根据本公开的实施例的方法。
图11示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
如图11所示,计算机系统1100包括处理单元1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行上述实施例中的各种处理。在RAM1103中,还存储有系统1100操作所需的各种程序和数据。处理单元1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。其中,所述处理单元1101可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行上述方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (41)
1.一种数据处理方法,包括:
获取目标查询请求;
根据所述目标查询请求确定目标数据表;
获取所述目标数据表的联合概率分布模型,包括:
根据所述目标数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;
根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;
将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;其中,在确定所述当前节点N的子节点时,通过将所述属性范围A中的多个属性按照强弱关联性分解开后,进行分别处理;
将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述目标数据表的联合概率分布模型;
使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
2.根据权利要求1所述的方法,其中:
所述确定子节点,包括确定所述子节点的属性范围、条件、上下文;
所述将所述子节点作为当前节点N,包括将所述子节点的属性范围、条件、上下文作为所述当前节点的属性范围、条件、上下文;
所述子节点的属性范围是所述子节点的父节点的属性范围的子集,所述子节点的条件是所述子节点的父节点的属性范围的子集;
所述子节点的上下文是所述上下文T的子集;
当所述子节点是条件概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性依赖于所述子节点的条件的联合概率分布;当所述子节点是概率节点时,所述子节点表示在所述子节点的上下文中,所述子节点的属性范围中各属性的联合概率分布。
3.根据权利要求2所述的方法,其中,所述概率节点是条件为空集的节点,所述条件概率节点是条件不为空集的节点。
4.根据权利要求2所述的方法,还包括:
如果所述当前节点N的条件为空集且所述当前节点N的属性范围中仅包括一个属性,或者如果所述当前节点N的条件不为空集且所述当前节点N的条件中的属性与所述当前节点N的属性范围中的属性均不相关,则确定所述当前节点为叶子节点。
5.根据权利要求1所述的方法,其中:
所述确定子节点,包括确定所述子节点和所述子节点与所述子节点的父节点之间的关系,其中,根据所述子节点表示的联合概率分布,按照所述关系,能够确定所述子节点的父节点的联合概率分布。
6.根据权利要求1所述的方法,其中,所述根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点,包括:
将A-H作为所述根节点的第一子节点的属性范围,其中,H包括所述属性范围A中具有强相关性的多个属性;
将H作为所述根节点的第二子节点的属性范围,将A-H作为所述第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述根节点与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述根节点表示的联合概率分布。
7.根据权利要求1所述的方法,其中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中的多个属性具有强相关性:
将AN-HN作为所述当前节点N的第一子节点的属性范围,其中,HN包括所述属性范围AN中具有强相关性的多个属性;
将HN作为所述当前节点N的第二子节点的属性范围,将AN-HN作为所述当前节点N的第二子节点的条件;
其中,所述第一子节点是概率节点,所述第二子节点是条件概率节点,所述当前节点N与所述第一子节点和所述第二子节点之间的关系为:基于所述第一子节点表示的联合概率分布与所述第二子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
8.根据权利要求1所述的方法,其中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,包括,如果所述当前节点N的属性范围AN中属性不具有强相关性但其中的多个但并非全部属性具有弱相关性:
将属性范围AN划分为多个属性范围A’j,A’j中的属性具有弱相关性或包含单个属性,不同A’j中的属性是彼此独立的;
将A’j作为所述当前节点N的第j个概率子节点的属性范围;
将所述当前节点N的上下文TN中对应于A’j的部分作为所述第j个概率子节点的上下文,
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的乘积得到所述当前节点N表示的联合概率分布。
9.根据权利要求1所述的方法,其中,当所述当前节点N是概率节点时,所述根据在所述当前节点N的上下文TN中所述当前节点N的属性范围AN中的属性两两之间的相关性,确定所述当前节点的子节点,还包括,如果所述当前节点N的属性范围AN中全部属性具有弱相关性:
通过聚类方法将TN划分为多个上下文Ti,作为所述当前节点的第i个概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的概率子节点之间的关系为:基于所述当前节点N的概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
10.根据权利要求1所述的方法,其中,当所述当前节点N是条件概率节点时,所述根据在所述当前节点N的上下文TN中,所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点,还包括:
以减小所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性的方式,将TN划分为多个上下文Ti,作为所述当前节点的第i个条件概率子节点的上下文;
将所述当前节点N的属性范围AN作为所述当前节点的第i个条件概率子节点的属性范围;
其中,所述当前节点N与所述当前节点N的条件概率子节点之间的关系为:基于所述当前节点N的条件概率子节点表示的联合概率分布的和得到所述当前节点N表示的联合概率分布。
11.根据权利要求1-10任一项所述的方法,其中,所述目标查询请求的查询范围指定所述目标数据表中的一个或多个属性的取值范围,所述使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围;
根据所述叶子节点的查询范围确定所述叶子节点对应的概率值;
根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
12.根据权利要求11所述的方法,其中,所述基于所述查询范围,确定所述联合概率分布模型中的叶子节点的查询范围,包括:
将所述目标查询请求的查询范围作为根节点的查询范围;
根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围。
13.根据权利要求12所述的方法,其中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的概率节点且所述节点不是分解节点时,所述节点的子节点的查询范围为R,其中,当所述节点的子节点包括概率节点和条件概率节点时,所述节点称为分解节点。
14.根据权利要求12所述的方法,其中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的分解节点时,所述节点的条件概率子节点的查询范围为R,根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围。
15.根据权利要求14所述的方法,其中,所述根据所述节点的条件概率子节点对应的叶子节点的上下文条件独立性成立的有效范围和所述查询范围,确定所述节点的概率子节点的查询范围,包括:
对于所述节点的条件概率子节点对应的每个叶子节点,求所述叶子节点的上下文条件独立性成立的有效范围与所述查询范围R的交集,根据所述交集确定所述节点的概率子节点的查询范围。
16.根据权利要求12所述的方法,其中,所述根据所述联合概率分布模型中节点的类型和所述节点的查询范围,确定所述节点的子节点的查询范围,包括:
当所述节点为查询范围为R的条件概率节点时,如果所述节点与所述节点的子节点之间的关系为基于所述节点的子节点表示的联合概率分布的和得到所述节点表示的联合概率分布,则所述节点的子节点的查询范围为R。
17.根据权利要求11所述的方法,其中,所述根据所述叶子节点对应的概率值,确定所述根节点对应的概率值作为所述目标数据表中存在与所述目标查询请求匹配的记录的概率,包括:
根据所述叶子节点对应的概率值以及所述联合概率分布模型中节点与子节点之间的关系,按照从叶子节点向根节点的方向递推得到所述根节点对应的概率值。
18.根据权利要求11所述的方法,还包括:
根据所述目标数据表中存在与所述目标查询请求匹配的记录的概率和所述目标数据表中记录的数量,估计所述目标数据表中与所述目标查询请求匹配的记录的数量。
19.根据权利要求11所述的方法,其中,所述根据所述目标查询请求确定目标数据表,包括:
确定与所述目标查询请求相关的多个目标数据表;
根据所述目标查询请求连接所述多个目标数据表得到所述目标数据表。
20.一种数据处理方法,包括:
将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
获取查询请求;
确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据权利要求1~19中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率。
21.根据权利要求20所述的方法,其中,所述确定所述目标数据表组的相应子查询请求,包括:
根据所述查询请求确定所述目标数据表组中的数据表的连接关系;
根据所述查询请求和所述连接关系,确定所述子查询请求。
22.根据权利要求20所述的方法,其中,所述确定所述目标数据表组的相应子查询请求,包括:
确定所述目标数据表组中被所述查询请求涉及的多个数据表;
根据所述查询请求、所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述一个或多个目标数据表组的全外连接表NN中的出现次数,确定所述相应子查询请求。
23.根据权利要求22所述的方法,还包括:
根据所述多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述全外连接表NN中的出现次数,修正所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率。
24.根据权利要求20所述的方法,还包括:
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
25.一种数据处理方法,包括:
获取目标查询请求,所述目标查询请求指定至少一个对象属性的取值范围;
根据所述目标查询请求确定目标数据表,所述目标数据表包含多个对象记录和所述至少一个对象属性;
获取所述目标数据表的联合概率分布模型,包括:根据所述目标数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;其中,在确定所述当前节点N的子节点时,通过将所述属性范围A中的多个属性按照强弱关联性分解开后,进行分别处理;将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述目标数据表的联合概率分布模型;
使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率;
根据所述目标数据表的记录数量和所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率,确定符合所述目标查询请求的对象记录数量。
26.一种数据处理方法,包括:
将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
获取查询请求,所述查询请求指定至少一个对象属性的取值范围;
确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求,所述一个或多个目标数据表组中的数据表包含多个对象记录和所述至少一个对象属性;
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据权利要求1~19中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的对象记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的对象记录的概率和所述全外连接表的记录数量,确定所述全外连接表NN中与所述查询请求匹配的对象记录的数量。
27.根据权利要求25或26所述的方法,其中,所述对象是用户。
28.一种数据处理方法,包括:
获取查询请求;
根据所述查询请求确定多个不同查询策略,每个查询策略包括与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
确定每个查询策略的基数估计值,包括:
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据权利要求1~19中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量,作为所述查询策略的基数估计值;
将基数估计值最小的查询策略作为优选查询策略。
29.根据权利要求28所述的方法,还包括:
根据所述查询请求,在预先确定的多个数据表组中选择所述目标数据表组,根据所述目标数据表组确定相应的子查询请求;或者
根据所述查询请求确定所述子查询请求,根据所述子查询请求确定与所述子查询请求相对应的目标数据表组。
30.根据权利要求28所述的方法,其中:
在同一目标数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同目标数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性。
31.一种数据处理装置,包括:
第三获取模块,被配置为获取目标查询请求;
第四确定模块,被配置为根据所述目标查询请求确定目标数据表;
第四获取模块,被配置为获取所述目标数据表的联合概率分布模型,包括:根据所述目标数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;其中,在确定所述当前节点N的子节点时,通过将所述属性范围A中的多个属性按照强弱关联性分解开后,进行分别处理;将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述目标数据表的联合概率分布模型;
第一估计模块,被配置为使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的记录的概率。
32.根据权利要求31所述的装置,还包括:
第二估计模块,被配置为根据所述目标数据表中存在与所述目标查询请求匹配的记录的概率和所述目标数据表中记录的数量,估计所述目标数据表中与所述目标查询请求匹配的记录的数量。
33.一种数据处理装置,包括:
第一分组模块,被配置为将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
第五获取模块,被配置为获取查询请求;
第五确定模块,被配置为确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
第三估计模块,被配置为将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据权利要求1~19中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
第六确定模块,被配置为根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率。
34.根据权利要求33所述的装置,还包括:
第一修正模块,被配置为根据多个数据表中的记录在所述目标数据表组的全外连接表TTi中的出现次数、所述全外连接表TTi中的记录在所述全外连接表NN中的出现次数,修正所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率。
35.根据权利要求33所述的装置,还包括:
第四估计模块,被配置为根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量。
36.一种数据处理装置,包括:
第六获取模块,被配置为获取目标查询请求,所述目标查询请求指定至少一个对象属性的取值范围;
第七确定模块,被配置为根据所述目标查询请求确定目标数据表,所述目标数据表包含多个对象记录和所述至少一个对象属性;
第七获取模块,被配置为获取所述目标数据表的联合概率分布模型,包括:根据所述目标数据表确定根节点,所述根节点具有属性范围A和上下文T,所述属性范围A包括所述数据表中的多个属性,所述上下文T包括所述数据表中属性范围A对应的记录,所述根节点表示在所述上下文T中,所述属性范围A中各属性的联合概率分布;根据在所述上下文T中,所述属性范围A中的属性两两之间的相关性,确定所述根节点的子节点;将所述子节点作为当前节点N,确定所述当前节点N的子节点,包括:当所述当前节点N是概率节点时,根据在所述当前节点N的上下文TN中所述属性范围AN中的属性两两之间的相关性,确定所述当前节点N的子节点,当所述当前节点N是条件概率节点时,根据在所述当前节点N的上下文TN中所述当前节点的属性范围AN中的属性与所述当前节点N的条件CN中的属性两两之间的相关性,确定所述当前节点N的子节点;其中,在确定所述当前节点N的子节点时,通过将所述属性范围A中的多个属性按照强弱关联性分解开后,进行分别处理;将所述当前节点的子节点作为所述当前节点N,重复所述确定所述当前节点N的子节点的步骤,直到所述当前节点N是叶子节点;基于所述根节点、所述叶子节点和所述根节点与所述叶子节点之间的节点,生成所述目标数据表的联合概率分布模型;
第五估计模块,被配置为使用所述目标数据表的联合概率分布模型,估计所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率;
第八确定模块,被配置为根据所述目标数据表的记录数量和所述目标数据表中存在与所述目标查询请求匹配的对象记录的概率,确定符合所述目标查询请求的对象记录数量。
37.一种数据处理装置,包括:
第二分组模块,被配置为将数据表集合中的数据表分组,在同一数据表组中:任一数据表与任一其他数据表之间具有直接连接关系或具有经由所述数据表组中的另一数据表的间接连接关系,并且所述任一数据表中的至少一个属性与直接连接到所述任一数据表的至少一个其他数据表中的至少一个属性强相关;属于不同数据表组的两个数据表之间不具有连接关系或者虽然具有连接关系但不具有强相关的属性;
第八获取模块,被配置为获取查询请求,所述查询请求指定至少一个对象属性的取值范围;
第九确定模块,被配置为确定与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求,所述一个或多个目标数据表组中的数据表包含多个对象记录和所述至少一个对象属性;
第四估计模块,被配置为将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据权利要求1~19中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率;
第十确定模块,被配置为根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的对象记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的对象记录的概率;
第十一配置模块,被配置为根据所述全外连接表NN中存在与所述查询请求匹配的对象记录的概率和所述全外连接表的记录数量,确定所述全外连接表NN中与所述查询请求匹配的对象记录的数量。
38.根据权利要求37所述的装置,还包括:
第十二确定模块,被配置为根据所述查询请求,在预先确定的多个数据表组中选择所述目标数据表组,根据所述目标数据表组确定相应的子查询请求;或者
根据所述查询请求确定所述子查询请求,根据所述子查询请求确定与所述子查询请求相对应的目标数据表组。
39.一种数据处理装置,包括:
第九获取模块,被配置为获取查询请求;
第十一确定模块,被配置为根据所述查询请求确定多个不同查询策略,每个查询策略包括与所述查询请求相关的一个或多个目标数据表组和所述目标数据表组的相应子查询请求;
第五估计模块,被配置为确定每个查询策略的基数估计值,包括:
将所述目标数据表组的相应子查询请求作为所述目标查询请求,将所述目标数据表组中数据表的全外连接表TTi作为所述目标数据表,使用根据权利要求1~19中任一项所述的方法,估计所述目标数据表组的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率;
根据所述一个或多个目标数据表组各自的全外连接表TTi中存在与所述目标数据表组的相应子查询请求匹配的记录的概率,确定所述一个或多个目标数据表组的所有数据表的全外连接表NN中存在与所述查询请求匹配的记录的概率;
根据所述全外连接表NN中存在与所述查询请求匹配的记录的概率和所述全外连接表NN的记录数量,估计所述全外连接表NN中与所述查询请求匹配的记录的数量,作为所述查询策略的基数估计值;
执行模块,将基数估计值最小的查询策略作为优选查询策略。
40.一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1~30任一项所述的方法步骤。
41.一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现权利要求1~30任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010899566.8A CN114116757B (zh) | 2020-08-31 | 2020-08-31 | 数据处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010899566.8A CN114116757B (zh) | 2020-08-31 | 2020-08-31 | 数据处理方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114116757A CN114116757A (zh) | 2022-03-01 |
CN114116757B true CN114116757B (zh) | 2022-10-18 |
Family
ID=80360148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010899566.8A Active CN114116757B (zh) | 2020-08-31 | 2020-08-31 | 数据处理方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116757B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254014A (zh) * | 2011-07-21 | 2011-11-23 | 华中科技大学 | 一种网页特征自适应的信息抽取方法 |
CN103440274A (zh) * | 2013-08-07 | 2013-12-11 | 北京航空航天大学 | 一种基于细节描述的视频事件概要图构造和匹配方法 |
CN109034448A (zh) * | 2018-06-14 | 2018-12-18 | 重庆邮电大学 | 基于车辆轨迹语义分析和深度信念网络的轨迹预测方法 |
CN110633524A (zh) * | 2019-09-12 | 2019-12-31 | 中国人民解放军军事科学院国防科技创新研究院 | 非独立概率条件下复杂多态卫星系统的可靠性分析方法 |
CN110731084A (zh) * | 2017-07-13 | 2020-01-24 | 谷歌有限责任公司 | 使用上下文树来代码化视频语法元素 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5135831B2 (ja) * | 2007-03-15 | 2013-02-06 | 富士ゼロックス株式会社 | 計算装置 |
-
2020
- 2020-08-31 CN CN202010899566.8A patent/CN114116757B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254014A (zh) * | 2011-07-21 | 2011-11-23 | 华中科技大学 | 一种网页特征自适应的信息抽取方法 |
CN103440274A (zh) * | 2013-08-07 | 2013-12-11 | 北京航空航天大学 | 一种基于细节描述的视频事件概要图构造和匹配方法 |
CN110731084A (zh) * | 2017-07-13 | 2020-01-24 | 谷歌有限责任公司 | 使用上下文树来代码化视频语法元素 |
CN109034448A (zh) * | 2018-06-14 | 2018-12-18 | 重庆邮电大学 | 基于车辆轨迹语义分析和深度信念网络的轨迹预测方法 |
CN110633524A (zh) * | 2019-09-12 | 2019-12-31 | 中国人民解放军军事科学院国防科技创新研究院 | 非独立概率条件下复杂多态卫星系统的可靠性分析方法 |
Non-Patent Citations (1)
Title |
---|
新虚拟场景模型下智能漫游算法设计与实现;于丽莉等;《计算机系统应用》;20100715(第07期);153-157页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114116757A (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10073906B2 (en) | Scalable tri-point arbitration and clustering | |
US7958096B2 (en) | System and method for organizing, compressing and structuring data for data mining readiness | |
Gunn et al. | Structural modelling with sparse kernels | |
She et al. | Group regularized estimation under structural hierarchy | |
US8280915B2 (en) | Binning predictors using per-predictor trees and MDL pruning | |
Ciocan et al. | Interpretable optimal stopping | |
Goudie et al. | A Gibbs sampler for learning DAGs | |
US20030208488A1 (en) | System and method for organizing, compressing and structuring data for data mining readiness | |
Petitjean et al. | Scaling log-linear analysis to high-dimensional data | |
Wang et al. | Are deep learning models superior for missing data imputation in large surveys? Evidence from an empirical comparison | |
Kaznatcheev et al. | Representing fitness landscapes by valued constraints to understand the complexity of local search | |
Suggala et al. | Ordinal graphical models: A tale of two approaches | |
CN114116757B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
Verreet et al. | Inference and learning with model uncertainty in probabilistic logic programs | |
Houari et al. | A new method for estimation of missing data based on sampling methods for data mining | |
Malik et al. | A comprehensive approach towards data preprocessing techniques & association rules | |
Wang et al. | Are deep learning models superior for missing data imputation in surveys? Evidence from an empirical comparison | |
Joshi et al. | Sampling-based estimators for subset-based queries | |
Karanikola et al. | A hybrid method for missing value imputation | |
Acharya et al. | Gensyn: A multi-stage framework for generating synthetic microdata using macro data sources | |
Razzak et al. | Hybrid multiple imputation in a large scale complex survey | |
Abdullahi | Banded Pattern Mining For N-Dimensional Zero-One Data | |
Nanayakkara et al. | An anonymiser tool for sensitive graph data | |
Wang et al. | Ensemble clustering based on evidence theory | |
Hua et al. | Aggregate queries on probabilistic record linkages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |