Hi there

I am new to this list, so please excuse me if this has been covered
before, or is not the right place for this.

I am writing a development language/environment that has a SQL back
end.  I am (planning to) put in a number of SQL engine connectivities,
and SQLite is ideal for the low end type implementations - that is a
small database (less than 1,000,000 records in any table) small number
of users (5 or less).

However, reading the documentation it seems that SQLite is not hot on
concurrent access through networks, or across platforms, due to the
funnies of fcntl, or incompatibilities between Windows and Linux and so
on.

Now SQLite would be ideal for the low end implementation (being a client
oritented database there is hardly any administration and so on),
however, I will need it to be multi user - not much multi - 5 users or
so - but still multi user, and to be so across platforms.

To achieve this I have written a mechanism that creates a "lock" file,
(in the same directory as the database, with the same name with ".lock"
after it).  This is used by SQLite clients to register, and deregister
locks (what fcntl would do under the current Linux clients).  I have
designed it so it does not use fcntl, but could be used to perform the
locking SQLite requires to guarantee concurrency and integrity.

Of course, when this locking mechanism is in use there is a performance
hit, as extra network processing and read/writes are required each time
a lock is required, so therefore this is not right for all scenarios,
though the performance hit would probably not be significant for what I
want to use it for.

Ideally, I would like an indicator in the SQLite database file header
record to determine if this file locking is required, and set
accordingly when the database is created, and possibly be switched on
and off with a PRAGMA command or similar, or maybe it's own utility.

What are people's views on this?

-- 
Edward A. Macnaghten
http://www.edlsystems.com

Reply via email to