動態 Schema 生成
ChainStream GraphQL Schema 在啟動時由 activecube-rs(Rust 庫)動態生成,該庫將 Cube 定義編譯為型別完整的 async-graphql Schema。每個 Cube 對應一個由 OLAP 表支撐的分析資料模型,activecube-rs 會自動生成:- 該 Cube 的 頂層 Query 欄位(巢狀在其 Chain Group 下)
- 表示可選維度的 Record 型別(
{Cube}Record) - 與維度層級匹配的 Filter 輸入(
{Cube}Filter) - 每個維度路徑的 ASC/DESC 變體組成的 OrderBy 列舉(
{Cube}OrderBy)
由於 Schema 由 Cube 定義生成,在 Rust 中新增任意資料模型後,部署即可在 GraphQL 端點中自動反映。
根 Query 結構
根查詢型別名為ChainStream。Cube 按三個 Chain Group 組織,各自作為頂層欄位暴露:
Mutation 或 Subscription 型別 — GraphQL API 為只讀分析查詢。
Chain Group
Cube 按目標區塊鏈生態分為三組:| Chain Group | network 引數 | 可用網路 | 說明 |
|---|---|---|---|
| EVM | 必填 | eth、bsc、polygon | 適用於所有 EVM 相容鏈的共享 Cube |
| Solana | 不需要 | sol(隱式) | Solana 專屬 Cube,含鏈特有的 Instructions、DEXOrders 等 |
| Trading | 不需要 | 跨鏈(sol、eth、bsc) | 預聚合交易分析(OHLC K 線、代幣統計),資料內含 chain 維度 |
EVM 組需要
network 引數來選擇要查詢的鏈。Solana 和 Trading 不需要 network 引數 — Solana 為隱式,Trading 資料內包含 chain 維度。Chain Group 引數
每個 Chain Group 接受兩個可選引數,控制資料來源行為:Dataset
dataset 引數控制查詢的資料時間範圍:
| 值 | 說明 |
|---|---|
combined | 全量 — 同時查詢近期與歷史資料 (預設) |
realtime | 僅近期資料(約最近 24 小時) |
archive | 歷史資料(至保留期限 TTL) |
Aggregates
aggregates 引數控制是否使用預聚合(DWM/DWS)表:
| 值 | 說明 |
|---|---|
yes | 優先使用預聚合表 (適用 Cube 的預設行為) |
no | 僅使用原始明細表 |
only | 僅使用預聚合表(更快但欄位有限) |
通用引數模式
在 Chain Group 內部,每個 Cube 欄位接受同一套標準引數,以及可選的 Cube 專屬 selectors:| Argument | Type | Required | Description |
|---|---|---|---|
where | {Cube}Filter | No | 與維度層級巢狀匹配的 Filter 物件 |
limit | LimitInput | No | 分頁:{count: Int, offset: Int} |
orderBy | {Cube}OrderBy | No | 排序列舉({Path}_ASC / {Path}_DESC) |
| selectors | Filter input | No | 快捷篩選(例如 tokenAddress: {is: "..."}) |
LimitInput
count 因 Cube 而異(常見為 25)。多數 Cube 最大為 10,000。
每個 Cube 的生成型別
對每個 Cube,activecube-rs 會生成三個配套型別:Record 型別
{Cube}Record — 包含所有可選維度與指標的返回型別。欄位結構映象 Cube 的維度層級。Filter 輸入
{Cube}Filter — 巢狀輸入物件,每個維度對映到 Filter 原語(StringFilter、IntFilter、DateTimeFilter 等)。OrderBy 列舉
{Cube}OrderBy — 每個維度路徑在 ASC 與 DESC 兩個方向上的列舉變體(例如 Block_Time_ASC、Trade_Buy_Amount_DESC)。Introspection
Schema 支援標準 GraphQL introspection。可使用__schema 與 __type 查詢探索型別、欄位與引數:
- 列出所有 Cube
- 檢查某個 Cube 型別
- 列出 Filter 運算子
下一步
資料 Cube
瀏覽全部 25 個 Cube — 欄位、selectors 與數倉分層。
Chain Groups
瞭解 EVM、Solana、Trading 三組的 Cube 分佈。
Dataset 與 Aggregates
使用
dataset 和 aggregates 控制資料來源範圍與預聚合行為。篩選
學習如何用
where Filter 與 selector 快捷方式縮小查詢範圍。排序與分頁
使用
orderBy 與 limit 對結果排序並分頁遍歷大資料集。指標與聚合
在查詢中使用
count、sum、avg、min、max、uniq 聚合資料。
