読者です 読者をやめる 読者になる 読者になる

PythonとCassandraのtimestampの違い

PythonとCassandraでtimestampの扱いが違うので注意する。

Python
UTCにおけるエポックからの秒(浮動小数点)
Cassandra
UTCにおけるエポックからマイクロ秒(i64)

なので、PythonからCassandraに渡すtimestampは1e6(1,000,000)をかける。

誤っていたので修正。システムで統一されてればタイムスタンプに設定する値は別に何でもよい。

タイムスタンプは何でもいいのですが、便宜上マイクロ秒記載としておいてください。どのように使っても良いですが、アプリケーション間では一貫している必要があります。そうでない場合、新らしい書き込みで上書きされてしまう可能性があります。

DataModel_JP - Cassandra Wiki

もしマイクロ秒として保存するなら以下のような値を設定する。

import time
timestamp = time.time() * 1e6

なお、Cassandraではtimestampによってカラムに対してのオプティミステックロックがかかる。