Brian M. introduced me to Twig about a week ago, and it’s awesome! I’m a long time Hibernate user. Over the years, like everyone else, I come to really appreciate the 80-90% that Hibernate does for you. Basically, the things an ORM should do. Anyway, when I got into this App-Engine world, my primary aversion was the Key-Value (NOSQL) ideas. Made me uneasy.
Thanks to Twig, that’s not as big a worry. Now you can still have direct Parent-Child mappings. At the same time, if I want, you can still use the lower-level Key mappings. Like with an ORM, I can have eager relationship loading, via the activation feature. For you truly ahead of the curve devs out there, Twig encourages creating truly asynchronous apps.
However, just like anything that makes your dev work easier, you need to use it with caution. With Twig, by default, when you load an entity, all of its relationships are eagerly loaded. Similar to Hibernate, I’d set this to a small, finite quantity. Possibly 1-3 levels deep. Also, by default, all fields are indexed. Again, don’t wait for QA or Production to configure this. I’d actually turn it off, and specify all non-Key fields that need indexing. As their documentation states, index items you know you’ll using for sort and searches.