Chiba pm#1 - ArangoDB for Perl

1,247 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,247
On SlideShare
0
From Embeds
0
Number of Embeds
513
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

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
  • Chiba pm#1 - ArangoDB for Perl

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

    ×