Spring-Couchbase自动生成的唯一ID是否不用于生产?

时间:2018-09-30 16:18:25

标签: spring spring-data couchbase uuid spring-data-couchbase

feature documentation 而spring-data-couchbase模块的reference document表示,使用“ UNIQUE”生成策略中的生成ID的功能只能用于测试脚手架。给出的声明没有解释。

为什么这种方法不适合生产?


用法示例:

@Document
class Entity(
             @Id
             @GeneratedValue(strategy = GenerationStrategy.UNIQUE)
             val id: String?,
             @Version
             val version: String?,
             @CreatedDate
             val creationTime: LocalDateTime?
)

1 个答案:

答案 0 :(得分:1)

默认情况下,couchbase中的写入是异步的,与视图和索引相同。但是,如果您需要高度的一致性(写后才能阅读),则应通过文档的密钥获取文档。

因此,如果您依赖数据库为您自动生成它们的密钥,则需要等到文档实际保留在数据库中后才能取回生成的ID。这种等待可以显着提高整体写入吞吐量。

生成自己的ID也被认为是一种好习惯,但是请避免生成顺序的ID(owasp安全漏洞-顺序的ID)。

这是我用于生成ID的代码:

public String generateId(Class t) {
    return t.getSimpleName()+"--"+UUID.randomUUID().toString()+UUID.randomUUID().toString();
}