BigDansing: A System for Big Data Cleansing论文笔记

这是BigDansing这篇论文的一些笔记,希望对您有所帮助。

1.基础

  1. Semantics

               Detect        GenFix

                    v                v

->UDF->Violation->Possible Fixes


  1. UDF

U:用户自定义的关系

D:拒绝约束(t1,t2=>f(t1,t2) = 1)

F:函数依赖(F(x)=y)


  1. 动作


Dirty Database + Rules

                    =>A repair => D’

D’ 不会违反规则,或者只存在无法修复(不存在possible fixes)的规则违反


  1. 架构
    1. 逻辑层
      1. 允许用户以简单的方式表达各种数据质量规则
      2. 有五个逻辑运算符:
        1. Scope:定义了规则的相关数据
        2. Block:定义了可能发生冲突的数据单元组
        3. Iterate:枚举了候选冲突
        4. Detect:决定了候选冲突是否是真的冲突
        5. GenFix:为每一个冲突生成一个可能的修复集合
      3. 用户定义逻辑运算符以及运算顺序,或者提供声明性的规则
    2. 物理层
      1. 这一层,BD收到一个逻辑计划,然后转化成物理操作组成的优化过的物理计划。
      2. 实现方式有基于散列、基于范围。
      3. 主要优化步骤:计划整合/数据访问优化
    3. 执行层
      1. 决定了如何在底层的并行数据处理框架中执行物理计划,将物理计划转换为执行计划,它由一系列依赖于系统的操作组成,如SparkMapReduce作业。
      2. BD在底层系统上运行生成的执行计划,然后收集所有的违规行为和这个执行产生的可能的修复,因此通过为逻辑运算符提供几行代码,用户可以获得并行数据处理框架的优势。
  2. 其他
    1. BD一旦收集了一系列违规和可能的修复,就会继续修复(清楚)脏数据,此处修复过程和规则数量以及其语义无关,因为修复算法只考虑了一组违规行为及可能的修复。
      1. Chap5,论文提出了两种不同的方法来实现分布式设置中的现有算法,扩展中保留了原始算法的正确性和中止属性,专业的用户可以插入自己的修复算法。在扩展算法中,每个修复步骤都可以通过possible fixes贪心地消除冲突,并最小化成本函数(见2.1节)。
      2. 注意,修复步骤可能会引入新的违规,并且新的步骤可能决定再次更新这些单元,所以为了确定终止,算法在迭代了固定次数以后(用户自定义),在这种单元上放置一个特殊变量,从而消除未来在同一个数据上产生新的冲突的可能性。


2.Rule Specification

  1. 前言
    1. 五个逻辑运算符:ScopeBlockIterateDetectGenFix
      1. 后两个是为数据清洗过程建模的两个通用运算符
      2. 前三个确保了BD高效、可扩展地执行。
        1. Scope减少了必须处理的数据量
        2. Block减少了候选冲突生成的搜索空间
        3. Iterate有效地便利已经被缩小的搜索空间,从而生成所有候选冲突
      3. 注意,这五个运算符本身不修改修复过程,系统将这些操作符与生成的或用户提供的BD作业转化成逻辑计划。
  2. Logical Operators
    1. 如前所述,DB通过数据单元Us来定义输入的数据,逻辑操作符也是运行在这上面的。它虽是个细粒度的模型,但是它允许以高度并行的方式应用运算符减少成本。
    2. 五个运算符的定义(系统会自动为声明性规则声称表):
      1. Scope:从数据集中删除不相关的数据单元(prune?)
        1. 如论文图2中,Scope根据φF,将原数据库进行删减仅仅保留了zipcodecity的数据。

      2. Block:将共享了相同的blocking key的数据进行分组
        1. 对每个数据单元UBlock会输出一个阻塞键
        2. Block运算符可以增加BD的可扩展性,因为它可以缩小可能发生违规的数据单元数量。如论文图2中,Block根据属性zipcode对元组进行分组,使得三个块拥有不同的zipcode。这样分组后,冲突仅可能发生在块内,而不会跨块。

      3. Iterate:定义如何组织数据单元产生候选冲突
        1. 数据单元列表组成的列表将作为输入,输出一个U,或者一个U组成的列表
        2. 此运算符可以避免以O(n^2)的复杂度产生候选冲突。如图二中,Iterate通过每个块内的两个元组的每个唯一组合,仅仅产生四对,而不是13对。

      4. Detect:将单个U/一对U或一个列表oUs作为输入,输出一个冲突列表,可能为空。
        1. 上述三种输入类型可以用来区分输入的不同粒度,以此实现更好的并行化。

      5. GenFix:为冲突计算一个可能的修复集合。
        1. 如,若只能修改右侧值,GenFix会为每个检测到的违规产生一个可能的修复:t2 [city] = t4 [city]t6 [city] = t4 [city].

    3. 另外,为了更好的指定不同运算符之间的数据流,我们引入一个标签来标记数据项并跟踪它的处理方式。
    4. DBMS相反,BD的操作符实UDF,允许用户插入任何逻辑,因此我们不限制特定的数据模型。但为了便于说明,我们所有的例子都基于关系数据模型。
  3. 规划过程
    1. BD的逻辑层将一组标记的逻辑运算符与作业一起作为输入,并输出逻辑计划。通过检查是否定义了所有被引用的逻辑运算符并且至少一个Detect被指定来确定提交的工作是否正确,以此启动系统。
    2. 在验证了提交的作业之后,BD生成一个逻辑计划:
      1. 必须至少有一个输入数据集Di
      2. 可能有一个或多个Scope运算符
      3. 可能有一个Block操作符或更多链接到Iterate操作符
      4. 必须至少有一个可能产生冲突集合的Detect操作符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值