1

ネットワークストリームをファイルとして扱う方法があるのではないかと思います。私は間違っているかもしれませんが、ファイルはバイトの配列リストとして表示されます。Windowsでファイルを開いて書き込むと、そのファイル(配列リスト)にバイトが挿入されると思います。

SQLiteデータベースを使用してデプロイするプログラムを作成しています。また、ネットワーク上のそのデータベースファイルに接続するクライアントバージョンも作成しています。

ユーザーがデータベースファイルに接続するには、そのデータベースのデータにアクセスするための資格情報を提供する必要があります。その情報を入力せずに接続できるようにしたいと思います。

私が考えていたこと:

  • 代わりに、SQLサーバーを使用してアプリケーションを展開します。(SQLサーバーを使用してアプリケーションを展開し、サーバーをサイレントにインストールし、tcp接続を有効にし、これを実現するために必要なすべての構成を行うことは簡単ではありません。また、sqliteのインストールに約7分かかり、sqliteの所要時間は20秒未満です。

  • WCFを使用してサーバーと通信しているので、使用する予定のすべてのクエリごとに関数を作成できます。したがって、製品から*を選択したい場合は、WCFサービスでSelectAllFromProducts()メソッドを呼び出すことができます...(ここでは、車輪の再発明を行っています。)また、これの良い点は、クエリが多くなることです。より速く私は信じます。Sqliteはサーバーレスであるため、製品名が「foo」のような製品内のすべてのアイテムを検索する場合、コンピューターはネットワークを介してデータベース内のすべてのレコードにアクセスする必要があります。ローカルコンピュータがそれを実行し、いくつかの結果をクライアントに送信すると、より高速になります。

4

1 に答える 1

1

ネットワーク経由でSqliteを使用するのは良い考えではないと思います。私は現在Sqliteを使用していますが、ローカルファイルシステムデータベースとして使用しています。

クライアントサーバーアーキテクチャでは、SQLiteよりもRDBMSを使用したほうがよいでしょう。

クライアント/サーバーアプリケーション

ネットワークを介して共通のデータベースにアクセスするクライアントプログラムが多数ある場合は、SQLiteの代わりにクライアント/サーバーデータベースエンジンの使用を検討する必要があります。SQLiteはネットワークファイルシステム上で動作しますが、ほとんどのネットワークファイルシステムに関連する遅延のため、パフォーマンスはそれほど高くありません。また、多くのネットワークファイルシステム実装のファイルロックロジックにはバグが含まれています(UnixとWindowsの両方で)。ファイルロックが正常に機能しない場合、2つ以上のクライアントプログラムが同じデータベースの同じ部分を同時に変更し、データベースが破損する可能性があります。この問題は、基盤となるファイルシステム実装のバグが原因であるため、SQLiteがそれを防ぐためにできることは何もありません。

Sqliteの適切な使用については、このリンクを確認して、セクションにジャンプしてください

別のRDBMSがより適切に機能する可能性がある状況

于 2012-04-14T14:44:44.423 に答える