Jonathan Ellis suggested that I bring this issue to the dev mailing list:

Cassandra should recommended a default timestamp across all clients
libraries.

Many users on IRC are having difficulty when using different clients because
different clients are using different timestamps.  If you insert with one
client, you may not be able to modify the key later with another.  The
Cassandra website doesn't seem to mention timestamps much, so users get
confused when operations fail on certain clients.

Here's what different clients are using:

1. Cassandra CLI: Milliseconds since UTC epoch.
2. lazyboy: Seconds since UTC epoch.  It used to be seconds since local time
epoch.  Now it's changing again to microseconds since UTC epoch.
3. driftx's client: Milliseconds since UTC epoch.
4. The example app, Twissandra: Microseconds since UTC epoch.
5. pycassa: Microseconds since UTC epoch.  It used to be seconds since local
time epoch.
6. The most popular Cassandra Ruby client: Microseconds since UTC epoch.

Here's why the default recommended timestamp should be microseconds since
UTC epoch:

1. It allows backwards-compatibility.  Some people are already using
microseconds, so if it suddenly switched to milliseconds, all the timestamps
would be smaller, and they'd be unable to insert or remove existing columns.
 Microsecond timestamps would always be greater than millisecond timestamps,
so new operations would work.
2. There exist reasons people would want to use microseconds over
milliseconds (finer granularity), but I don't think there are any reasons
one would prefer milliseconds over microseconds.

3 (just for me). I just changed pycassa to microseconds, and I'd hate to
change it again :(


Jonathan Hseu

Reply via email to