📜  Cassandra 中的 UUID 和 Timeuuid 函数

📅  最后修改于: 2021-09-09 11:20:23             🧑  作者: Mango

先决条件 – 卡桑德拉
在本文中,我们将讨论 uuid()函数,该函数对于插入值和唯一生成“保证唯一”的 UID 值非常重要。

使用 uuid()函数生成有助于避免冲突的唯一 ID 的原因之一。 uuid()函数适用于插入或更新语句,并且 uuid()函数接受任何参数值来生成唯一的随机类型 4 UUID 值,该值保证唯一值。让我们通过一个例子来理解 uuid()函数。

Create table function4(Id uuid primary key, name text); 

此 CQL 查询对于使用 uuid()函数插入 Id 值是不正确的。

Insert into function4 (Id, name) 
values (1, ‘Ashish’); // fails  

输出:

此 CQL 查询对于使用 uuid()函数插入 Id 值是正确的。

Insert into function4(Id, name) 
values (now(), ‘Ashish’);  //correct 

输出:

一些额外的 timeuuid() 函数:

  1. 日期() :
    此函数将提取的时间戳作为日期返回。
  2. 现在() :
    在 Cassandra 查询语言中, now()函数可用于 UTC(世界时)标准。 Now() 方法可用于插入保证唯一的值。

    要将当前时间作为值插入,我们可以使用 timeuuid 函数 now() 和 dateof()。

CREATE TABLE function_test1(Id uuid primary key,
                                        name text,
                           modified_date timestamp );

INSERT INTO function_test1(Id, name, modified_date) 
       VALUES (now(), 'Rana', '2019-10-29 00:05+0000');
INSERT INTO function_test1(Id, name, modified_date) 
       VALUES (now(), 'Rana', '2019-10-30 00:05+0000');

select * 
from function_test1; 
  1. 输出:

  1. 现在,让我们检查一下 todate()函数是如何工作的。

select todate(modified_date) 
from function_test1; 
  1. 输出:

  1. 对于 Cassandra 中高于 2.2.0 的更高版本,我们可以使用 toTimestamp(now())函数。

CREATE TABLE function_test2(Id uuid primary key,
                                        name text,
                         modified_date timestamp );

INSERT INTO function_test2 (Id, name, modified_date) 
       VALUES (now(), 'Rana', toTimestamp(now()));

Select * 
from function_test2; 
  1. 输出:

  1. minTimeuuid() 和 maxTimeuuid() :
    这两个函数分别用于查找最小和最大 timeuuid。 minTimeuuid()函数返回最小的 Timeuuid 值,maxTimeuuid()函数返回最大的 Timeuuid 值。
  2. unixTimestampOf() :
    在 Cassandra 查询语言中,unixTimestampOf() 函数在结果集中以 ms(毫秒)为单位的 timeuuid 列的时间戳。 unixTimestampOf() 函数返回 64 位整数时间戳。

在新版本的 Cassandra 中操作日期支持一些额外的 timeuuid 和时间戳函数。它可用于插入、更新和选择语句。

Additional timeuuid and timestamp functions Name Convert
toDate(timeuuid) From timeuuid to date[YYYY-MM-DD] format.
toTimestamp(timeuuid) From timeuuid to timestamp format.
toUnixTimestamp(timestamp) From timeuuid to UNIX timestamp format.
toDate(timestamp) From timestamp to date[YYYY-MM-DD] format.
toUnixTimestamp(timestamp) From timestamp to UNIX timestamp format.
toTimestamp(date) From date to timestamp format.
toUnixTimestamp(date) From date to UNIX timestamp format.

让我们通过一个例子来理解,

CREATE TABLE function3( Col1 int, Col2 timestamp, 
                             Col3 timeuuid, Col4 bigint, 
                  PRIMARY KEY(Col1, Col2, Col3, Col4)); 
Insert into function3(Col1, Col2, Col3, Col4) 
            Values (9, toUnixTimestamp(now()), 
                     49d59e61-961b-11e8-9854-134d5b3f9cf8, 
                       toTimestamp(now()));  
SELECT * 
from function3; 

输出:

图 – function3 表的输出