@bemi-io/drizzle

中文文档
0.1.0发布于 2025/11/08LGPL-3.0TypeScriptESM + CJS近 30 天下载 22万

Drizzle 自动数据库更改跟踪 .

中文使用文档
文档目录6 节
  1. 目录
  2. 要点
  3. 使用大小写
  4. 快速启动
  5. 结构概览
  6. 许可证
bemi-banner

网站 • 妇女 文档 • 妇女 示例 • 妇女 报告错误 • 妇女 请求特性 • 妇女 解析器 • 妇女 页:1 • 妇女 链接

贝米·德利兹尔

贝米 插件进入 滴水龙头 和用于自动跟踪数据变化的现有 PostgreSQL 数据库。 它解锁了强烈的上下文感审计线索 和时间旅行查询 在你的应用程序.

贝米的设计简单且不侵扰 不需要修改你现有的数据库结构 它在背景中运行,赋予你数据变化跟踪功能.

此库是一个可选的 Drizzle 集成, 允许您在进行数据库更改时通过特定应用程序的上下文 。 这可以包括上下文,如"在哪里"(API端点,工人等),"谁"(用户,克龙工作等),以及"变化背后的",从而丰富了被贝米所捕获的信息.

目录

要点

  • 以结构化形式自动和安全地跟踪特定应用程序上下文的数据库更改
  • 获取数据变化的100%可靠性, 即使通过应用程序外的直接 SQL 执行
  • 高性能,不影响代码运行时间执行和数据库工作量
  • 易于使用而不改变表格结构和重写代码
  • 时间旅行查询和方便分组和过滤变化的能力
  • 自动提供云基础设施的可扩展性
  • 完全拥有您的数据

见 实例还原 用于自动跟踪所有变化的 Drizzle.

使用大小写

贝米建设的用途案例范围很广!. 该技术最初是作为Fintech的合规工程系统而建造的,支持了管理下价值15B美元的资产,但后来被取入了通用用途. 一些使用案例包括:

  • 审计路线: 使用日志进行合规,或向客户支持和外部客户展示.
  • 更改还原 : 恢复用户所做的更改或回滚API请求中的所有数据更改.
  • 时间旅行: 检索历史数据而不执行事件来源.
  • 解决问题: 查明申请问题的根源.
  • 分布式追踪 : 跨分布式系统的跟踪变化.
  • 测试 : 回滚或回滚到不同的应用测试状态.
  • 分析趋势: 深入了解历史趋势和变化,以便作出知情决策.

快速启动

安装国家预防机制软件包

npm install @bemi-io/drizzle

将您的 Drizzle 实例包装并添加一个 快递 通过自动跟踪数据库更改的应用程序上下文的中间软件

import { withBemi, bemiExpressMiddleware } from "@bemi-io/drizzle";
import express, { Request } from "express";

const db = withBemi(drizzle(process.env.DATABASE_URL!));

const app = express();

app.use(
  // Customizable context
  bemiExpressMiddleware((req: Request) => ({
    userId: req.user?.id,
    endpoint: req.url,
    params: req.body,
  }))
);

更改数据库,确保它们都保存在名为“表格”的表格中 changes 在目的地 DB 中

psql -h [HOSTNAME] -U [USERNAME] -d [DATABASE] -c 'SELECT "primary_key", "table", "operation", "before", "after", "context", "committed_at" FROM changes;'

 primary_key | table | operation |                       before                      |                       after                        |                                context                                                      |      committed_at
-------------+-------+-----------+---------------------------------------------------+----------------------------------------------------+---------------------------------------------------------------------------------------------+------------------------
 26          | todo  | CREATE    | {}                                                | {"id": 26, "task": "Sleep", "isCompleted": false}  | {"userId": 187234, "endpoint": "/todo", "params": {"task": "Sleep", "isCompleted": false}}  | 2023-12-11 17:09:09+00
 27          | todo  | CREATE    | {}                                                | {"id": 27, "task": "Eat", "isCompleted": false}    | {"userId": 187234, "endpoint": "/todo", "params": {"task": "Eat", "isCompleted": false}}    | 2023-12-11 17:09:11+00
 28          | todo  | CREATE    | {}                                                | {"id": 28, "task": "Repeat", "isCompleted": false} | {"userId": 187234, "endpoint": "/todo", "params": {"task": "Repeat", "isCompleted": false}} | 2023-12-11 17:09:13+00
 26          | todo  | UPDATE    | {"id": 26, "task": "Sleep", "isCompleted": false} | {"id": 26, "task": "Sleep", "isCompleted": true}   | {"userId": 187234, "endpoint": "/todo/complete", "params": {"id": 26}}                      | 2023-12-11 17:09:15+00
 27          | todo  | DELETE    | {"id": 27, "task": "Eat", "isCompleted": false}   | {}                                                 | {"userId": 187234, "endpoint": "/todo/27", "params": {"id": 27}}                            | 2023-12-11 17:09:18+00

看看我们 Drizzle 文档 更多细节.

结构概览

贝米被设计为轻量级和安全型. 它采取切实可行的办法,实现以下利益: 事件源代码 不需要重排现有代码, 切换到高度专门化的数据库, 或者在数据库之上使用不必要的像git的抽象。 我们希望你的系统能像它已经做的一样 与你现有的数据库保持尽可能简单.

Bemi将数据库和应用层都插入,确保100%的可靠性和对每个变化的全面理解.

在数据库级别上,贝米安全地连接到 PostgreSQL 写入前端日志'' 及其执行 更改数据抓取。这可以跟踪甚至通过直接 SQL 触发的变化.

在应用程序级别上,这个软件包会自动将应用程序上下文传递到复制日志来增强低级别数据库的更改. 例如,一个用户进行更改的信息,启动更改的API端点,自动触发数据库更改的工人名等.

Bemi工人然后将低级数据与应用程序上下文相接,并以结构化的易于查询的格式储存这些信息,如下文所描述:

bemi-architechture

云溶液包括工人活虫,为过错耐受性而排队,以及一个没有服务器的PostgreSQL. 如果你想自己运行一个自办的版本,请看我们 自动托管文件。 。 。 .

许可证

根据《议定书》的规定分发 LGPL-3.0 许可证。 。 。 . 如果需要修改并分发代码,请放出以回馈开源社区.

版本与发布记录

@bemi-io/drizzle 共发布 2 个版本,首次发布于 2025/11/08;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.1.0latest2025/11/081 年前
1.0.02025/11/081 年前

关于 @bemi-io/drizzle 的常见问题

@bemi-io/drizzle 是什么?

Drizzle 自动数据库更改跟踪 .

如何安装 @bemi-io/drizzle?

在项目目录运行 npm install @bemi-io/drizzle,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:express(^4.18.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 bemi,可以用 npx bemi 直接运行。

@bemi-io/drizzle 支持 TypeScript 吗?

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

@bemi-io/drizzle 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bemi-io/drizzle 可以商用吗?

@bemi-io/drizzle 使用 LGPL-3.0 许可。弱 Copyleft:作为库被调用时通常不要求开源你自己的代码,但修改库本身需以 LGPL 开源;前端打包合并后的适用边界存在不同理解。以上为概括,不构成法律意见,请以许可原文为准。

@bemi-io/drizzle 的下载量有多少?

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

@bemi-io/drizzle 还在维护吗?

最新版本 0.1.0 发布于 2025/11/08(1 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2025/11/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。