服务器会话
概述
MongoDB 的服务器会话,或逻辑会话,是客户端会话用来支持因果一致性和可重试写操作的基础框架。
重要
应用程序使用客户端会话与服务器会话进行交互。
服务器会话仅适用于副本集和分片集群。
命令选项
从3.6版本开始,MongoDB驱动程序将所有操作都与服务器会话关联,但不包括未确认的写操作。以下选项可用于所有命令以支持与服务器会话的关联
重要
mongosh
和驱动程序将这些选项分配给会话中的命令。
选项 | 类型 | 描述 |
---|---|---|
lsid | 文档 | 指定与命令关联的会话的唯一ID的文档。如果指定了 txnNumber ,则必须包含lsid 。 |
txnNumber | 64位整数 | 一个严格递增的非负数,用于唯一标识命令会话中的命令。 如果指定,则命令必须还包含 |
对于接受语句数组作为参数的delete
、insert
和update
命令,以下选项也适用
重要
不要手动设置stmtIds
。MongoDB将stmtIds
设置为严格递增的非负数。
选项 | 类型 | 描述 |
---|---|---|
stmtIds | 32位整数数组 | 唯一标识各自的写操作的数字数组。 |
会话命令
以下命令可用于列出、管理和终止MongoDB集群中的服务器会话
命令 | 描述 |
---|---|
使指定的服务器会话过期。 | |
终止所有服务器会话。 | |
终止所有与指定模式匹配的服务器会话。 | |
终止指定的服务器会话。 | |
刷新空闲服务器会话。 | |
启动一个新的服务器会话。 |
会话和访问控制
如果部署强制执行身份验证/授权,用户必须经过身份验证才能启动会话,并且只有该用户可以使用该会话。
要使用客户端会话和因果一致性保证与$external
身份验证用户(Kerberos、LDAP或x.509用户),用户名长度不能超过10k字节。
如果部署不强制执行身份验证/授权,创建的会话没有所有者,任何用户在任何连接上都可以使用。如果用户对不强制执行身份验证/授权的部署进行身份验证并创建会话,则该用户拥有该会话。但是,任何连接上的任何用户都可以使用该会话。
如果部署无缝过渡到身份验证,没有所有者的任何会话都无法使用。