私は、今後のプロジェクトで使用するデータベースに適したものを見つけるという任務を負っています。相性の良いものを探すのに苦労しています。このアプリケーションは、.Net Framework 4.0 C# アプリケーションです。
最初に SQLite を見ましたが、書き込み中に SQLite がデータベース ファイルをロックするため、問題が発生しています。
同じデータベースを使用して 2 つの別々のアプリケーションを同時に実行していますが、いつ書き込みを行っているかわかりません。ロックが解放されるのを待ちましたが、これにより一部のデータが失われました。そこで、キューシステムを発明しようと思ったのですが、両方のアプリケーションが同じキューを使用する必要があるので、別の Window のサービスを作成するだけでよいと考えました。これらすべてが、私には従来の RDBMS のように聞こえ始めました。
私は後戻りして、「正しいデータベースを使用しているか?」と自問することにしました。
私が与えられた要件を満たす可能性のあるデータベースを知っている人はいますか?
私の要件は次のとおりです。 1. インストールが簡単。これには、ユーザーがアプリケーションのインストールとは別に実行する必要がある別の「インストーラー」がないことも含まれます。これが、埋め込みデータベースが必要だと最初に信じさせた理由ですが、インストーラー内にデータベースのインストールを含めるには、いくつかの巧妙な方法があると思います。
壊れにくい。ここでの最大の要望は、セキュリティ上の懸念 (または、人々のシステム構成がアプリケーションを壊す可能性を減らすもの) のために、TCP/IP の代わりに名前付きパイプで動作できるようにすることです。アプリケーションは常に同じマシンで実行されます。彼らは同じデータベースを共有する必要があるため、ファイアウォール/セキュリティ/「スマート ユーザー」が関与すると、TCP/IP を使用すると問題が発生する可能性があります。
データベースで長時間実行される操作によって、他のユーザーによるデータベースへの読み取り/書き込みが妨げられるべきではありません。この要件を処理し、まだ Sqlite を使用するコードを書くことを考えましたが、さらに宿題をすることにしました。
ライセンス: ロイヤリティ フリーで再配布できるものが必要です。エンド ユーザーが、依存するデータベース用に個別のライセンスを購入する必要はありません。
サイズの制限: これらのデータベースにはかなりの量のデータを保存する予定であり、任意の制限は受け入れられません。オペレーティング システムによって課されるファイル サイズの制限を受け入れます。SQLite のサイズ制限 (Windows マシンのファイルのサイズ制限) は 2 テラバイトを超えていました。
あると便利: Entity Framework を使用できること。
あると便利: リレーショナル データベース。サードパーティのアプリケーションがデータベースを読み取ることを許可する場合がありますが、それがドキュメント データベースやオブジェクト データベースではなくリレーショナルであっても問題ありません。ただし、すべての要件を満たすものを求めて、これを喜んで受け入れます.
これまでに調べたデータベース: RavenDB SQLite CubeSQLite SQL CE
Oracle と Microsoft SQL Server はライセンスされており、再配布が困難です。
これらの要件が非常に制限的であることを理解しています。すぐに使用できるソリューションがあるかどうかもわかりません。どなたでもご協力いただければ幸いです。