Aggregates
由于PipelineDB的基本设计目标之一是促进高性能的连续聚合,因此完全支持PostgreSQL聚合函数以在Continuous Views中使用(有几个罕见的例外)。除了这一大套标准聚合之外,PipelineDB还添加了一些自己的Continuous聚合,这些聚合是专门为连续时间序列数据处理而构建的。
==========================================================================
PipelineDB-specific Types
PipelineDB支持许多本地类型,以有效地利用流的概率数据结构和算法。有可能永远不需要手动创建具有这些类型的表,但是它们通常是流水线标记的结果,因此它们将由Continuous Views透明地创建。PipelineDB提供了许多类型和聚合,这些类型和聚合通常不会被大多数数据库系统公开给用户,但对于连续数据处理非常有用。
Bloom Filter:
空间优化的数据结构,设计用于估计集合基数,以及以高度似然度确定它们是否包含特定元素。Bloom过滤器通过将一个附加元素映射到位图中的一个或多个位来工作。当元素被添加到Bloom过滤器时,这些位(理想情况下只有一个位)被设置为1。
直观地说,这意味着n位输入可以被压缩为单位。虽然使用Bloom过滤器可以节省大量空间,但折衷之处在于,在确定是否向其添加了给定元素时,有误报的可能性,因为单个输入元素可能映射到多个位。
Continuous views 包含SELECT DISTINCT(...)子句的连续视图Bloom筛选器用于确定给定表达式是否唯一,以及是否将其包括在连续结果中。这允许这样的连续视图使用常数空间,同时以高精确度确定表达式的无限流的唯一性。
Count-Min Sketch:
Count-Min Sketch 与 Bloom Filter 有类似的数据结构,主要区别在于Count-Min Sketch 估计已经添加到其中的每个元素的频率,而Bloom Filter 仅记录是否可能添加了给定项。
目前没有PipelineDB功能在内部使用Count-Min Sketch ,尽管用户可以自由地构建自己的Count-Min Sketch 数据结构,并使用公开它们的特定于PipelineDB的函数对其进行操作。
Top-K:
Filtered-Space Saving (FSS)是一种数据结构和算法组合,用于在使用恒定的最小内存占用的同时,精确估计流中出现的最频繁的k个值。计算top-k的明显方法是简单地保存值及其关联频率的表,这对于流是不实用的。
相反,FSS通过将传入值散列到桶中来工作,其中每个桶都有一个已经添加的值集合。如果传入元素已经存在于给定桶中,则其频率递增。如果元素不存在,则只要满足一些特定的可配置条件,就会添加该元素。
目前PipelineDB没有使用FSS。FSS类型及其相关函数可以通过公开它们的各种特定于PipelineDB的函数和流水线标记来访问。
HyperLogLog:
HyperLogLog是一种数据结构和算法组合,类似于Bloom filters ,用于以非常高的精度估计集合的基数。在功能方面,HyperLogLog只支持添加元素和估计已添加的所有元素集的基数。它们不支持像Bloom filters 这样的特定元素的成员资格检查。然而,它们比 Bloom filters 更有效地节省空间。
HyperLogLog通过细分其添加元素的输入流并存储每个细分中观察到的前导零的最大数量来工作。由于在检查前导零的数目之前对元素进行均匀散列,所以总的想法是,观察到的前导零的数目越多,添加许多唯一元素的概率就越高。从经验上讲,这个估计结果非常精确——PipelineDB的HyperLogLog实现的误差幅度只有0.81%
Continuous views 包含 COUNT(DISTINCT ...) 子句,该子句用于精确估计使用恒定空间量读取的无限表达式流的唯一表达式的数量。
hypothetical-set聚合,dense_rank使用HyperLogLog来精确估计已读取的唯一较低等级表达式的数量,以便确定假设值的等级。
T-Digest:
T-Digest 是一种数据结构,它支持非常精确的基于秩的统计估计,如百分位数和中位数,而只使用固定数量的空间。以小误差为代价的空间效率使得T-Digest非常适合于基于秩的流计算,而基于秩的流通常要求它们的输入是有限的,并且为了完美的精度而排序。T-Digest本质上是一个自适应直方图,随着向其添加更多元素,它智能地调整桶和频率。
当对流进行操作时,percentile_cont 聚合在内部使用T-Digest
==========================================================================
PipelineDB-specific Functions
附带了许多函数,这些函数可用于与这些类型进行交互。
Bloom Filter Functions
bloom_add ( bloom, expression ):将给定表达式添加到Bloom Filter中。
bloom_cardinality ( bloom ):返回给定的Bloom Filter的基数。这是添加到Bloom Filter的唯一元素的数量。
bloom_contains ( bloom, expression ):如果Bloom Filter 可能包含给定值,则返回true。
bloom_intersection ( bloom, bloom, ... ):返回一个Bloom Filter ,表示给定的Bloom Filter 的交集。
bloom_union ( bloom, bloom, ... ):返回表示给定Bloom Filter的联合的Bloom Filter。
Top-K Functions
topk_increment ( topk, expression ):增加给定 top-k 中给定表达式的频率,并返回结果。
topk_increment ( topk, expression, weight ):在给定的 Top-K 中将给定表达式的频率增加指定的权重,并返回结果。
topk ( topk ):返回表示给定 top-k 值及其相关频率的k个元组。
topk_freqs ( topk ):返回与给定 top-k 最频繁值相关联的k个频率。
topk_values ( topk ):返回表示给定的 top-k 最频繁值的k值。
Frequency Functions
freq_add ( cmsketch, expression, weight ):在给定的 Count-Min Sketch 中将给定表达式的频率增加指定的权重。
freq ( cmsketch, expression ):返回表达式值被添加到给定Count-Min Sketch的次数。
freq_norm ( cmsketch, expression ):返回给定Count-Min Sketch中表达式的归一化频率。
freq_total ( cmsketch ):返回添加到给定 Count-Min Sketch 的 items 总数。
HyperLogLog Functions
hll_add ( hyperloglog, expression ):将给定表达式添加到 HyperLogLog。
hll_cardinality ( hyperloglog ):返回给定 HyperLogLog 的基数,误差幅度大约为~0.2%。
hll_union ( hyperloglog, hyperloglog, ... ):返回表示给定的 HyperLogLog 的联合的 HyperLogLog。
Distribution Functions
dist_add ( tdigest, expression, weight ):将给定表达式的频率增加到T-Digest中的给定权重。
dist_cdf ( tdigest, expression ):给定T-Digest,返回以表达式值计算的累积分布函数的值。
dist_quantile ( tdigest, float ):给定一个摘要,返回给定的分位数,浮点的值。浮动必须在[ 0, 1 ]中。
Miscellaneous Functions
bucket_cardinality ( bucket_agg, bucket_id ):返回给定 bucket_agg 内给定 bucket_id 的基数。
bucket_ids ( bucket_agg ):返回包含在给定的 bucket_agg 中的所有桶ID的数组。
bucket_cardinalities ( bucket_agg ):返回给定bucket_agg 中包含的基数组,每个bucket id一个。
date_round ( timestamp, resolution ):“Floors” 是表示为间隔的最近分辨率(或桶)的日期。这对于总的来说通常是有用的。
year ( timestamp ), month ( timestamp ), day ( timestamp ), hour ( timestamp ), minute ( timestamp ), second ( timestamp ):截断给定的时间戳。
set_cardinality ( array ):返回给定集合数组的基数。可以使用 set_agg 生成集合。
==========================================================================
Operational Functions
pipelinedb.activate ( name )
pipelinedb.deactivate ( name )
pipelinedb.combine_table( continuous view name, table )
pipelinedb.get_views ( )
pipelinedb.get_transforms ( )
pipelinedb.truncate_continuous_view ( name )
pipelinedb.version ( )
==========================================================================
System Views
pipelinedb.views:查出所有的 continuous views
pipelinedb.transforms:查出所有的 continuous transforms
pipelinedb.stream_readers:对于每个stream,都显示从中读取的所有连续查询。