Splitting the slots table

Christian Stimming stimming at tuhh.de
Mon Jan 3 14:51:05 EST 2011


Am Montag, 3. Januar 2011 schrieb John Ralls:
> We need to re-think KVP entirely: It doesn't match up very well with the
> relational model.

Yes.

> The HBCI (online banking) setup, on the other hand, is contained entirely
> in a hierarchy of KVPs. This makes some amount of sense in XML, but it's
> insane in an RDB. RDBs don't like recursion, and there's no way to do
> arbitrary hierarchies without recursion. HBCI needs its own tables.

Note that the online banking data storage for sure doesn't have to stay the 
way it currently is. Storing everying in deeply nested KVP was just the 
easiest way to add this into the XML format. We can very well refactor this 
into tables on their own for the SQL backend - it would "just" require a 
developer who is actually using the online banking and who invests the 3-6 
work days to model the data and implement the storage. On the level of the C 
code, the online banking module needs the data access as available in the 
following headers:

* src/import-export/aqbanking/gnc-ab-kvp.h
* src/import-export/aqbanking/gnc-ab-trans-templ.h (and in particular 
gnc_ab_trans_templ_new_from_kvp and gnc_ab_trans_templ_to_kvp)
* src/import-export/import-match-map.h (in particular  
gnc_imap_create_from_book)

I'm just saying the online banking data has no inherent requirement to be 
stored in KVP. It was just the easiest storage implementation back in XML 
days, but nowadays we can change the storage just as well.

Regards,

Christian


More information about the gnucash-devel mailing list