Google App Engine
      Tomáš Holas
Co je to App Engine?
• Prostředí pro vývoj a hostování webových
  aplikací na Google infrastruktuře
• PaaS = Platform as a...
Jaká jsou pravidla?
• Filesystém pouze pro čtení
• 30s čas na odpověď serveru
• Zákaz otevírat síťová spojení
• Žádné nové...
Všechno přes API
• URL Fetch
• Mail
• Images
• Google Accounts
• CRON
• Task Queues
• XMPP (Jabber)
Google Datastore
• Distribuovaná databáze
• Založeno na BigTable
• Podporuje Transakce a Partitioning
• Podporuje Hierarch...
Princip Datastore

• Základní jednotkou je Entita … záznam
 • Druh (Kind) … tabulka
 • Klíč (Key) … primární klíč
 • Skupi...
Vlastnosti Entit
• Každá Entita může mít libovolnou kombinaci
  vlastností nezávisle na svém druhu

• Vlastnosti můžou být...
Omezení Datastore
•   Nepoužívá SQL, pouze GQL (Python) nebo JDOQL (Java)

•   Neexistuje podpora pro Joiny, ani tam není ...
Jak se s tím vyrovnat?
• Zvážit vhodnost platformy
  •   Jde v tom moje aplikace vůbec napsat?

• Pokud ano, tak změnit zp...
Python API
class Person(db.Model):
  first_name = db.StringProperty()
  last_name = db.StringProperty()
  hobbies = db.Str...
Java API
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Person {
    @PrimaryKey
    @Persisten...
DEMO !
Závěr

• App Engine umožňuje snadný vývoj
  škálovatelných webových aplikací
• Pozor na specifická omezení
• Vhodné pro ho...
Děkuji za pozornost!
      tomas.holas@gmail.com
      linkedin.com/in/tomash
    facebook.com/tomas.holas
        twitter...
Upcoming SlideShare
Loading in …5
×

Google App Engine

1,878 views

Published on

Published in: Technology, News & Politics
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,878
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
9
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

Google App Engine

  1. 1. Google App Engine Tomáš Holas
  2. 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. 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. 4. Všechno přes API • URL Fetch • Mail • Images • Google Accounts • CRON • Task Queues • XMPP (Jabber)
  5. 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. 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. 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. 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. 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
  10. 10. Python API class Person(db.Model): first_name = db.StringProperty() last_name = db.StringProperty() hobbies = db.StringListProperty() p = Person(first_name = "Albert", last_name = "Johnson") p.hobbies = ["chess", "travel"] query = db.Query(Person) query.filter("last_name = ", "Johnson") results = query.fetch
  11. 11. Java API @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Person { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private String firstName; @Persistent private String lastName; @Persistent List<String> hobbies; } Query query = pm.newQuery(Person.class); query.setFilter("lastName == 'Johnson'"); List<Employee> results = (List<Employee>) query.execute();
  12. 12. DEMO !
  13. 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. 14. Děkuji za pozornost! tomas.holas@gmail.com linkedin.com/in/tomash facebook.com/tomas.holas twitter.com/tomaash

×