Changes

Jump to: navigation, search

Database Formats

2,132 bytes added, 11:57, 5 May 2016
Gramps 3.0
Unlike in Gramps 2.2, the backup files are not in XML format. The new backup files are a dump of the database tables. This allows the data to be saved quickly. One backup file exists for each primary table in the database. The backup files are not visible to the user, being held in the database directory.
 
=== Why no simultaneous access? ===
 
From time to time people want to use Gramps for collaborative research, and are then stopped as Gramps does not allow simultaneous access. That is, you can simultaneously access the database, but this typically results in corrupt data, destroying your database.
 
The motivation for this is the following:
#We would need a server/client infrastructure, like eg MySQL. However, this is also why MySQL is non-trivial for most users to maintain. We get into system startup files, gramps daemons running, and a whole mess of other stuff. And when you consider that probably under 5% of the users would be interested in something like this, we have to wonder about our return on investment. Is our time more valuable working on other stuff?
#Who to maintain this code? The core developers don't need this feature. Somebody should join the team to make this happen.
 
Technically, BSDDB can be made to work with a server environment. However, in Gramps we give the <code>env.open()</code> the <code>DB_PRIVATE flag</code>. The docs say:
;<code>DB_PRIVATE</code>:Specify that the environment will only be accessed by a single process (although that process may be multithreaded). This flag has two effects on the Berkeley DB environment. First, all underlying data structures are allocated from per-process memory instead of from shared memory that is potentially accessible to more than a single process. Second, mutexes are only configured to work between threads.
 
:This flag should not be specified if more than a single process is accessing the environment because it is likely to cause database corruption and unpredictable behavior. For example, if both a server application and the Berkeley DB utility db_stat are expected to access the environment, the DB_PRIVATE flag should not be specified.
 
:Source: [http://pybsddb.sourceforge.net/api_c/env_open.html DB_ENV->open]
 
Note however that consecutive access from different places to the same underlying database is possible with Gramps 3.0, so a collaboration based on time sharing (using different hours to input data in Gramps) is possible.
==Gramps 5.0==

Navigation menu