上QQ阅读APP看书,第一时间看更新
1.6.4 水到渠成的ClickHouse时代
现在,一个新的选择题摆在了Yandex.Metrica研发团队的面前,实时聚合还是预先聚合?预先聚合方案在查询性能方面带来了质的提升,成功地将之前的报告查询时间从26秒降低到了1秒以内,但同时它也带来了新的难题。
(1)由于预先聚合只能支持固定的分析场景,所以它无法满足自定义分析的需求。
(2)维度组合爆炸会导致数据膨胀,这样会造成不必要的计算和存储开销。因为用户并不一定会用到所有维度的组合,那些没有被用到的组合将会成为浪费的开销。
(3)流量数据是在线实时接收的,所以预聚合还需要考虑如何及时更新数据。
经过这么一分析,预先聚合的方案看起来似乎也没有那么完美。这是否表示实时聚合的方案更优呢?实时聚合方案意味着一切查询都是动态、实时的,从用户发起查询的那一刻起,整个过程需要在一秒内完成并返回,而在这个查询过程的背后,可能会涉及数亿行数据的处理。如果做不到这么快的响应速度,那么这套方案就不可行,因为用户都讨厌等待。很显然,如果查询性可以得到保障,实时聚合会是一个更为简洁的架构。由于OLAPServer的成功使用经验,选择倾向于实时聚合这一方。
OLAPServer在查询性能方面并不比Metrage差太多,在查询的灵活性方面反而更胜一筹。于是Yandex.Metrica研发团队以OLAPServer为基础进一步完善,以实现一个完备的数据库管理系统(DBMS)为目标,最终打造出了ClickHouse,并于2016年开源。纵览Yandex.Metrica背后技术的发展历程,ClickHouse的出现似乎是一个水到渠成的结果。
ClickHouse的发展历程如表1-1所示。
表1-1 ClickHouse的发展历程