管理日志、IoT和事件数据的设计模式

Trafodion在IoT(物联网)空间、电信和网络安全中的一个常见应用场景是用一个很是大的单表,记录实时事件。用户但愿快速摄取新数据,查询数据,并清理过期的数据。设计模式

对于这种状况,咱们通常建议客户使用一种设计模式。该模式包含三个要素:Salting分块Stripe合并安全

Salting

第一个要素是salting,在集群中平均分布数据。经过salting 不只平均分布所有数据,并且在集群中的全部节点均匀分布热(最新)数据。Salting基于哈希散列,运用哈希散列函数计算每一行的 region 号。通常状况下,这是基于运营型查询中使用的一列或多列,好比客户id或设备id。服务器

Trafodion自动管理salt。计算哈希散列函数,并自动对Salt列执行条件判断。SQL的Insert、Select和Delete语句不须要任何特殊的操做。网络

数据均匀分布以后,咱们面临下一个问题——选择一个恰当的行键。为了让数据查询、过期数据清理和合并更容易,咱们须要在每一个region的末尾添加新行,但并非随机添加。咱们还但愿按日期范围对时间序列的数据进行查询,并对其余重要的列(例如,customer id或device id)进行查询。函数

为了实现以上两个目标,咱们紧接着在salt后面采用了另外一个键前缀——分块标识(divisionid)。分块是一个时间范围,好比一天、一周或一个月。它将该时间范围内全部的行所有归并在一块儿,以便咱们选择一列(例如,customer id)做为主键列。spa

clipboard.png

这类情景中典型的运营型查询以下所示:设计

SELECT * FROM t
WHERE cust_id = x AND transaction_timestamp BETWEEN y AND z

在cust_id上作Salting可确保用户x的全部行均放在同一个HBase region 中。Trafodion经过对该salt列进行条件判断,确保查询仅访问该 region 服务器。code

分块

按列分块确保咱们只须要读取相关时间范围中的数据,而非多年的历史数据。此外,咱们可以使用cust_id做为主键列,从而在数百万用户数据中迅速为咱们的用户锁定所需数据。网络安全

有时咱们想要查询多位用户的数据和多天的数据。Trafodion采用独特的多维访问方法(MDAM)将多个复杂的条件判断分离,只扫描相关范围,略过中间不须要的数据,从而有效地实现该目标。事件

咱们已经证实,经过salting和分块,很容易在时间结构表中插入数据,而且在查询时仅须要访问特定时间范围和关键列中的所需的数据。

Stripe合并

还有两个容易忽视的问题:数据过期处理和HBase主合并。为此,HBase的stripe合并能够起到很大的做用。将HBase region中的数据分红多个stripe,每一个Strip对应一个键的范围(好比每一个stripe中存储一个月的数据)。只合并这些stripe内的文件。这意味着数月未曾改变的历史数据不须要经过压缩重复改写。这些数据保持原状,直到过期(即删除)。到那时,一些“stripe”中的数据清空,而后与更新的非空stripe合并。

总之:Trafodion和HBase提供了三个强大的设计要素,使您可以在一个表中存储大量基于时间的数据。对于SQL查询,salting、分块和stripe合并是透明的。经过这三个要素能够有效地实现数据摄取、查询和过期处理。

相关文章
相关标签/搜索