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