Получение событий обновления БД в .NET из SQLite - PullRequest
0 голосов
/ 26 апреля 2010

Я недавно обнаружил удивительный SQLite, в частности .NET-оболочку для SQLite на http://sqlite.phxsoftware.com/.

Теперь предположим, что я занимаюсь разработкой программного обеспечения, которое будет работать на нескольких машинах в одной сети. Ничего сумасшедшего, наверное только 5 или 6 машин. И каждый из этих экземпляров программного обеспечения будет обращаться к базе данных SQLite, хранящейся в файле в общем каталоге (это плохая идея? Если так, скажите мне!).

Есть ли способ уведомлять каждый экземпляр приложения, если один экземпляр обновляет файл базы данных? Одним из очевидных способов было бы использование класса FileSystemWatcher, чтение всей базы данных в DataSet, а затем ... вы знаете ... перечислить все это, чтобы увидеть что нового ... но да, кажется довольно идиотским, на самом деле. Есть ли такая вещь, как поставщик обновлений SQLite?

Имеет ли это смысл как вопрос? Я также в значительной степени новичок, когда дело доходит до ADO.NET, поэтому, возможно, я подхожу к проблеме с совершенно неправильной точки зрения.

1 Ответ

3 голосов
/ 26 апреля 2010

Использование SQLite в сети не очень хорошая идея. Ознакомьтесь с собственными рекомендациями SQLite по этому здесь .

Клиент-серверная база данных будет намного более надежной и может также решить вашу проблему с уведомлением. Например, PostgreSQL имеет механизм межклиентской сигнализации через операторы NOTIFY и LISTEN, который можно использовать непосредственно с клиента или внутри функции, sproc или триггера.

Даже если вы решите перейти на SQLite, не используйте API для просмотра файлов. Они полностью сломаны в Windows из-за состояния гонки в недрах файловой системы. Из записи MSDN для FileSystemWatcher :

Обратите внимание, что FileSystemWatcher не вызывает событие Error, если событие пропущено или превышен размер буфера из-за зависимостей с операционной системой Windows.

В нем содержатся рекомендации по смягчению этого, но ни одна из них не дает никаких гарантий надежности.

...