FuelPHP で DynamoDB

5,472 views

Published on

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

No Downloads
Views
Total views
5,472
On SlideShare
0
From Embeds
0
Number of Embeds
3,479
Actions
Shares
0
Downloads
4
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

FuelPHP で DynamoDB

  1. 1. FuelPHPで DynamoDB 小山哲志 @koyhoge Fuel&CIの集い 2013/10/12 12013年10月12日土曜日
  2. 2. about こいほげ ‣小山哲志 (こやま てつじ) ‣プログラマー ‣Twitter: @koyhoge ‣facebook: http://facebook.com/koyhoge ‣PHPユーザ会の中の人 ‣濃いヒゲ koyhige, 巨ほげ kyohoge とよく間 違えられる 22013年10月12日土曜日
  3. 3. AMNでFuelといえば 32013年10月12日土曜日
  4. 4. ‣FuelPHPの紹介を書きました 42013年10月12日土曜日
  5. 5. Amazon DynamoDB? ‣「フルマネージドNoSQLデータベースサービ ス」 ‣いわゆるKVS ‣SSDに保存 ‣3のAZに自動リプリケーション ‣プロビジョニングされたIO 52013年10月12日土曜日
  6. 6. プロビジョニングIO? ‣必要なスループットを指定 ‣テーブルを作成するとき ‣もちろん後から変更可能 ‣例 ‣10 read/秒、3 write/秒 ‣1∼10,000 (それ以上はフォーム申請) ‣あとはAWSが良きに計らってくれる ‣高い値を指定すると当然お値段も高くなる 62013年10月12日土曜日
  7. 7. データ型 ‣Number ‣String ‣Binary ‣上記それぞれのSet ‣NumberSet ‣StringSet ‣BinarySet 72013年10月12日土曜日
  8. 8. プライマリーキー(単独) ハッシュキー データ Item キーは以下のいずれか •Number •String •Binary 82013年10月12日土曜日
  9. 9. プライマリーキー(複合) ハッシュキー データ Item キーは以下のいずれか •Number •String •Binary レンジキー 92013年10月12日土曜日
  10. 10. dynamoutil ‣https://github.com/koyhoge/fuelphp- dynamoutil ‣ドキュメント全然ない ‣aws-sdk for phpが必要 ‣composer install 102013年10月12日土曜日
  11. 11. composer.json "require": { : , "aws/aws-sdk-php": "*" 112013年10月12日土曜日
  12. 12. ファイル ‣bootstrap.php ‣config ‣dynamo_util.php - 設定の雛形 ‣classes ‣dynamo_util.php - もろもろのutil ‣table_base.php - テーブル親クラス ‣sequence.php - シーケンスエミュレーション 122013年10月12日土曜日
  13. 13. config return array( 'defaults' => array( // developer key 'key' => 'XXXXXXXXXXXXXXX', // developer secret key 'secret' => 'xxxxxxxx', // region where used 'region' => AwsCommonEnumRegion::TOKYO, // table prefix 'table_prefix' => '', ), // Default setup group 'default_setup' => 'default', // Setup groups 'setups' => array( 'default' => array(), ), ); 132013年10月12日土曜日
  14. 14. 使い方 class TestTable extends DynamoUtilTableBase { protected $tableName = 'test_tbl'; protected $keyAttrs = array( array( 'AttributeName' => 'id', 'AttributeType' => AwsDynamoDbEnumType::NUMBER, 'KeyType' => AwsDynamoDbEnumKeyType::HASH, ), ); } 142013年10月12日土曜日
  15. 15. テーブル作成 $test_table = new TestTable; $throughput = 2; $test_table->create($throuput); 152013年10月12日土曜日
  16. 16. 書き込み $test_table = new TestTable; $data = array( 'id' => 1, 'name' => 'John', 'family' => 'Titor', ); $test_table->put($data); 162013年10月12日土曜日
  17. 17. 読み込み $key = array( 'id' => 1, ); $data = $test_table->get($key); 172013年10月12日土曜日
  18. 18. 更新 $key = array( 'id' => 1, ); $vals = array( 'nickname' => 'time traveler', ); $data = $test_table->update($key, $vals); 182013年10月12日土曜日
  19. 19. query $key = array( 'id' => 1, ); $data = $test_table->query($key); 192013年10月12日土曜日
  20. 20. scan $conds = array( 'name' => 'John', ); $data = $test_table->scan($conds); 202013年10月12日土曜日
  21. 21. queryとscan ‣query ‣プライマリーキーによる検索 ‣scan ‣全部のデータを舐めて、そこからフィルターで 抽出 212013年10月12日土曜日
  22. 22. シーケンスエミュレーション ‣SQLのSEQUENCE ‣MySQLでいうところのSerial ‣アトミックな数値カウンター ‣'seq_' + シーケンス名というテーブルを作って、 そこに格納 222013年10月12日土曜日
  23. 23. シーケンスエミュレーション $seq_user = DynamoUtilSequence('user'); $seq_user->create(); $cur_id = $seq_user->current(); $next_id = $seq_user->next(); 232013年10月12日土曜日
  24. 24. おまけ:Packageの作り方 ‣独自の名前空間を用意する ‣namespace DynamoUtil; ‣その名前空間に対するオートローダを定義 242013年10月12日土曜日
  25. 25. ファイル ‣bootstrap.php ‣config ‣dynamo_util.php - 設定の雛形 ‣classes ‣dynamo_util.php - もろもろのutil ‣table_base.php - テーブル親クラス ‣sequence.php - シーケンスエミュレーション 252013年10月12日土曜日
  26. 26. bootstrap.php Autoloader::add_namespace('DynamoUtil', __DIR__.'/classes/'); Autoloader::add_classes( array( 'DynamoUtilDynamoUtil' => __DIR__.'/classes/dynamo_util.php', 'DynamoUtilException' => __DIR__.'/classes/dynamo_util.php', 'DynamoUtilTableBase' => __DIR__.'/classes/table_base.php', 'DynamoUtilSequence' => __DIR__.'/classes/sequence.php', )); 262013年10月12日土曜日
  27. 27. まとめ ‣DynamoDB は RDBほど柔軟ではないですが、 用途によってはバッチリ使えます ‣スケーリングをAmazon任せにできるので楽ち ん ‣アクセスが少なければそんなにお高くない 272013年10月12日土曜日
  28. 28. 提供 ひとりの気持ち、ひとの気持ち アジャイルメディア・ネットワーク株式会社 282013年10月12日土曜日
  29. 29. 質問? 292013年10月12日土曜日

×