8

私は、Sqliteで非常にうまく機能するWindowsデスクトップアプリケーションを作成しました。これはシングルユーザーアプリであり、データベースはアプリが実行されているマシン上にあります。

ただし、アプリケーションは成長しており、複数のユーザーがアプリを実行して1つの共有データベースに接続できるようになりました。

ネットワークドライブ上でsqliteファイルを共有できるようにしたいのですが、誰かが何か考えを持っていない限り、明らかにデータが破損することになります。

データベースサーバーのインストールが必要になる可能性があると思いますが、商用のMySQLライセンスは意味がありません。PostgreSQLは十分に異なっているため、アプリケーションの多くを書き直さなければなりません。私はFirebirdをまったく使用していないので、それが良い解決策であるかどうかはわかりません。

Sqliteデータベースファイルの着信トランザクションを処理するためにインストールできるSqliteデータベースサーバーはありますか?

クライアントが自分でMySQLをダウンロードしてインストールする必要がある場合、商用ライセンスが必要ですか?

どんな提案や方向性も素晴らしいでしょう、ありがとう。

4

8 に答える 8

8

基礎となるファイルシステムによっては、説明したように、共有ネットワークドライブで Sqlite ファイルを使用できる場合があります。

http://www.sqlite.org/faq.html#q5

複数のプロセスが同時に同じデータベースを開くことができます。複数のプロセスが同時に SELECT を実行できます。ただし、いつでもデータベースに変更を加えることができるプロセスは 1 つだけです。

SQLite は、リーダー/ライター ロックを使用してデータベースへのアクセスを制御します。(リーダー/ライター ロックをサポートしていない Win95/98/ME では、代わりに確率的シミュレーションが使用されます。) ただし、注意してください: データベース ファイルが NFS ファイルシステムに保持されている場合、このロック メカニズムは正しく機能しない可能性があります。これは、多くの NFS 実装で fcntl() ファイルのロックが壊れているためです。複数のプロセスが同時にファイルにアクセスしようとする可能性がある場合は、SQLite データベース ファイルを NFS に置くことは避けてください。Windows では、Microsoft のドキュメントによると、Share.exe デーモンを実行していない場合、FAT ファイルシステムではロックが機能しない可能性があります。Windows の経験が豊富な人は、ネットワーク ファイルのファイル ロックは非常にバグが多く、信頼できないと言っています。彼らの言うことが本当なら、

于 2009-12-06T19:32:41.057 に答える
5

Firebirdは非常に良い選択だと思います

  • それは無料です
  • 組み込み版あり
于 2009-12-06T20:13:49.360 に答える
4

SQL Server Expressは無料で、ほとんどのコードを書き直す必要がなくなります。

于 2009-12-06T19:31:27.563 に答える
3

マルチユーザー環境でsqliteを使用できるようにするsqliteサーバーがあります。ここを読んでください:http ://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork 。これらのソリューションがどのように機能し、拡張できるかはわかりません。

于 2009-12-10T19:54:28.503 に答える
2

データ ファイルをネットワーク ドライブに配置し、アプリの複数のインスタンスが同時にアクセスできるようにすると、データ ファイルが破損すると仮定する理由がわかりません。主に読書をするなら、大丈夫なはずです。同時に書き込むことができるインスタンスは 1 つだけであるため、多くの書き込みを行うと、おそらくパフォーマンス ヒットが発生します。( http://www.sqlite.org/faq.htmlを参照)

大量の書き込みを行う場合、スタンドアロン サーバーのインストールが必要になる可能性があります。MS SQL Server Express を検討しましたか? 起動して実行するのは簡単でシンプルでなければなりません。

于 2009-12-06T19:31:37.440 に答える
0

遅すぎることはわかっていますが、最近では、データベースの抽象化を提供するフレームワークなしでアプリケーションを作成する必要がある人はいないはずです。

個人的には、Python ベースの Web フレームワークである Web2py を使用しています。デフォルトでは、ローカル デスクトップ上のシングル ユーザー アプリや、主に読み取り操作であるローカル ネットワーク上の小規模から中規模のアプリに最適な SQLite を使用します。ただし、アプリの使用範囲を拡大する場合は、データベース モーダルの接続文字列を別のデータベースを使用するように変更するだけです。Web2py または使用する価値のあるその他のフレームワークは、単に SQL ステートメントを書き直して、新しい要件を満たすだけです。

于 2012-11-15T13:30:33.907 に答える