生成され削除されたsqliteログファイルの正確な合計数を計算する方法は?

生成され削除されたsqliteログファイルの正確な合計数を計算する方法は?

私はこの問題を解決しようとしています。シーンはこんな感じです。

sqliteバックエンドを持つスレッドTCPソケットデーモンは、各IMEI IDの一意のsqlite2ファイルに一日一意のサブディレクトリに情報を格納します(pseudo: 2012/11/01/event_$imei.sqlite)。一日に3,000人ほどあります。ご存知のように、着信データを受け取って保存する過程で、sqliteログファイルが作成され削除されるステップがあります。

このアプリケーションは今日または昨日のディレクトリにのみ記録し(小規模)、データフィードには最大255秒かかることがあります。したがって、UTC時間00:00にステップが終了します。接続中に何度も書き込みが発生する可能性があり、ネットワークリンクは開いたままになり、接続が開いている間に資産は新しいデータをさらに転送できます。明示的なロックはまったくありません。 sqliteはそれを独自に処理し、各IMEI接続は一意であるため、同じファイルに2つのスレッドは作成されません。つまり、制御デーモンはsqliteが何をしているのかわからず、気にしません。

もちろん、特定の時点で生成されたsqliteログファイルの数を合計2つとして計算したいと思います。本質的に彼らは似ていましたが、実際には決して同じではなく、とにかく短時間しか生きていませんでした。モニタリングシステムは通常、現在のファイル数を経時的なスナップショットとして計算します。これは私が探している指標ではありません。

それでは、最小のロードスペースでどのようにしてこの計算を正確に実行できますか?何かトリックがあるのは明らかです。結局は*nixです。ここのシステムはUbuntuサーバーですが、一般的なソリューションを少し好みます(ただしこれに限定されません)。ただし、時間が経つにつれて新しいディレクトリが作成され、それに従うことができなければならず、ディレクトリが揮発性であることを望んでいます(したがって再起動するとリセットできます)。

どんな方向にもご案内いただきありがとうございます。

ベストアンサー1

inotifyこの種の計算を実行するには良い候補になることができますが、このアプローチは理想的ではなく、競合状態が発生しやすいです。最後に、私はこのアプローチを使用してトランザクション数を計算しようとしているので、そうする方が良いことに同意します。これはアプリケーション自体にあり、カウントを維持します。

おすすめ記事