学习笔记 · Obsidian
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、并发顺序、故障转移、清理或性能。