CN101183378B - 用于在查询时间清洗基于序列的数据的方法和系统 - Google Patents
用于在查询时间清洗基于序列的数据的方法和系统 Download PDFInfo
- Publication number
- CN101183378B CN101183378B CN2007101692550A CN200710169255A CN101183378B CN 101183378 B CN101183378 B CN 101183378B CN 2007101692550 A CN2007101692550 A CN 2007101692550A CN 200710169255 A CN200710169255 A CN 200710169255A CN 101183378 B CN101183378 B CN 101183378B
- Authority
- CN
- China
- Prior art keywords
- condition
- data
- cleaning
- sequence
- context
- 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
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Abstract
本发明涉及在查询时间清洗诸如射频识别数据(RFID)之类的基于序列的数据的方法和系统。本发明提供一种用于在查询时间从基于序列的数据中清洗异常的方法和系统。所述方法包括:将诸如射频识别数据的基于序列的数据加载到数据库中,在清洗规则引擎处接收一个或多个清洗规则,所述清洗规则引擎将所述清洗规则转换成模板,该模板包括对所述基于序列的数据中的异常进行补偿的逻辑,通过查询重写引擎接收检索所述基于序列的数据的查询,所述查询重写引擎通过应用所述模板逻辑来重写所述查询,在查询时间执行所述重写的查询,所述重写的查询执行的结果与在通过将所述清洗规则应用于所有的所述基于序列的数据而生成的数据集上执行原始查询的结果一样。
Description
技术领域
本发明涉及一种用于在查询时间清洗(cleansing)基于序列的数据(sequence-based data)的系统和方法。
背景技术
诸如射频识别数据(RFID)之类的基于序列的数据正被配置于包括供应链优化、业务过程自动化、资产跟踪,以及问题追踪能力应用在内的应用领域中。基于序列的数据读(sequence-based data reads)存在异常(anomaly)起因于诸如重复读(duplicate reads)、漏读(missed reads)和交叉读(cross reads)的很多不同的来源。异常还可以发生在逻辑或业务过程级。在分析结果中,RFID读中的少量异常可能转换成大的错误。常规的“急切(eager)”数据清洗方法试图在最前面移除所有的异常,在数据库中仅存储清洗后的数据,并且然后在清洗后的数据上应用查询。对于在最前面移除异常的该尝试发生在,例如,将清洗后的数据加载到数据仓库中的抽取-变换-加载(Extract-Trnasform-Load,ETL)过程期间。然而,在最前面移除所有这样的异常并不总是可能的。一个原因在于清洗所需要的规则和业务上下文可能在数据加载时间不可用。例如,可能并不知道存在循环以及它们是否会影响任何分析,直到用户于一段时间之后在查询结果中观察到不规则。结果,应用可能不断地发展现有的异常定义并且添加新的异常定义。进一步地,用于校正数据异常的规则经常是专用的(即,几个应用在相同的数据集上有差别地定义异常和校正)。例如,第一应用查询跟踪存架空间规划(shelf space planning)或劳动生产率要求关于存储器内所有循环的知识,而对产品项目在每个位置已经呆了多久进行计算的第二应用需要移除循环中除了最初和最后的读之外的一切。更进一步,对于特定的应用(例如,药品电子谱系跟踪(pharmaceutical e-pedigreetracking))来说,法律要求保留跟踪信息,由此排除了在最前面的数据清洗。此外,当不同的应用要求规定了动态变化的规则集合时,维护和修改多个清洗后的版本在物理上是禁止的。因而,需要克服相关领域的前述不足和限制中的至少一个。
发明内容
在第一实施例中,本发明提供了一种在查询时间从基于序列的数据中清洗异常的计算机实现的方法,其包括:
将基于序列的数据加载到由计算系统的数据库管理系统(DBMS)所管理的数据库中,所述加载是在先于所述基于序列的数据的查询时间的、所述基于序列的数据的加载时间进行的;
在所述计算系统的清洗规则引擎处接收清洗规则;
通过所述清洗规则引擎,将所述清洗规则自动转换成模板,所述模板包括对所述基于序列的数据中的一个或多个异常进行补偿的逻辑;
在所述查询时间并且通过所述计算系统的查询重写引擎,接收检索所述基于序列的数据的用户查询;
在所述查询时间并且通过所述查询重写引擎,自动重写所述用户查询以提供重写的查询,所述自动重写包括:应用包括在所述模板中的所述逻辑来补偿所述一个或多个异常;以及
在所述查询时间,通过所述DBMS执行所述重写的查询,其中,通过执行所述重写的查询所提供的应答与在通过将所述清洗规则应用于所有的所述基于序列的数据而生成的数据集上执行所述用户查询的结果一样。
在第二实施例中,本发明提供了一种通过相对于多个清洗规则重写查询而在查询时间从基于序列的数据中清洗异常的计算机实现的方法,其包括:
将基于序列的数据加载到由计算系统的数据库管理系统(DBMS)所管理的数据库中,所述基于序列的数据包括一个或多个异常;
在所述计算系统的清洗规则引擎处接收多个清洗规则C1,…,Cn;
通过所述计算系统的查询重写引擎,接收检索所述基于序列的数据的用户查询Q;
通过所述查询重写引擎自动重写所述用户查询以提供重写的查询;
通过所述DBMS执行所述重写的查询,所述执行包括:从所述基于序列的数据生成清洗后的数据,所述清洗后的数据不包括所述一个或多个异常,
其中所述自动重写包括:
对于所述多个清洗规则C1,…,Cn中的每个清洗规则Ci,进行第一循环,其包括:
对于关系表R上包括在清洗规则Ci的模式中的一个或多个上下文参考(context reference)中的每个上下文参考X,进行第二循环,其包括:
对一个或多个合取项(conjunct)的列表设置相关条件cr,所述一个或多个合取项包括以下中的至少一个:包括在所述清洗规则Ci的条件中并且引用所述上下文参考X的一个或多个显式合取项,以及一个或多个隐式合取项,每个隐式合取项处于所述关系表R的群集键(cluster key)上或所述关系表R的序列键(sequence key)上,其中所述相关条件cr是所述上下文参考X与T之间的相关条件,所述T是包括在所述模式中的目标参考,
如果所述上下文参考X是基于位置的上下文参考,那么在所述相关条件cr的所述一个或多个合取项中仅保留位置保存(position-preserving)的隐式合取项,
将s绑定到所述目标参考T,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,
在所述相关条件cr与所述查询条件s之间运行传递性(transitivity)分析,
确定d,所述d是包括了所述相关条件cr中仅引用上下文参考X的任何合取项的集合,以及
如果集合d不为空,则将集合d添加到上下文条件cci,否则将所述上下文条件cci设置成空集,并且中断所述第二循环,其中所述上下文条件cci为上下文参考X定义了上下文集合,以及
如果所述上下文条件cci是空集,则中断所述第一循环,并且进行join-back(连接-回退)算法以生成所述重写的查询;以及
如果上下文条件cci都不是空集,则进行以下步骤:
将总的上下文条件cc计算为cc1‖cc2…‖ccn,
将扩展条件(expanded condition)ec计算为s‖cc,其中所述s是所述用户查询Q的查询条件,
将所述查询条件s简化成优化的查询条件s′,所述简化包括:将所述优化的查询条件s′设置等于s-cc,以及
将扩展重写查询Qe计算为所述重写的查询,所述计算扩展重写查询Qe包括利用表达式σs’(ΦCn…ΦC1(σec(R))),其中ΦCn…ΦC1(σec(R))中的每个ΦCi(σec(R))是在数据集σec(R)上应用所述清洗规则Ci的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的关系表R的数据的结果。文中还描述了并要求保护对应于以上概括的方法的系统。有利地,本发明利用重写的查询提供了一种延迟基于序列的数据清洗直到查询时间的技术。所述重写的查询对执行(即,减少在查询时间需要清洗的数据量)和保存序列约束的语义(即,生成与使用相同的规则在查询时间之前清洗了数据会获得的结果相同的查询结果)是高效的。进一步地,文中所公开的清洗技术可以采用专用清洗规则并且允许用户在任何时间改变清洗规则。更进一步,本发明避免了在应用查询之前提取和清洗整个数据集,并且允许保存原始读取的数据。
附图说明
图1是依照本发明的实施例用于在查询时间清洗基于序列的数据的系统的框图;
图2是依照本发明的实施例在图1的系统中于查询时间清洗基于序列的数据的过程的流程图;
图3A-3B依照本发明的实施例描绘了在图2的过程中所利用的清洗规则的两个例子;
图3C-3D依照本发明的实施例描绘了利用扩展重写方法重写查询的两个例子,其中可以在图2的过程中利用该扩展重写方法;
图4A依照本发明的实施例描绘了为图2的过程中的查询生成扩展重写的过程;
图4B依照本发明的实施例描绘了为图2的过程中的连接查询(joinquery)生成扩展重写的过程,其中所有的连接是n∶1;
图5依照本发明的实施例描绘了利用join-back方法重写查询的过程,可以在图2的过程中利用该join-back方法;
图6依照本发明的实施例描绘了扩充到支持多个规则的图4的扩展重写过程;
图7依照本发明的实施例描绘了存储有模拟的RFID数据的七个关系表的模式(schema)和关系,其中生成该模拟的RFID数据来分别测试图1和图2的系统和过程的效果;
图8依照本发明的实施例描绘了分别在图1和图2的系统和过程的效果测试中所使用的两个代表性的基准查询;
图9依照本发明的实施例描绘了通过变化选择性对延迟清洗的测试的性能结果;
图10依照本发明的实施例描绘了通过变化选择性对延迟清洗的极端测试的性能结果;
图11依照本发明的实施例描绘了就规则数和异常数而言对延迟清洗的可伸缩性(scalability)的测试的性能结果;以及
图12是依照本发明的实施例用于实现图2、图4、图5和图6的过程的计算系统。
具体实施方式
1.概述
本发明提供了一种用于延迟对基于序列的数据(例如,RFID数据)的清洗直到查询时间的方法和系统。如文中所使用的,清洗(又称作数据清洗或清洁)是对基于序列的数据中的一个或多个异常进行处理以产生更可靠的数据。如文中所使用的,将基于序列的数据定义为元组(tuple)(即,具有固定数目的属性的行)集合的汇集,其中每个集合由一列元组按照每个元组中的一个或多个属性所确定的顺序组成。在文中所公开的延迟清洗方法中,每个应用通过定义用于清洗存储在数据库中的基于序列的数据的、声明性(declarative)基于序列的规则(又称作清洗规则)来指定其自己的异常。清洗规则并不直接改变数据库的内容,而在应用发布查询时被评估(evaluate)。本发明利用了在查询时间自动重写应用查询的两种新颖的方法。所公开的这两种重写方法通过在应用查询中利用谓词(predicate)来降低将要清洁的数据量,而同时保证对查询的正确应答。进一步地,本发明通过利用SQL/OLAP功能性来实现在声明性基于序列的语言中所指定的清洗规则,提供了对清洗规则的高效评估。本发明的延迟清洗技术使得不同的应用采用不同的清洗规则变得可行,并且允许用户在任何时间改变清洗规则。文中所公开的实验结果表明,本发明的延迟清洗技术经得起在RFID数据上典型的分析查询。在一个实施例中,所公开的延迟清洗方法对急切数据清洗方法进行了补充。仍然急切地处理在基于序列的数据中其检测和校正对于该数据的所有使用者是共同的已知异常,但却将其它异常的检测和校正延迟到查询时间。
如下组织本申请的其余部分:在第2和第3部分中描述延迟清洗系统和方法的高级概述。第4部分描述了用于在时序的简单查询语言(SimpleQuery Language for Time Series,SQL-TS)中指定清洗规则的本发明的方法,以及利用SQL/联机分析处理(On Line Analytical Processing)(SQL/OLAP)来进行高效评估。第4部分还提供了在若干场景中用于检测和校正错误的示例规则。第5部分给出了用于基于清洗规则重写用户查询的机制,并且示出可如何优化这些重写。在第6部分给出了评估延迟清洗的好处的实验结果。第7部分包括对实现延迟清洗过程的计算系统的描述。
2.延迟清洗系统
图1是依照本发明的实施例用于在查询时间清洗基于序列的数据的系统100的框图。系统100包括清洗规则引擎102、查询重写引擎104,以及数据库管理系统(DBMS)106(又称作数据库或数据库引擎)。举例来说,在DBMS上以Java来实现清洗规则引擎102和查询重写引擎104。清洗规则引擎102和查询重写引擎104是可扩展的并且不归任何DBMS供应商所有。用户或应用生成的规则108由清洗规则引擎102接收并且将其转换成具有规则模式、条件以及动作子句(action clause)的模板。该模板存储在驻留于数据库106中的规则表110中,以便由查询重写引擎104用于重写用户SQL查询112。驻留于数据库106中的读表(read table)114(又称作输入表)包括通过执行重写的查询将要清洗的基于序列的数据。读表114是,例如,电子产品代码(Electronic Product Code,EPC)读表。EPC是使用RFID标记唯一标识各个物体的编码方案。
3.延迟清洗过程
图2是依照本发明的实施例在图1的系统中于查询时间清洗基于序列的数据的过程的流程图。清洗基于序列的数据的过程在文中也称为延迟清洗过程。延迟清洗过程开始于步骤200。在步骤202中,清洗规则引擎102(参见图1)对于不同应用接收在扩展SQL-TS中所指定的一个或多个用户或应用定义的清洗规则,并且为每个规则生成SQL/OLAP模板。也就是说,将每个清洗规则转换成SQL/OLAP模板。SQL/OLAP模板封装逻辑以检测并补偿基于序列的数据中的一个或多个异常,并且在查询时间插入该SQL/OLAP模板。
在步骤204中,将SQL/OLAP模板从清洗规则引擎102(参见图1)发送至数据库106(参见图1),其中该模板留存于规则表110中。具体地,将包括在该模板中的规则模式、条件和动作子句存储在规则表110(参见图1)中以便由查询重写引擎104(参见图1)使用。在步骤206中,查询重写引擎104(参见图1)截获用户SQL查询112(参见图1),并且确定需要重写查询112(参见图1)中的哪些来补偿异常。如果需要,则在步骤208中,通过应用存储在规则表110(参见图1)中的一个或多个相关规则,查询重写引擎104(参见图1)将用户查询112(参见图1)重写成新的查询(又称作重写的查询)。
在步骤210中,查询重写引擎104(参见图1)向数据库106(参见图1)提交重写的查询,以便执行其来清洗存储在读表(例如,图1的EPC读表114)中的基于序列的数据。执行重写的查询的结果是清洗后的查询结果。在步骤212中,数据库106(参见图1)将清洗后的查询结果返回给用户。延迟清洗过程结束于步骤214。
在一个实施例中,在步骤208中进行下述算法之一(参见图4A、图4B、图5和图6)。这些算法包括(1)将基于序列的数据减少成该基于序列的数据的子集,其中将在对清洗后的数据的生成中使用该子集,并且然后(2)在清洗后的数据上执行包括在原始用户查询中的逻辑,其中步骤(1)和(2)确保重写的查询执行的结果(参见步骤210)与在通过将清洗规则应用于所有的基于序列的数据而生成的数据集上执行原始用户查询112(参见图1)的结果一样。
4.清洗规则
在这部分的例子说明了如何使用声明性清洗规则来检测和校正RFID数据中的异常。这些例子假设所有RFID标记的读均存储在关系表R中,下面将关系表R的模式描绘为模式1。表R是EPC读表114(参见图1)的例子。
模式1
表R模式(用于RFID读) |
epc, RFID标记标识符rtime, 阅读器读取标记的时间reader, 读取标记的阅读器的标识符biz_loc, 读取标记的业务位置biz_step,与读关联的业务步骤 |
4.1清洗规则语言考虑
本发明将RFID数据看作EPC序列的集合,其每一个由具有特定的RFID标记的所有读按照rtime顺序组成。这样的模型使得便于为RFID应用检测各种类型的异常。利用SQL/OLAP功能(即,SQL99标准的一部分)来处理EPC序列。例如,为了检测和过滤重复读,使用下面的SQL语句:
with v1 as(
select biz_loc as loc_current,
max(biz_loc)over(partition by epc order by rtime asc
rows between 1 preceding and 1 preceding)as loc_before
from R)
select*from v1
where loc_current!=loc_before or loc_before is null;
上述SQL语句的关键部分是利用SQL/OLAP来计算列loc_before。SQL/OLAP使用partition by和order by子句(clause)来将输入定义为序列集合,并且对于每一行r,允许在相对于r的窗口(即,序列内的窗口)上定义标量聚合(scalar aggregate)。在该例中,将输入定义为EPC序列,并且在按照序列顺序在每行r之前具有单行的情况下通过rows子句来指定窗口。可以使用标量聚合来提取窗口中先前的行的biz_loc。然后将两个连续读的位置进行比较以移除重复。在where子句中的第二析取项(disjunct)处理序列中在其之前没有行的边界行。
利用SQL/OLAP进行序列处理有几个优点:(1)其比使用自连接(selfjoins)或子查询的SQL更高效(例如,可以通过按照分类顺序在表R上实现一次通过(single pass)来执行上述SQL语句);(2)其集成于数据库引擎内部并且因此自动受益于诸如最优化和并行性之类的DBMS特征;(3)通过引领DBMS供应商来对其进行标准化和支持。
使用SQL/OLAP的主要缺点是其在语法上的冗余。例如,为了从先前的行中检索列值,必须指定相对复杂的标量聚合。如果需要多列,则每一个均要求其自己的标量聚合说明。这样的冗余使得用户难以用SQL/OLAP直接表达清洗规则。
一个实施例通过利用对SQL-TS(自然序列语言)的语法的扩展克服了该缺点,其中该扩展促进对清洗规则进行定义。文中所描述的技术将SQL-TS规则谓词与用户查询中所指定的谓词进行比较,以便确定需要被清洗的数据。一旦在扩展SQL-TS中定义了规则,便在查询时间使用在SQL/OLAP中自动生成的模板来高效执行(即,对规则的高效评估)。第4.2部分描述了基于SQL-TS的规则语言,并且示出了可如何将以这样的语言表达的规则映射到SQL实现。第4.3部分中的几个例子示范了可如何将扩展SQL-TS用于指定清洗规则。第4.4部分讨论了规则排序的问题。
4.2基于SQL-TS的清洗规则
表1中示出了基于SQL-TS的规则语法并且描述如下。除了斜体条目之外,表1中的所有子句均借用于SQL-TS。
表1:
DEFINE [规则名称] |
ON [表名称] |
FROM [表名称] |
CLUSTER BY [群集键] |
SEQUENCE BY [序列键] |
AS [模式] |
WHERE [条件] |
ACTION [DELETE|MODIFY|KEEP] |
表1中的CLUSTER BY和SEQUENCE BY子句类似于SQL/OLAP中的“partition by”和“order by”子句,并且其定义了如何将输入数据转换成序列集合。在一个实施例中,群集键是epc并且序列键是rtime。主要的简化来自AS子句中的模式说明。模式定义了参考的有序列表。如果没有用*符号指定参考,则参考引用输入中的单行。具有*符号的参考可以仅出现在模式的开头或结尾,并且引用被绑定到序列内的单元素参考(singleton reference)的行之前或之后的行的集合。在模式参考的列上指定WHERE子句中的条件。例如,可以用SQL-TS将重复检测表示为:
AS(A,B)WHERE A.biz_loc!=B.biz_loc
参考A和B各自引用单行,并且模式暗示这两行在序列中是相邻的。与SQL/OLAP相比,在SQL-TS中对两个连续读的说明更简单并且更直观。在具有*符号的集合参考(set reference)上的条件具有存在语义(existential semantics)(即,如果集合中的任何行使该条件为真,则该条件为真)。应当注意,上述语义与在原始SQL-TS中所使用的语义稍有不同。在第4.3部分中包括了具有以上所描述的语义的例子。
本发明的规则语言以两种方式扩展了SQL-TS。首先,添加ACTION子句,其指定当满足WHERE子句中的条件时如何修正(fix)异常。在定义于模式中的单元素参考上指定动作。在一个实施例中,动作是DELETE(删除)、MODIFY(修改)和KEEP(保留)中的任何一个。由于有时候指定读进行移除而不是保留(反之亦然)对于用户来说更直观,因此使用DELETE和KEEP这二者提供了更大的灵活性。MODIFY改变行中的任何列的值。如果要修改的列不存在,则立即创建新的列。注意到,动作并不直接改变存储在输入表中的内容,但却控制从该表中流出的内容。在一个实施例中,本发明特意从ACTION子句中除去INSERT,因为直接插入常常是没用的。其次,本发明将在其上定义了规则的表(即,通过ON子句)与规则从其获得输入的表(即,通过FROM子句)分开。在文中其余的例子中,假设总是在读表R上定义规则。然而,应用可以选择使用包括表R中的数据以及一些额外的数据在内的输入来参考或补偿(例如,第4.3部分中的例5中对漏读的处理)。以这种方式,本发明支持在ACTION子句没有显式插入的情况下的插入。要求输入表具有包括R中的所有列的模式,并且可以视情况包括一个或多个额外的列。规则条件可以引用输入表中的任何列。
总是可以将清洗规则转换成SQL/OALP中的实现。对本领域的技术人员来说,cluster by和sequence by子句的转换将是显而易见的。下面的讨论集中在WHERE和ACTION子句的转换上。如果规则条件引用两个单元素(singleton),则可以在大小为一的窗口上用SQL/OALP将其中一个指定为多个标量聚合(即,每个所需的列有一个标量聚合)。根据这两个单元素的相对序列位置来定义窗口。如果规则条件引用集合和单元素,则将窗口定义成包括该集合并且将规则条件转换成窗口上的“case(情况)”表达式。标量聚合用于确定集合中是否有任何的行测试为真。在SQL中将DELETE和KEEP动作实现为过滤条件。将规则条件直接用作对KEEP的过滤,并且在对空语义正确处理的情况下该规则条件对于DELETE是取反的。最后,可以通过另一“case”表达式来处理MODIFY,如第4.3部分中所示。
4.3清洗规则例子
在这部分中的例子说明了如何使用扩展SQL-TS来定义清洗规则。仅仅对每个规则示出了模式、条件和动作说明。除非另有说明,规则总是:on table R(在表R上)、from table R(来自表R)、clusterd by epc(通过epc群集),以及sequenced by rtime(通过rtime定序)。在这些例子中,手动指定规则并且在一些情况下,突出了规则的部分SQL/OLAP实现。
4.3.1例1(重复规则)
尽管可以在边缘处修正大部分重复,然而它们中的少数由于诸如边缘服务器重启之类的原因而幸存。在下面所示出的规则1中,将重复移除限于仅相隔t1分钟的读,其中可以为不同的应用定制t1。在一个实施例中,选择保留重复当中最初的读(the first read)。
规则1:
模式 | 条件 | 动作 |
(A,B) | A.biz_loc=B.biz_loc andB.rtime-A.rtime<t1 mins | DELETE B |
SQL/OLAP实现类似于第4.1部分中所示出的实现。
4.3.2例2(阅读器规则)
考虑这样的场景,即在该场景中,装备有RFID阅读器(文中称为阅读器X)的叉车(forklift)将所标记的箱体(case)送到仓库中的目的地。在到达目的地时,阅读器X读取该箱体上的EPC以及在目的地预先安装的位置标记,并且生成新的读。在传输期间,其它阅读器(例如,对接门(docking door)上的阅读器)可能意外读取了叉车上的箱体。如果发现这样的传输花费达t2分钟,那么如下定义规则2,以便移除阅读器X的读之前t2分钟记录的所有的读。应当注意,*指示B为集合参考。
规则2:
模式 | 条件 | 动作 |
(A,*B) | B.reader=‘readerX’andB.rtime-A.rtime<t2 mins | DELETE A |
可以通过定义标量聚合“has_readerX_after”以SQL/OLAP实现阅读器规则。
max(case when reader=‘readerX’then 1 else 0 end)
over(range between 1 macro sec following
and t2 min following)as has_readerX_after
注意到,通过利用序列键rtime上的约束来构造窗口,以便包括B所引用的行。然后过滤掉其has_readerX_after被设置成1的行。
4.3.3例3(替换规则)
假设在两个位置“loc1”和“loc2”处的阅读器彼此靠近并且可以导致交叉读。进一步地,假设由于业务流,在“loc1”处正被读取的装运(shipment)总是在t3分钟内接着在另一位置“locA”被读取。规则3然后用于检测异常并且修改其位置。
规则3:
模式 | 条件 | 动作 |
(A,B) | A.biz_loc=‘loc2’andB.biz_loc=‘locA’andB.rtime-A.rtime<t3 mins | MODIFYA.biz_loc=‘loc1’ |
MODIFY动作的SQL实现是这样的“case”表达式,即其取决于对条件的测试,要么保持biz_loc原来的样子要么将其变成“loc1”。
4.3.4例4(循环规则)
假设应用并不想看到在位置集合之间来回的读。因此,应当将对于EPC的诸如[X Y X Y X Y]的位置模式变成[X Y],仅保留最初的X和最后的Y。该改变可以通过以下在规则4中所示出的循环规则来实现。可以生成另外的、更多有关的规则,其移除任意长度的循环。
规则4:
模式 | 条件 | 动作 |
(A,B,C) | A.biz_loc=C.biz_loc andA.biz_loc!=B.biz_loc | DELETE B |
4.3.5例5(遗漏规则)
在该例中,已知托盘(pallet)及其中的箱体一起沿特定的业务路径行进。托盘标记总是可读的,但是由于标记的方向以及内容,并不总是在每个位置处读取箱体。假设在位置L1处,读取托盘P,但是并未读取P中的箱体C。有把握确定如果一段时间之后C实际上漏读了(而不是被偷了),则在某个位置L2处再次一起读取C和P。在那种情况下,为了补偿在L1处对C的漏读,将在L1处的托盘读(pallet read)转换成箱体读(case read)(例如,用C的epc替换P的epc)。
下面,在两个子规则r1和r2中指定遗漏规则。将r1和r2均定义在表R上,在该例中表R仅含有箱体读。对r1的输入(即,在FROM子句中)不是R,而是具有与模式1相同的模式的导出表,且具有额外的列“is pallet”。关于如何导出该输入的细节包括在第6部分中。对于该例来说,假设导出表是R与另一集合R′的合并。对于含有n个箱体的托盘P来说,在R′中P的每个读存在n个副本,并且每个副本的epc被设置成每个箱体epc。虽然R具有对箱体的“实际”读,但是R′含有“所期望”的基于更可靠的托盘读的箱体读。R和R′中的每一行分别将is_pallet设置成0和1。
规则r1使用A来参考托盘读,并且然后检查A在相同的位置是否具有邻近的箱体读。如果有的话,则设置标志“has_case_nearby”,其指示在该位置没有漏读。将r1的输出管道输送(pipeline)至规则r2。规则r2保留所有的原始箱体读,加上没有邻近的箱体读的托盘读(只要稍后随托盘一起读取相同的箱体)。注意到,保存的托盘读补偿了遗漏的箱体读。
规则r1和r2:
r1.模式 | 条件 | 动作 |
(X,A,Y) | A.is_pallet=1 and((X.is_pallet=0 andA.biz_loc=X.biz_loc andA.rtime-X.rtime<5 mins)OR(Y.is_pallet=0 andA.biz_loc=Y.biz_loc andY.rtime-A.rtime<5mins)) | MODIFYA.has_case_nearby=1 |
r2.模式 | 条件 | 动作 |
(A,*B) | A.is_pallet=0 or(A.has_case_nearby=0 andB.has_case_nearby=1) | KEEP A |
为了用SQL表达r1,可以在包括行r、r之前的行和之后的行的窗口上通过单个标量聚合来计算has_case_nearby,因为X和Y上的条件是相同的。利用类似于例2中所示出的方法,可以用SQL实现规则r2。
SQL/OLAP在表达条件上比SQL-TS更丰富。例如,为了控制应当在采取动作之前观察的阅读器X的读的数目,将例2中用于计算“has_readerX_after”的标量聚合从max()变成count()。
4.4规则排序
当应用在相同的表上定义了多个规则的时候,这多个规则的输入表必须相同。通常,在规则之间存在依赖性并且其排序很重要。考虑由[X Y X]给出的标记读(tag reads)的序列的位置。首先应用循环规则,随后是在rtime上无约束的情况下的重复规则,清洗后的序列变成[X](即,最初的X)。如果交换这两个规则,则结果变成[X X]。在本发明中,规则通过其创建时间来排序并且以该顺序应用规则。
5.使用清洗规则重写查询
给定用户查询Q以及在R上定义的清洗规则C,将相对于C对Q的正确应答表示为Q[C]。如文中所使用的,将ΦC(d)定义为在包括了R的模式(参见上述模式1)中的所有列的数据集d上应用规则C的结果。通过定义,可以通过用ΦC(R)替换Q中对R的所有参考来计算Q[C]。这样的计算要求清洗R中所有的数据并且因而是禁止的。这部分描述了可如何通过更有效的查询重写来进行延迟清洗。第5.1部分示出了为何将Q中的谓词直接推向R并不总是产生正确的应答,并且说明了保存查询语义的两种高效的查询重写方法。在存在单个清洗规则的情况下,第5.2和5.3部分中描述了生成这两种类型的重写的技术。在第5.4部分中,将重写方法扩展成支持多个规则。在第5部分中,对C的输入也是表R,但却可以利用对C的其它输入来实现所公开的重写技术。
5.1重写查询的动机
为了降低将要清洗的数据量,首先试探将Q中的谓词直接推向R,并且然后应用规则C,接着评估其余的Q。不幸的是,该方案并不总是返回对Q[C]的正确应答。
考虑查询Q1和表R1上所定义的图3A中的清洗规则C1 300,如图3A所示。将清洗规则C1定义为第4.3部分中的阅读器规则。rid字段用于标识表中的行。在R1上应用C1会移除行r1,因为在随后的5分钟内存在阅读器X的读。剩余的行r2并不满足Q1中的条件并且对Q1[C1]的正确应答是{}。如果首先将Q1的条件“rtime<t1”推向R1,则仅仅行r1符合条件。这次在{r1}上应用C1并不移除r1,因为r2不再存在。因而获得了不正确的应答{r1}。
作为另一例子,考虑另一查询Q2和表R2上所定义的图3B中的清洗规则C2 320,如图3B所示。注意到,C2是通过省略时间约束而获得的第4.3部分中的重复规则的修改版本。在R2上应用C2产生{r3},因为r4是重复的。由于r3具有不大于t2的rtime,因此对Q2[C2]的正确应答还是{}。然而,如果在清洗之前首先在R2上应用Q2中的条件,则仅仅选择r4。在{r4}上应用C2并不移除r4,因为其是该集合中仅有的元素。再次,获得了不正确的应答{r4}。
仍旧可以更有效地对Q1[C1]和Q2[C2]这二者进行应答。例如,可以使用表达式e1=σrtime<t1(ΦC1(σrtime<t1+5(R1)))来计算Q1[C1]。从C1的条件显而易见的是,为了删除R1中的读r,需要对r跟踪5分钟或少于5分钟的阅读器X的另一读取。通过稍微放宽Q1中的原始条件,e1获得足够的数据来移除与Q1相关的所有的读。然后在这一稍大的数据集上应用清洗。最后,e1再次应用原始条件来移除仅是清洗所需要的额外数据。
类似的方法不能够直接用于Q2[C2],因为在C2中,由于已经从原始重复规则移除了时间约束,两个重复读可以间隔任意长的时间。但是,可选地可以通过e2=σrtime>t2(ΦC2(R2 epcПepc(σrtime>t2(R2))))来应答Q2 [C2],其中 epc表示两个表之间的epc上的自然连接,并且Пepc将输入投影到epc上并且移除重复。观察到C2仅从输入序列移除行。因此,仅需要清洗包括了满足Q2中的条件的至少一个读的序列。其余的序列并不相关,因为即使清洗了它们,Q2也无论如何都不会选择任何的读。对仅有的相关序列的准确清洗正是e2所做的。首先,e2标识必须清洗的序列,并且然后e2再次访问R2以提取那些所标识的序列上的所有数据。清洗这样的数据集保证移除所有的相关异常。类似于e1,e2最后再次应用原始条件以便在清洗之后滤掉不再需要的数据。如将在第6部分中所示出的,因为在典型的RFID查询中的条件趋于与序列键相关,所以使用该方法可以有效地限制相关序列集合。如本领域的技术人员可以易于验证的,e1和e2分别产生对Q1[C1]和Q2[C2]的正确应答。
由于多种原因,常规的查询优化器难以自动生成诸如e1和e2的重写。首先,SQL/OLAP虽然提供了比自连接更有效的方式来将来自相同表的不同行聚集到一起,但却将原始行身份隐藏在标量聚合以及布尔表达式内,如以上在第4.3部分中所示出的。SQL/OLAP的这一方面使得优化器难以进行有效的传递性分析。其次,清洗规则可能具有多个等效的SQL/OLAP实现。优化器难以识别源自相同规则逻辑的这样的不同查询表示以及继而应用相同的重写。
本发明包括数据库引擎106外部的查询重写单元,而不是增强的常规优化器,其中该查询重写单元取得清洗规则集合以及用户查询,并且生成重写的查询,该重写的查询提供相对于那些清洗规则的正确应答。因为查询重写单元处于规则级,所以其比DBMS优化器更有效地变换查询。接下来的两部分描述了两种风格的查询重写:扩展(例如,e1)以及join-back(例如,e2)。
5.2扩展重写
这部分描述了扩展查询重写(expanded query rewrite)方法。在这部分中,假设在表R上仅定义了单个清洗规则C。在第5.4部分中描述了对多个清洗规则的支持。
定义1.清洗规则C中的模式指定了两种类型的数据参考:目标参考(target reference)和上下文参考(context reference)。前者是在C的动作部分中使用的参考,并且清洗规则仅具有一个目标参考。该模式中其余的参考是上下文参考。例如,在图3A中,参考A是目标参考并且B(加了下划线)是上下文参考。作为另一例子,在图3B中,参考F是目标参考而参考E(加了下划线)是上下文参考。
目标参考T和上下文参考X均引用表R中的行集合,但它们却不是独立的。链接T和X的条件是相关条件(correlation condition)。在规则条件中明确给出了一些相关条件并且在规则模式说明中暗示了其它条件。考虑由σs(R)给出的用户查询Q。因为需要清洗的仅有的数据是与该查询相关的数据,所以Q将T绑定到行集合RT=σs(R)。通过相关条件cr,又将上下文参考X绑定到被称为上下文集合(context set)的另一行集合RX。RT和RX可以重叠。RX是为了确定是否在RT中的一行或多行上采取任何动作所要求的行的集合。从R(不仅查询数据RT,还有上下文集合RX)中选择键(key),以便可以进行所有必要的清洗。在前面的部分中所描述的直接下推(pushdown)方法失效,因为其忽略了仅在上下文集合中出现的数据。
通过将查询条件s绑定到目标参考T并且在T与X之间的相关条件和s上运行传递性分析,导出仅参考上下文参考X的新的条件。该新的条件为X定义了上下文集合并且其在文中被称为上下文条件(contextcondition)。该上下文条件与s一起用于限制为了清洗而从R提取的数据量。在T与X之间的相关条件包括规则条件中引用T和X这二者的所有合取项,以及在规则模式中所暗示的合取项。存在两种类型的隐式合取项,一种在群集键ckey上并且另一种在序列键skey上。在规则定义中给出了ckey和skey二者,并且在一个实施例中,将ckey和skey分别绑定到列epc和rtime。如果X和T均引用由ckey所定义的相同序列内的行,那么指示合取项X.ckey=T.ckey。如果在模式中X列于T之前,则指示另一合取项X.skey<T.skey。进一步地,如果在模式中X列于T之后,那么指示又一合取项X.skey>T.skey。添加两种类型的隐式合取项用于传递性分析使得能够导出更强的上下文条件。
对于在规则模式中没有*的上下文参考(其在文中被称为基于位置的上下文参考)来说,在序列位置(spos)上存在第三隐式相关合取项。例如,根据图3B中规则C2中的模式,合取项E.spos=F.spos-1被暗示并且其强于E.skey>F.skey。这样的合取项并不存在于图3A中的规则C1中的目标参考A与具有*的上下文参考B之间,因为B对A的准确相对位置是不重要的。处理spos上的隐式合取项是难解的。主要的困难来自于这样的事实,即通常并不在输入数据中具体化序列位置,而是立即计算序列位置。因而,当确定上下文条件时,并不关注改变所选择的行的相对位置。
定义2.考虑目标参考T与上下文参考X之间的相关条件cr。如果对于T所引用的任何给定行r,相关条件cr均是位置保存的(position-preserving),则对于r的上下文集合V(通过cr计算的)具有以下特性:对于V中的每一行v,原始序列中在v与r之间的所有行也属于V。注意到,在来自含有V和{r}这二者的R的任何数据集内,V中的任何行的序列位置相对于r均与在R中的位置相同。
观察:(a)在目标参考T与上下文参考X之间的以下相关条件是位置保存的:(1)X.ckey=T.ckey;(2)X.skey<T.skey以及X.skey>T.skey-t,如果在C的模式中X在T之前;X.skey>T.skey以及X.skey<T.skey+t,如果在C的模式中X在T之后,其中t是正的常数。(b)除了ckey和skey之外的列上的任何相关条件均不是位置保存的。观察(a)是从定义2得出的。观察(b)的原因在于:对于任何这样的相关条件cr,总有可能通过使得在cr中所使用的列独立于序列键来构造计数器例子。
因此,对于基于位置的上下文参考来说,并不是所有的合取项都包括在相关条件中用于传递性分析。相反,只保留那些位置保存的。
图4A包括用于为图2的过程中的查询生成扩展重写的过程400(即,算法)。关于为Q[C]生成扩展重写的算法400被描述如下:图4A中从第2行到第10行是经过包括在清洗规则C的模式中的每个上下文参考X的循环迭代。取决于X是否是基于位置的(参见图4A的第4-5行),将X与目标参考T之间的相关条件相应地准备为合取项的列表。将查询条件s绑定到T,其中s是用户查询Q中在关系表R上的查询条件。然后在相关条件cr与查询条件s之间应用传递性分析(参见图4A的第6行)。如果仅参考X可以导出任何合取项,则将该合取项添加到上下文条件cc(参见图4A的第7-8行)。如果存在多个上下文参考,则将上下文条件一起取或(or-ed)来选择组合的上下文集合。如果不能够导出任何的上下文条件,则将其设置为空并且中断“for”循环(参见图4A的第9行)。图4A中从第11行到第13行,如果上下文条件不为空,则生成扩展重写Qe。首先,扩展条件ec被计算为s‖cc(参见图4A的第12行),并且其变成可以被直接推向R的谓词。当在ec所选择的数据集上进行清洗之后,再次应用s来移除上下文集合中不再需要的行。通过避免在上下文条件中已经涵盖的s中再次应用合取项,使用最优化将s简化成s′(参见图4A的第12行)。最后,通过表达式σs′(Φc(σec(R)))提供Qe(参见图4A的第12行)。
定理1.由图4A中的算法400所计算的Qe提供了对Q[C]的正确应答。
证明:对于ec没有选择的每一行r来说,r并不是Q直接需要的或者为了清洗Q感兴趣的任何行而间接需要的。因此,不选择r并不改变查询语义。
图3C和3D中的运行例子说明了图4A的算法400。图3C中所示出的第一运行例子340是基于规则C1和查询Q1的。因为上下文参考B不是基于位置的,所以可以使用将B与目标参考A相关的所有四个合取项(在图3C中列为cr1),包括隐式合取项在内,来导出上下文条件。在图3C中,查询Q1中所指定的条件由s1给出,现在仅被绑定到A。通过计算s1和cr1上的传递性,图3C中的上下文条件cc1包括新近导出的合取项B.rtime<t1+5min以及直接来自cr1的另外一个。图3C中的扩展条件由ec1给出,其可以被放宽到rtime<t1+5min(参见第5.1部分中的e1),如果第二合取项不是那么地选择性的话。
图3D中的第二运行例子360是基于规则C2和查询Q2的。由于C2具有基于位置的上下文参考E,因此仅可以将两个位置保存的合取项用作相关条件(在图3D中列为cr2)。然而,通过cr2与s2之间的传递性分析,在E上并不能导出任何合取项。因此,扩展重写对Q2不可行。第5.3部分讨论了如何使用join-back重写处理Q2。
连接查询支持(Join Query Support):当Q含有σs(R)到其它表的连接时,一般而言,首先为σs(R)生成Qe并且然后将Qe与其余的表格相连接。然而,对于特定类别的查询,有可能在清洗之前进行连接。图4B描绘了为连接查询生成扩展重写的算法450,其中所有的连接是n到1。算法450的输入包括具有σsR K1σS1D1 … KnσSnDn形式的查询Q,其中表R连接列Ki上的每个表Di,并且所有的连接都是n到1。由于读表通常仅与其它的参考表连接,因此该类型的查询是常见的。每个连接条件均可以被转换成合取项R.Ki in(select Ki from Di where Si),以便其看起来像R上的局部条件(参见图4B的第5行)。然后按照前面那样应用图4A中的算法400(参见图4B的第6行)。在传递性分析之后,在上下文参考上导出那些“in”合取项中的一些,并且将其添加到上下文条件。那些合取项被称为表D′i上的Pi,i从1到m<=n。由于每个Pi均可以被转换回连接条件,因此这意味着可以将每个表D′i在清洗被应用之前连接到R。如果在上下文参考上导出了所有的“in”合取项,那么使用图4A中的算法400生成新的SQL语句,并且将“in”谓词转换回连接(参见图4B的第7行)。虽然在较昂贵的清洗步骤之前推进局部谓词总是有利的,但是是否在清洗之前应用连接取决于诸如其相对成本和选择性之类的因素。存在2m种可能的方式在清洗之前推进m个D′i表,并且尝试所有这些方式太过昂贵。相反,采用启发式方法来支持具有更多限制性局部谓词的表。具体地,通过S′i的选择性来升序排列D′i(参见图4B的第1行)。在DBMS中对其进行编译之后,可以从原始查询Q的执行计划中获得每个S′i的选择性。然后,如下生成m+1条SQL语句(参见图4B的第2-4行):第一条SQL语句在清洗之后延迟所有连接。接下来的m条SQL语句中的每一条在清洗之前按照选择性顺序再多推进一个表D′i。然后通过DBMS优化器来编译所生成的达m+1条的SQL语句,并且选择具有最低成本估计的SQL语句作为扩展重写(参见图4B的第8行)。如文中所使用的,语句、谓词、查询或算法的成本或成本估计涉及执行该语句、谓词、查询或算法所需要的计算资源(例如,存储器、循环、I/O)的数量。
5.3 Join-back重写
依照本发明实施例,图5描绘了利用join-back重写方法重写查询的过程(即,算法)500,可以在图2的过程中对其加以利用。当上下文条件为空时,由于在清洗之前没有条件可以被推进,因此扩展重写不可行。不同于扩展重写,图5的join-back重写方法总是可适用的。在join-back重写方法中,及早移除了不相关的序列,从而使得仅在较少数目的序列上需要应用清洗。再次,考虑查询Q=σs(R)。表达式Пckey(σs(R))定义了在R中Q感兴趣的所有序列,这是因为规则C仅是从R中删除行或在R中修改行(但却不插入行到R中)。回到表R并且读取属于那些已定义的序列的所有的行,这将提供足够的数据来进行正确的清洗。通过Qj=σs(Φc(R ckeyПckey(σs(R))))给出对Q[C]的join-back重写。在第5.1部分中为了应答Q2[C2]而对表达式e2的推导使用了join-back重写方法。
即使在扩展重写方法是可适用的时候,join-back方法也可能是更高效的。折衷在于:扩展重写方法在开始比join-back方法从R选择更多的行(由于ec通常比s限制性小),但之后就不需要再次连接R。此外,扩展重写可以利用由图4A的算法400所生成的扩展条件。给定R中的序列,扩展条件选择其中需要用于查询以及清洗的所有的行。因而,在join-back期间,仅要求恢复符合扩展条件的行。改进的join-back重写由Qj=σs′(Φc(σec(R) ckeyПckey(σs(R))))给出。作为例子,在第5.1部分中的Q1[C1]还可以由join-back重写来应答:
还可以扩展join-back重写来支持连接查询。考虑σsR JC1σS1D1 … JCnσSnDn形式下的连接查询Q,其中JCi指示多个连接条件。使用Пckey(σsR JCiσSiDi),通过在每个Di与R之间进行半连接(semi-join)来限制相关序列集合。再次,关于在清洗之前应用多少半连接存在着折衷。推进更多的半连接降低了将要清洗的数据量,但却增加了连接开销。遵循在第5.2部分中所使用的启发方式,按照Si的升序选择性对Di进行排序(参见图5中的第1行)。然后生成n+1个SQL查询,在清洗之前按照该顺序推进从0到n个的半连接(参见图5中的第2-5行)。挑选具有由DBMS估计的最廉价成本的查询作为join-back重写(参见图5中的第6行)。最后,将扩展重写与join-back重写进行比较,并且选择具有较低成本估计的重写来执行。
5.4支持多个规则
依照本发明的实施例,图6描绘了扩充图4A的扩展重写过程以便支持多个规则的算法600。算法600是相对于多个清洗规则C1到Cn的列表用于重写查询的过程。算法600假设由应用所创建的所有规则均共享相同的ckey和skey。由于规则之间的依赖性,按照规则的创建时间的顺序来评估规则(例如,从C1到Cn)。
首先,通过以下过程生成对σs(R)所给出的查询Q的扩展重写。对于每个规则Ci来说,使用图4A的算法400的第1到10行来计算上下文条件cci(参见图6的第1-2行)。如果任何cci为空(参见图6的第3行),则不存在可行的扩展重写,并且依赖join-back方法。否则,将总的上下文条件cc计算为cc1‖cc2…‖ccn,其为所有的规则选择了足够的上下文数据。通过遵循图4A的算法400中的第11到13行,相应地确定扩展条件ec和条件s′。然后通过表达式σs′(ΦCn…ΦC1(σec(R)))给出扩展重写(参见图6的第4行)。可以以类似于第5.2部分中的描述来处理连接查询。扩充join-back重写以支持多个规则是简单的,因为对非相关序列的消除与清洗规则无关。因此,在提取了相关序列中的所有数据之后,便按照该顺序应用清洗规则C1到Cn。
两种重写均提供了对Q[C1…Cn]的正确应答,因为按照正确的顺序应用了所有的规则。关于是否可以在不改变查询语义的情况下交换那些规则的评估顺序,注意到,交换规则顺序对获得更好的性能而言并不十分关键。我们可以将每个规则Ci视为表R上的昂贵谓词。那些谓词具有这样的特性,即因为异常数通常是小的,其选择性全部都高,并且因为产生序列顺序的分类成本可能是占优势的,其成本是可比拟的。由于用于评估一组昂贵谓词的最优顺序主要取决于其选择性以及相对成本,因此不同顺序之间的性能差别有可能是小的。
6.实验
这部分给出了对延迟清洗方法的有效性进行验证的实验结果。实验的目的是测试延迟清洗方法在三个方面的可伸缩性:(1)将要查询的数据量;(2)将要应用的规则数,以及(3)异常数。
6.1实验系统设计
因为不存在用于测试RFID应用的现有基准,所以用Java构建RFID数据发生器(又称作RFIDGen)用于这些实验。RFIDGen模拟零售商W的典型供应链,其保存最后五年内的RFID数据以及相关的参考数据。所有信息均存储在七个关系表中,并且在图7中概括了七个关系表的模式和关系。图7中每个关系表的主键均被加了下划线,并且箭头表示外键参考(foreign key reference)。圆括号内的数字指示每个表中的行数。稍后在这部分中描述标度因子(scale factor)s。
最初,模拟生成正常的(又称作规则的)RFID数据(即,没有异常)。为了正常的RFID数据的该生成,假设W所出售的所有货物必须经过三级配送:配送中心(distribution center,DC)、仓库以及零售商店。存在1000个零售商店,其每一个均从25个仓库之一接收货物,并且每个仓库又从5个DC之一接收装运。每个地点(site)(即,DC、仓库或商店)具有100个不同的位置,每个均配备有RFID阅读器。“位置”表存储所有的13,000个不同的位置,每个位置由13字符的全球位置码(Global LocationNumber)标识。在装运必须经过的3个地点中的每一个处,每个装运在随机选择的阅读器处被读取10次,并且生成总共30个RFID读。在5年窗口(5-year window)内随机选取EPC的最初的读,并且在1到36小时之间随机选择装运的两个连续读之间的延迟。每个装运由50字节的varchar所表示的96比特的EPC来唯一标识。装运可以具有两种类型:箱体和托盘。为了在变量中以货物大小进行因子化,随机选取20到80之间的数作为含于特定托盘中的箱体数。为了简化起见,箱体读和托盘读存储在两个单独的表中,分别为“caseR”和“palletR”,并且箱体EPC和托盘EPC之间的关联存储在第三“parent(父)”表中。假设对于该实验来说,既不重用(reuse)箱体EPC也不重用托盘EPC并且关联条目总是有效的。尽管图7中并未完全示出,然而palletR的模式与caseR的一样。托盘及其关联的箱体总是一起行进并且彼此在10分钟之内由相同的阅读器读取。每个箱体EPC生成“EPC_info”表中的条目,该表中存储了诸如批号、制造日期以及截止日期之类的项目具体信息。关于产品的细节存储在“product(产品)”表中,该表由EPC_info表参考。生成总共1000个不同的产品并且将其随机分派给50个制造商。还向每个RFID读分派了从存储在“steps(步骤)”表中的总共100个不同的步骤随机选择的业务步骤。将所有的步骤均匀分类成10个不同的类型。将托盘EPC的数目“s”定义为标度因子。对于给定的s,存在大约s*50个箱体EPC。因此,palletR、caseR、parent和EPC_info分别含有s*30、s*50*30(即,s*1.5k)、s*50和s*50行。
在生成正常的RFID数据之后,然后将异常添加到规则数据之上。因为读取托盘比读取箱体更可靠,所以仅对箱体读引入异常。通过颠倒清洗规则的动作,添加了第4部分中所描述的五种类型的异常。例如,如果规则的动作从序列中删除了读,则添加了符合规则的条件的错读(flaseread)。给定异常百分比D,异常均匀分布在五种不同的类型之中。
在图8中,描绘了在实验中所使用的两个代表性基准查询以及SQL语句。图8中的第一查询q1进行典型的“dwell(驻留)”分析,其计算装运在两个连续位置之间花费的平均时间。查询q1的分析利用SQL/OLAP功能来将每个EPC的两个相邻读的信息带到相同的行。图8中的第二查询q2类似典型的分析查询(即,地点分析查询)。在q2中,将表caseR视为事实表(fact table),其与多维表(multiple dimensional table)连接以产生参考数据。具体地,地点分析报告了在特定的配送中心处的每个制造商所涉及的业务步骤和阅读器利用。稍后在这部分解释了对两个时间戳T1和T2的选取。实验中使用在第4部分中定义的五个清洗规则,且t1、t2和t3被分别设置成5、10和20分钟。以下给出的表2概括了相对于每个规则由图4A的算法为q1和q2这二者计算的扩展条件。注意到,循环规则具有两个上下文参考,一个在目标之前并且一个在目标之后。由于两个循环规则上下文均没有通过时间来绑定,因此对于q1和q2不存在扩展条件。进一步地,遗漏规则具有在目标之后的未绑定的上下文参考,并且仅是q1不具有扩展条件。
表2
规则名称 | q1 | q2 |
阅读器重复替换循环遗漏 | rtime<=T1+5min(c1)rtime<=T1 (c2)rtime<=T1+20min(c3){}{} | rtime>=T2 (c4)rtime>=T2+10min(c5)rtime>=T2{}rtime>=T2 |
对于性能评估,在运行AIX的现代服务器类型机器上使用DB2 V8.2。选取生成大约1千万个正常的箱体读(即,大约1GB)的标度因子s。然后将称为db-10、db-20、db-30和db-40的四个不同的数据库加载到DB2中,并且这四个数据库分别对应于异常百分比10、20、30和40。按照与时间部分相关(partially correlated)的顺序加载数据。对于每个数据库来说,除了阅读器列之外,对caseR和palletR(参见图7)这二者中所有的列进行索引。在child-epc上索引parent表(参见图7)以提供快速箱体到托盘(case-to-pallet)的查找。除了还在site上索引locs表以及还在tpye上索引steps表之外,图7的其余的表仅在其主键上有索引。每个数据库均使用160MB的缓冲池。对于每个测试,在以下情况的经过时间(elapsedtime)之间进行比较:直接在脏数据(dirty data)上运行基准查询q(下文称为q)、扩展重写(下文称为q_e)、join-back重写(下文称为q_j),以及首先清洗所有数据并且然后评估q的初级方法(naive approach)(下文称为q_n)。进行延迟清洗的初级方法是在执行查询之前立即清洗所有的数据。注意到,不同于其它三个,q并不总是提供正确的结果,并且仅仅用于基线比较。实验并未明确地将急切清洗与延迟清洗进行比较。然而,由于异常百分比通常是小的,因此急切清洗的成本与q的成本相当。
在以下部分中所描述的测试中,q1和q2指的是直接在脏数据上运行基准查询;q1_e和q2_e指的是运行扩展重写;q1_j和q2_j指的是运行join-back重写;并且q1_n和q2_n指的是运行初级方法。
6.2变化选择性
在这部分中,通过按比例改变查询所需要的数据大小来测试延迟清洗方法。在这些测试中,假设仅启用了阅读器规则,并且利用了具有10%的异常的数据库(即,db-10)。通过相应地调整T1和T2,q1和q2这二者中rtime上的谓词的选择性从1%变化到40%。
在图9的性能结果900中示出了q1的性能结果(即,(a)部分)。在所有的选择性上,q1_e和q1_j都明显比初级版本q1_n表现得更好,并且q1_e比q1_j更有效。
图9的(b)部分中示出了q1的执行计划902。计划902首先使用rtime上的索引扫描表caseR。计划902然后通过按照(epc,rtime)顺序对输入数据进行分类来评估由SQL/OLAP指定的两个标量聚合。此后,q1两次连接表locs并且进行最后的聚合。在比较中,图9的(c)部分中将q1_e的计划示为计划904。由于rtime上的谓词被扩展了5分钟,因此q1_e需要在最初获得来自caseR的稍多一点的数据,其被示为具有双侧沿的caseR框。接下来,q1_e计划通过首先分类(epc,rtime)上的输入来评估阅读器规则,并且然后通过过滤移除异常。一旦完成了清洗,q1_e计划就继续其余的q1。应当注意,因为q1中的SQL/OLAP评估的排序要求与清洗规则中的相同,所以仅需要分类一次数据。尽管这看似偶然的,然而期望这样的顺序共享在RFID应用中是常见的,因为其通常对于按照序列顺序处理RFID数据是有用的。因此,相比于q1,q1_e仅导致多计算一个标量聚合的额外开销,但却不进行额外分类,从而解释了为何q1_e仅添加了在q1上面的小的开销。在该例中,由于限制caseR的仅有的谓词是可扩展的,因此扩展方法总是好于必须访问表caseR两次的join-back方法。最后,初级方法必须对所有的数据进行分类,因为其并不下推任何谓词,并且因而初级方法的性能显著差于图9的(a)部分中所示出的其它方法。
图9的(d)部分中示出了q2的性能结果906。类似于q1,q2_e和q2_j都明显比初级方法(即,q2_n)表现得更好。不同于q1,q2_j比q2_e更有效。通过分析计划来解释这一差别。图9的(e)部分中示出了原始查询q2的部分计划908。计划q2首先连接表caseR和locs,因为仅有它们具有局部谓词。由“rest(其余的)…”表示的框包括其余的连接,其并不进一步降低基数(cardinality)以及最后的聚合。图9的(f)部分中示出了q2_e的计划910。注意到,q2_e比q2多进行一个分类,因为SQL/OLAP中来自清洗的排序要求不同于对分组(grouping)的要求。因为仅rtime谓词是可扩展的,所以必须在访问表caseR之后连接表locs之前立即进行清洗过程。因而,q2_e必须对包括稍后将被连接拒绝的那些数据在内的数据进行分类。图9的(g)部分中的q2_j的计划912通过首先连接表caseR和locs来利用在它们两者上的约束。q2_j计划然后通过分组来计算EPC的唯一列表e,其实质上含有q2实际关心的装运集合。此后,q2_j再次访问表caseR以提取e中EPC的全部历史用于清洗。注意到,由于处在特定的地点,因此site(地点)列与EPC部分相关,给定的EPC要么被多次读取(由于其经过该地点)要么根本未被读取(由于其没有经过该地点)。结果,除了rtime上的谓词之外,site上的谓词有助于显著降低e的大小。由于q2_j必须分类较少的数据并且计算较少的标量聚合,因此对e的大小方面的这一降低明显有益于q2_j。返回对q2_j计划的讨论,q2_j仍然需要再次应用rtime以及site上的谓词来移除在清洗之后不再需要的数据。因为相关数据集小,所以这样的开销并不明显。其余的q2_j与q2相同。总之,当可扩展谓词的选择性小的时候,q2_e与q2_j可比,因为join-back开销抵消了后者中的数据减少。然而,当rtime上的谓词变得较少限制性时,q2_j明显表现得更好,因为其可以有效地利用来自site上的谓词的过滤能力。
作为极端测试,通过交换q2中的1..site和s.type并且将常数从DC变成特定的业务类型来设计另一查询q2′。特意组装(populate)数据以便s.type与EPC完全不相关。图10中的性能结果1000中示出了q2′的结果。在这种情况下,q2′_j不再明显好于q2′_e。尽管s.type上的谓词降低了读数,然而其并没有明显降低清洗所需要的EPC集合(即,具有单个读的很多EPC)。因而,q2′_j中分类和计算标量聚合的开销与q2′_e中的可比。在实际情况中,在应用查询中较常使用与EPC部分相关的列上的谓词,因为可以一起分析对装运的多个读。例如,选择对一些装运来说全是共用的一组业务步骤对于q2′更合理。
6.3变化规则和弄脏百分比(dirty percentage)
这部分给出了就规则数而言测试延迟清洗的可伸缩性的结果。在q1和q2这二者中,将rtime谓词的选择性固定在10%并且选择具有10%的异常的数据库。然后从1到5按比例变化规则数。按照表2中所列出的顺序添加规则。对q1和q2这二者来说,扩展方法仅仅达到对于表2的前三个规则可行。join-back方法对表2中的所有规则有效。图11的示图1100和1120中给出了这些性能结果。从1个规则到3个规则,在最佳重写策略q1_e和q2_j的上的增加相当小。注意到对所有规则的排序要求都相同。因而,仅第一规则导致分类开销。随后的规则共享相同的分类并且仅付出计算其自己的标量聚合的开销。从4个规则开始,仅join-back方法变得可应用。对q1_j和q2_j这二者来说,相比于先前的规则,循环规则添加了稍微多些的开销,因为在join-back期间,没有扩展条件可以被应用到表caseR上。遗漏规则在表2的所有规则当中添加最多的开销。不同于其它的规则,遗漏规则从以下导出表中获得输入:
select epc,rtime,biz_loc,biz_step,reader,0 as is_pallet
from caseR
union
select child_epc,rtime,biz_loc,biz_step,reader,1 as is_pallet
from palletR,parent
where palletR.epc=parent.parent_epc
将q1和q2中的条件应用到caseR和palletR这二者上以获得将要清洗的EPC集合,并且也在这两个表上进行join-back。由于现在几乎每个箱体读都与托盘读成对,因此将要分类的数据量现在是翻倍的。检索托盘读所需要的额外连接也添加了一些开销,但是这是次要的,因为读被限制在较小的EPC集合。但是,q1_j和q2_j都明显比初级方法表现得更好,初级方法对5个规则花费大约1000秒(图11中未示出)。
最后的实验相对于异常数测试了延迟清洗。再次,在q1和q2这二者中,将rtime上的谓词的选择性固定在10%。应用表2中所列出的前三个规则。然后在四个不同的数据库上测试查询,其中异常从10%到40%。图11的示图1140和1160中示出了结果。对q1和q2这二者来说,在越来越多的异常的情况下,扩展查询和join-back查询仅稍微增加,并且与原始查询的趋势相同。注意到,X%的异常并不转换成X%的较大的数据库,因为诸如漏读之类的异常实际降低了原始数据量。
第6部分的实验结果表明延迟清洗可用于在RFID数据上的典型分析查询。扩展和join-back方法均明显比应用规则却不利用(leverage)查询信息的初级方法表现得更好。当扩展和join-back方法均可应用的时候,在两者之间存在折衷。重要的是还要注意,清洗的开销限制在读表(the readstable)。对于连接更多参考数据和计算更多聚合的分析查询来说,延迟清洗的相对开销甚至更小。
7.计算系统
图12是依照本发明的实施例用于实现图2、图4、图5和图6的过程的计算系统。计算单元1200适于存储和/或执行延迟清洗系统1214的程序代码,并且通常包括中央处理单元(CPU)1202、存储器1204、输入/输出(I/O)接口1206、总线1208、I/O设备1210以及存储单元1212。CPU 1202实现计算单元1200的计算和控制功能。CPU 1202可以包括单个处理单元,或者跨一个或多个位置中的一个或多个处理单元分布(例如,在客户机和服务器上)。
在延迟清洗系统1214的程序代码的实际执行期间采用存储器1204的本地存储元件。存储器1204的高速缓存元件提供了对至少某些程序代码的临时存储,以便降低在执行期间必须从大容量存储器检索代码的次数。进一步地,存储器1204可以包括图12中未示出的其它系统,例如在CPU 1202上运行并且提供对计算单元1200内和/或连接到计算单元1200的各种组件的控制的操作系统(例如,Linux)。
存储器1204可以包括任何已知类型的数据存储器和/或传输介质,包括大容量存储器、磁介质、光介质、随机访问存储器(RAM)、只读存储器(ROM)、数据高速缓存、数据对象等。存储单元1212是,例如,存储数据(例如,工作流的XML表示)的磁盘驱动器或光盘驱动器。此外,类似于CPU 1202,存储器1204可以位于单个物理位置,包括一种或多种类型的数据存储器,或者跨各种形式下的多个物理系统分布。进一步地,存储器1204可以包括跨例如LAN、WAN或存储区域网(SAN)(未示出)分布的数据。
I/O接口1206包括用于从外部源或向外部源交换信息的任何系统。I/O设备1210包括任何已知类型的外部设备,包括显示器监控器、键盘、鼠标、打印机、扬声器、手持设备、打印机、传真机等。总线1208提供计算单元1200中每个组件之间的通信链路,并且可以包括任何类型的传输链路,包括电的、光的、无线等。
I/O接口1206还允许计算单元1200从辅助存储设备(例如,存储单元1212)存储和检索信息(例如,程序指令或数据)。辅助存储设备可以是非易失性存储设备(例如,接收CD-ROM磁盘的CD-ROM驱动器)。计算单元1200可以存储和检索来自其它的辅助存储设备(未示出)的信息,其它的辅助存储设备可以包括直接访问存储设备(DASD)(例如,硬盘或软盘)、磁光盘驱动器、磁带驱动器或无线通信设备。
本发明可以采取全硬件实施例、全软件实施例或者既含有硬件元素又含有软件元素的实施例的形式。在优选的实施例中,以软件实现本发明,其包括但不限于固件、常驻软件、微码等。
此外,本发明可以采取可访问于计算机可用或计算机可读介质的计算机程序产品的形式,该计算机可用或计算机可读介质提供由计算单元1200或任何指令执行系统使用的或者与计算单元1200或任何指令执行系统结合使用以提供和促进本发明的能力的延迟清洗系统1214的程序代码。对于该描述来说,计算机可用或计算机可读介质可以是能够容纳、存储、通信、传播或传送由指令执行系统、装置或设备使用的或者与指令执行系统、装置或设备结合使用的程序的任何装置。
介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备)或者传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可装卸计算机磁盘、RAM 1204、ROM、硬磁盘和光盘。光盘的当前的例子包括只读光盘存储器(CD-ROM)、读/写光盘(CD-R/W)和DVD。
借助于例子提供了文中所描绘的流程图。在不背离本发明的精神的情况下,可以对文中所描述的这些示图或步骤(或操作)进行变化。例如,在某些情况下,可以按照不同的顺序实现步骤,或者可以添加、删除或修改步骤。所有的这些变化都被认为是所附权利要求中所叙述的本发明的一部分。
虽然已经出于说明的目的在文中描述了本发明的实施例,但是很多修改和改变对本领域的技术人员来说将是显而易见的。因此,所附权利要求旨在涵盖落入本发明的实际精神和范围内的所有这样的修改和改变。
Claims (19)
1.一种在查询时间从基于序列的数据中清洗异常的计算机实现的方法,其包括:
将基于序列的数据加载到由计算系统的数据库管理系统所管理的数据库中,所述加载是在先于所述基于序列的数据的查询时间的、所述基于序列的数据的加载时间进行的;
在所述计算系统的清洗规则引擎处接收用于对基于序列的数据中的一个或多个异常进行处理以产生更可靠数据的清洗规则;
通过所述清洗规则引擎,将所述清洗规则自动转换成模板,所述模板包括对所述基于序列的数据中的一个或多个异常进行补偿的逻辑;
在所述查询时间并且通过所述计算系统的查询重写引擎,接收检索所述基于序列的数据的用户查询;
在所述查询时间并且通过所述查询重写引擎,自动重写所述用户查询以提供重写的查询,所述自动重写包括:应用包括在所述模板中的所述逻辑来补偿所述一个或多个异常;以及
在所述查询时间,通过所述数据库管理系统执行所述重写的查询,其中,通过所述执行所述重写的查询所提供的应答与在通过将所述清洗规则应用于所有的所述基于序列的数据而生成的数据集上执行所述用户查询的结果一样,
进行扩展重写算法和join-back算法中的至少一个以便生成所述重写的查询,所述进行包括:
将所述基于序列的数据减少成所述基于序列的数据的子集,通过对清洗后的数据的生成来使用所述子集,以及
在所述减少之后,在所述清洗后的数据上执行包括在所述用户查询中的逻辑,
其中所述将所述基于序列的数据减少成所述子集以及所述执行包括在所述用户查询中的所述逻辑提供了这样的保证,即:通过所述执行所述重写的查询所提供的所述应答与所述在通过所述将所述清洗规则应用于所有的所述基于序列的数据而生成的所述数据集上执行所述用户查询的所述结果一样。
2.根据权利要求1的方法,其中所述自动转换所述清洗规则包括:
在大小为一的窗口上将两个单元素中的单元素转换成一个或多个标量聚合,其中所述两个单元素是所述清洗规则的条件所引用的所述基于序列的数据中的两行,其中根据所述两个单元素的相对序列位置来定义所述窗口,并且其中在结构化查询语言/联机分析处理中指定所述一个或多个标量聚合以及所述窗口。
3.根据权利要求1的方法,其中所述自动转换所述清洗规则包括:
在结构化查询语言/联机分析处理中定义窗口以便包括所述基于序列的数据的行的集合,所述行的集合被所述清洗规则的条件引用;以及
在所述窗口上将所述条件转换成结构化查询语言/联机分析处理中的case表达式,
其中所述条件引用单元素和所述行的集合。
4.根据权利要求1的方法,其中所述自动转换所述清洗规则包括以下之一:
如果所述清洗规则的动作是删除动作或保留动作,则将所述动作实现为结构化查询语言/联机分析处理中的过滤条件,其中所述删除动作移除所述基于序列的数据中的一行或多行,并且所述保留动作保留所述基于序列的数据中的一行或多行;以及
如果所述清洗规则的所述动作是修改动作,则将所述动作转换成结构化查询语言/联机分析处理中的case表达式,其中所述修改动作修改所述基于序列的数据的一行或多行。
5.根据权利要求4的方法,其中所述自动转换所述清洗规则包括所述将所述动作实现为所述过滤条件,其中如果所述动作是所述保留动作,则直接利用所述清洗规则的规则条件作为所述过滤条件,并且其中,如果所述动作是所述删除动作,则利用所述规则条件的取反作为所述过滤条件。
6.根据权利要求1的方法,其中所述自动重写包括所述进行所述扩展重写算法,并且其中所述进行所述扩展重写算法进一步包括:
对于关系表R上包括在所述清洗规则C的模式中的一个或多个上下文参考中的每个上下文参考X,进行包括以下步骤的循环:
对一个或多个合取项的列表设置相关条件cr,所述一个或多个合取项包括以下中的至少一个:包括在所述清洗规则C的条件中并且引用所述上下文参考X的一个或多个显式合取项,以及一个或多个隐式合取项,每个隐式合取项处于所述关系表R的群集键上或所述关系表R的序列键上,其中所述相关条件cr是所述上下文参考X与T之间的相关条件,所述T是包括在所述模式中的目标参考,
如果所述上下文参考X是基于位置的上下文参考,那么在所述相关条件cr的所述一个或多个合取项中仅保留位置保存的合取项,
将s绑定到所述目标参考T,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,
在所述相关条件cr与所述查询条件s之间运行传递性分析,
确定d,所述d是包括了通过所述传递性分析所生成的条件中仅引用所述上下文参考X的任何合取项的集合,以及
如果集合d不为空,则将集合d添加到上下文条件cc,否则将所述上下文条件cc设置成空集,并且中断所述循环,其中所述上下文条件cc为上下文参考X定义了上下文集合;以及
如果所述上下文条件cc不是所述空集,则生成扩展重写Qe作为所述重写的查询,否则将所述扩展重写Qe设置成空值。
7.根据权利要求6的方法,其中所述生成所述扩展重写Qe包括:
将扩展条件ec计算为s‖cc;
将所述查询条件s简化成优化的查询条件s′,所述简化包括:将所述优化的查询条件s′设置等于s-cc;以及
通过表达式σs’(Φc(σec(R)))计算所述扩展重写Qe,其中所述Φc(σec(R))是在数据集σec(R)上应用所述清洗规则C的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的所述关系表R的数据的结果。
8.根据权利要求6的方法,其中所述用户查询具有 的形式,
其中所述关系表R通过连接来连接列Ki上的每个表Di,并且所有的连接都是n到1的连接,
其中通过所述传递性分析所生成的所述任何合取项均是在表D′i上的Pi,其中i=1,…,m,并且m<=n,以及
其中所述进行所述扩展重写算法进一步包括:
对于i=1,…,m,按照S′i的升序选择性对所述D′i进行排序;
利用在一系列m+1个值上增加的计数器进行循环,所述利用所述计数器进行所述循环包括:
如果所述计数器等于初始值,则生成第一结构化查询语言语句,其在清洗了所述基于序列的数据之后延迟所有的所述连接,所述清洗包括利用所述清洗规则,否则生成另外的结构化查询语言语句,其按照所述排序所指定的顺序将所述关系表R与所述表D′1到D′i相连接,
将与所述n到1的连接相关联的每个连接条件转换成所述关系表R上具有R.Ki in(select Ki from Di where Si)形式的局部合取项,
进行权利要求7的所述扩展重写算法,
如果在所述上下文参考上导出了所有的“in”合取项,则生成新的结构化查询语言语句,所述生成所述新的结构化查询语言语句包括:利用所述进行权利要求7的所述扩展重写算法,以及
如果在所述上下文参考上导出了所有的所述“in”合取项,则将所述“in”合取项转换成连接;
编译达到m+1个结构化查询语言语句的集合,所述集合包括通过利用所述计数器的所述循环而生成的所述第一结构化查询语言语句和所述另外的结构化查询语言语句,所述编译包括利用所述数据库管理系统的优化器;
通过所述数据库管理系统确定对执行包括在所述达到m+1个结构化查询语言语句的集合中的所述结构化查询语言语句所需要的计算资源的成本的估计;以及
在所述确定之后,从所述达到m+1个结构化查询语言语句的集合中选择最优的结构化查询语言语句作为所述重写的查询,所述最优的结构化查询语言语句与所述确定的估计中的最小估计相关联。
9.根据权利要求1的方法,其中所述自动重写包括所述进行所述join-back算法,并且其中所述进行所述join-back算法进一步包括:
按照Si的升序选择性对D1到Dn进行排序,其中所述用户查询Q具有 的形式,其中所述用户查询Q是所述σsR,并且关系表R使用条件JCi连接每个表Di;
生成n+1个结构化查询语言查询Qi,所述生成所述n+1个结构化查询语言查询Qi包括按照所述排序所指定的顺序从0到n推进半连接;
编译所述n+1个结构化查询语言查询Q[i],所述编译包括利用所述数据库管理系统的优化器;
通过所述数据库管理系统确定对执行每个结构化查询语言查询Q[i]所需要的计算资源的成本的估计;以及
在所述确定之后,选择所述n+1个结构化查询语言查询Q[i]中的结构化查询语言查询Qj作为所述重写的查询,所述结构化查询语言查询Qj与所述确定的估计中的最小估计相关联。
10.根据权利要求9的方法,其中所述生成所述n+1个结构化查询语言查询Q[i]包括:
将计数器设置成初始值;以及
对于小于或等于终值的所述计数器,进行包括以下步骤的循环:
如果所述计数器等于所述初始值,则设置T等于第一投影∏ckey(σsR),否则设置T等于第二投影 其中所述第一投影和所述第二投影将所述第一投影和所述第二投影的输入数据分别投影到ckey上并且移除其中的重复,所述ckey是包括在清洗规则C的定义中的群集键,并且其中所述设置T等于所述第一投影以及设置T等于所述第二投影促进了所述推进;
将Q[i]生成为表达式 其中ec是扩展条件并且s′是优化的查询条件,其中所述 是在数据集σec(R)上应用所述清洗规则C的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的所述关系表R的数据的结果,并且其中所述生成包括:
将所述扩展条件ec计算为s‖cc,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,并且其中所述cc是为上下文参考X定义上下文集合的上下文条件,所述上下文参考X包括在含于所述清洗规则C的模式中的一个或多个上下文参考中,以及
将所述查询条件s简化成所述优化的查询条件s′,所述简化包括:设置所述优化的查询条件s′等于s-cc;以及增加所述计数器。
11.根据权利要求1的方法,其中所述自动重写进一步包括:
进行所述扩展重写算法以便将所述用户查询重写为查询Qe;
进行所述join-back算法以便将所述用户查询重写为Qj;以及
确定与执行所述查询Qe所需要的一个或多个计算资源相关联的第一成本估计;
确定与执行所述查询Qj所需要的所述一个或多个计算资源相关联的第二成本估计;
如果所述第一成本估计小于所述第二成本估计,则选择所述查询Qe作为所述重写的查询;以及
如果所述第二成本估计小于所述第一成本估计,则选择所述查询Qj作为所述重写的查询。
12.一种用于在计算环境中于查询时间从基于序列的数据中清洗异常的系统,其包括:
用于将基于序列的数据加载到由计算系统的数据库管理系统所管理的数据库中的装置,所述加载是在先于所述基于序列的数据的查询时间的、所述基于序列的数据的加载时间进行的;
用于在所述计算系统的清洗规则引擎处接收用于对基于序列的数据中的一个或多个异常进行处理以产生更可靠数据的清洗规则的装置;
用于通过所述清洗规则引擎,将所述清洗规则自动转换成模板的装置,所述模板包括对所述基于序列的数据中的一个或多个异常进行补偿的逻辑;
用于在所述查询时间并且通过所述计算系统的查询重写引擎,接收检索所述基于序列的数据的用户查询的装置;
用于在所述查询时间并且通过所述查询重写引擎,自动重写所述用户查询以提供重写的查询的装置,所述用于自动重写的装置包括:用于应用包括在所述模板中的所述逻辑来补偿所述一个或多个异常的装置;以及用于在所述查询时间,通过所述数据库管理系统执行所述重写的查询的装置,其中由所述用于执行所述重写的查询的装置所提供的应答与由用于在通过将所述清洗规则应用于所有的所述基于序列的数据而生成的数据集上执行所述用户查询的装置所提供的结果一样,
其中所述用于自动重写的装置进一步包括:用于进行扩展重写算法和join-back算法中的至少一个以便生成所述重写的查询的装置,所述用于进行的装置包括:
用于将所述基于序列的数据减少成所述基于序列的数据的子集的装置,通过对清洗后的数据的生成来使用所述子集,以及
用于在所述减少之后在所述清洗后的数据上执行包括在所述用户查询中的逻辑的装置,
其中所述用于将所述基于序列的数据减少成所述子集的装置以及所述用于执行包括在所述用户查询中的所述逻辑的装置提供了这样的保证,即:通过所述执行所述重写的查询所提供的所述应答与所述在通过所述将所述清洗规则应用于所有的所述基于序列的数据而生成的所述数据集上执行所述用户查询的所述结果一样。
13.根据权利要求12的系统,其中所述用于自动重写的装置包括所述用于进行所述扩展重写算法的装置,并且其中所述用于进行所述扩展重写算法的装置进一步包括:
用于对关系表R上包括在所述清洗规则C的模式中的一个或多个上下文参考中的每个上下文参考X进行循环的装置,所述用于进行所述循环的装置包括:
用于对一个或多个合取项的列表设置相关条件cr的装置,所述一个或多个合取项包括以下中的至少一个:包括在所述清洗规则C的条件中并且引用所述上下文参考X的一个或多个显式合取项,以及一个或多个隐式合取项,每个隐式合取项处于所述关系表R的群集键上或所述关系表R的序列键上,其中所述相关条件cr是所述上下文参考X与T之间的相关条件,所述T是包括在所述模式中的目标参考,
用于在所述上下文参考X是基于位置的上下文参考的情况下,在所述相关条件cr的所述一个或多个合取项中仅保留位置保存的合取项的装置,
用于将s绑定到所述目标参考T的装置,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,
用于在所述相关条件cr与所述查询条件s之间运行传递性分析的装置,
用于确定d的装置,所述d是包括了通过所述传递性分析所生成的条件中仅引用所述上下文参考X的任何合取项的集合,以及
用于如果集合d不为空,则将集合d添加到上下文条件cc,否则将所述上下文条件cc设置成空集并且中断所述循环的装置,其中所述上下文条件cc为上下文参考X定义了上下文集合;以及
用于如果所述上下文条件cc不是所述空集,则生成扩展重写Qe作为所述重写的查询,否则将所述扩展重写Qe设置为空值的装置。
14.根据权利要求13的系统,其中所述用于生成所述扩展重写Qe的装置包括:
用于将扩展条件ec计算为s‖cc的装置;
用于将所述查询条件s简化成优化的查询条件s′的装置,所述用于简化的装置包括:用于将所述优化的查询条件s′设置等于s-cc的装置;以及
用于通过表达式σs’(Φc(σec(R)))计算所述扩展重写Qe的装置,其中所述Φc(σec(R))是在数据集σec(R)上应用所述清洗规则C的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的所述关系表R的数据的结果。
15.根据权利要求13的系统,其中所述用户查询具有 的形式,
其中所述关系表R连接来连接列Ki上的每个表Di,并且所有的连接都是n到1的连接,
其中通过所述传递性分析所生成的所述任何合取项均是在表D′i上的Pi,其中i=1,…,m,并且m<=n,以及
其中所述用于进行所述扩展重写算法的装置进一步包括:
用于按照S′i的升序选择性对所述D′i进行排序的装置,其中i=1,…,m;
用于利用在一系列m+1个值上增加的计数器进行循环的装置,所述用于利用所述计数器进行所述循环的装置包括:
如果所述计数器等于初始值,则是用于生成第一结构化查询语言语句的装置,所述第一结构化查询语言语句在清洗了所述基于序列的数据之后延迟所有的所述连接,所述清洗包括利用所述清洗规则;否则是用于生成另外的结构化查询语言语句的装置,所述另外的结构化查询语言语句按照所述排序所指定的顺序将所述关系表R与所述表D′1到D′i相连接,
用于将与所述n到1的连接相关联的每个连接条件转换成所述关系表R上具有R.Ki in(select Ki from Di where Si)形式的局部合取项的装置,
用于进行权利要求7的所述扩展重写算法的步骤的装置,
用于当在所述上下文参考上导出了所有的“in”合取项的情况下生成新的结构化查询语言语句的装置,所述用于生成所述新的结构化查询语言语句的装置包括:用于利用所述进行权利要求7的所述扩展重写算法的所述步骤的装置,以及
用于当在所述上下文参考上导出了所有的所述“in”合取项的情况下将所述“in”合取项转换成连接的装置;
用于编译达到m+1个结构化查询语言语句的集合的装置,所述集合包括通过利用所述计数器的所述循环而生成的所述第一结构化查询语言语句和所述另外的结构化查询语言语句,所述用于编译的装置包括用于利用所述数据库管理系统的优化器的装置;
用于通过所述数据库管理系统确定对执行包括在所述达到m+1个结构化查询语言语句的集合中的所述结构化查询语言语句所需要的计算资源的成本的估计的装置;以及
用于在所述确定之后,从所述达到m+1个结构化查询语言语句的集合中选择最优的结构化查询语言语句作为所述重写的查询的装置,所述最优的结构化查询语言语句与所述确定的估计中的最小估计相关联。
16.根据权利要求12的系统,其中所述用于自动重写的装置包括所述用于进行所述join-back算法的装置,并且其中,所述用于进行所述join-back算法的装置进一步包括:
用于按照Si的升序选择性对D1到Dn进行排序的装置,其中所述用户查询Q具有 的形式,其中所述用户查询Q是所述σsR,并且关系表R使用条件JCi连接每个表Di;
用于生成n+1个结构化查询语言查询Qi的装置,所述用于生成所述n+1个结构化查询语言查询Qi的装置包括:用于按照所述排序所指定的顺序从0到n推进半连接的装置;
用于编译所述n+1个结构化查询语言查询Q[i]的装置,所述用于编译的装置包括用于利用所述数据库管理系统的优化器的装置;
用于通过所述数据库管理系统确定对执行每个结构化查询语言查询Q[i]所需要的计算资源的成本的估计的装置;以及
用于在所述确定之后,选择所述n+1个结构化查询语言查询Q[i]中的结构化查询语言查询Qj作为所述重写的查询的装置,所述结构化查询语言查询Qj与所述确定的估计中的最小估计相关联。
17.根据权利要求16的系统,其中所述用于生成所述n+1个结构化查询语言查询Q[i]的装置包括:
用于将计数器设置成初始值的装置;以及
用于对小于或等于终值的所述计数器进行循环的装置,所述用于进行所述循环的装置包括:
用于所述计数器等于所述初始值,则设置T等于第一投影∏ckey(σsR),否则设置T等于第二投影 的装置,其中所述第一投影和所述第二投影将所述第一投影和所述第二投影的输入数据分别投影到ckey上并且移除其中的重复,所述ckey是包括在清洗规则C的定义中的群集键,并且其中所述设置T等于所述第一投影以及设置T等于所述第二投影促进了所述推进;
用于将Q[i]生成为表达式 的装置,其中ec是扩展条件并且s′是优化的查询条件,其中所述 是在数据集σec(R)上应用所述清洗规则C的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的所述关系表R的数据的结果,并且其中所述用于生成的装置包括:
用于将所述扩展条件ec计算为s‖cc的装置,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,并且其中所述cc是为上下文参考X定义上下文集合的上下文条件,所述上下文参考X包括在含于所述清洗规则C的模式中的一个或多个上下文参考中,以及
用于将所述查询条件s简化成所述优化的查询条件s′的装置,所述用于简化的装置包括用于设置所述优化的查询条件s′等于s-cc的装置;以及
用于增加所述计数器的装置。
18.一种通过相对于多个清洗规则重写查询而在查询时间从基于序列的数据中清洗异常的计算机实现的方法,其包括:
将基于序列的数据加载到由计算系统的数据库管理系统所管理的数据库中,所述基于序列的数据包括一个或多个异常;
在所述计算系统的清洗规则引擎处接收多个用于对基于序列的数据中的一个或多个异常进行处理以产生更可靠数据的清洗规则C1,…,Cn;
通过所述计算系统的查询重写引擎,接收检索所述基于序列的数据的用户查询Q;
通过所述查询重写引擎自动重写所述用户查询以提供重写的查询;
通过所述数据库管理系统执行所述重写的查询,所述执行包括:从所述基于序列的数据生成清洗后的数据,所述清洗后的数据不包括所述一个或多个异常,
其中,所述自动重写包括:
对于所述多个清洗规则C1,…,Cn中的每个清洗规则Ci,进行第一循环,其包括:
对于关系表R上包括在所述清洗规则Ci的模式中的一个或多个上下文参考中的每个上下文参考X,进行第二循环,其包括:
对一个或多个合取项的列表设置相关条件cr,所述一个或多个合取项包括以下中的至少一个:包括在所述清洗规则Ci的条件中并且引用所述上下文参考X的一个或多个显式合取项,以及一个或多个隐式合取项,每个隐式合取项处于所述关系表R的群集键上或所述关系表R的序列键上,其中所述相关条件cr是所述上下文参考X与T之间的相关条件,所述T是包括在所述模式中的目标参考,
如果所述上下文参考X是基于位置的上下文参考,那么在所述相关条件cr的所述一个或多个合取项中仅保留位置保存的隐式合取项,
将s绑定到所述目标参考T,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,
在所述相关条件cr与所述查询条件s之间运行传递性分析,确定d,所述d是包括了所述相关条件cr中仅引用上下文参考X的任何合取项的集合,以及
如果集合d不为空,则将集合d添加到上下文条件cci,否则将所述上下文条件cci设置成空集,并且中断所述第二循环,其中所述上下文条件cci为上下文参考X定义了上下文集合,以及
如果所述上下文条件cci是所述空集,则中断所述第一循环,并且进行join-back算法以生成所述重写的查询;以及
如果上下文条件cci都不是所述空集,则进行以下步骤:
将总的上下文条件cc计算为cc1‖cc2…‖ccn,
将扩展条件ec计算为s‖cc,其中所述s是所述用户查询Q的查询条件,
将所述查询条件s简化成优化的查询条件s′,所述简化包括:将所述优化的查询条件s′设置等于s-cc,以及
将扩展重写查询Qe计算为所述重写的查询,所述计算所述扩展重写查询Qe包括利用表达式σs’(ΦCn…ΦC1(σec(R))),其中所述ΦCn…ΦC1(σec(R))中的每个ΦCi(σec(R))是在数据集σec(R)上应用所述清洗规则Ci的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的所述关系表R的数据的结果。
19.一种用于在计算环境中通过相对于多个清洗规则重写查询而在查询时间从基于序列的数据中清洗异常的系统,其包括:
用于将基于序列的数据加载到由计算系统的数据库管理系统所管理的数据库中的装置,所述基于序列的数据包括一个或多个异常;
用于在所述计算系统的清洗规则引擎处接收多个用于对基于序列的数据中的一个或多个异常进行处理以产生更可靠数据的清洗规则C1,…,Cn的装置;
用于通过所述计算系统的查询重写引擎接收检索所述基于序列的数据的用户查询Q的装置;
用于通过所述查询重写引擎自动重写所述用户查询以提供重写的查询的装置;
用于通过所述数据库管理系统执行所述重写的查询的装置,所述用于执行的装置包括:用于从所述基于序列的数据生成清洗后的数据的装置,所述清洗后的数据不包括所述一个或多个异常,
其中,所述用于自动重写的装置包括:
用于对所述多个清洗规则C1,…,Cn中的每个清洗规则Ci进行第一循环的装置,所述用于进行所述第一循环的装置包括:
用于对关系表R上包括在所述清洗规则Ci的模式中的一个或多个上下文参考中的每个上下文参考X进行第二循环的装置,所述用于进行所述第二循环的装置包括以下装置:
用于对一个或多个合取项的列表设置相关条件cr的装置,所述一个或多个合取项包括以下中的至少一个:包括在所述清洗规则Ci的条件中并且引用所述上下文参考X的一个或多个显式合取项,以及一个或多个隐式合取项,每个隐式合取项处于所述关系表R的群集键上或所述关系表R的序列键上,其中所述相关条件cr是所述上下文参考X与T之间的相关条件,所述T是包括在所述模式中的目标参考,
用于在所述上下文参考X是基于位置的上下文参考的情况下,在所述相关条件cr的所述一个或多个合取项中仅保留位置保存的隐式合取项的装置,
用于将s绑定到所述目标参考T的装置,其中所述s是所述关系表R上的查询条件并且包括在所述用户查询Q中,
用于在所述相关条件cr与所述查询条件s之间运行传递性分析的装置,
用于确定d的装置,所述d是包括了所述相关条件cr中仅引用上下文参考X的任何合取项的集合,
用于如果集合d不为空,则将集合d添加到上下文条件cci,否则所述装置用于将所述上下文条件cci设置成空集并且中断所述第二循环的装置,其中所述上下文条件cci为上下文参考X定义了上下文集合,以及
用于在所述上下文条件cci是所述空集的情况下中断所述第一循环的装置,以及用于进行join-back算法以生成所述重写的查询的装置;以及
用于在上下文条件cci都不是所述空集的情况下进行以下步骤的装置:
将总的上下文条件cc计算为cc1‖cc2…‖ccn,
将扩展条件ec计算为s‖cc,其中所述s是所述用户查询Q的查询条件,
将所述查询条件s简化成优化的查询条件s′,所述简化包括:将所述优化的查询条件s′设置等于s-cc,以及
将扩展重写查询Qe计算为所述重写的查询,所述计算所述扩展重写查询Qe包括利用表达式σs’(ΦCn…ΦC1(σec(R))),其中所述ΦCn…ΦC1(σec(R))中的每个ΦCi(σec(R))是在数据集σec(R)上应用所述清洗规则Ci的结果,其中所述数据集σec(R)是直接将所述扩展条件ec推向所述关系表R以及清洗由所述扩展条件ec所选择的所述关系表R的数据的结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/559,452 US7516128B2 (en) | 2006-11-14 | 2006-11-14 | Method for cleansing sequence-based data at query time |
US11/559,452 | 2006-11-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101183378A CN101183378A (zh) | 2008-05-21 |
CN101183378B true CN101183378B (zh) | 2012-09-26 |
Family
ID=39370408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101692550A Active CN101183378B (zh) | 2006-11-14 | 2007-11-07 | 用于在查询时间清洗基于序列的数据的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7516128B2 (zh) |
CN (1) | CN101183378B (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080215564A1 (en) * | 2007-03-02 | 2008-09-04 | Jon Bratseth | Query rewrite |
US8566793B2 (en) | 2007-04-27 | 2013-10-22 | International Business Machines Corporation | Detecting and displaying errors in database statements within integrated development environment tool |
US9489418B2 (en) | 2007-04-27 | 2016-11-08 | International Business Machines Corporation | Processing database queries embedded in application source code from within integrated development environment tool |
US9047337B2 (en) * | 2007-04-27 | 2015-06-02 | International Business Machines Corporation | Database connectivity and database model integration within integrated development environment tool |
US8392880B2 (en) * | 2007-04-27 | 2013-03-05 | International Business Machines Corporation | Rapid application development for database-aware applications |
US8090735B2 (en) * | 2007-06-22 | 2012-01-03 | International Business Machines Corporation | Statement generation using statement patterns |
US8375351B2 (en) * | 2007-06-23 | 2013-02-12 | International Business Machines Corporation | Extensible rapid application development for disparate data sources |
US20090004231A1 (en) * | 2007-06-30 | 2009-01-01 | Popp Shane M | Pharmaceutical dosage forms fabricated with nanomaterials for quality monitoring |
US7885953B2 (en) * | 2007-10-03 | 2011-02-08 | International Business Machines Corporation | Off-loading star join operations to a storage server |
US8412809B2 (en) * | 2007-10-24 | 2013-04-02 | International Business Machines Corporation | Method, apparatus and computer program product implementing multi-tenancy for network monitoring tools using virtualization technology |
US7827153B2 (en) * | 2007-12-19 | 2010-11-02 | Sap Ag | System and method to perform bulk operation database cleanup |
US8285748B2 (en) * | 2008-05-28 | 2012-10-09 | Oracle International Corporation | Proactive information security management |
US8392405B2 (en) * | 2008-06-23 | 2013-03-05 | Oracle International Corporation | Performing cost-based optimizations of authorization checks in database systems |
US20100010979A1 (en) * | 2008-07-11 | 2010-01-14 | International Business Machines Corporation | Reduced Volume Precision Data Quality Information Cleansing Feedback Process |
US8601438B2 (en) * | 2008-11-17 | 2013-12-03 | Accenture Global Services Limited | Data transformation based on a technical design document |
US8160996B2 (en) * | 2009-02-02 | 2012-04-17 | The Hong Kong Polytechnic University | Sequence online analytical processing system |
US9406047B2 (en) | 2009-03-04 | 2016-08-02 | International Business Machines Corporation | Querying database clients utilizing email messages |
US9613123B2 (en) * | 2009-04-13 | 2017-04-04 | Hewlett Packard Enterprise Development Lp | Data stream processing |
US8239373B2 (en) * | 2009-05-18 | 2012-08-07 | Oracle International Corporation | Efficient way to evaluate uncorrelated path-based row sources with XML storage |
US8301620B2 (en) * | 2009-05-28 | 2012-10-30 | Oracle International Corporation | Efficient way to evaluate aggregations on XML data using path-based row sources |
US8745031B2 (en) * | 2009-05-28 | 2014-06-03 | Oracle International Corporation | Cache-based predicate handling for queries on XML data using uncorrelated path-based row sources |
US20100306591A1 (en) * | 2009-06-01 | 2010-12-02 | Murali Mallela Krishna | Method and system for performing testing on a database system |
US8161035B2 (en) * | 2009-06-04 | 2012-04-17 | Oracle International Corporation | Query optimization by specifying path-based predicate evaluation in a path-based query operator |
US8326797B2 (en) * | 2009-11-11 | 2012-12-04 | International Business Machines Corporation | Supporting set-level slice and dice in data warehouses |
CN102859517B (zh) * | 2010-05-14 | 2016-07-06 | 株式会社日立制作所 | 时序数据管理装置、系统以及方法 |
US20120150825A1 (en) * | 2010-12-13 | 2012-06-14 | International Business Machines Corporation | Cleansing a Database System to Improve Data Quality |
CN102096792B (zh) * | 2011-01-06 | 2013-06-26 | 西安电子科技大学 | 基于射频识别的供应链路径构建方法 |
CN102156893B (zh) * | 2011-03-24 | 2013-05-08 | 大连海事大学 | Rfid设备网络环境下采集数据的清洗系统及方法 |
US8917902B2 (en) | 2011-08-24 | 2014-12-23 | The Nielsen Company (Us), Llc | Image overlaying and comparison for inventory display auditing |
US8650204B2 (en) | 2011-12-19 | 2014-02-11 | Oracle International Corporation | Techniques for efficiently supporting XQuery update facility in SQL/XML |
US8880510B2 (en) * | 2011-12-23 | 2014-11-04 | Sap Se | Unique value calculation in partitioned tables |
US10120916B2 (en) * | 2012-06-11 | 2018-11-06 | International Business Machines Corporation | In-querying data cleansing with semantic standardization |
EP2904493A4 (en) * | 2012-10-08 | 2016-06-22 | ROBUST MATERIAL DEFECT MANAGEMENT SYSTEM, METHOD AND INFRASTRUCTURE FOR BUSINESS DEVICES | |
US9576264B2 (en) * | 2012-11-12 | 2017-02-21 | Global Healthcare Exchange, Llc | Systems and methods for supply chain management |
US8996559B2 (en) | 2013-03-17 | 2015-03-31 | Alation, Inc. | Assisted query formation, validation, and result previewing in a database having a complex schema |
US9547834B2 (en) | 2014-01-08 | 2017-01-17 | Bank Of America Corporation | Transaction performance monitoring |
US9992090B2 (en) | 2014-01-08 | 2018-06-05 | Bank Of America Corporation | Data metrics analytics |
CN103914616B (zh) * | 2014-03-18 | 2017-12-05 | 清华大学深圳研究生院 | 一种应急数据质量控制系统及方法 |
US9535904B2 (en) * | 2014-03-26 | 2017-01-03 | Microsoft Technology Licensing, Llc | Temporal translation grammar for language translation |
US10628393B2 (en) * | 2015-06-24 | 2020-04-21 | International Business Machines Corporation | Generating data tables |
CN107533550B (zh) | 2015-07-10 | 2019-01-29 | 三菱电机株式会社 | 数据取得装置、数据取得方法和计算机能读取的记录介质 |
US10089356B2 (en) | 2015-08-28 | 2018-10-02 | International Business Machines Corporation | Processing window partitioning and ordering for on-line analytical processing (OLAP) functions |
WO2017037493A1 (en) | 2015-08-31 | 2017-03-09 | The Nielsen Company (Us), Llc | Product auditing in point-of-sale images |
CN105447126A (zh) * | 2015-11-17 | 2016-03-30 | 苏州蜗牛数字科技股份有限公司 | 一种游戏道具个性化推荐方法 |
CN110020333A (zh) * | 2017-07-27 | 2019-07-16 | 北京嘀嘀无限科技发展有限公司 | 数据分析方法及装置、电子设备、存储介质 |
US10489225B2 (en) | 2017-08-10 | 2019-11-26 | Bank Of America Corporation | Automatic resource dependency tracking and structure for maintenance of resource fault propagation |
CN108804533B (zh) * | 2018-05-04 | 2021-11-30 | 佛山科学技术学院 | 一种异构大数据信息的过滤方法及装置 |
CN110618982B (zh) * | 2018-12-26 | 2022-09-30 | 北京时光荏苒科技有限公司 | 一种多源异构数据的处理方法、装置、介质及电子设备 |
CN109800220B (zh) * | 2019-01-29 | 2020-12-15 | 浙江国贸云商企业服务有限公司 | 一种大数据清洗方法、系统及相关装置 |
CN110223091A (zh) * | 2019-06-19 | 2019-09-10 | 四川五丰科技有限公司 | 一种溯源防伪系统及其方法 |
CN110727668B (zh) * | 2019-09-30 | 2022-03-01 | 北京百度网讯科技有限公司 | 数据清洗方法及装置 |
CN111966727A (zh) * | 2020-08-12 | 2020-11-20 | 北京海致网聚信息技术有限公司 | 基于Spark和Hive的分布式OLAP即席查询方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526416B1 (en) * | 1998-06-30 | 2003-02-25 | Microsoft Corporation | Compensating resource managers |
US6965888B1 (en) * | 1999-09-21 | 2005-11-15 | International Business Machines Corporation | Method, system, program, and data structure for cleaning a database table using a look-up table |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7082426B2 (en) | 1993-06-18 | 2006-07-25 | Cnet Networks, Inc. | Content aggregation method and apparatus for an on-line product catalog |
WO1995030201A1 (en) | 1994-05-02 | 1995-11-09 | Catalina Information Resources, Inc. | Method and apparatus for real-time tracking of retail sales of selected products |
US7120638B1 (en) | 1999-09-21 | 2006-10-10 | International Business Machines Corporation | Method, system, program, and data structure for cleaning a database table |
US7113950B2 (en) * | 2002-06-27 | 2006-09-26 | Microsoft Corporation | Automated error checking system and method |
US6947927B2 (en) * | 2002-07-09 | 2005-09-20 | Microsoft Corporation | Method and apparatus for exploiting statistics on query expressions for optimization |
US20040083199A1 (en) | 2002-08-07 | 2004-04-29 | Govindugari Diwakar R. | Method and architecture for data transformation, normalization, profiling, cleansing and validation |
US7103597B2 (en) * | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7318162B2 (en) * | 2002-12-18 | 2008-01-08 | Sas Institute Inc. | Computer-implemented system and method for managing data integrity validation rules |
US7805411B2 (en) * | 2003-09-06 | 2010-09-28 | Oracle International Corporation | Auto-tuning SQL statements |
US9183256B2 (en) * | 2003-09-19 | 2015-11-10 | Ibm International Group B.V. | Performing sequence analysis as a relational join |
GB0400974D0 (en) * | 2004-01-16 | 2004-02-18 | Solexa Ltd | Multiple inexact matching |
US7363299B2 (en) * | 2004-11-18 | 2008-04-22 | University Of Washington | Computing probabilistic answers to queries |
US20060143439A1 (en) * | 2004-12-06 | 2006-06-29 | Xpaseo | Method and system for sensor data management |
US7443282B2 (en) * | 2005-05-05 | 2008-10-28 | Industrial Technology Research Institute | System and a method, including software and hardware, for providing real-time and synchronization views of supply chain information |
US7634464B2 (en) * | 2006-06-14 | 2009-12-15 | Microsoft Corporation | Designing record matching queries utilizing examples |
-
2006
- 2006-11-14 US US11/559,452 patent/US7516128B2/en not_active Expired - Fee Related
-
2007
- 2007-11-07 CN CN2007101692550A patent/CN101183378B/zh active Active
-
2008
- 2008-05-21 US US12/124,327 patent/US8015176B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526416B1 (en) * | 1998-06-30 | 2003-02-25 | Microsoft Corporation | Compensating resource managers |
US6965888B1 (en) * | 1999-09-21 | 2005-11-15 | International Business Machines Corporation | Method, system, program, and data structure for cleaning a database table using a look-up table |
Also Published As
Publication number | Publication date |
---|---|
US20080114744A1 (en) | 2008-05-15 |
CN101183378A (zh) | 2008-05-21 |
US7516128B2 (en) | 2009-04-07 |
US8015176B2 (en) | 2011-09-06 |
US20080222123A1 (en) | 2008-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101183378B (zh) | 用于在查询时间清洗基于序列的数据的方法和系统 | |
Chiang et al. | Discovering data quality rules | |
US7716167B2 (en) | System and method for automatically building an OLAP model in a relational database | |
Alhajj | Extracting the extended entity-relationship model from a legacy relational database | |
Motahari-Nezhad et al. | Event correlation for process discovery from web service interaction logs | |
US9280581B1 (en) | Method and system for determination of data completeness for analytic data calculations | |
Chaudhuri et al. | Database technology for decision support systems | |
Golfarelli et al. | Schema versioning in data warehouses: Enabling cross-version querying via schema augmentation | |
Zhang et al. | Statistical learning techniques for costing XML queries | |
US20070061287A1 (en) | Method, apparatus and program storage device for optimizing a data warehouse model and operation | |
Glavic et al. | Using SQL for efficient generation and querying of provenance information | |
De Lucia et al. | Adams re-trace: A traceability recovery tool | |
US20040153448A1 (en) | System and method for transforming queries using window aggregation | |
US20070005658A1 (en) | System, service, and method for automatically discovering universal data objects | |
CN101506804A (zh) | 用于在大数据集分析期间维持一致性的方法和装置 | |
US7418449B2 (en) | System and method for efficient enrichment of business data | |
US7529762B2 (en) | Workflow data warehousing | |
US20050004918A1 (en) | Populating a database using inferred dependencies | |
Carme et al. | A model-driven heuristic approach for detecting multidimensional facts in relational data sources | |
US20050065939A1 (en) | Method and system for optimizing snow flake queries | |
Teubner et al. | Dependable cardinality forecasts for XQuery | |
Wojciechowski | E-ETL: Framework for managing evolving ETL processes | |
US20170116306A1 (en) | Automated Definition of Data Warehouse Star Schemas | |
Bleiholder et al. | Eliminating NULLs with Subsumption and Complementation. | |
Vasilyeva et al. | GraphMCS: Discover the Unknown in Large Data Graphs. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160216 Address after: American Utah Patentee after: Tama company Address before: American New York Patentee before: International Business Machines Corp. |