0

私は最近、SQLiteの素晴らしさ、特にhttp://sqlite.phxsoftware.com/でSQLiteの.NETラッパーを発見しました。

ここで、同じネットワーク上の複数のマシンで実行されるソフトウェアを開発しているとします。クレイジーなことは何もありません。おそらく5台か6台のマシンだけです。そして、ソフトウェアのこれらの各インスタンスは、共有ディレクトリ内のファイルに保存されているSQLiteデータベースにアクセスします(これは悪い考えですか?もしそうなら、教えてください!)。

1つのインスタンスがデータベースファイルを更新した場合にアプリの各インスタンスに通知する方法はありますか?明らかな方法の1つは、FileSystemWatcherクラスを使用し、データベース全体をDataSetに読み込んでから、...ご存知のとおり...全体を列挙して、何が新しいかを確認することです...しかし、実際には、それはかなりばかげているようです。SQLiteアップデートのプロバイダーのようなものはありますか?

これは質問としても意味がありますか?また、ADO.NETに関してはかなり初心者なので、まったく間違った角度から問題に取り組んでいる可能性があります。

4

1 に答える 1

3

ネットワーク全体でSQLiteを使用することはお勧めできません。これに関するSQLite自身の推奨事項をここで確認してください。

クライアント/サーバーデータベースははるかに信頼性が高く、通知の問題も解決する可能性があります。たとえば、PostgreSQLには、NOTIFYステートメントとLISTENステートメントを介したクライアント間シグナリングメカニズムがあり、クライアントから直接使用することも、関数、sproc、またはトリガーの内部から使用することもできます。

SQLiteを採用することにした場合でも、ファイル監視APIを使用しないでください。これらは、ファイルシステムの奥深くにある競合状態のために、Windowsでは完全に壊れています。FileSystemWatcherのMSDNエントリから:

Windowsオペレーティングシステムとの依存関係により、イベントが見逃された場合、またはバッファサイズを超えた場合、FileSystemWatcherはエラーイベントを発生させないことに注意してください。

これを軽減するための推奨事項を提供しますが、信頼性を保証するものはありません。

于 2010-04-26T01:38:47.420 に答える