Question

Can we have a composite values in each columns in Cassandra Column Family?

user-id   column1-name
123      (Column1-Value  Column1-SchemaName  Column1-LastModifiedDate)

userId is the rowKey here. And same thing will be for other columns as well.

Each column value will contain below three things always-

ByteType for Column-Value

UTF8Type for Column-SchemaName

DateType for LastModifiedDate

If yes, can anyone help me in designing the column family for this? I will be using Astyanax client to insert into above column family.

Was it helpful?

Solution 2

I don't think, it is at all possible in Cassandra. Either you have to de-normalized your Column Family or look after Cassandra Collection support. If you can restrict your data models data type for Value, SchemaName, LastModifiedDate to a single type, then probably Map will be helpful in your case.

OTHER TIPS

There are two ways to go:

  1. Use CompositeType for your columns. In this case there will be 4 component composite column name and empty column value.
  2. Use astyanax custom serializer. In this case column name will remain the same. Custom serializer will convert from bytebuffer to your custom object and back.

You seem to be trying create a so called "super column", which has been highly "unrecommended" in Cassandra lately (Why are super columns in Cassandra no longer favoured?). So, I would say you should try to rethink your design, and if you really need to have all those values in one column you could do a marshaling/unmarshaling yourself from the application, alternatively you can also think about using "composite keys", if that helps you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top