• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Chiba pm#1 - ArangoDB for Perl
 

Chiba pm#1 - ArangoDB for Perl

on

  • 1,202 views

 

Statistics

Views

Total Views
1,202
Views on SlideShare
713
Embed Views
489

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 489

http://d.hatena.ne.jp 485
https://twitter.com 3
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Chiba pm#1 - ArangoDB for Perl Chiba pm#1 - ArangoDB for Perl Presentation Transcript

  • Chiba.pm #1 2012/10/20
  • \ちば!/
  • About Me• Hideaki Ohno • Twitter : @hide_o_55 • Hatena: id:hide_o_55 • github: hideo55 • PAUSE: HIDEAKIO
  • ArangoDBclient for Perl
  • What s ArangoDB?• マルチモデルDB • ドキュメントDB • グラフDB • KVS• Geo indexによる位置情報検索
  • ArangoDB.pm• Collection/Document/Edge/Indexの 操作• Simple Query• ArangoDB Query Language
  • 使い方とかはドキュメント嫁 なので
  • ArangoDB.pm を作った際の 工夫とか
  • ところで、次のコードを 見てくれ
  • こいつをどう思う?my $users = $db->collection(‘users’);my $cursor = $users->by_exampe({ active => 1});while( my $doc = $cursor->next ){ # do something}
  • すごく・・・長いです・・・my $users = $db->collection(‘users’);
  • どうするか?
  • エイリアス?
  • No!• 省略しても最短1文字まで• 下手に省略すると逆に読みづらい
  • AUTOLOAD
  • No!• メソッドが存在する場合は AUTOLOADが呼ばれないため、 コレクション名に制限ができる• オーバーヘッドが大きい
  • overload!
  • こうなったmy $users = $db- >(‘users’);
  • なぜoverloadか?• 長いメソッド名を完全に省略できる• ハッシュアクセスっぽく見せかけられる
  • なぜoverloadか?• 長いメソッド名を完全に省略できる• ハッシュアクセスっぽく見せかけられる• 単純に演算子オーバーロードが好き
  • 他の言語ではどうしてるか• Ruby • [] 演算子をオーバーロード • database[ my_collection ]• Python • __getter__を利用• PHP/Node.jsは・・・ (自主規制)
  • Module::Installから Module::Buildに 移行してみた
  • 感想• ACTION_* で色々hookできて便利!• M::InstallっぽいDSLが欲しければ M::B::Functionsを使えるので安心• M::Installに比べて変なハマり方はしづ らい
  • 参考• モダンPerlの世界へようこそ:第23回  Module::Build:MakeMakerの後継者を目指 して • http://gihyo.jp/dev/serial/01/modern- perl/0023• Module::Build で lets `make love` • http://perl-users.jp/articles/advent-
  • PP• 極力PurePerlでも動くように、XSが使えない場 合はPP版をロードするモジュールを採用• HTTP::Parser::XS • H::P::XS::PP• Data::Util • Data::Util::PurePerl• PPでもOK、XSが使えれば更に高速に
  • 使いやすさ重視• Ruby版だと • db[ collection ].add_index( hash ,{ on => [ id ] })• Perl版 • $db->( collection )->ensure_hash_index([ id ]); • インデックスの種別は定まったものなのでそれぞれ別メソッドに • 必須パラメータはオプションのハッシュに入れず独立した引数に
  • 今後の予定• ArangoDB 1.1 APIに対応• オブジェクトを作らずにデータを返す RAWモード
  • FIN