标签归档:离线数据分析

LeanCloud 离线数据分析的服务架构:异步处理

一般来讲,绝大多数互联网服务都可以划分为 OLTP (On-line Transaction Processing) 与 OLAP (On-line Analytical Processing)。OLTP vs. OLAP 这篇文章对两者之间的差异给出了非常清晰的解释。如果我们只考虑 Query 这个维度,OLTP 最好只处理相当简单、耗时极短的查询或操作,而 OLAP 则处理比较复杂、耗时较长的查询(通常包含数据聚合)。

LeanCloud 提供的离线数据分析服务,大致上可以归类为 OLAP。用户提交 SQL 查询语句,我们的系统为其完成查询并返回相应结果。如果用户提交的 SQL 较为简单,系统处理时间就比较短。反过来,如果用户提交的 SQL 较为复杂(多表 join、数据聚合),那么系统处理时间会更长一些。既然如此,我们就不能像 OLTP 那样在一次请求里面给出查询结果,而是将查询拆分成「创建分析 job」与「获取分析 job 处理结果」。简言之,从 API 层面看,用户的查询是由两个接口来实现的,即 POST /jobsGET /jobs/:jobId。这样的 API 设计意味着所有的数据分析任务都会异步地处理。

继续阅读