@chkit/plugin-obsessiondb
ObsessionDB 函数 chkit 的辅助插件。 此插件设计用于 ObsessionDB 函数 用户还需要瞄准定期的 ClickHouse 实例(如本地开发、自办中转).
部分 齐克特 单相机 此插件扩展 chkit CLI 所以一套Schema文件对ObsessionDB和正版ClickHouse都有作用.
特征
storage_policy剥离 -- 删除storage_policy表格设置,其ObsessionDB政策(例如:.'s3') 在常规的 ClickHouse 服务器上不存在, 当瞄准非 ObsessionDB 实例时- 主机自动检测 -- 检查
clickhouse.url确定目标是否为 ObsessionDB 或 常规 ClickHouse, 不需要手动配置 - CLI 旗帜覆盖 - 说吧
--force-shared-engines财务报告和审定财务报表--no-shared-engines覆盖单个自动检测的旗帜generate或者说snapshot rebuild运行 - 由
generate财务报告和审定财务报表snapshot rebuild- 说吧migrate, (中文(简体) ),status, (中文(简体) ),drift,以及check从迁移文件中绘制并快取这些命令 - 意见和实际意见未受影响 - 只重写表格定义
为什么
ObsessionDB 用途 Shared 引擎变体( 如. SharedReplacingMergeTree, (中文(简体) ), SharedMergeTree在没有操作者干预的情况下提供有管理的复制。 这些引擎在常规的ClickHouse中并不存在,因此chkit总是会写出标准引擎名称(英语:SharedReplacingMergeTree(ts) 变成 ENGINE = ReplacingMergeTree(ts)和 ObsessionDB 取代 Shared 服务器上的变体.
storage_policy 是一个标准的 ClickHouse 表格设置,但存储策略 ObsessionDB 提供,例如 's3',在正则的 ClickHouse 服务器上没有定义,所以 CREATE TABLE 失败 Unknown storage policy。这个插件在 diff/ 规划管道和条块之前拦截了 chema 定义 storage_policy,无论它的价值如何,当目标不是ObsessionDB时,所以您可以使用一个单一的一组图案文件,跨越ObsessionDB和正则的ClickHouse.
安装
bun add -d @chkit/plugin-obsessiondb
使用量
在配置中注册插件 :
// clickhouse.config.ts
import { defineConfig } from '@chkit/core'
import { obsessiondb } from '@chkit/plugin-obsessiondb'
export default defineConfig({
schema: './src/db/schema/**/*.ts',
outDir: './chkit',
plugins: [
obsessiondb(),
],
clickhouse: {
url: process.env.CLICKHOUSE_URL ?? 'http://localhost:8123',
},
})
重写时自动运行 generate 或者说 snapshot rebuild 装入计划.
如何运作
-
自动检测 (默认):插件检查您的
clickhouse.url配置值 。 如果主机是 ObsessionDB 实例(.obsessiondb.com或者说obsession.numia-dev.com, (中文(简体) ),storage_policy保留。 否则就剥了. -
部队旗帜: 覆盖单个自动检测
generate或者说snapshot rebuild运行 :--force-shared-engines- 保留storage_policy,即使该 URL 不被确认为 ObsessionDB(例如自定义域背后的服务)--no-shared-engines- 脱去storage_policy,甚至在ObsessionDB上
如果两者都通过,
--force-shared-engines赢了 迁移档案和snapshot.json保持国旗的决定,所以通过同样的旗帜 在每一个generate财务报告和审定财务报表snapshot rebuild为了那个目标.migrate, (中文(简体) ),status, (中文(简体) ),drift,以及check接受两种旗帜,但忽略它们.
实例
# Auto-detect based on clickhouse.url (default behavior)
bunx chkit generate
# Strip storage_policy even when targeting ObsessionDB
bunx chkit generate --no-shared-engines
# Keep it for an ObsessionDB service behind a custom domain
bunx chkit generate --force-shared-engines
bunx chkit snapshot rebuild --force-shared-engines
重写什么
| 司马 | 生成 DDL( 每个目标) |
|---|---|
engine: 'SharedMergeTree' | ENGINE = MergeTree() |
engine: 'SharedReplacingMergeTree(ts)' | ENGINE = ReplacingMergeTree(ts) |
engine: 'SharedAggregatingMergeTree' | ENGINE = AggregatingMergeTree() |
engine: 'MergeTree' | ENGINE = MergeTree() |
| 表格设置 | 常规点击之家 | ObsessionDB 函数 |
|---|---|---|
storage_policy (任何数值) | 剥去 | 保留 |
| 任何其他设置 | 保留 | 保留 |
只有表格定义受到影响。 意见和实际意见没有改变.
文档
见 chkit 文档。 。 。 .