2. Co je to App Engine?
• Prostředí pro vývoj a hostování webových
aplikací na Google infrastruktuře
• PaaS = Platform as a Service
• Automatické škálování
• Nutnost dodržování pravidel platformy
• Aplikace v Sandboxu
• Vývoj v simulovaném prostředí SDK
• Python, Java, další JVM jazyky, podpora
větš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í počtu a velikosti souborů
• Kvóty na využívání systémových
prostředků
4. Všechno přes 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í relační 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 “Rodiče” 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é agregační funkce (count, avg, min, max…)
• Maximálně 1000 záznamů z jednoho dotazu. Za 1000. záznam v pořadí
není možné se dostat ani přes 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ádět ad-hoc dotazy, protože každý typ dotazu potřebuje
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 změnit způsob myšlení
• Změnit způsob návrhu aplikace
• Nenechat se ovlivňovat stereotypy z relačních databází
• Snažit se využít výhod Datastore
• Jednoduchost, rychlost, pružnost, vícehodnotové vlastnosti...
• Denormalizovat!
• Přenést odpovědnost za konzistenci dat z
databáze na aplikaci
13. Závěr
• 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. Děkuji za pozornost!
tomas.holas@gmail.com
linkedin.com/in/tomash
facebook.com/tomas.holas
twitter.com/tomaash