cube.JS
1 cube.JS简介
Cube是无界面商业智能平台。它帮助数据工程师和应用程序开发人员从现代数据存储中访问数据,将其组织为一致的定义,并将其交付给每个应用程序。Cube 旨在与所有支持 SQL 的数据源一起工作,包括像 Snowflake 或 Google BigQuery 这样的云数据仓库、像 Presto 或 Amazon Athena 这样的查询引擎,以及像 Postgres 这样的应用程序数据库。Cube 内置关系缓存引擎,为 API 请求提供亚秒级延迟和高并发。
2 为什么选择cube.JS
- SQL。使用纯 SQL 查询对十几个维度的十几个指标进行建模会成为维护的噩梦,这会导致构建建模框架。
- 性能。现代分析软件开发中的大部分时间和精力都花在提供足够的时间来洞察力上。在每个公司的数据都是大数据的世界里,仅仅编写 SQL 查询来获得洞察力已经不够了。
- 访问控制。保护和管理所有下游数据消费应用程序对数据的访问非常重要。
Cube 拥有实现高效数据建模、访问控制和性能优化所需的基础架构和功能,因此每个应用程序(如嵌入式分析、仪表板和报告工具、数据笔记本和其他工具)都可以通过 REST、SQL 和GraphQL API。
3 搭建
您可以在本地开始使用 Cube,也可以使用 Docker 自行托管它,我们选择使用Docker的方式
3.1 使用 Docker CLI 运行 Cube.js
请记住使用PowerShell或 WSL2运行以下命令。在新建文件夹中,运行以下命令:
代码语言:javascript复制docker run -p 4000:4000 -p 3000:3000
-v ${PWD}:/cube/conf
-e CUBEJS_DEV_MODE=true
cubejs/cube
3.2 打开部署后台
前往 http://localhost:4000 ,如果是服务器部署把localhost换成相应的机器IP。
单击应用后,您应该会看到配置的数据库中可供您使用的表。选择一个以生成数据模式。生成架构后,您可以在“构建”选项卡上执行查询。
4 Cube.js 示例概述
4.1 教程
这些教程是开始学习 Cube.js 的好地方:
- Cube.js,开源仪表板框架:终极指南 — 使用 Cube.js 启动 API 并使用 React 构建仪表板
- 使用 Node.js 构建 MongoDB Dashboard — 了解如何使用 MongoDB Connector for BI 将 Cube.js 连接到 MongoDB
- React Dashboard: an Ultimate Guide — 学习如何使用 React、GraphQL 和 Cube.js 构建动态仪表板
- React 查询构建器 和Vue 查询构建器 — 了解如何使用 React 和 Vue 的查询构建器组件来构建可定制的查询界面
以下教程涵盖了 Cube.js 的高级概念:
- 预聚合教程— 了解预聚合,这是 Cube.js 最强大的功能之一,可显着提高仪表板和报告等应用程序的性能
- 构建一个开源的 Mixpanel 替代方案— 关于使用 Cube.js 构建生产就绪应用程序的两部分系列:第 1 部分:收集和显示事件, 第 2 部分:转换漏斗
4.2 特征
特征 | 故事 | 案例 |
---|---|---|
向下钻取 | 引入向下钻取表 API | 演示 |
比较日期范围 | 比较不同时间段的数据 | 演示 |
数据混合 | 引入数据混合 API | 演示 |
实时数据获取 | 实时仪表板指南 | 演示 |
动态模式创建 | 使用 asyncModule 生成模式 | — |
验证 | Auth0 集成 | — |
验证 | AWS Cognito 集成 | — |
4.3 前端集成
探索如何将 Cube.js 与数据可视化工具集成:
工具 | 教程 | 演示 |
---|---|---|
D3.js | D3仪表板教程 | 演示 |
谷歌图表 | 谷歌图表仪表板 | 演示 |
Highcharts | React Highcharts 示例 | 演示 |
Material UI | 带有React的MaterialUI仪表板 | 演示 |
Material UI | 使用Materia UI 反应数据表 | 演示 |
Material | 带Materia的角度仪表板 | 演示 |
AG网格 | 使用 AG Grid 反应数据透视表 | 演示 |
地图盒 | 使用 Mapbox 构建基于地图的数据可视化 | 演示 |
Retool | 使用 Retool 构建内部仪表板 | 演示 |
Cube.js是一个用于构建分析web应用程序的开源框架,主要用于构建内部的商业智能工具或将面向客户的分析添加到现有的应用程序当中。大多数情况下,构建此类应用程序的第一步是分析仪表板。通常从“在管理面板中添加一个分析仪表板”开始,然后就像软件开发中经常发生的那样,事情会变得更加复杂。
当开始使用Cube.js时,会想要构建一个工具,它起初很简单,但在功能,复杂性和数据量方面很容易扩展.Cube.js为未来的分析系统奠定坚实的基础,无论是独立的应用程序还是嵌入到现有的分析系统中。
大多数现代web应用程序都是作为单页面应用程序构建的,前端与后端分离。遵循微服务架构,后端通常也会分成多个服务。通常,Cube.js的后端作为服务运行,管理与数据库的连接,包括查询队列,缓存,预聚合等。同时为前端应用程序公开一个API,用于构建仪表板和其他分析功能。
目前很多的低代码的兴起和各种BI的开源项目,也为分析提供了很多的便利,但是很多公司为了能够满足自己的个性化的需求,也在寻求在开源的基础上进行二次开发,那么Cube.js也是个不错的选择。
参考资料: [1] https://github.com/cube-js/cube.js