Dirty entity identification.

Derek Atkins warlord at MIT.EDU
Fri Jul 22 10:43:39 EDT 2005


[ please trim replies.  these messages are getting pretty long.  thanks ]

Chris Shoemaker <c.shoemaker at cox.net> writes:

> Nope.  Accounts contain a list of Splits.  This is an essential part
> of an Account, and *something* needs to know about it and take
> advantage of it.  Other than the GUI.

The Account Object Definition takes care of it.  The implementation
of the Account Object does it.

>> Unfortunately not. The engine cannot know that a dirty "account" (whatever 
>> that is) means a dirty Split (whatever that might be) exists somewhere. There 
>> is no relationship. The engine only knows that this instance is dirty, that 
>> collection is dirty and therefore the book is dirty. End.
>
> You missed the point here.  Forget about the engine.  This was a
> *mathematical* statement about searches.  Having information about the
> presence (or absence) of what you're searching for in a subset of all
> the places you could look at a cost less than the cost of actually
> looking in all those places makes your search cheaper.  This has
> nothing to do with everything that the "engine cannot know."

True, but caching this information (which is effectively what you're
doing) comes at a cost.  You need to store extra data somewhere
(increase storage cost) in order to reduce (time) cost of a search.
All well and good, provided you know a priori which searches you need
to optimize.

QOF is a general search engine and really does NOT understand some of
the optimizations that can be made.  For example, we actually lost a
particular optimization in the move from a "Search Accounts for
Splits/Transactions" to QOF: we lost the ability to reduce the
search-time by limiting the search to only Splits in particular
Accounts.  This lossage happened necessarily because QOF does not
understand that Accounts contain Splits.

_Accounts_ know that Accounts contain Splits, but QOF does not...  And
it's QOF that performs that search.

Now, if QOF were extended in such a way that these relationships could
be declared, it may be possible to regain that opimization.  Maybe.

>> You continue to assert that the engine can follow a path that simply does not 
>> exist. There is no tree!
>
> No.  I made no assertion about *who* can follow that path.  But the
> path does and must exist and we use it already to accomplish most of
> the financial operations.

And see, that is exactly the issue.  There's an abstraction barrier
which you want to cross.  :)  Yes, the information does exist, but
it's not available at all levels.

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available


More information about the gnucash-devel mailing list