I need to perform an insert to Cassandra table without creating tombstones for any column. I am using a query similar to this :
insert into my_table(col1,col2,col3
Assuming you are using prepared statements you can use the "unset" functionality that was introduced in Cassandra 2.2.0, which lets you use leave prepared statement variables without values and without creating tombstones on the server. It is supported in the Java driver 3.0.0 and other drivers.
Don't include col3
in your insert and it just wont set anything.
insert into my_table(col1,col2) values(val1,val2)
If curious about structure on disk, do a nodetool flush
and run sstabledump on the sstable created to see difference.
If you insert null values, Cassandra will create tombstones. If you know that col3 will be null, don't use it in your query.
insert into my_table(col1,col2) values(val1,val2)
I would suggest two really good articles on the subject