[groonga-dev,02770] Re: Heroku用Groongaの形態素解析対応について

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 9月 13日 (土) 12:33:21 JST


須藤です。

In <CAH9Y0y4+TG7qtGNmMiB2ZJG_=wCzrU****@mail*****>
  "[groonga-dev,02768] Heroku用Groongaの形態素解析対応について" on Sat, 13 Sep 2014 08:51:34 +0900,
  杉本涼 <sugry****@gmail*****> wrote:

> 須藤さんが、前にMeCabに対応したいと言っていたので対応したいと思いました。

ありがとうございます!

> 僕は、KyTeaとMeCabのどちらにも対応させたいのですがどう思いますか?

はい、よいと思います!


ただ、1つ注意する点があります。それはビルド後のデータのサイ
ズです。形態素解析器は辞書が必要なんですが、一般的にそれらは
大きめのサイズになります。

Herokuでは各アプリケーションのインスタンスが使えるサイズに制
限があるようです。このサイズにはビルド後のデータサイズ
(KyTeaやMeCabを含む)も含まれます。

Heroku用のGroongaはローカルにデータを保存する作りなので、ビ
ルドのデータサイズが増えると、その分、ローカルに保存できるデー
タのサイズも小さくなると思います。
(ちゃんと計算すると「そんなの気にしなくてよい」となるかもし
れません。)

あ、 http://www.clear-code.com/blog/2014/5/28.html にちょっ
と検討してみたのが残っていました。

> slugの最大サイズは300MB
>
> データ量はどうして多くないのか説明します。
>
> それは、dynoが使えるローカルストレージのサイズにそんなに大
> きくない上限があるだろうからです。実際に上限がいくつかはわ
> かりませんが、1GB強くらいでしょう。
>
> 予想してみましょう。
>
> slugの最大サイズは300MBです。slugはgzで圧縮されています。
> Rubyのビルドパックでできるファイルがだいたい100MBで、それ
> をtar.gzにすると25MBくらいです。そのため、ここでは1/4くら
> いに圧縮できると考えます。dynoではslugを展開して利用します。
> 1/4に圧縮されているとすると、展開後は1.2GBになります。その
> ため、1GB強くらいが上限になっていると考えられます。
>
> しかし、展開後で1.2GBになるdynoは想定外でしょうから、実際
> に使えるのはもっと少ないと考えるべきです。半分の500MBくら
> いとしましょう。そのうち、Ruby関連のファイルで100MBくらい
> 使います。残りは400MBです。Groongaのデータベースはインデッ
> クスの張り方にもよりますが、少なくとも検索対象のデータ(入
> 力データ)の3倍以上の大きさになります。実際にはいくつかイ
> ンデックスを張るでしょうから、4倍以上などもっとサイズが増
> えます。よって、入力データは多くても100MBより少なくしなけ
> ればいけません。
>
> つまり、それほど大きなデータを扱うことはできないということ
> です。そのため、Groongaのデータベースの作成にかかる時間も
> 短くなり、dynoを起動する毎にGroongaのデータベースを作るこ
> とも現実的になります。


KyTeaやMeCabを使いたい人はビルドのサイズが増えるのはしょうが
ないのですが、使わない人はKyTeaやMeCabのせいでサイズが減るの
はかわいそうだなぁと思います。


対策として、

  heroku config:set GROONGA_KYTEA_ENABLE=no

とか

  heroku config:set GROONGA_MECAB_ENABLE=no

とかしたらheroku-buildpack-groonga:bin/compileでKyTeaやMeCab
関連のファイルをrmするといいんじゃないかなぁと思いました。
(ビルドするときは常にKyTeaやMeCab関連のものもビルドして
GitHubにアップロードしておいて、展開するときに削除する。)


と、まぁ、考えてみたんですが、最初はそこまで頑張らなくてもよ
くて、おいおい対応していくのでもいいかなぁという気もしていま
す。とりあえず、KyTeaやMeCab入りにするとサイズがどのくらい増
えるのかを見てからですかねぇ。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
  http://www.clear-code.com/services/code-reader/




groonga-dev メーリングリストの案内
Back to archive index