[Glang-devel] 1.7.3 released

Back to archive index

Kazuharu Arakawa gaou****@sfc*****
2007年 9月 8日 (土) 08:49:21 JST


g.

1.7.3リリースしました。多分結構不安定です。

BluebirdとOrochiを統合して、G::DB::BDB, G::DB::BDBIという名前の
クラスを実装しました。BluebirdとOrochiの実装はとりあえず一段落、
という感じです。Bluebirdに関して詳しくは以下をご覧ください。
http://www.g-language.org/data/www.g-language.org/moin/moin.cgi/Bluebird_a4_c8_a4_cf
感覚的には、オブジェクト指向を敢えて使っていないActiveRecordパターン、
あるいはO/Rマッパーのようなもの、だと考えてもらっていいと思います。

アーキテクチャの変更としては、SQLiteをバックエンドに使うように
なっています。


データベースのインストール、設定、などなど、面倒な作業は
一切不要です。db_saveとdb_loadがほぼsdb_save, sdb_loadと
同じように動くと思ってもらっていいです。

例えば、
$gb = new G("ecoli");
db_save($gb, "ecoli");
$gb = db_load("ecoli");

これだけで、二回目に読み込まれた$gbはBluebird型になっています。
全ての$gbの中でのメモリアクセスは、実メモリではなくデータベースに
向きます。

実メモリに取り込むには、
$gb = db_load("ecoli", "clone");
とします。

無限に深い多次元ハッシュを格納できます。もちろん、Gの構造体で
ある必要は全くなく、むしろそうでない方が適しているはずです。

また、外部のデータベース、例えばEnsemblなんかも、普通に
メモリで扱うのと同じように、構造体で扱えます。ダウンロードは
せずに、あくまで構造体のポインタが外部データベースに飛ぶ
構造になっています。

例えば:
  $db = db_load("gene",  -driver=>"mysql", -database=>"mus_musculus_core_46_36g", 
                      -host=>"ensembldb.ensembl.org", -port=>3306, -primarykey=>"gene_id");
  say $db->{239967}->{status};

ある程度はキャッシングをしているので、今の段階でもそれなりに
高速です。(保存は時間がかかります)

基本的にこれからパフォーマンス向上やインタフェース改良しますので、
まだ仕様が変わる可能性があります。なので、ドキュメントはその辺が
確定次第追加します。




Changelogは以下の通り。

===== v.1.7.3    2007.09.08 =====

       *p, say, puts are moved to G::Messenger (from G::Shell::Log) and are exported by default.
       *fixed line-break bug for $gb->output() (in G::IO::GenBankO) introduced by the 1.7.2 update.
       *made $gb->cds() depend on $gb->feature()
       *G::DB::BDB (codename: Bluebird and Orochi) implemented. Something like following works now:)

  $db = db_load("gene",  -driver=>"mysql", -database=>"mus_musculus_core_46_36g", 
                      -host=>"ensembldb.ensembl.org", -port=>3306, -primarykey=>"gene_id");
  say $db->{239967}->{status};
       
exported methods are:

                 db_dbi
                 db_exists
                 db_path
                 db_set_path
                 db_save
                 db_load
 
most work just like sdb in G::DB::SDB.

      *G::DB::GDBI, G::DB::GDBAPI (previous versions of Orochi) are removed.




Glang-devel メーリングリストの案内
Back to archive index