Proposals for techniques like MVCC and shadow paging have been made
on this list before and they appeared feasible (IIUC) without a server
process. The problems with the serverless approach arise once multiple
writers are introduced. For example, efficiently detecting crashed
writers and initiating recovery. I think this problem may be soluble,
at least non-portably, with robust futexes or mutexes. But I imagine
there are other issues as well - these are the issues I'd like to get
a bead on.

Iker

Ken wrote:
> The key to increased concurrency is MVCC. Without MVCC concurrency is limited 
> to page locking, table locking etc. 
> 
> Google MVCC...
> 
> --- On Tue, 9/8/09, Iker Arizmendi <i...@research.att.com> wrote:
> 
>> From: Iker Arizmendi <i...@research.att.com>
>> Subject: Re: [sqlite] server process gives better concurrency - why?
>> To: sqlite-users@sqlite.org
>> Date: Tuesday, September 8, 2009, 9:34 PM
>> The question is whether a
>> client-server design is /necessary/ to
>> efficiently implement higher concurrency. It appears to be
>> easier
>> to do so with a client-server model, but is such a model
>> required?
>> Are there functions performed by a server process that
>> cannot be
>> carried out at all without it?
>>
>> Iker
>>
>> Simon Slavin wrote:
>>  > If SQLite was to be
>>  > designed to handle multiple processes 'properly', it
>> would have to be
>>  > rewritten as a client/server system.
>>  >
>>  > This would, of course, kill all the advantages of
>> SQLite: it could no
>>  > longer be tiny, fast, and ultra-portable.  So it
>> would be a bad design
>>  > choice for SQLite (bowing, of course, to DRH's right
>> to do whatever he
>>  > pleases with it).
>>  >
>>  > This is why I get uneasy when I see posts here that
>> suggest spinning
>>  > off threads especially to deal with locking issues,
>> or do other things
>>  > that solve concurrency or latency problems. 
>> Often you find that
>>  > making such a change in your program just leads to
>> one of the threads
>>  > immediately being blocked by another, defeating the
>> point of threading
>>  > in the first place.  Software has to be designed
>> around what is
>>  > possible with the tools you're using, not around some
>> mythical idea of
>>  > the perfect generic SQL engine.
>>  >
>>  > Simon.
>>
>> -- 
>> Iker Arizmendi
>> AT&T Labs - Research
>> Speech and Image Processing Lab
>> e: i...@research.att.com
>> w: http://research.att.com
>> p: 973-360-8516
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 


-- 
Iker Arizmendi
AT&T Labs - Research
Speech and Image Processing Lab
e: i...@research.att.com
w: http://research.att.com
p: 973-360-8516

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to