cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roshan Dawrani <roshandawr...@gmail.com>
Subject Re: Converting a TimeUUID to a long (timestamp) and vice-versa
Date Wed, 05 Jan 2011 02:45:48 GMT
If I use *com.eaio.uuid.UUID* directly, then I am able to do what I need
(attached a Java program for the same), but unfortunately I need to deal
with *java.util.UUID *in my application and I don't have its equivalent
com.eaio.uuid.UUID at the point where I need the timestamp value.

Any suggestion on how I can achieve the equivalent using Hector library's
TimeUUIDUtils?

On Wed, Jan 5, 2011 at 7:21 AM, Roshan Dawrani <roshandawrani@gmail.com>wrote:

> Hi Victor / Patricio,
>
> I have been using Hector library's TimeUUIDUtils. I also just looked at
> TimeUUIDUtilsTest also but didn't find anything similar being tested there.
>
> Here is what I am trying and it's not working - I am creating a Time UUID,
> extracting its timestamp value and with that I create another Time UUID and
> I am expecting both time UUIDs to have the same timestamp() value - am I
> doing / expecting something wrong here?:
>
> =======================================================
> import java.util.UUID;
> import me.prettyprint.cassandra.utils.TimeUUIDUtils;
>
> public class TryHector {
>     public static void main(String[] args) throws Exception {
>         UUID someUUID = TimeUUIDUtils.getUniqueTimeUUIDinMillis();
>         long timestamp1 = someUUID.timestamp();
>
>         UUID otherUUID = TimeUUIDUtils.getTimeUUID(timestamp1);
>         long timestamp2 = otherUUID.timestamp();
>
>         System.out.println(timestamp1);
>         System.out.println(timestamp2);
>     }
> }
> =======================================================
>
> I have to create the timestamp() equivalent of my time UUIDs so I can send
> it to my UI client, for which it will be simpler to compare "long" timestamp
> than comparing UUIDs. Then for the "long" timestamp chosen by the client, I
> need to re-create the equivalent time UUID and go and filter the data from
> Cassandra database.
>
>
> --
> Roshan
> Blog: http://roshandawrani.wordpress.com/
> Twitter: @roshandawrani <http://twitter.com/roshandawrani>
> Skype: roshandawrani
>
> On Wed, Jan 5, 2011 at 1:32 AM, Victor Kabdebon <victor.kabdebon@gmail.com
> > wrote:
>
>> Hi Roshan,
>>
>> Sorry I misunderstood your problem.It is weird that it doesn't work, it
>> works for me...
>> As Patricio pointed out use hector "standard" way of creating TimeUUID and
>> tell us if it still doesn't work.
>> Maybe you can paste here some of the code you use to query your columns
>> too.
>>
>> Victor K.
>> http://www.voxnucleus.fr
>>
>> 2011/1/4 Patricio Echag├╝e <patricioe@gmail.com>
>>
>> In Hector framework, take a look at TimeUUIDUtils.java
>>>
>>> You can create a UUID using   TimeUUIDUtils.getTimeUUID(long time); or
>>> TimeUUIDUtils.getTimeUUID(ClockResolution clock)
>>>
>>> and later on, TimeUUIDUtils.getTimeFromUUID(..) or just UUID.timestamp();
>>>
>>> There are some example in TimeUUIDUtilsTest.java
>>>
>>> Let me know if it helps.
>>>
>>>
>>>
>>>
>>> On Tue, Jan 4, 2011 at 10:27 AM, Roshan Dawrani <roshandawrani@gmail.com
>>> > wrote:
>>>
>>>> Hello Victor,
>>>>
>>>> It is actually not that I need the 2 UUIDs to be exactly same - they
>>>> need to be same timestamp wise.
>>>>
>>>> So, what I need is to extract the timestamp portion from a time UUID
>>>> (say, U1) and then later in the cycle, use the same long timestamp value
to
>>>> re-create a UUID (say, U2) that is equivalent of the previous one in terms
>>>> of its timestamp portion - i.e., I should be able to give this U2 and filter
>>>> the data from a column family - and it should be same as if I had used the
>>>> original UUID U1.
>>>>
>>>> Does it make any more sense than before? Any way I can do that?
>>>>
>>>> rgds,
>>>> Roshan
>>>>
>>>>
>>>> On Tue, Jan 4, 2011 at 11:46 PM, Victor Kabdebon <
>>>> victor.kabdebon@gmail.com> wrote:
>>>>
>>>>> Hello Roshan,
>>>>>
>>>>> Well it is normal to do not be able to get the exact same UUID from a
>>>>> timestamp, it is its purpose.
>>>>> When you create an UUID you have in fact two information : random 64
>>>>> bits number - 64 bits timestamp. You put that together and you have your
>>>>> uuid.
>>>>> .
>>>>> So unless you save your random number two UUID for the same milli( or
>>>>> micro) second are different.
>>>>>
>>>>> Best regards,
>>>>> Victor K.
>>>>> http://www.voxnucleus.fr
>>>>>
>>>>> 2011/1/4 Roshan Dawrani <roshandawrani@gmail.com>
>>>>>
>>>>> Hi,
>>>>>> I am having a little difficulty converting a time UUID to its
>>>>>> timestamp equivalent and back. Can someone please help?
>>>>>>
>>>>>> Here is what I am trying. Is it not the right way to do it?
>>>>>>
>>>>>> ===========================================================
>>>>>>         UUID someUUID = TimeUUIDUtils.getUniqueTimeUUIDinMillis();
>>>>>>
>>>>>>         long time = someUUID.timestamp(); /* convery from UUID to
a
>>>>>> long timestamp */
>>>>>>         UUID otherUUID = TimeUUIDUtils.getTimeUUID(time); /* do the
>>>>>> reverse and get back the UUID from timestamp */
>>>>>>
>>>>>>         System.out.println(someUUID); /* someUUID and otherUUID should
>>>>>> be same, but are different */
>>>>>>         System.out.println(otherUUID);
>>>>>> ===========================================================
>>>>>>
>>>>>> --
>>>>>> Roshan
>>>>>> Blog: http://roshandawrani.wordpress.com/
>>>>>> Twitter: @roshandawrani <http://twitter.com/roshandawrani>
>>>>>> Skype: roshandawrani
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Roshan
>>>> Blog: http://roshandawrani.wordpress.com/
>>>> Twitter: @roshandawrani <http://twitter.com/roshandawrani>
>>>> Skype: roshandawrani
>>>>
>>>>
>>>
>>>
>>> --
>>> Patricio.-
>>>
>>
>>
>

Mime
View raw message