【问题标题】:CouchDB - Auto-incrementCouchDB - 自动增量
【发布时间】:2011-04-26 11:05:43
【问题描述】:

在非复制场景(或者我们只有一个写入主机的场景)中,以下是否可以作为快速的方式为文档提供自动增量 ID 到小型内部客户数据库。

关于插入新的客户查询http://couhdb/mydb 以获取元数据

然后添加 doc_count + doc_deleted_count = autoIncId

将文档上的属性设置为 .oldDbCompatIdThatClientIsUsedTo = auotIncId

这意味着序列化/同步获取数据库元数据和编写文档的过程,但考虑到每天增加 20 个客户等,这不是问题。

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    我可以想到几种方法:

    • 创建一个返回 max(id) 的视图,然后将 max(id) + 1 分配给新项目(不过这里可能会发生冲突)
    • 在数据库中存储另一个不是普通记录但仅包含序列值的文档。当您想要执行新插入时,从该文档中获取当前值,添加一个,将其保存回文档,然后如果没有失败,则使用该 id 作为新记录

    【讨论】:

    • 好主意,但 max(id) 有可能在删除文档时重新分配相同的 id - 我想可以解决这个软删除。后者是我目前拥有的,但感觉很糟糕。
    • 好点,我错过了max(id)。我可能会坚持使用 UUID 并尽量避免需要增量 id
    • 连接并发怎么样?您将同时获得一些具有多个连接的重复 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2010-10-21
    • 2013-10-12
    • 2014-02-21
    • 2021-07-22
    • 2015-09-19
    相关资源
    最近更新 更多