如何在没有now()函数的情况下将自定义timeuuid插入cassandra?

时间:2014-04-03 22:16:33

标签: cassandra cql cassandra-2.0

我试图向cassandra插入一个特定的timeuuid,我设法插入的唯一方法是使用now()函数,因为我假设,now函数知道数据库喜欢它的格式。

如何为此创建cqlsh命令?

目前我有这个:

INSERT INTO my_table (tid) VALUES ( now() )

但是,当我正在调试node.js或任何连接cassandra的程序时,我希望能够100%控制我为测试目的插入的日期。

如果有这样的话会很好:

INSERT INTO my_table (tid) VALUES ( 12/OCTOBER/2014 )

没有它崩溃

谢谢!

3 个答案:

答案 0 :(得分:3)

timeuuid是一种复杂的格式。有效值描述为here

timeuuid

Uses the time in 100 nanosecond intervals since 00:00:00.00 UTC (60 bits), a 
clock sequence number for prevention of duplicates (14 bits), plus the IEEE 801 MAC
address (48 bits) to generate a unique identifier. For example: 
d2177dd0-eaa2-11de-a572-001b779c76e3 

Thistimeuuid进行了很好的讨论。我不知道这些位出现的顺序,但如果是从左到右,你可以连续:

时间(前15位= 60位): 00000000-0000-000

序列(接下来的3位= 12位,忽略序列的最后2位): 0-00

最后2位序列+ MAC : 000-000000000000

然后根据条目增加时间序列。但是使用时间戳可能要容易得多。

如果你想这样做:

INSERT INTO my_table (tid) VALUES ( "2014-10-12" )

您需要使用timestamp类型。

答案 1 :(得分:2)

查看minTimeuuidmaxTimeuuid个功能。插入结果是一个坏主意,但出于测试目的,它可以没问题。

http://cassandra.apache.org/doc/cql3/CQL.html#timeuuidFun

答案 2 :(得分:2)

我有两个选择:

  1. 使用其中一个minTimeuuidmaxTimeuuid描述的here
  2. 使用UUIDGen
  3. 中的详细信息在Node.js中实现Timeuuid值

    我认为第一种方法更容易用于测试目的。