我想为实体生成唯一的ID并将实体存储在Cassandra数据库中(仅当具有生成的ID的实体已不存在时)。如何确保在数据库中不存在生成的ID
ID生成后,我检查数据库是否有任何具有相同ID的实体。如果不是,则该实体被保存。从为MyService类的示例代码:
synchronized (MyService.class) {
do {
id = generateId();
} while (myDao.find(id) != null);
sampleObject.setId(id);
myDao.create(sampleObject);
}
在MyDao拯救实体我使用:
cassandraOperations.insert(sampleObject);
什么是要确保已生成的ID不存在数据库中的最佳做法是什么?我觉得这个同步块并不是最有效的解决方案。 或者,也许有其他方式可以确保只有在数据库中没有相同ID的实体时才插入实体?
检查[此](https://stackoverflow.com/questions/3935915/how-to-create-auto-increment-ids- in-cassandra) – Russiancold
你是否使用uuid作为id?如果是这样,碰撞概率等于0.所以你甚至不需要检查存在 – rvit34
在我的情况下,id是一个字母数字字符串。即使使用UUID,碰撞适应性也非常低。 –