1.5 实时分析用例
实时分析并非一种新生事物,它已在众多行业中应用了相当长的一段时间。在本节中,我们将深入探索几个实时分析的具体应用场景,这些场景已经实实在在地为企业创造了价值。
实时分析的用例多种多样,每种用例在查询的吞吐量、延迟时间、复杂度以及数据准确性等方面都提出了特定的要求。例如,实时指标的用例对数据准确性要求极高,即便这意味着查询返回的时间可能稍长一些。而针对终端用户的分析应用程序,则必须着重优化查询的响应速度。
表1-2描述了一些用例及其查询属性。
表1-2:常见用例及其属性
1.5.1 面向用户的分析
企业界长久以来一直在创造并积累海量数据。这些数据至关重要,它们不仅助力分析消费者行为、挖掘增长潜力,还关注收益与成本的平衡,为员工及高层管理者提供了做出关键商业决策的依据。
这类分析工作大多在组织内部进行,然而,业界对于将这种分析能力直接交到最终用户手中的愿望日益迫切。这一转变意味着决策过程的民主化,同时为用户带来更为定制化的体验。因此,“面向用户的分析”这一概念应运而生,旨在描绘这一全新进程。
其核心要求在于高查询吞吐量与低延迟响应,这些因素直接关乎用户体验的质量。
1.5.2 个性化
个性化体验则代表面向用户的分析的一种独特应用,它致力于为特定用户提供量身打造的产品体验。这可能包括展示用户特别感兴趣的内容,或是提供他们想要的优惠券。
通过监测用户的活动和产品互动,实时捕捉数据的特征,然后利用这些特征来生成个性化推荐或行动,可以打造一种高度个性化的产品体验。
1.5.3 指标
实时追踪业务指标让我们能够即时掌握关键绩效指标(KPI)的最新动态。这让组织得以迅速识别潜在问题,并主动采取措施来解决问题。
在运营智能、异常/欺诈检测以及财务规划方面,拥有这样的能力显得尤为关键。
这一用例要求系统每秒处理众多低延迟查询,同时确保数据的高准确性。
1.5.4 异常检测和根本原因分析
在处理时间序列数据时,异常检测与根本原因分析是两个常见的应用场景。所谓时间序列数据,指的是在一段连续时间内收集的一系列数据点。
以电子商务为例,此类数据可能涵盖日交易量、平均交易额或退货数量等关键指标。
异常检测的核心任务是识别出那些不符合常规模式的数据波动,这些波动往往预示着潜在的问题,比如某特定产品订单量的突然激增,甚至可能是正在发生的欺诈行为。
无论何种情况,迅速定位并解决问题至关重要。过了24小时之后才发现问题是没有用的,时效性已失——我们需要的是在问题出现的那一刻就察觉!
一旦监测到异常,我们就需要深究引发这些异常的具体因素。换句话说,我们必须追溯到出现问题的根本原因。
这一场景要求系统能够每秒处理大量的时序扫描和分组(Group By)查询,以满足高查询量的需求。
1.5.5 可视化
尽管存在关于仪表盘“已死”的论调(https://oreil.ly/2wL5o),但仪表盘在实时分析领域仍发挥着重要作用。
实时分析的可视化可以像传统仪表盘那样,基于各式图表绘制关键指标,也能实现更为复杂的表现形式,如地理空间可视化、数据聚类、趋势分析等。与典型的仪表盘相比,其主要区别在于,随着新数据的持续涌入,表格和图形会动态更新。
需要特别指出的是,服务层必须与现行的可视化解决方案(如Apache Superset和Grafana)进行无缝集成。
1.5.6 即时分析
分析师往往渴望能够进行实时的数据探索,以便在事件接收的瞬间进行故障排查和模式检测。这意味着我们需要确保服务层能够执行SQL查询。
同时,分析师也期望能将实时数据与历史数据融合,以进行更深入的分析。例如,他们可能想要对比当前月份的业务成绩与往年同一月份的业绩表现。这要求我们要么将历史数据集成到服务层,要么部署一个能够整合多个数据源的分布式SQL查询引擎。在这种场景下,虽然每秒的查询量不会太大,但查询的复杂度可能会相对较高。
1.5.7 日志分析/文本搜索
对应用程序日志数据进行实时文本搜索查询虽然不是常见的需求,却极为关键。鉴于日志数据的非结构化特性,为了对产生的问题进行分类,我们必须能够在这些数据上运行类似正则表达式的文本搜索。
对于大多数应用程序而言,每秒的查询请求可能寥寥无几,但如果我们正涉及面向用户的应用调试,那么这一数字可能会急剧上升。