CouchDB如何计算序列Id(seq)

CouchDB如何计算序列Id(seq),couchdb,Couchdb,我在源代码库()中寻找伪代码或实际代码,定义CouchDB如何计算seq值 查看文档中的技术概述:它说: 对数据库实例的每次更新都会生成一个新的序列号 但它不涉及如何。我认为它可能依赖于实现,看看它所声明的复制协议文档: 序列ID: 由Changes提要提供的ID。它必须是递增的,但不一定总是整数 这个问题有些关联,因为它询问如何计算文档的另一个组件,rev: 您可以找到有关变更顺序内部的一些信息 序列号反映文档更新序列的集群状态,该信息被编码到序列号中 序列号的数字部分是每个集群节点中文档更新

我在源代码库()中寻找伪代码或实际代码,定义CouchDB如何计算
seq

查看文档中的技术概述:它说:

对数据库实例的每次更新都会生成一个新的序列号

但它不涉及如何。我认为它可能依赖于实现,看看它所声明的复制协议文档:

序列ID: 由Changes提要提供的ID。它必须是递增的,但不一定总是整数

这个问题有些关联,因为它询问如何计算文档的另一个组件,rev:

您可以找到有关变更顺序内部的一些信息

序列号反映文档更新序列的集群状态,该信息被编码到序列号中

序列号的数字部分是每个集群节点中文档更新序列的总和


序列号的第二部分是base64编码字符串,每个群集节点中都有更新序列信息。

序列号没有固有的含义,只是它总是递增。实际上,这意味着唯一可预测的部分是第一个“-”字符之前的整数。其余部分确实是特定于实现的,并且实际上是随机的。如果你能描述一下你试图解决的问题,也许可以提供一个更有用的答案。我对用于生成该值(而不是前导整数)的实现非常好奇。我没有实际的问题,我试图解决它或没有CouchDB使用它,字面上只是好奇。我不太了解Erlang,所以浏览源代码的速度很慢。我肯定不是随机决定在2.x中使用这种格式,而1.x的格式是不同的。我只是想知道人们是如何做出他们的选择的,看看香肠是如何做的,可以这么说。我不知道答案。它看起来至少(部分)是base64编码的——可能包括一个时间戳。
 1-g1AAAAIreJyVkEsKwjAURZ-toI5cgq5A0sQ0OrI70XyppcaRY92J7kR3ojupaSPUUgotgRd4yTlwbw4A0zRUMLdnpaMkwmyF3Ily9xBwEIuiKLI05KOTW0wkV4rruP29UyGWbordzwKVxWBNOGMKZhertDlarbr5pOT3DV4gudUC9-MPJX9tpEAYx4TQASns2E24ucuJ7rXJSL1BbEgf3vTwpmedCZkYa7Pulck7Xt7x_usFU2aIHOD4eEfVTVA5KMGUkqhNZV-8_o5i