cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Lebresne <sylv...@datastax.com>
Subject Re: Storing values of mixed types in a list
Date Wed, 25 Jun 2014 07:47:37 GMT
On Wed, Jun 25, 2014 at 8:49 AM, Tuukka Mustonen <tuukka.mustonen@gmail.com>
wrote:

> Unfortunately, I need to query per list items. That's why I'm running
> Cassandra 2.1rc1 (offers secondary indexes for collections).
>

Using a list of blobs does not in any way prevent you from doing that.
Types are constraints on what values C* will accept and using blob is
simply asking C* to not reject any value. Doing so does not in any way
limit the kind of queries you can do.

The small downside of using blobs is that you'll have to
serialize/deserialize your value manually client-side, but that's not a
huge deal either. That said, if you really only have 3 types of values to
store and if you don't particularly care about the order of items in the
collection (i.e. if you said you want a list but could really do with a
set), then storing 3 different sets can be a viable solution too (as in,
there is no strong downside to doing it as far as C* is concerned and it
may be simpler to deal with client side (or not, it depends a bit on what
your client side code does exactly)).


>
> As I understood it, also Cassandra supports dynamic schemas, but only
> through Thrift protocol.
>

"dynamic schemas" is a terribly imprecise term that means different things
to different people, but in general that statement is incorrect: you can do
the same things with CQL and with Thrift.


> Also, I don't think it changes the fact that collections need to be
> strongly-typed in Cassandra, no matter what protocol is used?
>

Well, yes since you do have to provide a type for the elements in the
collection, but as said previously that does not in any way prevent you for
having "collections of anything" since you can use a blob type.

--
Sylvain


>
> Tuukka
>
>
>
> On Tue, Jun 24, 2014 at 9:41 PM, DuyHai Doan <doanduyhai@gmail.com> wrote:
>
>> "Jeremy, with blob field (ByteBuffer), I can query exact matches (just
>> encode the value in query), but greater/less than queries would not work.
>> Any sort of serialization kills "native" ways to query data" --> Not
>> necessarily. You still use "normal" types (uuid, string, timestamp,...) for
>> clustering columns and use them for querying. For the cells where you store
>> values, use blob type.
>>
>>
>>
>>
>> On Tue, Jun 24, 2014 at 8:21 PM, Tuukka Mustonen <
>> tuukka.mustonen@gmail.com> wrote:
>>
>>> What if I need to query by list items?
>>>
>>> 1. Jeremy, with blob field (ByteBuffer), I can query exact matches (just
>>> encode the value in query), but greater/less than queries would not work.
>>> Any sort of serialization kills "native" ways to query data
>>> 2. Even with user defined types, I would need to define separate fields
>>> for each value. Running queries would be cumbersome (something like WHERE
>>> items CONTAINS {'text_value': 'foobar'} or WHERE items CONTAINS
>>> {'int_value': 3}. Pavel, did you mean like this?
>>>
>>> I'm running 2.1rc1 with python driver 2.0.2.
>>>
>>> Tuukka
>>>
>>>
>>> On Tue, Jun 24, 2014 at 4:39 PM, Pavel Kogan <pavel.kogan@cortica.com>
>>> wrote:
>>>
>>>> 1) You can use list of strings which are serialized JSONs, or use
>>>> ByteBuffer with your own serialization as Jeremy suggested.
>>>> 2) Use Cassandra 2.1 (not officially released yet) were there is new
>>>> feature of user defined types.
>>>>
>>>> Pavel
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Jun 24, 2014 at 9:18 AM, Jeremy Jongsma <jeremy@barchart.com>
>>>> wrote:
>>>>
>>>>> Use a ByteBuffer value type with your own serialization (we use
>>>>> protobuf for complex value structures)
>>>>>  On Jun 24, 2014 5:30 AM, "Tuukka Mustonen" <tuukka.mustonen@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I need to store a list of mixed types in Cassandra. The list may
>>>>>> contain numbers, strings and booleans. So I would need something
like
>>>>>> list<?>.
>>>>>>
>>>>>> Is this possible in Cassandra and if not, what workaround would you
>>>>>> suggest for storing a list of mixed type items? I sketched a few
(using a
>>>>>> list per type, using list of user types in Cassandra 2.1, etc.),
but I get
>>>>>> a bad feeling about each.
>>>>>>
>>>>>> Couldn't find an "exact" answer to this through searches...
>>>>>> Regards,
>>>>>> Tuukka
>>>>>>
>>>>>> P.S. I first asked this at SO before realizing the traffic there
is
>>>>>> very low:
>>>>>> http://stackoverflow.com/questions/24380158/storing-a-list-of-mixed-types-in-cassandra
>>>>>>
>>>>>>
>>>>
>>>
>>
>

Mime
View raw message