目录
Trio:一种用于数据,准确性和沿袭的集成管理系统
论文背景
Trio是一个新的数据库系统,不仅可以管理数据,还可以管理数据的准确性和沿袭。过去已经提出了不精确的(不确定的,概率的,模糊的,近似的,不完全的和不精确的!)数据库,并且还研究了谱系问题。 Trio项目的目标是将先前的工作合并并提炼成简单且可用的模型,将查询语言设计为SQL可以理解的扩展,并且最重要的是构建一个工作系统-一种在准确性和准确性方面均能增强常规数据管理的系统沿袭是数据的组成部分。本文为Trio提供了许多激励性的应用程序,并为数据模型,查询语言和原型系统制定了初步计划。
在传统的数据库管理系统(DBMS)中,每个数据项都在数据库中或不在数据库中,每个数据项的确切值都是已知的,并且如果完全记录下来,数据项如何存在是一个辅助事实。许多数据库应用程序固有地要求其数据具有更大的灵活性和责任感(有关许多示例,请参见第2节):数据项可能以一定的置信度属于数据库,或者其值可能是近似值。此外,数据项如何存在(尤其是如果它是在某个时间点使用其他(可能不精确的)数据导出的)可能是一个重要的事实,有时与数据项本身一样重要。当前,具有不精确数据或依赖于数据推导信息(以下称为谱系)的应用程序通常在常规DBMS的处理之外支持这些功能。
在斯坦福大学的新Trio项目中,我们正在开发一个原型数据库管理系统,其目的是解决上述传统DBMS的缺点。**具体地说,Trio以简单,高效和完全集成的方式提供了三个相互关联的组件(数据,准确性,第二种谱系)**的管理和查询。 Trio的主要特点是:
1、数据值可能不准确-它们可能是近似的,不确定的或不完整的。例如,一个属性值可能被指定为已知包含精确值(或某种其他类型的近似值)的范围,或者一条记录可能包括它确实属于数据库的某些置信度,或者可能会估计缺少某个关系它的记录的一部分。
2.查询通过返回本身可能不精确的答案来处理不精确的数据。
3.沿袭是数据模型不可分割的一部分:如果记录Q是在时间T通过查询Q在数据D的版本V上通过查询Q派生的,则此事实与r相关联。沿袭还捕获更新,基于程序的派生,批量数据加载以及从外部源导入数据。
4.可能会询问准确性。例如,“查找近似值在1%以内的所有值”,或“查找数据库中具有≥98%的机会归属的所有记录。
5.可能会查询血统。例如,“查找所有派生包括来自关系R的数据的记录”,或“确定特定记录r是否从4/1/04导入的任何数据派生。
6.宗族和准确性可以在查询中组合。例如,“查找仅来自高可信度数据的所有记录。
7.沿袭可用于增强数据修改。例如,对记录r的更改可能会使使用r导出的其他数据无效,或者可能以实例化视图的方式传播。特别令人关注的是现有数据准确性的变化:当数据D变得更加(或更不准确)时,可以自动计算和传播对从D得出的数据的影响。
提供所有这些功能以对数据,准确性和沿袭进行完全集成的管理需要重新考虑DBMS的许多方面。在Trio项目中,我们计划至少解决以下领域
理论基础和数据模型
查询语言,包括语义,优化和执行策略
为提高效率而需要的新访问方法
结合了准确性和沿袭的用户和应用程序界面
系统架构和实施
论文贡献
在本文中,我们介绍了Trio数据模型(TDM)的初步版本,该模型可捕获数据,准确性和沿袭(第4节)。我们还将讨论TriQL(发音为“ treacle”),它是一种扩展SQL的查询语言,以合并上述与准确性和沿袭相关的功能(第5节)。我们简要介绍了实现问题(第6节),但是在本文中,我们没有深入研究查询优化或执行,访问方法或接口。在转向数据模型,查询语言和系统之前,在本节的其余部分中,我们将在先前的工作中讨论Trio的范围及其目标。第2节介绍了大量激励应用程序,第3节介绍了此后使用的特定运行示例。
trio不是什么
如上所述,Trio提供了用于数据管理的平台,该平台以多种方式扩展了传统的DBMS。使数据更加灵活和负责任的可能性很多,因此,了解哪些功能不是Trio的目标也同样重要:
Trio不是全面的临时DBMS。时间是数据沿袭的重要组成部分:应用程序通常需要跟踪数据项的生成时间,而不仅仅是方法。此外,沿袭功能可以与Trio系统中的版本控制功能一起使用(请参阅第4.3节)。但是,我们不打算将丰富的细粒度时态数据建模或查询构造包括在内作为Trio的一部分。完全的时间支持对于我们的某些激励性应用当然是有用的(第2节),但是我们更倾向于将问题分开,并首先关注于为常规非时间数据增加准确性和沿袭。
**Trio不是用于半结构化数据的DBMS。**与时间数据一样,半结构化数据在我们的一些激励性应用程序中显然很重要。但是,我们倾向于保持基本数据模型简单(即关系型),这样我们就可以集中精力解决由于管理和查询准确性和沿袭而产生的问题,而不是由于数据本身缺乏结构而引起的问题。
**Trio不是管理不精确数据的硬道理。**如下文第1.2节所述,该领域已经完成了大量工作。我们的目标是从以前的工作中提炼出一种数据模型和查询语言,该模型应具有足够简单,易于采用但又具有足够表达能力以捕获各种应用程序的准确性;将准确性与数据沿袭相结合;并在运行中的原型中使整个合奏工作。
**Trio不是管理数据沿袭的硬道理。**与准确性相似,数据沿袭在1.2节中已有过大量研究。我们的主要目标也是可用性,与系统其他方面的完全集成以及完整的工作原型。
三重奏不是联邦或分布式系统。 TRIO中的数据值可以是用于外部文件或其他外部数据源的标识符,如,例如[HN00]。但是,我们不打算将这些值的特殊处理构建到第一版三重奏查询处理器中,即使它可能对我们的某些目标应用程序有用。 TRIO仍然为外部数据提供了一些有用的功能:当从可能不可靠的外部源导入数据时(例如,在科学数据应用程序域所描述的第2.1节中),可以相应地设定该数据的准确性,并且可以通过谱系进行稍后调整。此外,识别外部数据源的三重奏数据值可以编码源的预期可靠性或质量作为精度测量。
对以前工作的贡献
各种各样称为不确定,概率,模糊,近似,不完整的,不精确的数据管理,已经有大量工作。本工作的示例可以在[BGMP92,BP82,BP93,CKP03,DS04,FAG02,富汞92,LLRS97,LM04,LS90,MOT94,OO93,OW00,SAD91,SM01,YLW + 95,Zim97中]甚至这个列表甚至是悲观的不完整。我们的初始目标之一只是解决并理解这些密切相关的研究中的根本差异。我们将确定哪些想法可以并应纳入三人组,以考虑我们的激励应用程序(第2节),以及我们的可用性和快速原型部署的目标
数据沿袭(有时称为出处)方面的工作量要小得多,但仍会源源不断,例如,[BB99,BCTV04,BKT01,BKTT04,CW03,CWW00,FB01,FVWZ02,WM90,WS97]。在这一领域,我们也将先前的思想纳入我们的工作,确定对我们激发应用程序有用的技术,从系统角度看可行的技术以及与我们的总体方法相一致的技术。
考虑到先前在准确性和血统上的工作,Trio的主要目标是:
1.蒸馏包含精度和谱系的简单和可用的数据模型
2.引入一个延伸SQL的查询语言,以综合方式处理数据,准确性和谱系,包括查询和修改
3.部署了足够容易的工作系统采用和高效,它实际使用它
近期工作的两个领域,即叠加信息[DMB + 01,MD99]和注释管理[BCTV04],提出的模型不如我们的模型具体,但其总体目标是通过附加信息来增强数据,这些附加信息可能与数据本身一样重要。叠加信息的目标是受益于基础数据上第二层信息的任何应用程序。叠加的信息将添加到现有信息源中,以“帮助组织,访问,连接和重用这些源中的信息元素” [MD99]。当然血统可以被认为是一种叠加信息,准确性也可能属于该类别。但是,有关叠加信息的工作考虑的是一个完全独立的层,而不是像我们的方法那样集成其他信息。与叠加信息不同, 注释将附加信息直接与基础数据耦合在一起。 [BCTV04]中描述的注释管理系统考虑了在SQL子集中通过查询运算符传播注释的问题,尤其解决了等效查询公式可能不会产生等效结果注释的问题。世系(在[BCTV04]中称为“出处”)在注释的传播方式中发挥了作用。尽管[BCTV04]中未提及,但可以将准确性视为一种注解
激励应用
本节通过多种应用领域来激发Trio。所有这些应用程序都可以利用Trio的某些独特功能来最好地管理其数据,而某些应用程序可以利用所有功能。这套合适的应用程序域当然不是穷举,但足以激发对诸如Trio这样以集成方式管理数据,准确性和沿袭的新系统的需求。当然,在如此众多的激励应用程序领域的情况下,很重要的一点是,首先要缩小范围并详细原型化一个或两个特定的应用程序,以便集中精力并验证我们的工作。第3节介绍了一名候选人,并在本文稍后的示例中使用了该候选人。
Trio应用
科学数据管理
传感器数据管理
重复数据删除
配置文件组装
隐私保护
隐私保存
假设推理
在线查询处理
Trio数据模型
他的Trio数据模型(TDM)形式化并集成了我们系统的三个构建块:数据,准确性和沿袭。我们的目标是确定一个相对简单的核心模型,该模型主要受第2节中描述的应用程序领域的驱使。如果大量应用程序需要特定的附加表达,则随着时间的推移,我们可能会增加模型的复杂性。但是,由于Trio系统可能支持用户定义的数据类型和功能(请参见第6节),因此可以根据特定应用的需要“插入” TDM中未提供的功能。我们面临的主要挑战之一是,要确定要在TDM核心数据模型中内置多少功能,而要以复杂性为代价,而要留给各个应用程序多少是代价,这是要带来不便和性能可能会降低。我们强调,这里介绍的模型是初步的,并且会随着Trio项目的进行而改变。
TDM中的基本数据遵循标准的关系模型:数据库是一组唯一命名的关系。每个关系的模式是一组类型化的属性,在关系内唯一地命名。关系的一个实例是一组元组,每个元组包含每个属性的值(或NULL)。数据库的实例由数据库中每个关系的实例组成。 TDM对绘制属性值的类型没有任何限制:它们可以是典型的原子类型(整数,浮点数,字符串,日期,枚举等),也可以是大型二进制对象,程序,文件标识符,URL,等等。当然,某些数据类型比其他数据类型更适合近似值。
Trio数据库实例中的数据不准确可能发生在属性级别,元组级别和/或关系级别。在我们的初始模型中,我们对这些组件中的每一个都采取了相当有限的方法,尽管我们已经遇到了其中的一些微妙的相互作用,如下面“近似与置信度”下所讨论的7。我们在选择用于TDM准确性的不同组成部分的术语时遇到了一些困难,更不用说术语“准确性”本身了。以前在该一般领域中的工作使用了各种各样且不一致的术语。请参阅第1.2节。除了缺乏过去的共识之外,另一个挑战是避免使用包含特定语义解释的术语,因为TDM的准确性模型足够灵活,可以使不同的应用程序以不同的方式使用其组件。 TDM的准确性模型由以下三个基本组成部分(以及它们的相应名称)组成,将在接下来的三个小节中进行详细说明。
1.原子值:属性值可以是某个(未知)精确值的近似值。
2.元组:元组可能具有关联的置信度,通常表明元组实际上在关系中的可能性。
3.丢失数据:一个关系可能具有关联的覆盖范围,通常表明可能实际存在多少正确关系。
TDM中的各个属性值可能是近似值。大致来说,Trio近似值由一组(可能是无限的)可能值以及该组上的概率分布组成。最初,我们将TDM中的集合和分布限制为以下列举的那些。如前所述,我们可以选择根据应用程序的需求扩展模型,并且我们期望Trio系统将支持用户定义的类型,以实现更复杂或特定于应用程序的近似。 TDM中的每个属性值都完全属于以下四个类别之一:
(A1)确切的价值。
(A2)一组可能的值,每个值在范围的范围内具有相关的概率,使得概率总和为1.(参见下面的附加讨论。)
(A3) 终点为一系列可能的值,当值从有序和可能的连续域(例如,整数,浮点数,日期)绘制。基本三重奏模型在最小/最大范围内横跨值呈均匀概率分布。
(A4)通过平均/标准偏差对(FGB02)表示的一系列可能值(再次出现有序域)的高斯分布。
TDM谱系
将三人组数据模型的谱系组件形式化比将准确性形式化更加开放。一般来说,数据谱系描述了数据是如何产生的,以及它是如何随着时间的推移而演变的[FB01,FVWZ02,WS97]。在我们的初始模型中,我们关注元组级别的沿袭,尽管我们稍后可能会扩展到包括属性级别和/或关系级别的沿袭。在讨论血统之前,让我们离题一会儿**,考虑一下Trio是如何处理修改和删除的。**我们目前的倾向是三重奏的数据永远不会更新到位,也永远不会删除。相反,当更新发生时,新的数据值被插入到数据库中,而旧的值是“过期的”,但仍可在系统中访问。同样,删除的数据会过期,但实际上不会被删除。这种整体方法类似于Postgres [Sto87]介绍的无覆盖存储。它还意味着全时态数据库[SA86],但是正如1.1节所讨论的,我们不打算将表达性时态操作符或查询构造作为Trio的一部分。通过在Trio中使用无覆盖方法,我们至少获得了三个优势:
1、历史沿袭:如果一个数据项I是从时间T的数据D中派生出来的,随后更新了一个 D,我们仍然可以从数据库的过期部分获得I的原始沿袭数据。
2.幻影谱系:作为谱系的一部分,我们可能有兴趣解释为什么某些数据不在数据库中。使用不覆盖方法,我们可以以有限的形式支持这种能力(对于删除的数据),尽管幻影血统的一般问题仍然是未来的一个有趣的挑战。
3.版本控制:无覆盖方法使Trio能够支持至少某种级别的版本控制,这可能是我们针对的几个应用程序所要求的(最显著的是科学数据管理[GST+02],但也包括传感器数据管理、重复数据删除等)。我们希望Trio中的简单版本化特性将与沿袭紧密相连:基本的沿袭功能将有助于支持版本化,反之亦然。
让我们从我们希望捕获的谱系信息的一般描述开始,然后更精确地指定TDM的谱系组件。给定一个元组t,t的谱系有三个主要方面:
何时得出t
如何得出t
用什么数据得出t
基于查询:t是由TriQL(或SQL)查询派生的。该查询可以定义一个视图,也可以是一个在过去执行的查询,并将结果添加到数据库中。基于程序:t是运行程序的结果,该程序可能访问了数据库,其结果被添加到数据库中。我们假设程序是“黑盒”,因为我们无法分析它们的具体行为。然而,如果我们知道一个程序访问哪些关系,这些信息就是t的血统的一部分。对于程序,我们只考虑快照派生,即我们不覆盖黑盒程序定义的最新(“现在”派生)视图。基于更新:t是修改先前数据库元组t0的结果。修改可能是由TriQL(或SQL)更新语句引起的,或者是由程序引起的,在这种情况下,我们对插入数据的基于程序的派生有相同的考虑。基于加载:t是作为大容量数据加载的一部分插入的。基于导入:作为从一个或多个外部数据源导入过程的一部分,t被添加到数据库中。数据导入可能包含具有已知属性的打包转换,如在提取-转换-加载(ETL)场景[CW03,FVWZ02]中,但目前我们将导入过程视为一个黑盒程序,我们只知道被访问的源。和基于程序的派生一样,我们只假设快照。
(2)假设调用了一个数据库触发器,它的动作插入了新数据。由于SQL触发器操作要么是查询,要么是程序,因此为了沿袭的目的,我们可以将这些操作视为单独的操作。不幸的是,我们失去了触发器和插入数据之间的关系(更不用说是什么导致触发器首先被调用),这种简化我们可能希望在将来重新讨论。第三个谱系组件,即用来导出t的数据,可能是最棘手的。以前的工作适用于某些情况:对于基于查询的“现在”派生,有已知的算法来识别基于查询结构产生t的“精确”数据。4该谱系数据可以是显式的,如[BCTV04],也可以是隐式的,通过应用于当前数据库的谱系查询,如[CW00]。这些技术也可以应用于基于快照查询的派生:我们可以在派生时记录已识别的沿袭数据,或者在派生时通过访问本节开头建议的“过期”数据,将沿袭查询应用于数据库的状态。关于上一段中讨论的沿袭数据和查询的两个重要注意事项:
现在考虑剩下的四种派生类型,以及我们希望在每种类型的沿袭中捕获什么数据。我们通常有两种选择:基于模式的沿袭,它往往是紧凑和粗粒度的,或者基于实例的沿袭,它没有派生查询来指导我们,可能相当于给定时间点的整个数据库状态,或者加载文件的全部内容。(注意,这种区别并不新鲜:基于模式和基于实例的沿袭在以前的工作中都已经考虑过了。)考虑到低成本大容量存储设备的趋势,即使数据可能非常大,我们也不排除基于实例的沿袭。因此,我们提供以下选项:
对于基于程序的派生,沿袭数据可能是未知的,它可能是程序访问的关系列表(可能是零长度),它可能是派生时这些关系的内容,或者如果访问的关系是未知的,它可能是派生时的整个数据库。
对于基于更新的派生,沿袭显然包括更新后的元组的先前值。此外,如果更新是由TriQL更新语句或程序引发的,那么沿袭可能包括基于查询或基于程序的派生。
对于基于加载的派生,沿袭数据可能是未知的,或者它可能是派生时一个或多个加载文件的内容。(请注意,如果元组测试是从特定的加载数据中派生出来的,那么这种情况最好作为基于查询的派生来捕获。):
**对于基于导入的派生,**沿袭数据可能是未知的,或者它可能是整个导入数据集,如基于加载的派生。
三重查询语言
查询,删除
结论
我们正在推出一个新项目,Trio,它通过将准确性和沿袭性作为数据和查询的组成部分来扩展传统的数据管理。就个人而言,准确性和沿袭性在过去受到了相当多的关注,但通常是从理论的角度来看,当然不是作为一个综合系统的一部分,该系统将这两个特性作为数据管理和查询处理的一个完全集成的部分。本文通过描述许多可以从Trio系统的功能中获益的应用领域,以及一个具体的运行示例,为Trio系统提供了一个案例**。它展示了我们对Trio数据模型和TriQL查询语言的初步想法,并讨论了系统实现的方法。**