在 ClickHouse 上使用 Moose OLAP 开发
Moose OLAP 是 Moose Stack 的核心模块,Moose Stack 是一个开源开发工具包,用于使用 TypeScript 和 Python 构建实时分析后端。
Moose OLAP 提供了开发者友好的抽象和类似 ORM 的功能,专为 ClickHouse 原生构建。
Moose OLAP 的主要特点
- 将模式视为代码:使用 TypeScript 或 Python 定义 ClickHouse 表,具有类型安全和 IDE 自动补全
- 类型安全的查询:编写带有类型检查和自动补全支持的 SQL 查询
- 本地开发:在本地 ClickHouse 实例上开发和测试,而不影响生产环境
- 迁移管理:对模式更改进行版本控制,并通过代码管理迁移
- 实时流处理:内置支持将 ClickHouse 与 Kafka 或 Redpanda 配对以进行流式数据摄取
- REST API:轻松在 ClickHouse 表和视图上生成完整文档的 REST API
5 分钟内入门
有关最新的安装和入门指南,请参阅 Moose Stack 文档。
或者按照本指南,在现有的 ClickHouse 或 ClickHouse Cloud 部署上在 5 分钟内启动并运行 Moose OLAP。
先决条件
- Node.js 20+ 或 Python 3.12+ - TypeScript 或 Python 开发所需
- Docker Desktop - 用于本地开发环境
- macOS/Linux - Windows 通过 WSL2 工作
安装 Moose
将 Moose CLI 全局安装到您的系统中:
bash -i <(curl -fsSL https://fiveonefour.com/install.sh) moose
设置您的项目
选项 A:使用您自己的现有 ClickHouse 部署
重要提示:您的生产 ClickHouse 将保持不变。这将仅初始化一个新的 Moose OLAP 项目,其数据模型来自您的 ClickHouse 表。
# TypeScript
moose init my-project --from-remote <YOUR_CLICKHOUSE_CONNECTION_STRING> --language typescript
# 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
moose init my-project --from-remote https://explorer:@play.clickhouse.com:443/?database=default --language typescript
# Python
moose init my-project --from-remote https://explorer:@play.clickhouse.com:443/?database=default --language python
安装依赖项
# TypeScript
cd my-project
npm install
# 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 构建
现在您已经在代码中定义了表,您将获得与 Web 应用中的 ORM 数据模型相同的好处 - 在构建API和物化视图时的类型安全和自动补全。作为下一步,您可以尝试:
获取帮助并保持联系
- 参考应用:查看开源参考应用 Area Code:一个包含所有必要构建模块的启动库,用于构建需要专用基础设施的功能丰富、企业级应用。包括两个示例应用:用户面向分析和操作数据仓库。
- Slack 社区:与 Moose Stack 维护者在 Slack 上联系以获取支持和反馈
- 观看教程:在 Youtube 上观看视频教程、演示以及对 Moose Stack 功能的深入讲解
- 贡献:查看代码,为 Moose Stack 做贡献,并在 GitHub 上报告问题