Caravel 的特性

Caravel通过让用户创建并且分享仪表盘的方式为数据分析人员提供一个快速的数据可视化功能。

在你用这种丰富的数据可视化方案来分析你的数据的同时,Caravel还可以兼顾数据格式的拓展性、数据模型的高粒度保证、快速的复杂规则查询、兼容主流鉴权模式(数据库、OpenID、LDAP、OAuth或者基于Flask AppBuilder的REMOTE_USER)

通过一个定义字段、下拉聚合规则的简单的语法层操作就让我们可以将数据源在U上丰富地呈现。Caravel还深度整合了Druid以保证我们在操作超大、实时数据的分片和切分都能行云流水。

仪表盘的交互式分析页面:

Caravel

我们可以导出JSON、CSV文件、直接得到SQL语句甚至分享页面链接。

架构

看到如此惊艳的数据产品,想必你也很想自己动手做一个吧!让我们一起看看整体的架构。

后端

整个项目的后端是基于Python的,用到了Flask、Pandas、SqlAlchemy。

• Flask AppBuilder(鉴权、CRUD、规则)

• Pandas(分析)

• SqlAlchemy(数据库ORM)

此外,也关注到Caravel的缓存机制值得我们学习:

• 采用memcache和Redis作为缓存

• 级联超时配置

• UI具有时效性控制

• 允许强制刷新

前端

自然前端是JS的天下,用到了npm、react、webpack,这意味着你可以在手机也可以流畅使用。

• d3 (数据可视化)

• nvd3.org(可重用图表)

局限性

• Caravel的可视化,目前只支持每次可视化一张表,对于多表join的情况还无能为力

• 依赖于数据库的快速响应,如果数据库本身太慢Caravel也没什么办法

• 语义层的封装还需要完善,因为druid原生只支持部分sql。