2013KAIS-(iSAX2+)Beyond one bill

2021-09-13  本文已影响0人  Caucher

标题:超过10亿条时间序列:用iSAX2+索引和挖掘超大时序数据集
本文是2010年的ICDM论文:iSAX 2.0: Indexing and Mining One Billion Time Series的扩展版,内容全覆盖。

编者的总结

  1. 虽然iSAX2.0+算法在当前(2021年)效率已经不能看了,但是这篇文章的算法设计和实验部分还是很赞的,尤其是减少IO的思路,同时大幅减少随机IO比重,以及在实验中单独体现这种understanding,都是值得学习的。

Abstract

本文的主要目的是降低索引构建时长,设计bulk-loading构建算法。

1 Introduction

3 The iSAX 2.0 index

3.1 Bulk loading: main algorithm

相比于iSAX的二叉树,iSAX2.0的构建作了以下变更:

构建时,读入每一条原始数据:

3.2 Node splitting policy

iSAX在节点分裂时,选择哪一段的下一位开始分裂是采用round rubin策略的,那么分割很容易不均匀。iSAX2.0对节点分割策略做了一个改进,如下图所示。

4 Efficient handling of raw time series data

本节首先提出非物化的思想。也就是SAX表示足够用来生成iSAX索引树,不需要原始序列来回从磁盘中读写。
但注意,虽然构建时不需要原始序列,构建完成之后,还是需要将原始序列放到叶子节点对应的文件里面去,以保证查询速度。

4.1 The iSAX 2.0 clustered index

iSAX 2.0 cluster对iSAX2.0的构建做了一些提升。首先从数据源读入FBL还是一样的,但是进入第二阶段时,算法直接将FBL中的buffer存的row time series写入文件,每个buffer(第一层节点)对应一个文件,称为FBL cluster,然后利用SAX表示来构建iSAX树。

在数据源读完一遍之后,iSAX树就已经建成了,之后算法依次遍历FBL cluster,对每一条序列找到其对应的叶子节点,再次利用LBL,待LBL满了,就flush其中的叶子节点到磁盘。


image.png

4.2 The iSax2+ index

isax2.0 cluster仍然对源数据集有诸多次I/O:

现在我们继续对这些IO进行优化避免。

5 Experimental evaluation

Intel Xeon E5504 with 24 GB 内存, 2TB Seagate Barracuda LP 硬盘, Windows Vista Business SP2. 编程语言: C#/.NET 3.5 Framework.
5.2节case study所用到机器
AMD Athlon 64 X2 5600+ with 3 GB 内存, 400 GB Seagate Barracuda 7200.10硬盘, Windows XP SP2 (with /3 GB switch).

5.1 Scalability of iSAX 2.0

5.1.1 Splitting policy evaluation

100million 长度256 random walk 数据集
新的分割策略,使得分割更为均匀,叶子节点更少,叶子节点负载率更高,索引大小更小。
【注意下图第一个图的纵轴时间单位应该为小时,而非分钟】


image.png

5.1.2 Bulk loading evaluation

5.1.2.1 iSAX 2.0 Clustered and iSAX2+

image.png

5.2 A case study in entomology

【略】

上一篇下一篇

猜你喜欢

热点阅读