数据库聚合如何形成一个monoid?


11

cs.stackexchange上,我询问了github上的algebird scala库,推测他们为什么可能需要抽象的代数包。

github页面有一些线索:

Monoid的实现用于有趣的近似算法,例如Bloom过滤器,HyperLogLog和CountMinSketch。这些使您可以像想数字一样思考这些复杂的操作,然后将它们加到hadoop或在线中以生成强大的统计信息和分析数据。

并在GitHub页面的另一部分中:

它最初是作为Scalding的Matrix API的一部分开发的,其中矩阵的值是Monoids,Groups或Rings的元素。随后,很明显,该代码在Scalding和Twitter的其他项目中具有更广泛的应用。

甚至Twitter的Oskar Boykin也赞叹道:

主要的答案是,通过利用半群结构,我们可以构建可以正确并行化的系统,而无需了解底层操作(用户有望实现关联性)。

通过使用Monoid,我们可以利用稀疏性(我们处理许多稀疏矩阵,其中在某些Monoid中几乎所有值都是零)。

通过使用Rings,我们可以对数字以外的东西进行矩阵乘法(有时我们做过)。

algebird项目本身(以及发行历史)非常清楚地解释了这里发生的事情:我们正在构建许多用于聚合大型数据集的算法,并且利用操作的结构使我们在系统方面取得了成功(这通常是尝试在1000个节点上生产算法时的痛点)。

为任何Semigroup / Monoid / Group / Ring解决一次系统问题,然后您可以插入任何算法,而无需考虑Memcache,Hadoop,Storm等。

怎么样Bloom filters/ hyperloglog/ countminsketch同样的数字?

数据库聚合如何具有单调结构?
这个半身像是什么样的?他们曾经有过小组组织吗?

参考文献会有所帮助。


有人还能勾勒出“在半体中几乎所有值都为零的稀疏矩阵”的连接吗?
vzn13年

ee0=e

n×n

@vzn,矩阵内没有元素。
Nicholas Mancuso

Answers:


14

您问为什么数据库聚合具有单调结构。

ababa.b

.(a.b).c=a.(b.c)

几乎总是存在某种身份,取决于数字,空字符串,身份矩阵,均匀分布还是空集,这取决于操作。因此,实际上数据通常形成一个monoid

关于将数据看作是一个monoid的实际观点是,它提供了一种使用通用代数语言讨论不同种类数据操作的方法。然后,通过简单地传递适当的聚合操作作为参数,就可以将其转换为可以处理任何monoid的通用代码库。

请注意,许多数据没有逆,因此组结构实在令人望而却步。如果您具有组结构,则可以使用一些其他方式来处理数据,但是由于没有乘法矩阵或带加法的正整数都没有逆,因此非组结构数据非常普遍。

+..+.

约束满足社区中已经出现了一种数据聚集的半环模型。请注意,约束满足问题实例是对特定事实数据库的联合查询,因此这很笼统:大多数对数据的实际查询都是联合的。

  • Stefano Bistarelli,Ugo Montanari和Francesca Rossi, 基于 Semiring 的约束满足和优化,JACM 44(2),1997,201-236。doi:10.1145 / 256303.256306

起源的背景下,目前对数据聚合的半环模型的理论分析工作始于2007年。来源是一个用于注释数据的奇特术语。由于任何数据库元组都可以看作是应用于某些唯一元组标识符的注释,因此数据聚合可以看作只是注释的组合。因此,出处是对汇总数据的想法的概括,并且明确指出,结合注释的正确理论模型是半环形的。起源多项式最通用的半环实际上允许人们跟踪从组成部分中获取数据的整个历史。例如,p值在对临床试验进行分析时,可以跟踪从每个单独的试验结果中计算出的结果。如果其中一些结果被证明是错误的(或假的),则可以简单地重新计算而无需不良数据。

  • Todd J. Green,Grigoris Karvounarakis和Val Tannen,起源半圆环,PODS 2007,31-40 。doi:10.1145 / 1265530.1265535

使用半环来汇总数据还有很多其他工作,请参见引用该论文的论文

从您引用的更直接的实际角度来看,例如,可以看到GDL框架,该框架通过适当地对基础的Semiring表达式进行分组,可以有效地并行化计算。

  • Srinivas M. Aji和Robert J. McEliece, 《广义分配法》,IEEE Transactions on Information Theory 46(2),2000,325–343。doi:10.1109 / 18.825794
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.