# @elysiumjs/moirai-drizzle 中文文档

规范地址：https://npmcn.com/package/%40elysiumjs/moirai-drizzle/

版本：0\.4\.1
npm 元数据更新时间：2026-11-13T03:12:42.173Z
中文译文更新时间：2026-11-13T15:53:09.849Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40elysiumjs/moirai-drizzle
原文对照：https://npmcn.com/package/%40elysiumjs/moirai-drizzle/?lang=original
项目主页：https://github.com/na2axl/elysiumjs/tree/main/@elysiumjs/moirai-drizzle#readme
源码仓库：https://github.com/na2axl/elysiumjs

弃用说明：Replaced by @elysiumjs/drizzle\.

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

- 包体积（解压后）：55.6 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：@elysiumjs/core ^0\.24\.1，@elysiumjs/moirai ^0\.8\.1，@elysiumjs/mnemosyne-drizzle ^0\.9\.0
- 首次发布：2026-11-06T23:51:48.661Z
- 最新版本发布：2026-11-11T23:27:51.795Z
- 近 30 天下载量：3770（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 21 个）

## 中文简介

Postgres通过 Drizzle ORM 存储@elysiumjs/moirai: idemppotency keys,出柜,收件箱和咨询锁.

## 安装

```sh
npm install @elysiumjs/moirai-drizzle
```

也可以使用：`pnpm add @elysiumjs/moirai-drizzle`、`yarn add @elysiumjs/moirai-drizzle`、`bun add @elysiumjs/moirai-drizzle`

## README

# @elysiumjs/moirai-细雨

用于 [`@elysiumjs/moirai`](https://npmcn.com/package/%40elysiumjs/moirai),通过 Drizzle ORM 和 [`@elysiumjs/mnemosyne-drizzle`](https://npmcn.com/package/%40elysiumjs/mnemosyne-drizzle)。他们在动作的交易中写入,所以一个一能记录,发包行和存储的事件都会与数据一起执行.

## 安装

```bash
bun add @elysiumjs/moirai @elysiumjs/moirai-drizzle @elysiumjs/mnemosyne-drizzle
```

## 表格

```ts
import { moiraiTables } from '@elysiumjs/moirai-drizzle';

// In the Drizzle schema, so that migration:generate creates them.
export const billing = moiraiTables('billing');
```

`moiraiTables(schema?, options?)` 构建 `idempotency_keys`, (中文(简体) ), `outbox`, (中文(简体) ), `inbox`, (中文(简体) ), `events` 财务报告和审定财务报表 `projections` 表格,在一个 Postgress 中,当给出(例如,每个域名的一组表格).

与 `{ partitioned: true }`, (中文(简体) ), `events` 按区域分隔 `occurred_at` 财务报告和审定财务报表 `outbox` 按范围 `created_at`然后,它们的主要和独特的键包括该列,以及 `migration:generate` 以 `PARTITION BY RANGE`。分区由应用程序决定:在迁移钩中创建它们,或者将其添加到创建表格的迁移中 `DrizzleTable.afterCreate()` 从 `@elysiumjs/mnemosyne-drizzle`数字 :

```ts
import { DrizzleTable } from '@elysiumjs/mnemosyne-drizzle';

const tables = moiraiTables('billing', { partitioned: true });

export const billing = {
    ...tables,
    events: DrizzleTable.define(
        DrizzleTable.afterCreate(
            ({ qualified }) => `CREATE TABLE "billing"."events_default" PARTITION OF ${qualified} DEFAULT`
        )
    )(tables.events)
};
```

## 存储

```ts
import { MoiraiModule } from '@elysiumjs/moirai';
import {
    DrizzleEventStore,
    DrizzleIdempotencyStore,
    DrizzleInboxStore,
    DrizzleOutboxStore,
    DrizzleProjectionStorage,
    PgAdvisoryLock
} from '@elysiumjs/moirai-drizzle';

MoiraiModule.with({
    idempotency: () => new DrizzleIdempotencyStore({ table: billing.idempotencyKeys }),
    outbox: () => new DrizzleOutboxStore({ table: billing.outbox }),
    inbox: () => new DrizzleInboxStore({ table: billing.inbox }),
    lock: () => new PgAdvisoryLock(),
    events: () => new DrizzleEventStore({ table: billing.events }),
    projections: () => new DrizzleProjectionStorage({ table: billing.projections })
});
```

-   `DrizzleIdempotencyStore` 保持每个键的一能动作的反应.
-   `DrizzleOutboxStore` 索赔到期行 `FOR UPDATE SKIP LOCKED`,这样几个接力就永远不走同一行.
-   `DrizzleInboxStore` 记录消费者处理的信息.
-   `DrizzleEventStore` 保留集合的事件流。 一个附件锁定它用一个交易咨询锁所写的每条流,并检查该流在第一个附加版本之前就结束,所以一个 stale 写手得到一个 `ConcurrencyConflictError` 即使表格中唯一的密钥跨出更多的列,例如分区密钥。 Postgres 给每个事件 `position` 和写它的交易的id(`transaction_id`) (中文(简体) ).
-   `DrizzleProjectionStorage` 重排表格 `models` 预测`DrizzleModel`s 或 Drizzle 表格)与 `DELETE` 在重建的交易中,所以读者可以看到行直到它承诺,并且保留每个投影都是用它构建的版本.
-   `PgAdvisoryLock` 序列化共享 a 的动作 `serializeBy` 键,带有交易咨询锁.

每家店都卖 `connection`,默认为 `default`一个商店 `table` 需要匹配表格中的列 `moiraiTables`,并可能添加: 它可以生活在一个域自己的 `pgSchema` 并有另一个主要钥匙,如复合钥匙. `StoreTable<T>` 是它接受的类型.

## 常见问题

### @elysiumjs/moirai-drizzle 是什么？

Postgres通过 Drizzle ORM 存储@elysiumjs/moirai: idemppotency keys,出柜,收件箱和咨询锁\.注意：该包已被作者标记为弃用——Replaced by @elysiumjs/drizzle\.

### 如何安装 @elysiumjs/moirai-drizzle？

在项目目录运行 npm install @elysiumjs/moirai-drizzle，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@elysiumjs/core（^0\.24\.1）、@elysiumjs/moirai（^0\.8\.1）、@elysiumjs/mnemosyne-drizzle（^0\.9\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @elysiumjs/moirai-drizzle 支持 TypeScript 吗？

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

### @elysiumjs/moirai-drizzle 支持 ESM 还是 CommonJS？

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

### @elysiumjs/moirai-drizzle 可以商用吗？

@elysiumjs/moirai-drizzle 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @elysiumjs/moirai-drizzle 的下载量有多少？

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

### @elysiumjs/moirai-drizzle 还在维护吗？

最新版本 0\.4\.1 发布于 2026/11/12（1 天前）；至今共发布 21 个版本，其中过去 12 个月发布了 21 个；首次发布于 2026/11/07。作者已将其标记为弃用，新项目建议寻找替代方案。

