"本文主要探讨了HBase在时间序列数据库中的应用,由数据库高级技术专家悠你在2017年杭州云栖大会上的分享为基础。分享内容涵盖了时序数据的定义、时序数据库的重要特性,以及HiTSDB针对时序场景所做的优化和HBase作为底层存储的优势。"
时序数据是指在时间轴上连续或间隔产生的数值序列,如股票价格、广告数据、环境温度变化、网站流量、健康监测数据、工业传感器数据、服务器监控信息和车联网数据等。这类数据通常具有以下特点:数据源广泛且数量庞大,数据产生速率高,新近数据的价值较高,数据会随着时间推移而老化,并且经常需要进行多维度标签的聚合与分析。
相比传统的关系型数据库,如MySQL的InnoDB引擎,处理时序数据存在一些挑战。例如,B树结构的索引在处理大量随机写入时效率低下,联合索引的空间优先方式并不适合时序数据,且标签列的重复存储增加了存储成本。此外,如果直接将时序数据按行保存在MySQL中,进行SQL聚合和分析操作会显著降低性能。
OpenTSDB是一个基于HBase的时间序列数据库,它通过特定的HBase Schema设计(如AsyncHbaseClient,时间优先的rowkey,数据按小时打包等)来缓解这些问题。然而,OpenTSDB仍面临热点问题和RowScan带来的性能挑战。
HiTSDB是为了解决这些挑战而进行优化的时序数据库。它采用了倒排索引,实现了高压缩比的缓存,以及分布式聚合引擎,以提升读写性能。倒排索引使得多维查询更为高效,全内存架构加速了交集计算,而性能评估和结果缓存则进一步提升了响应速度。HiTSDB的元数据管理策略,如使用sharding key作为前缀,支持前缀查找和删除依据,使得操作更加灵活。
在存储方面,HiTSDB采用了一种以写回方式工作的内存缓存,数据经过delta-delta和异或压缩,可以将每个数据点压缩至2字节以下,降低了存储需求。此外,它还利用了BinLog,与HBase共享HDFS,实现单点写入、多点读取,并通过时间窗口边界控制压缩数据的写回策略,以平衡写入效率和存储成本。
HBase因其分布式、强一致性和高扩展性,成为时间序列数据库理想的底层存储选择。而HiTSDB通过一系列针对性的优化,如倒排索引、全内存架构和高效的压缩策略,极大地提高了处理时序数据的能力,满足了大数据时代对实时分析和历史数据分析的需求。