DBがパンク寸前になっちゃった!やばいですーーーー!!!

上原半兵衛道場のDB容量が
『大ピンチ』
な状況になってます。 (゚д゚lll)

<現在のDB容量>
20080612_01.jpg

アンタのDB使用量:93.88MB
アンタの残りDB容量:6.23MB



ぎゃーーーーーーーー!!!!



あと1画面分くらいのインデックスを作成したら、DBがパンクするーーーーっ!!



ヤバイヤバイヤバイです!
緊急警報発令ぃぃぃぃっ!!!ヽ(`Д´)ノ


いずれはこうなるだろうとはある程度予測はしておりました。
でもこんなにも早くその時が訪れようとは・・・
その主な原因はコイツ。


<肥えに肥えまくったテーブル>
20080612_02.jpg


このテーブルは、検索の際のインデックスを保存しています。
現在、38画面分のデータが保存されているのですが、驚くべきはその行数!!!
『718224行』

なんじゃそりゃーーー!!!
(自分で作ったクセに驚いてます(汗))


検索システムのインデックス作成あれこれ [2007/03/04] 」において詳しく説明しておりますが、インデックス作成の際に用いている「Nグラム方式」というのが、やたらと容量を必要としてしまうのです。




簡単な例で説明いたします。
現状、インデックスは「8文字まで」という事を指定しています。
「本日は晴天なり」
という文字からインデックスを作成する場合、以下のようになります。









本日(1)
日は
は晴
晴天(2)
天な
なり
本日は
日は晴
は晴天
...
...
本日は晴天な
日は晴天なり
本日は晴天なり

という形で、最大8文字(7文字までしかないけど)までのインデックスを作成しているわけです。
たしかにこの方法だと、検索の際にもれがなくなります。
「本日」「晴天」などの文字で検索すれば、(1)(2)が一致するわけです。

しかし・・・ものすごくゴミデータが大きくなっちゃってます。
[本]・[日]・[は]・・・という各1文字ずつのデータなどは、まず不要なはず。
[日は]・・・なんていう単語で検索することもまず無いでしょう。

しかも、文字数が増えるにしたがって、無駄な容量も大きくなっちゃっているのが痛い。
[本日は晴天な][日は晴天なり]・・・なんていうデータは、6文字ものデータを使用しちゃっているにもかかわらず、ほぼ無意味!!!

本来であれば、この
「本日は晴天なり」
という文字を検索するのに必要なデータは
「本日」「晴天」「本日は晴天なり」
程度で十分なはずなのです。
しかしNグラム方式では、そんな事まで考慮してくれません。(つД`)


こういった問題が、膨大な数で存在しているわけで・・・。
そりゃあ、ゴミデータの容量も増えるよなぁ~と思った次第。
わかっていたことなのですが、問題を先送りにしていたツケがやってまいりました、トホホ・・・。



既存の著名な検索エンジンであれば、たいてい辞書をもっていて、
「本日」「晴天」
などといった語句を辞書と照らし合わせることで、無駄なインデックス作成を省いています
しかし、小規模な検索システムでは、こんな辞書を作ることなんて不可能です!!



インデックスを減らすアイデアは浮かんでおります。
(試験的にやってみたところ、1/10くらいになりました!)
しかしその方法をとった場合、著しく検索時間が遅くなってしまうというデメリットも発生してしまい・・・
『容量をとるか?検索時間をとるか?』
という二者択一を求められる状況に・・・(つД`)

いっその事、フリーの検索システムでも使えば楽な問題なのですが、せっかく作った検索システムを使いたいという気持ちもあるだけに、迷うところです。

検索速度のUPが見込めるか?
もうちょっと検索ロジックを洗いなおしてみます。



スポンサーサイト

Comment

[1860]

ひゃぁ、そんなに情報量が多いんですね。

DBとは違いましょうが、ヘナチョコ(私)が管理する
団体サイトの検索インデックスは、
CGIプログラムをひっくるめて1.3MBほどでございます。
年間1500円で300MBのレンタルサーバーですから
余裕余裕・・・(笑)。
(そのかわり、PHPやMySQLを使うには
 年間5000円の1GBプランになりますがね)

[1862]

■ 瑞閏殿
718224 / 38 = 18900 ということで、約1画面情報に18900ものインデックスを作っちゃっているわけです。
そして、その9割近くがゴミデータとくれば、いかに無駄が大きいかがお分かりになるかと思います。
われながら、なんつーモノを作ってしまったんだ・・・。


私の検索システムよりも、WEB上で配布されているCGIプログラムなどを使ったほうが、速度的にも機能的にも十分上だと思いますよ。
1.3MBにインデックスがまとまるのか・・・う、うらやましい。(;つД`)
無理して自作する必要はぜんぜんないわけで、利便性を考えるなら、そっちのほうがいいです。
私の場合、自分で検索システム作ってみたらおもしろそうかなぁ~っていう理由だけでやっちゃったことなので・・・(--;

コメントの投稿


管理者にだけ表示を許可する

Trackback

http://takenosuke.blog32.fc2.com/tb.php/820-3d0e503c

«  | HOME |  »

プロフィール

武之介(たけのすけ)

Author:武之介(たけのすけ)
悪ノリ大好き!でも小心者ナンデス。
そんな武之介の内なる声を余すところなく書き殴ったブログ!
表の仮面(笑)でもある、「上原半兵衛道場」もヨロシク!!
メールはこちら


follow takenosukenagao at http://twitter.com


カテゴリー


最近の記事


最近のコメント


最近のトラックバック


月別アーカイブ


ブロとも申請フォーム

この人とブロともになる


ブログ内検索


RSSフィード


リンク

このブログをリンクに追加する