---
type: study
status: verified
created: 2026-08-11
updated: 2026-08-11
sensitivity: standard
tags:
  - study
  - langchain
  - python
  - integrations
  - chat-history
  - cockroachdb
topic: CockroachDB Chat Message History
sources:
  - https://docs.langchain.com/oss/python/integrations/chat_message_histories/cockroachdb
last_verified: 2026-08-11
---
# CockroachDB Chat Message History

## 能力与接口

`langchain-cockroachdb` 的 `CockroachDBChatMessageHistory` 把会话消息存入 CockroachDB。页面强调分布式复制、SERIALIZABLE transaction、高可用、PostgreSQL 兼容和按 `session_id` 隔离。

异步接口：`aadd_message`、`aadd_messages`、`aget_messages`、`aclear`。同步接口：`add_message`、`messages` property、`clear`。构造参数包含 connection string、table name 和可选 schema（默认 `public`）。

## 初始化与迁移

页面示例通过私有风格的 `_acreate_table_if_not_exists()` 建表。下划线方法不应成为生产部署契约；生产把表/索引/schema migration 纳入版本化数据库迁移，使用专用 DDL 身份。运行时账号只保留所需读写权限。

Connection string 含用户名/密码和 TLS 参数，必须从 secret manager 注入并强制 `verify-full`；本地 `sslmode=disable` 示例不能进入生产。连接池、timeout、retry 和 max message/content size 需按 CockroachDB 驱动配置。

## 一致性与租户隔离

SERIALIZABLE 能减少数据库事务层的消息顺序问题，但应用仍要有稳定 message ID/turn sequence，处理客户端重试和重复提交。`session_id` 不可由未认证客户端任意指定；推荐 `(tenant_id, user_id, session_id)` 服务端 namespace 或等价 row-level filter/index。

`clear/aclear` 是破坏性操作，需要确认目标 session、审计和幂等。消息保留、用户删除、附件引用、加密和备份恢复分别治理。Chat history 只保存对话记录，不应被当作 LangGraph checkpoint 或跨线程语义 memory。

## 验证边界

已读取唯一官方 Markdown 路由并核对同步/异步 API 与页面声明的一致性特征。没有连接真实 CockroachDB，也未验证 schema、并发顺序、故障转移、清理或性能。
