Собственно, решил выложить наше творение (писали вместе с супругой, изначально - в качестве её курсового, потом доводили до реально юзабельного вида). Пока сыро, но уже вполне работоспособно.
Итак, что имеем:
* сервер-демон на базе sqlite.dll работает в многопоточном режиме, может принимать запросы от неограниченного (теоретически) числа клиентов;
* общение между сервером и клиентами идёт через TCP-сокеты; есть что-то типа собственного протокола;
* в целях экономии трафика пакеты при отправке по сети сжимаются zlib; попутно проверяется целостность доставляемых пакетов (через хэши md5).
Для компиляции понадобятся:
* lazarus-zlib - http://code.google.com/p/lazarus-zlib/
* lazarus-sqlite - http://petrochenko.ru/lazarus/lazarus-sqlite.html
* synapse - http://www.ararat.cz/synapse/
Собственно код сервера и сильно тестового клиента выложил в виде репозитория: https://github.com/Nik-vr/sqlite-server
Желающие присоединиться к работе (хотя бы советами) - welcome! В первую очередь нужно проверить сервер на платформах, отличных от Win32 (в теории там всё вполне себе кросс-платформенно, но на практике не проверял).
Известные косяки:
* в силу того, что при выборке данных ответный пакет формируется в виде файла, возможны задержки в случаях, когда за большими объёмами данных обращаются несколько клиентов (есть прямая зависимость от быстродействия дисковой подсистемы компьютера-сервера).
* отправка/приём пакетов через сокеты подтормаживает, если клиент и сервер запущены на одной машине (с чем связано - пока хз...).