[Dev] Transparent persistence
patrickdlogan at attbi.com
patrickdlogan at attbi.com
Wed Apr 16 22:15:07 PDT 2003
On Wednesday, April 16, 2003, at 10:00 AM, rys wrote:
> transparent persistence
>
> http://www.service-architecture.com/object-oriented-databases/
> articles/transparent_persistence.html
>
> This page echoes John Anderson's sentiment that using transparent
> persistence will
> result in needing to write less code. It also says performance is
> higher. (I'd be
> interested in Patrick Logan's reaction to the statement.)
Transparent persistence sure does result in less code. That is the
first and most striking aspect of OODB adoption.
"Performance is higher" is a pretty broad statement however, to which
the only sane response is, "It depends."
Depending on the scenarios you want to support, you may end up writing
and debugging a lot of code to *implement* transparent persistence in
order to reduce your application-level code and keep its performance
where you want it.
Cache, the source of the reference is an interesting example. It is
based on Pick, which is something like 20-25 years old. There is a lot
of experience behind their architecture. I don't think Cache is free
for use in Chandler.
Transparent persistence and multiple users complicate the design.
Transparent persistence and large volumes of data complicate the
design. Writing less code can be achieved in other ways, and in
general keeping the data interface factored out of everything else.
Decisions can and should be delayed as long as possible.
The nice thing about transparent persistence is it is, well,
transparent. So your code is not making a commitment to some other
model that you might have to back out of. A key way of keeping the
code factored away from the data interface is to be event driven and
"higher order" in the sense that the code is passing higher order
functions and objects into aggregate abstractions as opposed to
pulling individual objects out of that aggregate into the application
for one-by-one operations.
Designing good objects, abstract aggregates, and simple code in
general in the application will enable choices and adjustments in the
persistence interface. Let the decisions back there emerge as you
implement application space features.
Hope this makes sense and helps.
-Patrick
More information about the Dev
mailing list