incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lanny Ripple <la...@spotright.com>
Subject Re: TimeUUID Order Partitioner
Date Wed, 27 Mar 2013 13:43:18 GMT
Ah. TimeUUID.  Not as useful for you then but still something for the toolbox.

On Mar 27, 2013, at 8:42 AM, Lanny Ripple <lanny@spotright.com> wrote:

> A type 4 UUID can be created from two Longs.  You could MD5 your strings giving you 128
hashed bits and then make UUIDs out of that.  Using Scala:
> 
>   import java.nio.ByteBuffer
>   import java.security.MessageDigest
>   import java.util.UUID
> 
>   val key = "Hello, World!"
> 
>   val md = MessageDigest.getInstance("MD5")
>   val dig = md.digest(key.getBytes("UTF-8"))
>   val bb = ByteBuffer.wrap(dig)
> 
>   val msb = bb.getLong
>   val lsb = bb.getLong
> 
>   val uuid = new UUID(msb, lsb)
> 
> 
> On Mar 26, 2013, at 3:22 PM, aaron morton <aaron@thelastpickle.com> wrote:
> 
>>> Any idea?
>> Not off the top of my head.
>> 
>> Cheers
>> 
>> -----------------
>> Aaron Morton
>> Freelance Cassandra Consultant
>> New Zealand
>> 
>> @aaronmorton
>> http://www.thelastpickle.com
>> 
>> On 26/03/2013, at 2:13 AM, Carlos Pérez Miguel <cperezmig@gmail.com> wrote:
>> 
>>> Yes it does. Thank you Aaron.
>>> 
>>> Now I realized that the system keyspace uses string as keys, like "Ring" or "ClusterName",
and I don't know how to convert these type of keys into UUID. Any idea?
>>> 
>>> 
>>> Carlos Pérez Miguel
>>> 
>>> 
>>> 2013/3/25 aaron morton <aaron@thelastpickle.com>
>>> The best thing to do is start with a look at ByteOrderedPartitoner and AbstractByteOrderedPartitioner.

>>> 
>>> You'll want to create a new TimeUUIDToken extends Token<UUID> and a new
UUIDPartitioner that extends AbstractPartitioner<>
>>> 
>>> Usual disclaimer that ordered partitioners cause problems with load balancing.

>>> 
>>> Hope that helps. 
>>> 
>>> -----------------
>>> Aaron Morton
>>> Freelance Cassandra Consultant
>>> New Zealand
>>> 
>>> @aaronmorton
>>> http://www.thelastpickle.com
>>> 
>>> On 25/03/2013, at 1:12 AM, Carlos Pérez Miguel <cperezmig@gmail.com> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I store in my system rows where the key is a UUID version1, TimeUUID. I would
like to maintain rows ordered by time. I know that in this case, it is recomended to use an
external CF where column names are UUID ordered by time. But in my use case this is not possible,
so I would like to use a custom Partitioner in order to do this. If I use ByteOrderedPartitioner
rows are not correctly ordered because of the way a UUID stores the timestamp. What is needed
in order to implement my own Partitioner?
>>>> 
>>>> Thank you.
>>>> 
>>>> Carlos Pérez Miguel
>>> 
>>> 
>> 
> 


Mime
View raw message