金高真悟の奇天烈(キテレツ)大百科

日々徒然なるままに

株式会社ニコシスの新入社員が毎日のあれやこれやを語ります。

簡単だと思ったら、全然簡単じゃなかった。。。(´-ω-`;)ゞポリポリ

テキスト処理をどうするか悩む(´-ω-`;)ゞポリポリ

こんばんは。
キテレツです。

今日は、一日打ち合せと設計と・・・・悩むポイントがいっぱいの一日でした。
あ・・・悩むのはいつもかw

ログを解析して!!

という要望です。
ログは、システムが発行したデータベースに対するSQLが記載されています。

目的は

ログを解析して、特定のタイミングでどのユーザーがどんな処理をしたのか明確にする!

です。
問題が発生した時に、どのユーザーのどの処理が問題を起こしたのかを突き止めたいんですね。

それをGUIでやりたいのです(*´∀`)ノ

と希望されています。

キテレツの頭の中に思い描かれたのは、Apacheログ解析でよくある

  1. SEDでログファイルから余計な文字を削除
  2. GREP正規表現で絞り込み
  3. AWKで整理整頓集計してプロンプトにデータ表示

な流れだったのですが、GUIで表示させて欲しい。

いや、日本語がへんですね。
GUIで表示ではなく、GUIを使って絞り込むための条件を設定し、データグリッドで抽出結果を画面に表示して欲しいということです。

どんなふうに表示したいのか?何のデータが欲しいのか??

という問いかけをしたところ、

時間とユーザーと処理が記載されていればいいですよ!(*´∀`)ノ

と答えてもらったものの・・・・SQLを解析して処理を求めることができるのか???なポイントで悩みます。
SQLを解析すれば、どのテーブルに対して、どんなSQLを投げているのかがわかるので、なんとなくの処理を想像できるとは思いますが、明確に「この画面のこの処理を行っています!!」というのは・・・・なかなかに難しそうです。

処理に対するデータベース操作表

とでも言いましょうか、とにかく、処理に対するSQLの流れの一覧が欲しいですね。
発行されるSQLの順番を解析し、解析結果と表を照らしあわせて、何の処理をしていたかを突き止めなければわからない気がしてきました。

しかし、SQLの流れなんて、仕様が変わったり対応が変わったりすると簡単に変更になるし、それを解析する部分をそのタイミングでいちいち変更しなけれあならなくなるし、、、、それでは効率が悪い。

ツールを使うのは客先のシステム担当の人

なので、ある程度はシステムの内部のことを理解している人たちのはず。
その前提条件があるなら、SQLの流れを画面上に出してあげれば、処理の想像がつくかな!?と思ってみたり。

他にも、、、文字解析部分をどうする?(゚Д゚;)

というのも悩みの種です、利用するサーバーには、SEDGREPAWKもありません。
その代わりになる別のプログラムを作らなければなりません。

プログラミング言語のライブラリにある正規表現文字列操作命令では貧弱ですし、ロジックを組まなければテキストを解析できません。
ライブラリを使うなら、テキストと正規表現文字列を渡すだけで抽出してくれるような物を使いたいですが、そんな都合の良いものはありません。

どうするか???

標準のコンソールアプリには代わりになるものがありそう。。

少し調べると、代わりになるものがありそうです。
なので、GUIから代わりになりそうなコンソールアプリを叩いて結果を取り込むか?

もっと色々考えなければならないような気がするので、色んな方法を試行錯誤しなければ。
あぁ、、、まいった。

全然まとまりません。。。(゚Д゚;)

プログラミング言語でゴリゴリ条件つけながらテキスト解析処理を書けなくもないですが、仕様変更への対応や汎用性を考えると、あまりゴリゴリと処理を書いて現状の王道をクリアするだけでは不十分。

目的を達成させつつも、汎用性を持たせて、ある程度の対応にも応えられる作りにしたい。。。。。

ん〜・・・・Let's 試行錯誤。