• Save
Chiba pm#1 - ArangoDB for Perl
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,298
On Slideshare
805
From Embeds
493
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 493

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \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

Transcript

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