使用 Moose OLAP 在 ClickHouse 上进行开发
Moose OLAP 是 Moose Stack 的核心模块,Moose Stack 是一个开源的开发者工具集,用于使用 TypeScript 和 Python 构建实时分析后端。
Moose OLAP 提供对开发者友好的抽象层和类 ORM 功能,并且为 ClickHouse 原生构建。
Moose OLAP 的关键特性
以代码管理 Schema :使用 TypeScript 或 Python 定义 ClickHouse 表,具备类型安全和 IDE 自动补全能力
类型安全的查询 :编写具备类型检查和自动补全支持的 SQL 查询
本地开发 :在本地 ClickHouse 实例上进行开发和测试,而不影响生产环境
迁移管理 :通过代码对 Schema 变更进行版本控制并管理迁移
实时流式处理 :内置支持将 ClickHouse 与 Kafka 或 Redpanda 集成,用于实时流式数据摄取
REST API :在 ClickHouse 表和视图之上轻松生成带完整文档的 REST API
5 分钟内快速上手
如需最新、最完整的安装和入门指南,请参阅 Moose Stack 文档 。
或者按照本指南,在不到 5 分钟内,即可在现有的 ClickHouse 或 ClickHouse Cloud 部署上运行 Moose OLAP。
前置条件
Node.js 20+ 或 Python 3.12+ - 用于 TypeScript 或 Python 开发
Docker Desktop - 用于本地开发环境
macOS/Linux - Windows 可通过 WSL2 使用
安装 Moose
安装 Moose 在系统中全局安装 Moose CLI:
bash -i <(curl -fsSL https://fiveonefour.com/install.sh) moose
设置你的项目
设置你的项目 选项 A:使用你已有的 ClickHouse 部署 重要 :你的生产 ClickHouse 不会被修改。此操作只会基于你的 ClickHouse 表初始化一个新的 Moose OLAP 项目,并从中派生数据模型。
# TypeScript \{#typescript}
moose init my-project --from-remote <YOUR_CLICKHOUSE_CONNECTION_STRING> --language typescript
# Python \{#python}
moose init my-project --from-remote <YOUR_CLICKHOUSE_CONNECTION_STRING> --language python
你的 ClickHouse 连接字符串应当是以下格式:
https://username:password@host:port/?database=database_name
选项 B:使用 ClickHouse Playground 还没有正在运行的 ClickHouse 实例?使用 ClickHouse Playground 来试用 Moose OLAP!
# TypeScript \{#typescript}
moose init my-project --from-remote https://explorer:@play.clickhouse.com:443/?database=default --language typescript
# Python \{#python}
moose init my-project --from-remote https://explorer:@play.clickhouse.com:443/?database=default --language python
安装依赖
安装依赖 # TypeScript \{#typescript}
cd my-project
npm install
# Python \{#python}
cd my-project
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
你应该会看到:Successfully generated X models from ClickHouse tables
浏览生成的模型
浏览生成的模型 Moose CLI 会根据你现有的 ClickHouse 表自动生成 TypeScript 接口或 Python Pydantic 模型。
在 app/index.ts 文件中查看你新的数据模型。
开始开发
开始开发 启动开发服务器,以拉起一个本地 ClickHouse 实例,并根据你的代码定义自动还原所有生产表:
重要 :你的生产 ClickHouse 不会被修改。此操作只会创建一个本地开发环境。
为本地数据库预置数据
为本地数据库预置数据 将数据预置到本地 ClickHouse 实例中:
来自你自己的 ClickHouse moose seed --connection-string <YOUR_CLICKHOUSE_CONNECTION_STRING> --limit 100
来自 ClickHouse Playground moose seed --connection-string https://explorer:@play.clickhouse.com:443/?database=default --limit 100
使用 Moose OLAP 构建应用
使用 Moose OLAP 构建应用 现在你已经在代码中定义了表,可以像在 Web 应用中使用 ORM 数据模型一样获得相同的好处——在基于分析数据构建 API 和物化视图时具备类型安全和自动补全能力。下一步你可以尝试:
获取帮助并保持联系
参考应用 :查看这个开源参考应用 Area Code :一个包含构建功能丰富、可用于生产的企业级应用所需全部基础模块的入门代码仓库,适用于需要专用基础设施的场景。该项目包含两个示例应用:“面向用户的分析”(User Facing Analytics)和“运营数据仓库”(Operational Data Warehouse)。
Slack 社区 :通过 Slack 与 Moose Stack 维护者交流,以获得支持和反馈。
观看教程 :在 YouTube 上观看关于 Moose Stack 功能的视频教程、演示和深度讲解。
参与贡献 :在 GitHub 上查看代码、为 Moose Stack 做出贡献并提交问题。