Insert and update operations are identical. As inserts/updates come in, Cassandra does not overwrite the rows in place, but instead groups inserts/updates in the memtable.
Any number of columns may be inserted/updated at the same time. When inserting or updating columns in a table, the client application identifies which column records to change.
Inserting a duplicate primary key is treated as an upsert. Eventually, the updates are streamed to disk using sequential I/O and stored in a new SSTable.
Columns are overwritten only if the timestamp in the new version of the column is more recent than the existing column, so precise timestamps are necessary if updates (overwrites) are frequent. The timestamp is provided by the client, so the clocks of all client machines should be synchronized using NTP (network time protocol), for example.