views:

107

answers:

1

Hi,

according to the Berkeley documentation the Transactional (TS) and the Concurrent Datastore version of the Database, multiple threads may access (and change) the database.

Does this also mean that I can have 2 programs linked to the berkely 'client' and have them access the same database file without any problems?

(I ask, since for a separate database server this would be no problem of course, but in the case of Berkeley the database engine is linked long with your program)

thanks!

R

A: 

Some documentation seems to think you can use the same database concurrently from multiple processes as well as from multiple threads. Specifically:

"Multiple processes, or multiple threads in a single process, can all use the database at the same time as each uses the Berkeley DB library. Low-level services like locking, transaction logging, shared buffer management, memory management, and so on are all handled transparently by the library."

A cursory read did not shed any light on what BDB uses to control access from multiple processes, but if filesystem locks are used, access from multiple processes on a network filesystems may well be problematic.

http://www.oracle.com/technology/documentation/berkeley-db/db/programmer%5Freference/intro%5Fdbis.html#id1588146

Tuure Laurinolli