BioPerl でTaxonomy IDだの生物種名だの

BioSampleっていうデータベースができまして、実験サンプルの情報が収載されるようになったわけですが、今までTaxnomy IDで管理されていたのがBioSample IDになってTaxonomy IDが振られなくなったなどと騒いでいるのが世に言うTaxonomy ID問題ってやつだったりします。
そんな中、自分のやっておるDBCLS SRA ( http://sra.dbcls.jp/ ) では、前のバージョンで(って現バージョンにがっちゃんこできていないってやつですが)生物種からの検索機能を強化していまして、イネで調べたらその下のindicajaponicaも出るようにするなどという機能をつけております。
最近、どうもそのデータベースの更新がコケていたようで、それはそれでご迷惑をおかけしとったわけですが、さらによく調べると、この機能が重い重い。全然 反応が返ってこない。いろいろと調べた結果、IDと名前の対応、親子関係を抽出するのに、ローカルのファイルを見ていたところであったことがわかりました。具体的には

my $dbh = Bio::DB::Taxonomy->new( -source => 'flatfile',
-directory => '/tmp/',
-nodesfile => '/share/data/taxonomy/nodes.dmp',
-namesfile => '/share/data/taxonomy/names.dmp');

これをやると、nodes.dmp と names.dmp から/tmpにインデックスファイルを作成して、それをみてうねうねする、というような仕様のようで、で、処理の度にインデックスファイルを作成→終わったら消すをやっていた模様。どうせなら、そのインデックスファイルをそのままにしておいて、そこ指定するとひっぱってこれる、というような仕様にするとかすればよいのに。
ちなみに、こうやって読み込んだ後の処理の例として

$taxon_in_obj = $dbh->get_taxon(-name => $taxon_in);
if ($taxon_in_obj ne "") {
$taxon_id = $taxon_in_obj->id;
}

生物種名を入れて、Taxonomy IDを出すあたりがこれです(本当はもっと短く書ける)。
で、つどつどインデックスファイル作って消して、が時間がかかるようなので、つどつどNCBIに訊くに変更。

my $dbh = Bio::DB::Taxonomy->new( -source => 'entrez');

それだけで、読み込んだ後の処理の部分はまったくいじらずで大丈夫。
これで数十秒(場合によっては分単位)かかっていたのが、数秒で結果で返ってくるようになりましたとさ。