SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
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日土曜日

Mais conteúdo relacionado

Mais procurados (8)

J-AMS 勉強会 その1(AWS)
J-AMS 勉強会 その1(AWS)J-AMS 勉強会 その1(AWS)
J-AMS 勉強会 その1(AWS)
 
フロントエンドから考えるサイト高速化
フロントエンドから考えるサイト高速化フロントエンドから考えるサイト高速化
フロントエンドから考えるサイト高速化
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
 
E zuka-teck2019-7-11 LT
E zuka-teck2019-7-11 LTE zuka-teck2019-7-11 LT
E zuka-teck2019-7-11 LT
 
CSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバいCSS の Flexible Box Layout がヤバい
CSS の Flexible Box Layout がヤバい
 
Gulpで学ぶSassとPug
Gulpで学ぶSassとPugGulpで学ぶSassとPug
Gulpで学ぶSassとPug
 
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for PerlChiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
 
レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話
 

Destaque

NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
 

Destaque (17)

CodeIgniterのライセンスについて
CodeIgniterのライセンスについてCodeIgniterのライセンスについて
CodeIgniterのライセンスについて
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデート
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
 
PHPUnitでリファクタリング
PHPUnitでリファクタリングPHPUnitでリファクタリング
PHPUnitでリファクタリング
 
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
 
OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳
 
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
 
Codeigniter4の比較と検証
Codeigniter4の比較と検証Codeigniter4の比較と検証
Codeigniter4の比較と検証
 
BEAR.Sunday $app
BEAR.Sunday $appBEAR.Sunday $app
BEAR.Sunday $app
 
BEAR.Sunday 1.X
BEAR.Sunday 1.XBEAR.Sunday 1.X
BEAR.Sunday 1.X
 
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
 
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
 
東のくるめとウィキペディア
東のくるめとウィキペディア東のくるめとウィキペディア
東のくるめとウィキペディア
 
PHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter updatePHPCON fukuoka 2015 CodeIgniter update
PHPCON fukuoka 2015 CodeIgniter update
 
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
 

Mais de Tetsuji Koyama

LLまつりに行こう!
LLまつりに行こう!LLまつりに行こう!
LLまつりに行こう!
Tetsuji Koyama
 
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてFuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
Tetsuji Koyama
 
the History of LL events
the History of LL eventsthe History of LL events
the History of LL events
Tetsuji Koyama
 
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
Tetsuji Koyama
 
Keires_DBリリースのご案内
Keires_DBリリースのご案内Keires_DBリリースのご案内
Keires_DBリリースのご案内
Tetsuji Koyama
 
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
Tetsuji Koyama
 

Mais de Tetsuji Koyama (15)

まつりとTシャツと私
まつりとTシャツと私まつりとTシャツと私
まつりとTシャツと私
 
LLまつりに行こう!
LLまつりに行こう!LLまつりに行こう!
LLまつりに行こう!
 
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてFuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
 
the History of LL events
the History of LL eventsthe History of LL events
the History of LL events
 
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
 
IPv6の闇とPHP
IPv6の闇とPHPIPv6の闇とPHP
IPv6の闇とPHP
 
PHP Frameworks with IPv6
PHP Frameworks with IPv6PHP Frameworks with IPv6
PHP Frameworks with IPv6
 
LL Planets告知
LL Planets告知LL Planets告知
LL Planets告知
 
Keires_DBリリースのご案内
Keires_DBリリースのご案内Keires_DBリリースのご案内
Keires_DBリリースのご案内
 
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
 
PHPで使うIPv6の実際
PHPで使うIPv6の実際PHPで使うIPv6の実際
PHPで使うIPv6の実際
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
 
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
 
Traitsについて
TraitsについてTraitsについて
Traitsについて
 
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくるランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
 

Último

Último (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

FuelPHP で DynamoDB