0
votes

Below is the data which I need to represent in my Cassandra Column Family.

rowKey           e1_name                    e1_schemaname                   e1_last_modified_date
123             (ByteArray value)           abc (some string)               some_date

userId is the rowKey here. And e1_name, e1_schemaname and e1_last_modified_date are the columns specifically for e1. All those three columns contain value specifically for e1 column. In the same way, I will be having for another columns such as below.

 e2_name                    e2_schemaname                   e2_last_modified_date
(ByteArray value)           abc (some string)               some_date

 e3_name                    e3_schemaname                   e3_last_modified_date
(ByteArray value)           abc (some string)               some_date

Now I am thinking, how should I go ahead and create a Dynamic Column Family for my above use case. The problem that I am facing is, each colums will have its own datatype. For e1, I will be having e1_name which is ByteArray, e1_schemaname which will be UTF8, e1_last_modified_date which is DateType. And same for e2 series and e3 series as well.

This is what I have but I don't think so this will work.

create column family USER_DATA
with key_validation_class = 'UTF8Type'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type'
and gc_grace = 86400

Can anyone help me in designing the column family for the above use case?

1
Why not model your schema with CQL3? - Piotr Kołaczkowski
Because we are using Column Family in some other keysapce and we have DAO code ready for that and its running in production.. So we don't need to experiment on CQL3 for now... - arsenal
Are you using Hector-client? - Jignesh Dhua
@Jignesh:No.. I am using Astyanax client.. - arsenal

1 Answers

0
votes

You can use "BytesType".

You can easily convert "BytesType" to/from your desired data type using AbstractSerializer.toByteBuffer() and AbstractSerializer.fromByteBuffer()