« 提案書を読む側になって思った、捨てられない提案書の書き方 | Main | arduinoとfioのピン変換シールドを作ってみた »

2010.08.07

100万件のリストから10人の要注意人物を見つけるのにgrepを使うかdiffを使うか

ちょっと素人丸出しのネタを。というか、誰か教えてモードです。

100万件のデータ(A)に、特定の10件(B)が含まれているかを確認するというシチュエーションがあったとします。

アクセスログから要注意人物のアドレスの有無を見るとか、顧客リストから要注意人物が入会・退会したかを見るとか、特にデータ属性は限定しませんが、

  • 運用中のDBにSQLで叩くのではなく、CSVなどで出力されたものを扱う
  • AとBは都合よく同じ形式で、しかもソートされているとする。
  • 突発的な調査なので、最適化された専用ツールを使う、という回答もナシ。基本的に、あるものを使う

といったぐらいの縛りはしておきます。

そうすると、僕の場合はgrepを10回実行するかな、と。

では、Bが10件ではなく、1万件だったら?100万件だったら?

Chart1

上の色使いのセンスの悪いマトリクスは、僕だったら何を使うかなぁ、とまとめてみたもの。

③の100万件と100万件のdiffって、時間がかかるかなと思ったが、ほんの数秒です。diffにかけやすいよう、元データを整形する必要があるかもしれませんが、アルゴリズムも最適化されているだろうから、ほかの選択肢より速度面でも優れていると思います。

②は、ちょっと迷うところ。100行だったら、grepコマンドを100行分作ってもいいかもしれないが、1万行だったら、コマンドの呼び出しのオーバーヘッドがかかり、時間的にも損をしている感じがする。でも、Diffをかけて「100万行のうち99万行が一致しませんでした」と言われるのも、ちょっと芸がない。

それ、●●でできるよ、というのがあれば、誰か教えてください。

【追記】

このあたりをウォッチしてます。

http://bit.ly/cq7N5U+

http://b.hatena.ne.jp/entry/goodsite.cocolog-nifty.com/uessay/2010/08/grep_diff_excel.html

|

« 提案書を読む側になって思った、捨てられない提案書の書き方 | Main | arduinoとfioのピン変換シールドを作ってみた »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference 100万件のリストから10人の要注意人物を見つけるのにgrepを使うかdiffを使うか:

« 提案書を読む側になって思った、捨てられない提案書の書き方 | Main | arduinoとfioのピン変換シールドを作ってみた »