From 1475a10e18542aa936cea820dcddeac1d662d926 Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Sat, 6 May 2000 05:23:52 +0000 Subject: [PATCH] updates about sql back-end git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2266 57a11ea4-9604-0410-9ed3-97b8803252fd --- doc/html/C/projects.html | 64 ++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/doc/html/C/projects.html b/doc/html/C/projects.html index 7892347316..c52822d8a7 100644 --- a/doc/html/C/projects.html +++ b/doc/html/C/projects.html @@ -1334,16 +1334,7 @@ etc ...
A module is necessary to allow data to be fetched from an - SQL database, and for that database to be updated. Some - thoughts: SQL databases do not need to be locked during - editing: instead, an optimistic approach, similar to that - employed by CVS (concurrent version system, a mechanism for - storing versions of source code) could be used: if the - edits conflict with changes made by others, the edit could - be rejected en-masse, allowing the user to merge and - correct their changes. This is a very important note: - updating SQL does NOT require locks to be held for long - periods of time! + SQL database, and for that database to be updated.

There has been much discussion about this on mailing lists both for GnuCash and administrative overhead in terms of getting them set up. - -

This may be a minor cost to a business enterprise + This may be a minor cost to a business enterprise that hires DataBase Administrators.

- -

It is not acceptable to require this of + It is not acceptable to require this of naive users that may find "simple" things like

 % su -
@@ -1371,27 +1360,47 @@ Password:
             to be challenging.
           
 
-          
  • The real need may be to use an embedded +
  • It might be useful to use an embedded database engine like unto Sleepycat DB, Sleepycat DB, cdb, or something like Open - Group - ISAM.
  • + "http://www.opengroup.org/public/prods/dmm4.htm"> + ISAM (Note CQL++ supports ISAM access methds), + or even an embedded SQL engine such as + GigaBASE. + The point of doing so would be to to provide a uniform, + more-easily-extensible, more portable interface to the data. +
  • GnuCash presently uses a document-oriented model, where the entire set of books are loaded in, and dumped out, all at one fell swoop. + GnuCash needs to be modified to access the database in a + transactional manner. This at least partly implemented + with the Begin()/End() constructs in the engine. +

    + Some transactional thoughts: entire SQL tables/databases + do not need to be locked while the user is editing a transaction + via the GUI. + Instead, an optimistic approach, similar to that + employed by CVS (concurrent version system, a mechanism for + storing versions of source code) could be used: if the + edits conflict with changes made by others, the edit could + be rejected en-masse, allowing the user to merge and + correct their changes. This is a very important note: + updating SQL does NOT require locks to be held for long + periods of time! + +

  • +The SQL engine chosen should be fully transactional, passing the 'ACID' +test (Atomicity, Consistency, Isolation, Durability). +Note that MySQL +doesn't pass the 'ACID' test. +

    -

    Changing GnuCash to be suited to use a DBMS in - other than a "load-it-all" / "dump-it-all" manner, but - to rather update the database in a transactional - manner.

    -

    That being said, it may be possible to recast the - GnuCash engine functionality so as to handle - storage in a transactional manner.

  • @@ -1529,7 +1538,7 @@ internationalized text rendering for gtk. RPM's
  • - -lucre a publiclyly available version of e-cash.
  • + -lucre a publicaly available version of e-cash.
  • Open Applications Group is developing specs for accounting @@ -1588,6 +1597,9 @@ internationalized text rendering for gtk.
  • Maxwell's Lemur -- a GTK based table widget
  • +
  • GigaBASE + embeddabale SQL database. +

    Historical References

    The following URL's are inactive, obsolete or otherwise wasting