UUID and Timeuuid functions in Cassandra

Prerequisite – Cassandra
In this article, we are going to discuss uuid() function which is very important to insert value and to uniquely generates “guaranteed unique” UID value Universally.

One of the reason of using uuid() function to generate Unique ID which helps in avoiding collisions. The uuid() function is suitable for use in insert or update statements and uuid() function takes no parameter value to generate a unique random Type 4 UUID value which is guaranteed unique value. Let’s take an example to understand the uuid() function.

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

This CQL query is NOT correct to insert Id value using uuid() function.



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

Output:

This CQL query is correct to insert Id value using uuid() function.

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

Output:

Some additional timeuuid() functions:

  1. dateof() :
    This function returns the extracted timestamp as a date.
  2. now() :
    In Cassandra Query Language now() function can be used for UTC (Universal Time) standard. Now() method is useful to insert value which is guaranteed to be unique.

    To insert the current time as a value then we can use timeuuid functions now() and 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; 

    Output:


    Now, let’s check how todate() function works.

    select todate(modified_date) 
    from function_test1; 

    Output:

    For later version >2.2.0 in Cassandra we can used toTimestamp(now()) function.

    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; 

    Output:

  3. minTimeuuid() and maxTimeuuid() :
    Both function is used to find minimun and maximum timeuuid respectivly. minTimeuuid() function returns minimumm Timeuuid value and maxTimeuuid() function returns maximum Timeuuid value.
  4. unixTimestampOf() :
    In Cassandra Query Language unixTimestampOf() functions the timestamp in ms(milliseconds)of a timeuuid column in a result set. unixTimestampOf() functions returns 64 bit integer timestamp.

In the new version of Cassandra to manipulate date support some additional timeuuid and timestamp functions. It can be used for insert, update, and select statements.

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.

Let’s understand with an example,

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; 

Output:


Figure – Output of function3 table



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.