Cassandra:如何用auto uuid键定义表?

时间:2018-04-08 17:09:59

标签: cassandra

我知道cqlsh有uuid()函数我可以使用cqlsh做INSERT。但是我想做INSERT(或者用app驱动程序创建数据)而不在客户端生成uuid。

1 个答案:

答案 0 :(得分:3)

您可以在cqlsh之外的查询中使用uuid(),这将在协调器上生成它们。你不需要指定它们,即:

session.execute("INSERT INTO blah (id, value) VALUES (now(), 'bob')");

# id being a timeuuid type, or can use uuid() for a random

那说在客户端做它们实际上会更好。如果你这样做客户端你的插入是幂等的。如果您具有提供在协调器上生成密钥的功能,则如果存在写入超时,则无法在其他协调器上重试该密钥。写入超时可能已应用,也可能未应用,因此如果您可以重试则更好。

顺便说一下,并不担心碰撞。特别是如果你使用1型uuid,它们就不可能发生碰撞。即使主机具有> 10,000毫秒(这是时间精度的精确度,因为自创建公历以来它的数量为100纳秒),大多数库都是单调递增的,并且只会进展到未来毫秒,确保您永远不会有重复。< / p>