Palantir原型架构实现 - Ontology驱动的数据映射与分析平台
推背图是一个基于Ontology的数据映射与分析平台,支持从多种数据源(JSON/CSV/SQL)导入数据,通过YAML配置的映射规则转换为统一的Object模型,并提供完整的分析能力。
┌─────────────────────────────────────────────────────────┐
│ 前端层(多端) │
│ Web控制台 │ CLI工具 │ Desktop │ API客户端 │
└──────────┬──────────────────────────────────────────────┘
│
┌──────────▼──────────────────────────────────────────────┐
│ API 服务层 │
│ REST API + GraphQL + JWT认证 │
└──────────┬──────────────────────────────────────────────┘
│
┌──────────▼──────────────────────────────────────────────┐
│ Ontology 运行时 │
│ Object Registry │ Link Manager │ Path Resolver │
│ Action Dispatcher │ Classification Engine │
└──────────┬──────────────────────────────────────────────┘
│
┌──────────▼──────────────────────────────────────────────┐
│ 混合存储层 │
│ Object Store │ Graph Store │ Temporal Engine │
└─────────────────────────────────────────────────────────┘
| Phase | 内容 | 状态 |
|---|---|---|
| Phase 1 | 最小可行核心 - Ontology解析、内存存储、图遍历 | ✅ |
| Phase 2 | 数据接入层 - JSON/CSV/SQL适配器、Mapper、CLI | ✅ |
| Phase 3 | 完整分析能力 - 时序分析、搜索、工作流引擎 | ✅ |
| Phase 4 | 多端输出 - REST/GraphQL API、Web控制台、Desktop | ✅ |
| 层级 | 技术 |
|---|---|
| 核心语言 | Go 1.21+ |
| API | REST + GraphQL + JWT |
| Web | React + TypeScript + D3.js |
| Desktop | Electron |
| 数据格式 | YAML |
- Go 1.21+
- Node.js 18+ (用于Web和Desktop)
- MySQL (可选,用于SQL数据源)
# 构建所有组件
make build-all
# 仅构建后端
make build-server
# 仅构建CLI
make build-cli
# 仅构建Web
make build-web
# 仅构建Desktop
make build-desktop# 运行API服务器
make run
# 运行CLI
make run-cli
# 运行Web开发服务器
cd web && npm run devmake testback-pushing/
├── cmd/
│ ├── server/ # API服务器入口
│ └── cli/ # CLI工具入口
├── api/
│ ├── graphql/ # GraphQL API
│ ├── rest/ # REST API
│ └── auth/ # JWT认证
├── internal/
│ ├── ontology/ # Ontology解析与注册
│ ├── storage/
│ │ └── memory/ # 内存存储
│ ├── adapter/ # 数据源适配器
│ │ ├── json/ # JSON适配器
│ │ ├── csv/ # CSV适配器
│ │ └── sql/ # SQL适配器
│ ├── mapper/ # 数据映射引擎
│ ├── engine/
│ │ ├── graph/ # 图遍历引擎
│ │ ├── temporal/ # 时序分析引擎
│ │ ├── search/ # 全文搜索引擎
│ │ └── workflow/ # 工作流引擎
│ └── action/ # Action调度
├── web/ # React Web控制台
├── desktop/ # Electron桌面应用
├── mapping/ # 映射配置文件
├── testdata/ # 测试数据
└── docs/ # 设计文档和计划
# 使用CLI导入CSV数据
./bin/cli --mapping ./mapping/person导入.yaml
# 使用CLI导入JSON数据
./bin/cli --mapping ./mapping/transaction导入.yaml# mapping/person导入.yaml
source:
type: csv
path: ./testdata/persons.csv
target:
object_type: Person
fields:
- source: id
target: id
type: string
- source: name
target: name
type: string
- source: email
target: email
type: string| Method | Endpoint | 描述 |
|---|---|---|
| GET | /api/objects/:type/:id | 获取对象 |
| POST | /api/objects | 创建对象 |
| PUT | /api/objects/:type/:id | 更新对象 |
| DELETE | /api/objects/:type/:id | 删除对象 |
| GET | /api/objects/:type | 列出对象 |
| POST | /api/search | 搜索 |
| POST | /api/events | 记录事件 |
| GET | /api/events/:type/:id | 查询事件 |
query {
objects(type: "Person") {
id
type
data
}
}
mutation {
createObject(type: "Person", id: "p1", data: {name: "Alice"}) {
id
type
}
}- 在
internal/adapter/下创建新目录 - 实现
DataSource接口 - 在
internal/cli/import.go中添加新适配器支持
- 在
internal/action/中实现Handler - 在
cmd/server/main.go中注册Action
MIT