Re: paper on Prevayler

Ralph Johnson <[email protected]> Thu, 7 Aug 2014 06:26:38 -0500
Newsgroups gmane.comp.java.prevayler
Message-ID <CAB_aMcs_77heaZ216rNOto1JwkPb742Q-+7bMuMG4Ck6SPUJuw@mail.gmail.com>
On Wed, Aug 6, 2014 at 5:11 PM, Justin Sampson <[email protected]>
wrote:
>
>
> Okay, got it. That actually sounds pretty close to how Fowler et
> al. and the DDD community talk about "event sourcing," which I've
> always thought of as fairly distinct from Prevayler's "arbitrary
> Turing-complete transactions." The ability to encapsulate real
> logic into an atomic transaction is one of the more appealing
> features of Prevayler to me. Then again, supporting completely
> arbitrary Turing-complete transactions is exactly what makes
> determinism so hard, which is my biggest practical worry when
> using Prevayler...


Prevalence and event sourcing are similar and compatible, but prevalence
emphasizes how things are persistent and is focused on implementation,
while event sourcing emphasizes how you model the application domain.  That
is why the DDD community focuses on it.

In practice, you do not want to write Turing complete transactions.  Just
like you don't want to write functions where it is impossible to tell
whether they will halt or not.

When I was in grad school, a group of us spent a semester reading some
papers on Djikstra about "reverse execution", which for him meant a process
of taking a (very small) program that computed a function and transforming
it into a program that did the reverse.   Neither he nor we were
successful.    Turing completeness reared its ugly head.    Some years
later I learned (from MacApp) about implementing undo on commands.   Undo
always seems easy in this context, because commands can just remember the
original state.  Reverse execution has gone from being impossible to easy.

Transactions need to be short.  For some applications, "short" might mean
1000 ms, while to others they are no more than 1 ms.  But you need to be
have an idea of how long they are.   If you are really writing
Turing-complete transactions then you can't bound their length.  So, I
wouldn't agree that Prevayler has arbitrary transactions.   It has rules
for transactions, but those rules allow pretty complex transactions.

-Ralph

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk

_______________________________________________
To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
_______________________________________________
"Databases in Memoriam" -- http://www.prevayler.org