Can you expand on how "full history" will work ?
Is it history of entity/value state (audit) or is it capture of
application events (Event sourcing)?
Because how pure state history can help with "data merge" ? It helps
for plain text, but for entity state (invariants) ?
Also I am not sure what you mean by shared common state.
Isn't whole entity store final shared state?

Asynchronous "push" model seems very natural for interactive/UI parts
of application, but less natural for business logic (transaction
script by M.Fowler ) for me.
Interesting work in area of fetch optimization is AutoFetch[1,2] and I
think idea can be applied also for remote "batch" operations
optimization.

cheers,

 - Tibor

[1] http://www.cs.utexas.edu/~wcook/papers/AutoFetch/autofetch.pdf
[2] http://www.avaje.org/autofetch.html

On Sun, May 20, 2012 at 8:31 AM, Niclas Hedhman <[email protected]> wrote:
> On Sat, May 19, 2012 at 6:44 PM, Tibor Mlynarik
> <[email protected]> wrote:
>
>> I see load/save functionality as enabler for remoting. But from api I
>> would prefer this transparent usage.
>> Remote client is assembled with RemoteEntityStore. Peer for this
>> entity store is server side UnitOfWork.
>
> As you realized, this opens a can of worms and not sure it can be
> sorted out. First of all, shared common state is pure evil and need to
> be avoided. Secondly, "batch" is a optimization abstraction and
> something I don't want to leak to the domain model.
>
> The question COULD then become; What-If the whole UnitOfWork
> abstraction is turned from a synchronous "pull" model to an
> asynchronous "push" model?? If that could be solved in a neat way,
> perhaps this whole thing becomes solvable without leaking
> abstractions. It also feels like a "blazing trails" way of doing
> persistence...
>
> Does anyone have pointer to other work in this area??
>
>
>> On remote uow some kind of support for batching will be needed. But
>> here I see analogy with server side support for fetch plan. If entity
>> store operates in-process ( i.e. jdbm, neo4j), missing support for
>> fetch plan is not so visible. I think fetch plan is just entity store
>> optimalisation feature, not sure what you mean by leaked abstraction.
>
> With a fast-enough store, "fetch plan" is not needed. That means that
> "fetch plan" is not a concern of the domain model. Hence, any exposure
> of "fetch plan" to domain model, is a "leaked abstraction" and that is
> something we strive hard to avoid.
>
>
>> What I meant by similiarity with jpa merge was that if opposite load
>> into serverside uow should work.
>> It have to handle merging into its current state. And here nightmare comes.
>
> Well, we already have versioned instances, and any ES can (should)
> re-check that no changes has occurred to ANY of the read entities, and
> a concurrent modification exception will occur if it happens, and for
> the code to re-try...
>
>
> Also, keep in mind that I intend to support "full history" natively in
> Qi4j. And it looks like a "Git" abstraction becomes natural. This
> means that one could allow parallel changes happening in separate
> "branches" and a "data merge" needs to become a central feature...
>
>
> Cheers
> --
> Niclas Hedhman, Software Developer
> http://www.qi4j.org - New Energy for Java
>
> I live here; http://tinyurl.com/3xugrbk
> I work here; http://tinyurl.com/6a2pl4j
> I relax here; http://tinyurl.com/2cgsug
>
> _______________________________________________
> qi4j-dev mailing list
> [email protected]
> http://lists.ops4j.org/mailman/listinfo/qi4j-dev

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

Reply via email to