For the first one, it's because the Cassandra is Eventually
Consistency, so, when you try to delete a row from a single node, it
just marked it as deleted, and populate this information to all other
nodes if necessary.
That's why the database size does not change at all, and why the query
will return the deleted column with null values.
For the second one, it's because you only delete the details in the
data folder, but actually what Cassandra does is: all updating, will
first be written into the commit log (in commitlog folder), and return
to the client. And commit log will be updated to data file
periodically, or the Cassandra restarted.
In your scenario, when you delete the data file only, and restart
Cassandra, the information in the commit log will be flushed to the
data file, that why you saw the data file created again. And second
time you delete, and restart, since there are no un-flushed commit
log, then nothing created.
Dop