Each day D has 0 or more children data entities of types X, Y and Z.
Is it better to associate items X, Y and Z with an entity of type D
by:
1. creating a collection each of X, Y and Z data entities inside
entity D (e.g., private List<Y> childrenOfTypeY;), or by
2. storing X, Y and Z by generating their Key values such that it
contains the parent entity D's key (e.g., Key k = new
KeyFactory.Builder(D.class.getSimpleName(),
"BlahBlahBlah").addChild(X.class.getSimpleName(),
"YadaYadaYada").getKey();).
My primary concern is which type of data design will be better
resource/time consumption-wise (i.e., which way is "lighter"). AFAIK,
method 1 gives me automatic consistency, method 2 gives me
flexibility.
In method 1, when I fetch an entity of type D, are all children
entities of types X, Y & Z fetched in one go, or lazily (w/o
programmatic intervention) on an as-required basis? In method 2
fetching the children is of course up to me.
Other characteristics of my application:
* As far as writing is concerned, it is more likely that individual
children of an entity of type D will be written to.
* As far as reading from the datastore is concerned, it is more likely
that all children of 1 or more entities of type D will need to be
fetched to satisfy a single request.
* Once an entity of type D is created, it and its children are
unlikely to be deleted, though entities of type X, Y and Z (for a
given entity D) may be individually modified.
* Data consistency is obviously of concern, but since data deletion is
infrequent, app-managed consistency shouldn't be too hard. Plus, a
cleanup Task can delete orphan X, Y, Z objects (should that happen).
If it matters, I am using Java.
If the above explanation is too opaque :-) or I have posted to the
wrong group, please let me know.
Thanks!
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-a...@googlegroups.com.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.