2011年11月28日月曜日

大量のファイルを複数のディレクトリに分散して格納する方法

最近はハードディスクもテラバイトクラスの容量なので、大量のファイルを作ることができる。

以前、linux上でPHPを使いウェブサイトのプログラムを書いた。
それは、使っているとファイルがどんどん増えてくるシステムだ。
linuxの場合、ひとつのディレクトリに作れるファイルは最大3万とか、そういう値だったと思う。
いずれにしてもひとつのディレクトリに何万もファイルがあれば、いい加減多すぎるし、何かの時に問題が起こりかねない。
そこで、増えてくるファイルを複数のディレクトリに分散する形をとることを思いつく。

最初はディレクトリ「00001」にファイルを入れていく。1万個まで達したら、次は「00002」というディレクトリを作ってそちらに入れる。というような手法だ。
これでは、ディレクトリにいくつファイルが入っているか、どこまでディレクトリを作ったか等の管理が必要になる。例えばそのカウンターをデータベースに記録しておくといったようにだ。その場合、ウェブシステムなら連番管理の排他制御も考えなければならないかもしれない。

少し面倒なので別の方法を考えた
まず年でディレクトリを作り、その下に月日でディレクトリを作る。実際のファイルはその月日ディレクトリの下に入れる。一日に数千個程度までのファイル数であれば、これで対処できる。まだ無理なら時刻でサブディレクトリを作っても良い。
ファイル名は時刻やuniqid()を使う。

しかしながら、このことは今のシステムを作ってから思いついた。
よく考えず、別の方法で作ってしまったのだ。
たぶん大丈夫だと思うが、自分の納得のいかない状態になっているのが、ちょっと気分が悪い。

無駄な会議にはノートパソコンがあると便利

仕事によっては無駄な会議に出なければならないことがある。
今日の私の定例の会議もまた、部署の長となる立場の人間が奥の席に座り、それを取り囲むように数十人が席に座るという、よくある日本の会議の風景となった。
数ページにわたる細かく書かれたドキュメントが配られて、関係あるのかないのか分からないようなことを、ひとつひとつ進めていく。

何枚にもなるような資料なんか、どうせ参加者の頭に入るわけがない。
資料を作るとしたら1枚がちょうど良い。要点を3項目程度にまとめ。それに箇条書きででも説明をつければ程良い形になる。
細かい数字もいらない。「売上は、1,400,000千円の目標に対して、実績は1,103,897千円。296,103千円不足している。」等とするより、「売上は、14億円の目標に対して、実績は約11億円。3億ほど足りない。」とでもした方がピンとくる。

会議に出席する側の気持ちになって考えてみよう。
何枚もの資料を目の前に出された時など、ため息が出るだけだ。
退屈な会議など眠たいだけで、何も残らず、全員にとって無駄な時間にしかならない。
翌日、内容を聞いてもほとんど覚えてなんかいない。

しかし、人の愚かなのは、人のふり見て・・・ということもあるので、まあ参考にすればよい。
そういうくだらない建て前や、セレモニーの中に付き合わされるときなどは、ノートパソコンがあると便利だ。
パソコンを使っていても会議に耳は傾けておけるので、あまり問題はない。
キーボードのタイプ音に注意はいるが、効率的な時間を過ごせるし、暇つぶしにもなる。