# @chkit/plugin-obsessiondb 中文文档

规范地址：https://npmcn.com/package/%40chkit/plugin-obsessiondb/

版本：0\.2\.0-beta\.16
npm 元数据更新时间：2026-11-08T23:59:12.377Z
中文译文更新时间：2026-11-09T13:59:27.902Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40chkit/plugin-obsessiondb
原文对照：https://npmcn.com/package/%40chkit/plugin-obsessiondb/?lang=original
项目主页：https://chkit.obsessiondb.com/
源码仓库：https://github.com/obsessiondb/chkit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：320 kB，130 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：7 个
- 首次发布：2026-02-24T04:50:42.634Z
- 最新版本发布：2026-11-08T23:59:12.040Z
- 近 30 天下载量：11533（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：35（近 12 个月 35 个）

## 中文简介

ObsessionDB 管理 chkit 的 ClickHouse 集成插件

## 安装

```sh
npm install @chkit/plugin-obsessiondb
```

也可以使用：`pnpm add @chkit/plugin-obsessiondb`、`yarn add @chkit/plugin-obsessiondb`、`bun add @chkit/plugin-obsessiondb`

## README

# @chkit/plugin-obsessiondb

[ObsessionDB 函数](https://obsessiondb.com/) chkit 的辅助插件。 此插件设计用于 [ObsessionDB 函数](https://obsessiondb.com/) 用户还需要瞄准定期的 ClickHouse 实例(如本地开发、自办中转).

部分 [齐克特](https://github.com/obsessiondb/chkit) 单相机 此插件扩展 [`chkit`](https://www.npmjs.com/package/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.

## 安装

```bash
bun add -d @chkit/plugin-obsessiondb
```

## 使用量

在配置中注册插件 :

```ts
// 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` 装入计划.

## 如何运作

1.  **自动检测** (默认):插件检查您的 `clickhouse.url` 配置值 。 如果主机是 ObsessionDB 实例(`.obsessiondb.com` 或者说 `obsession.numia-dev.com`, (中文(简体) ), `storage_policy` 保留。 否则就剥了.
    
2.  **部队旗帜**: 覆盖单个自动检测 `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` 接受两种旗帜,但忽略它们.
    

### 实例

```bash
# 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 文档](https://chkit.obsessiondb.com/)。 。 。 .

## 许可证

[麻省理工学院](https://npmcn.com/package/LICENSE)

## 常见问题

### @chkit/plugin-obsessiondb 是什么？

ObsessionDB 管理 chkit 的 ClickHouse 集成插件

### 如何安装 @chkit/plugin-obsessiondb？

在项目目录运行 npm install @chkit/plugin-obsessiondb，或使用 pnpm add / yarn add / bun add。

### @chkit/plugin-obsessiondb 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @chkit/plugin-obsessiondb 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @chkit/plugin-obsessiondb 可以商用吗？

@chkit/plugin-obsessiondb 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @chkit/plugin-obsessiondb 的下载量有多少？

根据 npm 官方下载统计，@chkit/plugin-obsessiondb 在 2026/10/10 – 2026/11/08 这 30 天内被下载 11,533 次，日均约 384 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @chkit/plugin-obsessiondb 还在维护吗？

最新版本 0\.2\.0-beta\.16 发布于 2026/11/09（今天）；至今共发布 35 个版本，其中过去 12 个月发布了 35 个；首次发布于 2026/02/24。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

