Montag, 3. August 2009

Objekte in der Google Database suchen

Mit der Google App Engine erhält man Zugang zu der skalierbaren Infrastruktur von Google.
Um diese Skalierbarkeit effektiv auszunutzen, gibt es von Jason Cooper eine Reihe von Artikel über dieses Thema mit dem Titel: "Effectively scaling your App Engine-based apps"
Die orginal Artikel sind unter: Scaling zu finden.

Hier eine Zusammenfassung der Artikel mit einigen Erläuterungen dazu.

Direct lookups vs. Querys

Zusammenfassung:
Direct lookups statt Querys benutzen sofern möglich!

pm.getObjectById(Klasse.class,
key) statt
Query q = pm.newQuery(Klasse.class);
q.setFilter("key == mykey")
q.declareParameters("
com.google.appengine.api.datastore.Key key")
q.execute(mykey);

Der Googe App Engine Datastore ist für Lesezugriffe optimiert. Auf der System Status Seite von Google (unter Datastore) lässt sich nachschaun, dass
Querys im Vergleich direct lookups (get) zu eine deutlich höhere (~4x) Latenz haben.
Für die Umsetzung in Java bedeutet dies, dass die getObjectById Methode des PersistenceManager ausgerufen wird, statt newQuery. Dies geht natürlich nur, wenn auch die ID des Objects bekannt ist.

Fortsetzung folgt...



Keine Kommentare:

Kommentar veröffentlichen