Re: [appengine-java] Re: Objectify-Appengine 2.1 released, supports Partial Indexes

2011-08-12 Thread Jeff Schnitzer
Specifically, it's the difference between calling Entity.setProperty()
or Entity.setUnindexedProperty() on the low level API.

Objectify interacts with the datastore through the low level API, so
there is always underlying support for features.  Not necessarily in a
convenient form, however.

Jeff

On Fri, Aug 12, 2011 at 8:40 AM, Scott Hernandez
 wrote:
> It is supported in appengine. Every time you set a property in an
> Entity (appengine Entity) you can specify if that property is indexed
> or not. The partial indexing support just lets you control that on a
> per instance basis instead of having the field always indexed or not.
>
> On Fri, Aug 12, 2011 at 11:14 AM, Tobias  wrote:
>> Hi There,
>> Can you tell me a little about how partial indexes are implemented in
>> objectify? Is it supported in the underlying API or is it solely implemented
>> in objectify?
>> Kind regards Tobias.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine for Java" group.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/google-appengine-java/-/AcFUXARv3sEJ.
>> To post to this group, send email to google-appengine-java@googlegroups.com.
>> To unsubscribe from this group, send email to
>> google-appengine-java+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine-java?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine for Java" group.
> To post to this group, send email to google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to 
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



Re: [appengine-java] Re: Objectify-Appengine 2.1 released, supports Partial Indexes

2011-08-12 Thread Scott Hernandez
It is supported in appengine. Every time you set a property in an
Entity (appengine Entity) you can specify if that property is indexed
or not. The partial indexing support just lets you control that on a
per instance basis instead of having the field always indexed or not.

On Fri, Aug 12, 2011 at 11:14 AM, Tobias  wrote:
> Hi There,
> Can you tell me a little about how partial indexes are implemented in
> objectify? Is it supported in the underlying API or is it solely implemented
> in objectify?
> Kind regards Tobias.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine-java/-/AcFUXARv3sEJ.
> To post to this group, send email to google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Objectify-Appengine 2.1 released, supports Partial Indexes

2011-08-12 Thread Tobias
Hi There,

Can you tell me a little about how partial indexes are implemented in 
objectify? Is it supported in the underlying API or is it solely implemented 
in objectify?

Kind regards Tobias.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine-java/-/AcFUXARv3sEJ.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.



[appengine-java] Re: Objectify-Appengine 2.1 released, supports Partial Indexes

2010-03-26 Thread ZeroCool
This function is really cool. Many thanks for saving my money and
time.
With GAE and Objectify's help, I will hopefully release my Android/GAE
MMO game on Apr,1

On Mar 26, 5:14 am, Duong BaTien  wrote:
> Hi:
>
> Congratulation and thank for tremendous efforts from the Objectify Team.
>
> By the way, has any one attempted Objectify with possible very large
> index of subscribers and publishers of web-hook pub-sub (Google
> PubSubHubbub of Atom or short message twitter style).
>
> Thanks
> Duong BaTien
> DBGROUPS and BudhNet
>
> On Thu, 2010-03-25 at 13:45 -0700, Jeff Schnitzer wrote:
> > Today we released Objectify v2.1, the latest version of our opensource
> > replacement for JDO/JPA on the Google App Engine datastore.
>
> > This version includes a major new feature, Partial Indexes.  If you
> > aren't sure what partial indexes are, the Wikipedia page
> > (http://en.wikipedia.org/wiki/Partial_index) describes them so:
>
> > "A partial index, also known as filtered index is a database index
> > which has some condition applied to it such that it only includes a
> > portion of the rows in the table.  This can allow the index to remain
> > small even though the table may be rather large, and have fairly
> > extreme selectivity."
>
> > Here is an example of an Objectify entity using partial indexes:
>
> > public class Player {
> >     @Id Long id;
>
> >     // Simple conditions:  IfFalse, IfTrue, IfZero, IfNull, etc
> >     @Unindexed(IfFalse.class) boolean admin;
>
> >     // Smarter - sensitive to the actual default value
> >     @Unindexed(IfDefault.class) Team team = Team.NOTCHOSEN;
>
> >     // You can make your own conditions
> >     @Unindexed(IfCustomCondition.class) Status status;
>
> >     static class IfCustomCondition extends ValueIf {
> >         public boolean matches(Status value) {
> >             return (value == Status.DEAD || value == Status.RETIRED);
> >         }
> >     }
> > }
>
> > Why should you care about optimizing indexes?
>
> > All queries in the datastore require indexes, which are a sort of
> > reverse-mapping from value to key.  These indexes occupy space and
> > consume cpu resources whenever an entity is written to the datastore.
> > With the addition of just a few indexes, this cost quickly doubles or
> > triples the cost of storing the original entity:
>
> >  * A basic entity with no indexes costs 48 api_cpu_ms to store.
> >  * Each single-property indexed field adds an additional 17 api_cpu_ms.
>
> > This number appears stable and consistent; appengine seems to have a
> > static formula for computing datastore costs.  Storage size costs are
> > harder to measure, but from watching mailing list traffic it seems
> > quite easy to double or triple your storage size with unnecessary
> > indexes.
>
> > When should you care about optimizing indexes?
>
> >  * Removing unnecessary indexes will not make writes faster, it will
> > make them /cheaper/.  All indexes are written in parallel, so indexes
> > do not add latency to writes.  Instead, indexes add $ to the bill you
> > get at the end of the week - and push you closer to your quota limits.
>
> >  * If your application has relatively small quantities of relatively
> > static data, index optimization is probably pointless.  On the other
> > hand, if you have large data volumes or heavy write loads, you must
> > carefully choose your indexes (or be very rich).
>
> > Do I need partial indexes, as opposed to just declaring whole fields
> > indexed or not?
>
> > It depends on your dataset and your queries.  In the Player example
> > above, partial indexes can be extremely effective:
>
> >  * You only ever filter on the admin field for actual admins, and most
> > players are not admins.
> >  * You only ever filter on the team field for players who have chosen
> > a team, and the bulk of players are not associated with a team.
> >  * You only ever filter on the status field for players who have
> > active statuses, and you have a large number of inactive players.
>
> > Objectify's support for partial indexes also has the ability to
> > determine index behavior based on "the whole entity".  This allows you
> > to perform certain kinds of limited multiple-property queries
> > (including double inequality queries) without creating a
> > multi-property index.  As an example, it is very easy to model this
> > index from the Wikipedia page:
>
> >     create index partial_salary on employee(age) where salary > 2100;
>
> > An example of this is documented in the Objectify manual.
>
> > Thanks,
> > The Objectify Team
> > Jeff, Scott, and Matt
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Google App Engine for Java" group.
> > To post to this group, send email to google-appengine-j...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > google-appengine-java+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengin