2. Co je to App Engine?
Prosted鱈 pro v箪voj a hostov叩n鱈 webov箪ch
aplikac鱈 na Google infrastruktue
PaaS = Platform as a Service
Automatick辿 邸k叩lov叩n鱈
Nutnost dodr転ov叩n鱈 pravidel platformy
Aplikace v Sandboxu
V箪voj v simulovan辿m prosted鱈 SDK
Python, Java, dal邸鱈 JVM jazyky, podpora
vt邸iny webov箪ch framework哲
3. Jak叩 jsou pravidla?
Filesyst辿m pouze pro ten鱈
30s as na odpov serveru
Z叩kaz otev鱈rat s鱈泥ov叩 spojen鱈
貼叩dn辿 nov辿 procesy ani thready
Z叩kaz jak箪chkoliv syst辿mov箪ch vol叩n鱈
Omezen鱈 potu a velikosti soubor哲
Kv坦ty na vyu転鱈v叩n鱈 syst辿mov箪ch
prostedk哲
4. V邸echno pes API
URL Fetch
Mail
Images
Google Accounts
CRON
Task Queues
XMPP (Jabber)
5. Google Datastore
Distribuovan叩 datab叩ze
Zalo転eno na BigTable
Podporuje Transakce a Partitioning
Podporuje Hierarchie
Nen鱈 relan鱈 datab叩ze
Bez sch辿matu
Nepodporuje SQL
6. Princip Datastore
Z叩kladn鱈 jednotkou je Entita z叩znam
Druh (Kind) tabulka
Kl鱈 (Key) prim叩rn鱈 kl鱈
Skupina Entit (Entity Group) partition
0..N Vlastnost鱈 (Properties) sloupce
V邸echny entity v jedn辿 Tabulce
7. Vlastnosti Entit
Ka転d叩 Entita m哲転e m鱈t libovolnou kombinaci
vlastnost鱈 nez叩visle na sv辿m druhu
Vlastnosti m哲転ou b箪t v鱈cehodnotov辿, nap pole
t辿to vlastnosti lze vyu転鱈t pro 1:N a M:N relace
Ka転d叩 entita m哲転e m鱈t sv辿ho Rodie a vytv叩et
tak hierarchie
Podle Hierarchi鱈 se prov叩d鱈 automatick箪 Partitioning
Transakce jsou mo転n辿 pouze pro Entity se stejn辿 Skupin Entit
8. Omezen鱈 Datastore
Nepou転鱈v叩 SQL, pouze GQL (Python) nebo JDOQL (Java)
Neexistuje podpora pro Joiny, ani tam nen鱈 nic podobn辿ho
貼叩dn辿 datab叩zov辿 constraints (omezen鱈 na ciz鱈 kl鱈e)
貼叩dn辿 agregan鱈 funkce (count, avg, min, max)
Maxim叩ln 1000 z叩znam哲 z jednoho dotazu. Za 1000. z叩znam v poad鱈
nen鱈 mo転n辿 se dostat ani pes offset.
Omezen鱈 na podm鱈nky dotazu: Nerovnost pouze na 1 vlastnosti
SELECT * FROM Person WHERE
birth_year >= 1980 AND birth_year <= 2009
SELECT * FROM Person WHERE
birth_year >= 1980 AND height >= 180
貼叩dn辿 glob叩ln鱈 transakce - pouze v r叩mci stejn辿 Skupiny Entit
Nelze prov叩dt ad-hoc dotazy, proto転e ka転d箪 typ dotazu potebuje
vlastn鱈 index (pom叩h叩 SDK)
9. Jak se s t鱈m vyrovnat?
Zv叩転it vhodnost platformy
Jde v tom moje aplikace v哲bec napsat?
Pokud ano, tak zmnit zp哲sob my邸len鱈
Zmnit zp哲sob n叩vrhu aplikace
Nenechat se ovlivovat stereotypy z relan鱈ch datab叩z鱈
Sna転it se vyu転鱈t v箪hod Datastore
Jednoduchost, rychlost, pru転nost, v鱈cehodnotov辿 vlastnosti...
Denormalizovat!
Pen辿st odpovdnost za konzistenci dat z
datab叩ze na aplikaci
13. Z叩vr
App Engine umo転uje snadn箪 v箪voj
邸k叩lovateln箪ch webov箪ch aplikac鱈
Pozor na specifick叩 omezen鱈
Vhodn辿 pro hodn velk辿, nebo hodn
mal辿 projekty
Platforma se rychle vyv鱈j鱈 a vylep邸uje
14. Dkuji za pozornost!
tomas.holas@gmail.com
linkedin.com/in/tomash
facebook.com/tomas.holas
twitter.com/tomaash