センサーからデータを収集する簡単なPythonプログラムがあります。その後、プログラムはREST POST要求を介してシステムタイムスタンプと共にデータをリモートサーバーに送信します。
POST要求が失敗すると、データはタイムスタンプとともにCSVファイルに保存されます。インターネット接続が再び可能になると、CSVファイルのデータがリモートサーバーに転送されます。
リモートサーバーには、収集されたデータに基づいてチャートを生成する単純なPHPアプリケーションがあります。
私の質問:Unixタイムスタンプは増分的でユニークですか?収集されたデータの順序を表示するには、タイムスタンプを昇順に並べ替えるのは安全ですか?
答え1
タイムスタンプの増分は保証されません。システム時間を取得する一般的な方法は次のとおりです。gettimeofday
これはまったく保証されません。
実際には、gettimeofday
システム管理者や構成エラーによってシステムクロックが変わらない限り、これは単調です。gettimeofday
最大マイクロ秒の解像度。呼び出し間に1μs以上があると値が更新されるという保証はありませんが、gettimeofday
呼び出し間の間隔が長くなるほど値が変わる可能性が高くなります。
一部のシステムは、呼び出して読み取る鍛造時計をサポートしています。clock_gettime
時計IDを含むCLOCK_MONOTONIC
。 Pythonは、次のようにこの時間にアクセスできます。time.CLOCK_MONOTONIC
バージョン3.3から始まります。クロックは再起動の間だけ単調であり、両方の属性が発生する可能性が高い場合でも、連続した呼び出しが異なる値を返すという保証はありません。
一部のフィールドが増分であることを絶対に保証するには、別のフィールドにカウンタを保持します。