[GNC] File Format Documentation (Bug 777893)

Stephen M. Butler kg7je at arrl.net
Tue Aug 14 19:50:53 EDT 2018


On 08/14/2018 04:24 PM, David T. wrote:
> Steve,
>
> Thanks for your input. I believe we’re in agreement here; I wasn’t trying to suggest that GC become a DBMS, but rather it would learn to utilize DBMS features that many seem to expect.
>
> I’m not great with the appropriate terminology to use. Do you have language I could use that would more accurately reflect the direction that GC is headed?
>
> David

I hoped as much.  Let's take this pair of sentences:

Use of SQL formats for storage implies to many that GnuCash is database management software (DBMS). While that is a long term goal of the development team, GnuCash as currently designed is not DBMS.

And change them to this:

Use of a SQL back-end engine for storage implies to many that GnuCash
has fully implemented DBMS features including multi-user and incremental
data manipulation.  That is a long-term goal of the development team. 
However GnuCash does not currently implement these features.

Then I think this next section can disappear entirely:

Many features that users of DBMS expect from a DBMS are not implemented in GnuCash. The GnuCash data schema is not normalized. Significant elements of the data logic is implemented in code, rather than data structure.
Gnucash uses the SQL back end to load the entire data store into memory in the same manner as the XML back end. Consequently, use of the SQL back end does not enable simultaneous multi-user access to a GnuCash file, although that is one long term goal.


And I will change this piece:

One benefit of the SQL back end is that it saves changes incrementally, and every change is committed to the back end as it happens. This is in contrast to the XML back end, which only writes to the data file when the user invokes the Save command.

To say:
One benefit of the SQL back end is that it saves changes to the back end as they happen. This is in contrast to the XML back end, which only writes to the data file when the user invokes the Save command. 


Hope this helps.

--Steve

>
>> On Aug 14, 2018, at 3:50 PM, Stephen M. Butler <kg7je at arrl.net> wrote:
>>
>> On 08/14/2018 03:05 PM, David T. via gnucash-user wrote:
>>> Hello,
>>>
>>> In response to Bug 777893 (https://bugs.gnucash.org/show_bug.cgi?id=777893 <https://bugs.gnucash.org/show_bug.cgi?id=777893>), I have written a more detailed description of the storage choices available to users for insertion into the Tutorial & Concepts Guide at section 2.5. Given the extent of the text, I am including it here so that the broader community can offer suggestions for improvement. Note that I will insert appropriate encoding once I finalize the content.
>>>
>>> Thanks,
>>> David T.
>>>
>>> ————————————————————
>>> Proposed text for Tutorial & Concepts Guide section 2.5
>>> ————————————————————
>>>
>>> 2.5 Storing your financial data
>>> 2.5.1 Overview
>>> GnuCash offers several formats for storing your financial data. The default file storage format is XML, while a number of flavors of SQL storage are available. Users can choose a file format from the File Save and File Save As dialogs.
>>> The primary GnuCash storage format is an XML file. The file is by default compressed with gzip, which is a preference that is set at Edit→Preferences→General→Use file compression. 
>>> GnuCash also supports SQL storage via the DBI back end. It supports PostgreSQL, MySQL and SQLite3 databases.
>>>
>>> Storage Comparison
>>> As noted, GnuCash allows storage in either XML or SQL formats. Each of these formats has benefits and shortcomings that the user should consider for their needs and abilities. 
>>> The XML format is the most stable and established format, and for this reason, it is the recommended format for most users. SQL storage was added for the 2.4 release and has become an increasingly popular choice for users.
>>> Use of SQL formats for storage implies to many that GnuCash is database management software (DBMS). While that is a long term goal of the development team, GnuCash as currently designed is not DBMS. It is a financial application that can store its data in SQL files.
>> I would strongly suggest that GnuCash never (triple underscore) become a
>> DBMS engine.  I would encourage it to be an application that uses a
>> strong DBMS engine (which it already does) as a back-end and that the
>> team would apply data normalization and multi-user techniques to the
>> front-end application.
>>
>> Note the difference between a front-end application and the back-end
>> DBMS engine.
>> --Steve  (retired Oracle DBA and former application developer)
>>> Many features that users of DBMS expect from a DBMS are not implemented in GnuCash. The GnuCash data schema is not normalized. Significant elements of the data logic is implemented in code, rather than data structure.
>>> Gnucash uses the SQL back end to load the entire data store into memory in the same manner as the XML back end. Consequently, use of the SQL back end does not enable simultaneous multi-user access to a GnuCash file, although that is one long term goal.
>>> One benefit of the SQL back end is that it saves changes incrementally, and every change is committed to the back end as it happens. This is in contrast to the XML back end, which only writes to the data file when the user invokes the Save command. 
>>> The SQL back end does allow users with SQL experience to write queries against the data to create custom reports without using Gnucash’s internal report system. It is important to note that modification of GnuCash data using external access modes is strongly discouraged by the development team, and damages to a GnuCash data file that result from such modifications are strictly the responsibility of the user.
>>>
>>> Storage Comparison Table
>>>
>>> XML     						SQL
>>> Default						Optional
>>> Requires no additional software	Requires additional software
>>> Requires no additional expertise	Requires expertise with DBMS 
>>> Compressed  					Uncompressed
>>> Save on command				Save on commit
>>> Uses log files					Does not use log files
>>> Not multi-user					Not multi-user
>>> Limited external processing		External processing through SQL queries
>>>
>>>
>>>

-- 
Stephen M Butler, PMP, PSM
Stephen.M.Butler51 at gmail.com
kg7je at arrl.net
253-350-0166
-------------------------------------------
GnuPG Fingerprint:  8A25 9726 D439 758D D846 E5D4 282A 5477 0385 81D8



More information about the gnucash-user mailing list