SlideShare a Scribd company logo
1 of 110
GAE/J ってどう使う?  スティルハウス 佐藤一憲
GAE/J ってどう使う?  ,[object Object],[object Object]
自己紹介 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
アジェンダ ,[object Object],[object Object],[object Object],[object Object]
GAE と「ご都合 .com 」事例
GAEとは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ご都合 .com (gotsugo.com) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ご都合.comの中身 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BlazeDSを動かすには… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAE のサーバー構成と スケーラビリティ
GAE の現状 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAE の特徴 ,[object Object],[object Object],[object Object],[object Object]
GAE の特徴 ,[object Object],[object Object],[object Object],[object Object],[object Object]
Google App Engine Stack の構成 ,[object Object]
GAE Stack の構成要素 ,[object Object],[object Object],[object Object],[object Object]
GAE Stack の構成要素 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAE Stack の構成要素 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAE Stack の構成要素 ,[object Object],[object Object],[object Object],[object Object],[object Object]
GAE Stack の構成要素 ,[object Object]
App Server について ,[object Object],[object Object],[object Object],[object Object],[object Object]
App Server について ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
App Server について ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
App Server について ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
App Server について ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAE のスケールアウト ,[object Object],[object Object],[object Object],[object Object],[object Object]
GAE のスケールアウト事例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAE のスケールアウト事例 ,[object Object]
そのほか ,[object Object],[object Object],[object Object],[object Object]
そのほか ,[object Object],[object Object]
Bigtable とは
Bigtableの概要 ,[object Object],[object Object],[object Object],[object Object]
Bigtableの概要 ,[object Object],[object Object],[object Object],[object Object]
Bigtable の構成要素  ,[object Object],[object Object],[object Object],[object Object]
Bigtable の構成要素  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtableにできること ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtableにできること ,[object Object]
Bigtable の内部構造  ,[object Object],[object Object],[object Object],[object Object]
Bigtableの内部構造 ,[object Object]
Bigtableの内部構造 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtableの内部構造 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtableの内部構造 ,[object Object],[object Object],[object Object],[object Object],[object Object]
Bigtableの内部構造 ,[object Object],[object Object],[object Object],[object Object],[object Object]
タブレットサーバーのメカニズム ,[object Object]
タブレットサーバーのメカニズム ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
タブレットサーバーのメカニズム ,[object Object],[object Object],[object Object]
キャッシュ管理とディスクアクセス ,[object Object],GFS GFS GFS SSTable  (ディスク上のファイル) memtable  (キャッシュ) minor compaction (ディスクにflush) major compaction (ゴミファイルをGC) テーブルへのアクセス コミット ログ
キャッシュ管理とディスクアクセス ,[object Object],[object Object],[object Object]
キャッシュ管理とディスクアクセス ,[object Object],[object Object],[object Object]
キャッシュ管理とディスクアクセス ,[object Object],[object Object],[object Object],[object Object],[object Object]
キャッシュ管理とディスクアクセス ,[object Object],[object Object],[object Object]
GFSの利用 ,[object Object],[object Object],[object Object],[object Object],[object Object]
GFSの利用 ,[object Object]
GFSの利用 ,[object Object],[object Object],[object Object],[object Object]
Datastore とは
Datastore API とは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore API とは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore API とは ,[object Object],         PersistenceManager pm = PMF.get().getPersistenceManager();         Employee e = new Employee("Alfred", "Smith", new Date());         try {             pm.makePersistent(e);         } finally {             pm.close();         }
Datastore 用語 ,[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティテーブル ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
キー ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
キー ,[object Object],カインド名 エンティティID 注:この図は概念図です (実際の実装ではありません)
プロパティ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
プロパティ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
クエリ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Query query = pm.newQuery(&quot;select from Employee &quot; +                               &quot;where lastName == lastNameParam &quot; +                               &quot;order by hireDate desc &quot; +                               &quot;parameters String lastNameParam&quot;)     List<Employee> results = (List<Employee>) query.execute(&quot;Smith&quot;);
クエリ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
クエリ ,[object Object],[object Object],[object Object],[object Object]
クエリ ,[object Object],[object Object],[object Object],[object Object]
インデックス ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
カインドインデックス ,[object Object],[object Object],[object Object],[object Object]
カインドインデックス ,[object Object]
シングルプロパティインデックス ,[object Object],[object Object],[object Object],[object Object],[object Object]
シングルプロパティインデックス ,[object Object]
シングルプロパティインデックス ,[object Object],[object Object],[object Object],[object Object]
コンポジットインデックス ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
コンポジットインデックス ,[object Object]
コンポジットインデックス ,[object Object],[object Object]
マージジョイン ,[object Object],[object Object],[object Object],[object Object]
マージジョイン ,[object Object]
エンティティグループと トランザクション
CAPとBASE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティグループとは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Dept Emp 1 *
エンティティグループとは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティグループとは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],001 abc 002 def ACID
ローカリティ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],/Grandparent:Alice  /Grandparent:Alice/Parent:Sam  /Grandparent:Ethel  /Grandparent:Ethel/Parent:Jane  /Grandparent:Ethel/Parent:Jane/Child:Timmy  /Grandparent:Ethel/Parent:Jane/Child:William  /Grandparent:Frank
トランザクション・スコープ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore と BASE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore と BASE ,[object Object],[object Object],[object Object],[object Object]
Datastore と BASE ,[object Object],         for (int i = 0; i < NUM_RETRIES; i++) {             pm.currentTransaction().begin();             ClubMembers members = pm.getObjectById(ClubMembers.class, &quot;k12345&quot;);             members.incrementCounterBy(1);             try {                 pm.currentTransaction().commit();                 break;             } catch (JDOCanRetryException ex) {                 if (i == (NUM_RETRIES - 1)) {                      throw ex;                 }             }         }
Datastore と BASE ,[object Object],[object Object],[object Object],[object Object],[object Object]
GAEトランザクションの注意点 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GAEトランザクションの注意点 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティグループの注意点 ,[object Object],[object Object],[object Object],Dept Emp 1 *
エンティティグループの注意点 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティグループの注意点 ,[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティグループの注意点 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
エンティティグループの注意点 ,[object Object],[object Object],[object Object],[object Object]
Datastore ってどう使う?
Datastore のパフォーマンス ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore のパフォーマンス ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore にできないこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore にできないこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore にできないこと ,[object Object],[object Object],[object Object]
Datastore にできないこと ,[object Object],[object Object],[object Object],[object Object]
Datastore にできないこと ,[object Object],[object Object],[object Object],[object Object],[object Object]
Datastore にできないこと ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
そのほかの tips ,[object Object],[object Object],[object Object],[object Object],[object Object]
そのほかの tips ,[object Object],[object Object],[object Object],[object Object]
そのほかの tips ,[object Object],[object Object],[object Object],[object Object],[object Object]
RDB から GAE への移行 ,[object Object],[object Object],[object Object],[object Object]
RDB から GAE への移行 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

20090307cakephphandson 01
20090307cakephphandson 0120090307cakephphandson 01
20090307cakephphandson 01Yusuke Ando
 
Is Forum(20070222)
Is Forum(20070222)Is Forum(20070222)
Is Forum(20070222)真 岡本
 
東京都新型コロナウイルス感染症対策サイトの開発に携わった話
東京都新型コロナウイルス感染症対策サイトの開発に携わった話東京都新型コロナウイルス感染症対策サイトの開発に携わった話
東京都新型コロナウイルス感染症対策サイトの開発に携わった話Takeshi Osoekawa
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装moai kids
 
196 Ch
196 Ch196 Ch
196 Chanjaan
 
Openlink Virtuoso v01
Openlink Virtuoso v01Openlink Virtuoso v01
Openlink Virtuoso v01Satoshi Kume
 
Gittutorcn Htm
Gittutorcn HtmGittutorcn Htm
Gittutorcn HtmLeon Zhang
 
openpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンスopenpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンスSotaro Karasawa
 
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~shimay
 
今更Web Apiにハマりました
今更Web Apiにハマりました今更Web Apiにハマりました
今更Web ApiにハマりましたKenji Wada
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築Kosuke Shinoda
 

What's hot (20)

S20
S20S20
S20
 
Opensource Android
Opensource AndroidOpensource Android
Opensource Android
 
20090307cakephphandson 01
20090307cakephphandson 0120090307cakephphandson 01
20090307cakephphandson 01
 
Is Forum(20070222)
Is Forum(20070222)Is Forum(20070222)
Is Forum(20070222)
 
東京都新型コロナウイルス感染症対策サイトの開発に携わった話
東京都新型コロナウイルス感染症対策サイトの開発に携わった話東京都新型コロナウイルス感染症対策サイトの開発に携わった話
東京都新型コロナウイルス感染症対策サイトの開発に携わった話
 
niconico4j
niconico4jniconico4j
niconico4j
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装
 
Ywc Web Design2
Ywc Web Design2Ywc Web Design2
Ywc Web Design2
 
090214ldd Mogilefs
090214ldd Mogilefs090214ldd Mogilefs
090214ldd Mogilefs
 
webwork2guide
webwork2guidewebwork2guide
webwork2guide
 
196 Ch
196 Ch196 Ch
196 Ch
 
Endian Firewall
Endian FirewallEndian Firewall
Endian Firewall
 
Openlink Virtuoso v01
Openlink Virtuoso v01Openlink Virtuoso v01
Openlink Virtuoso v01
 
Gittutorcn Htm
Gittutorcn HtmGittutorcn Htm
Gittutorcn Htm
 
openpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンスopenpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンス
 
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
Google Androidの現在と近未来 ~マッシュアップにより変革するもの~
 
6 3google
6 3google6 3google
6 3google
 
今更Web Apiにハマりました
今更Web Apiにハマりました今更Web Apiにハマりました
今更Web Apiにハマりました
 
Regex Introduction
Regex IntroductionRegex Introduction
Regex Introduction
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 

Viewers also liked

初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料Shinichi Ogawa
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Javatakagig
 
Gceハンズオン20150411イン福岡
Gceハンズオン20150411イン福岡Gceハンズオン20150411イン福岡
Gceハンズオン20150411イン福岡Ryosuke Akahoshi
 
Moving computation to the data (1)
Moving computation to the data (1)Moving computation to the data (1)
Moving computation to the data (1)Kazunori Sato
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?maruyama097
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門Shumpei Shiraishi
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようmookjp
 

Viewers also liked (11)

Gaej Jdo
Gaej JdoGaej Jdo
Gaej Jdo
 
初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Java
 
Gceハンズオン20150411イン福岡
Gceハンズオン20150411イン福岡Gceハンズオン20150411イン福岡
Gceハンズオン20150411イン福岡
 
Moving computation to the data (1)
Moving computation to the data (1)Moving computation to the data (1)
Moving computation to the data (1)
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
 
The monad fear
The monad fearThe monad fear
The monad fear
 
AWS Black Belt Techシリーズ Amazon EMR
AWS Black Belt Techシリーズ  Amazon EMRAWS Black Belt Techシリーズ  Amazon EMR
AWS Black Belt Techシリーズ Amazon EMR
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 

More from Kazunori Sato

FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012Kazunori Sato
 
CBA Google App Engine 20101208
CBA Google App Engine 20101208CBA Google App Engine 20101208
CBA Google App Engine 20101208Kazunori Sato
 
GDD2010 appengine ja night + Slim3
GDD2010 appengine ja night + Slim3GDD2010 appengine ja night + Slim3
GDD2010 appengine ja night + Slim3Kazunori Sato
 
Doc management by Confluence+Jira
Doc management by Confluence+JiraDoc management by Confluence+Jira
Doc management by Confluence+JiraKazunori Sato
 
Flex/AIR×GAE/J 開発tips
Flex/AIR×GAE/J開発tipsFlex/AIR×GAE/J開発tips
Flex/AIR×GAE/J 開発tipsKazunori Sato
 

More from Kazunori Sato (9)

FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012Arista @ HPC on Wall Street 2012
Arista @ HPC on Wall Street 2012
 
Bpstudy ajnreview
Bpstudy ajnreviewBpstudy ajnreview
Bpstudy ajnreview
 
cloudmix GAE slides
cloudmix GAE slidescloudmix GAE slides
cloudmix GAE slides
 
CBA Google App Engine 20101208
CBA Google App Engine 20101208CBA Google App Engine 20101208
CBA Google App Engine 20101208
 
GDD2010 appengine ja night + Slim3
GDD2010 appengine ja night + Slim3GDD2010 appengine ja night + Slim3
GDD2010 appengine ja night + Slim3
 
Doc management by Confluence+Jira
Doc management by Confluence+JiraDoc management by Confluence+Jira
Doc management by Confluence+Jira
 
XMPP and Tornado
XMPP and TornadoXMPP and Tornado
XMPP and Tornado
 
Flex/AIR×GAE/J 開発tips
Flex/AIR×GAE/J開発tipsFlex/AIR×GAE/J開発tips
Flex/AIR×GAE/J 開発tips
 

Sthseminar Gae 20090715