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?
)
答案 0 :(得分:1)
默认情况下,couchbase中的写入是异步的,与视图和索引相同。但是,如果您需要高度的一致性(写后才能阅读),则应通过文档的密钥获取文档。
因此,如果您依赖数据库为您自动生成它们的密钥,则需要等到文档实际保留在数据库中后才能取回生成的ID。这种等待可以显着提高整体写入吞吐量。
生成自己的ID也被认为是一种好习惯,但是请避免生成顺序的ID(owasp安全漏洞-顺序的ID)。
这是我用于生成ID的代码:
public String generateId(Class t) {
return t.getSimpleName()+"--"+UUID.randomUUID().toString()+UUID.randomUUID().toString();
}