Caravel 的特性
Caravel通過讓用戶創建並且分享儀錶盤的方式為數據分析人員提供一個快速的數據可視化功能。
在你用這種豐富的數據可視化方案來分析你的數據的同時,Caravel還可以兼顧數據格式的拓展性、數據模型的高粒度保證、快速的複雜規則查詢、兼容主流鑒權模式(資料庫、OpenID、LDAP、OAuth或者基於Flask AppBuilder的REMOTE_USER)
通過一個定義欄位、下拉聚合規則的簡單的語法層操作就讓我們可以將數據源在U上豐富地呈現。Caravel還深度整合了Druid以保證我們在操作超大、實時數據的分片和切分都能行雲流水。
儀錶盤的互動式分析頁面:
我們可以導出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。