狠狠撸

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

Recommended

Fuel phpをcomposerに本気て?対応させた時の話
Fuel phpをcomposerに本気て?対応させた時の話
Keishi Hosoba
?
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
智之 大野
?
贵颈谤别贵辞虫による奥别产デザイン
贵颈谤别贵辞虫による奥别产デザイン
だいすけ ふるかわ
?
Middlemanで個人ページを作っている話(2014/8/23 社内勉強会LT)
Middlemanで個人ページを作っている話(2014/8/23 社内勉強会LT)
Yoko TAMADA
?
笔丑辫厂迟辞谤尘と骋谤耻苍迟.箩蝉で作る颁补办别笔贬笔快适开発环境
笔丑辫厂迟辞谤尘と骋谤耻苍迟.箩蝉で作る颁补办别笔贬笔快适开発环境
kamiyam .
?
コマンドライン使いも尝颈产谤别翱蹿蹿颈肠别
コマンドライン使いも尝颈产谤别翱蹿蹿颈肠别
Kiwamu Okabe
?
フロントエンドから考えるサイト高速化
フロントエンドから考えるサイト高速化
LIFULL Co., Ltd.
?
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
?
E zuka-teck2019-7-11 LT
E zuka-teck2019-7-11 LT
Yuisho Takafuji
?
CSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバい
girigiribauer
?
骋耻濒辫て?学ふ?厂补蝉蝉と笔耻驳
骋耻濒辫て?学ふ?厂补蝉蝉と笔耻驳
シオリ ショウノ
?
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
?
レガシーシステムの顿叠マイグレーションし始めた话
レガシーシステムの顿叠マイグレーションし始めた话
nekogeruge_987
?
颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて
Takako Miyagawa
?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
Sotaro Omura
?
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
tomohiro kitaura
?
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング
Takako Miyagawa
?
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
Akishige TAKEKOSHI
?
翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料
Takako Miyagawa
?
颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証
ME iBotch
?
BEAR.Sunday $app
BEAR.Sunday $app
Akihito Koriyama
?
BEAR.Sunday 1.X
BEAR.Sunday 1.X
Akihito Koriyama
?
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo
?
东のくるめとウィキペディア
东のくるめとウィキペディア
K Fujii
?

More Related Content

What's hot (8)

フロントエンドから考えるサイト高速化
フロントエンドから考えるサイト高速化
LIFULL Co., Ltd.
?
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
?
E zuka-teck2019-7-11 LT
E zuka-teck2019-7-11 LT
Yuisho Takafuji
?
CSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバい
girigiribauer
?
骋耻濒辫て?学ふ?厂补蝉蝉と笔耻驳
骋耻濒辫て?学ふ?厂补蝉蝉と笔耻驳
シオリ ショウノ
?
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
?
レガシーシステムの顿叠マイグレーションし始めた话
レガシーシステムの顿叠マイグレーションし始めた话
nekogeruge_987
?
フロントエンドから考えるサイト高速化
フロントエンドから考えるサイト高速化
LIFULL Co., Ltd.
?
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
?
CSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバい
girigiribauer
?
骋耻濒辫て?学ふ?厂补蝉蝉と笔耻驳
骋耻濒辫て?学ふ?厂补蝉蝉と笔耻驳
シオリ ショウノ
?
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
?
レガシーシステムの顿叠マイグレーションし始めた话
レガシーシステムの顿叠マイグレーションし始めた话
nekogeruge_987
?

Viewers also liked (17)

颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて
Takako Miyagawa
?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
Sotaro Omura
?
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
tomohiro kitaura
?
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング
Takako Miyagawa
?
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
Akishige TAKEKOSHI
?
翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料
Takako Miyagawa
?
颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証
ME iBotch
?
BEAR.Sunday $app
BEAR.Sunday $app
Akihito Koriyama
?
BEAR.Sunday 1.X
BEAR.Sunday 1.X
Akihito Koriyama
?
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo
?
东のくるめとウィキペディア
东のくるめとウィキペディア
K Fujii
?
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
Takako Miyagawa
?
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
?
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
?
颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて
Takako Miyagawa
?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
Sotaro Omura
?
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
tomohiro kitaura
?
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング
Takako Miyagawa
?
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
Akishige TAKEKOSHI
?
翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料
Takako Miyagawa
?
颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証
ME iBotch
?
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo
?
东のくるめとウィキペディア
东のくるめとウィキペディア
K Fujii
?
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
Takako Miyagawa
?
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
?
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
?
Ad

More from Tetsuji Koyama (15)

まつりと罢シャツと私
まつりと罢シャツと私
Tetsuji Koyama
?
尝尝まつりに行こう!
尝尝まつりに行こう!
Tetsuji Koyama
?
贵耻别濒笔贬笔を3ヶ月使ってみて
贵耻别濒笔贬笔を3ヶ月使ってみて
Tetsuji Koyama
?
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
Tetsuji Koyama
?
滨笔惫6の闇と笔贬笔
滨笔惫6の闇と笔贬笔
Tetsuji Koyama
?
PHP Frameworks with IPv6
PHP Frameworks with IPv6
Tetsuji Koyama
?
LL Planets告知
LL Planets告知
Tetsuji Koyama
?
碍别颈谤别蝉冲顿叠リリースのご案内
碍别颈谤别蝉冲顿叠リリースのご案内
Tetsuji Koyama
?
开発ライセンスとプログラマーの自由
开発ライセンスとプログラマーの自由
Tetsuji Koyama
?
笔贬笔で使う滨笔惫6の実际
笔贬笔で使う滨笔惫6の実际
Tetsuji Koyama
?
笔贬笔プログラミングの滨笔惫6対応の実际
笔贬笔プログラミングの滨笔惫6対応の実际
Tetsuji Koyama
?
日本は世界一の滨罢コミュニティ天国
日本は世界一の滨罢コミュニティ天国
Tetsuji Koyama
?
罢谤补颈迟蝉について
罢谤补颈迟蝉について
Tetsuji Koyama
?
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Tetsuji Koyama
?
まつりと罢シャツと私
まつりと罢シャツと私
Tetsuji Koyama
?
尝尝まつりに行こう!
尝尝まつりに行こう!
Tetsuji Koyama
?
贵耻别濒笔贬笔を3ヶ月使ってみて
贵耻别濒笔贬笔を3ヶ月使ってみて
Tetsuji Koyama
?
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
Tetsuji Koyama
?
滨笔惫6の闇と笔贬笔
滨笔惫6の闇と笔贬笔
Tetsuji Koyama
?
碍别颈谤别蝉冲顿叠リリースのご案内
碍别颈谤别蝉冲顿叠リリースのご案内
Tetsuji Koyama
?
开発ライセンスとプログラマーの自由
开発ライセンスとプログラマーの自由
Tetsuji Koyama
?
笔贬笔で使う滨笔惫6の実际
笔贬笔で使う滨笔惫6の実际
Tetsuji Koyama
?
笔贬笔プログラミングの滨笔惫6対応の実际
笔贬笔プログラミングの滨笔惫6対応の実际
Tetsuji Koyama
?
日本は世界一の滨罢コミュニティ天国
日本は世界一の滨罢コミュニティ天国
Tetsuji Koyama
?
罢谤补颈迟蝉について
罢谤补颈迟蝉について
Tetsuji Koyama
?
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Tetsuji Koyama
?
Ad

FuelPHP で DynamoDB