On Tue, Oct 20, 2009 at 7:10 AM, Kent Sølvsten <[email protected]> wrote:

> The opens the possibility of later creating an ultrawicked cool loading
> policy deciding the partitioning at runtime based on usage patterns. Or just
> using a block per mixin. Or...

We did something similar in 2001, but instead of storage it was about
"network traffic".

In that case, we had a "smart proxy" representing the "entity" on the
client side. In reality, it was hollow and with the help of a
"use-case" the server side would "learn" what to be sent back in the
initial retrieval and upon each other request. In principle, the
algorithm was fairly simple. All properties that were always accessed
for the usecase would come in the initial request, all properties that
were accessed more than half of the time (24 hour average) and all
small payload properties would be transferred when the first access to
such "block" occurred and the rest was only transferred upon actual
usage. Since the logic was sitting on the server-side, i.e. "client
request property A, but 8 properties are returned" was handled by the
client side proxy hidden from client code, there were no "learning
period" for each customer, EXCEPT for certain interactive UI
operations, where the usage was large a product on the persons
interaction, and hence was given its own "use case" ID.

Another "side effect" of the remote protocol capable of returning
"anything" on each request, was that cache updates was sent along as
well, if another user had updated the Entity. (Our system didn't
support user transactions, was purely atomic rest operations and even
the the DB made no UPDATEs, only INSERTs when entities changed.)

We chose this 'self learning' system with the algorithms on the server
side, since we quickly realized that hand optimizations were near
impossible to maintain in the long run.


Cheers
-- 
Niclas Hedhman, Software Developer
http://www.qi4j.org - New Energy for Java

I  live here; http://tinyurl.com/2qq9er
I  work here; http://tinyurl.com/2ymelc
I relax here; http://tinyurl.com/2cgsug

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to