0

これらのどれが私のアプリケーションのニーズに最も適しているのか疑問に思っていました. アプリケーションは複数の PC に分散され、共通のデータベースを共有します。このデータベースには、最大で約 20,000 のエントリを含めることができます。基本的に、これは単なるミーティング マネージャーであり、DB 内の各エントリはミーティングを表します。

たとえば、特定の人物が関係するすべての会議や、特定のオブジェクトとのすべての会議を表示したい場合があります。これは私が作成したいデータ表現にすぎないため、この時点ではそれほど重要ではありません。

実際、私には特定の制限があります。

  • 私はC#でアプリケーションをやっています
  • ユーザーの PC に何もインストールできません (必要に応じて .exe + dll のみをコピーする必要があります)。
  • データベースはネットワーク ストレージ上に配置され、最大 10 台の PC から同時にアクセスされる可能性があります
  • 私は SQL Server CE も SQLite も使用したことがありません (実際には他の DB も使用していません)。

私が最初に思いついたのは、純粋な XML データベースを使用することでした。これは、.NET クラス シリアライザーを使用すると非常に簡単だからです。データベースを変更するには、ユーザーはファイルへの書き込みアクセスを取得する必要があります。その間、他のすべてのユーザーは読み取り専用になります。このアクセス権を取得したときに作成されたファイルを介して、誰が書き込みアクセス権を所有しているかをいつでも知ることができます。読み取りモードの各アプリケーションには、XML ファイルを監視する実行中のプロセスもあり、データベースに変更が加えられた場合にユーザーに通知し、ユーザーが再読み込みできるようにします。

SQLite と SQL Server CE について少し聞いたことがありますが、スケーラビリティとパフォーマンスの点で正しいアプローチがあるかどうかはよくわかりません。それらの使い方を学ぶことは気にしません。私の主な懸念は、ユーザーの PC に何もインストールできないことと、アプリケーションの展開をユーザーにとってできるだけ簡単にしたいことです (理想的には、アプリケーション フォルダーをコピーして貼り付けます)。

だからここに質問があります:

EDIT 2:私が求めているものではないSQLiteとSQL Server CEに関する議論が生じる可能性があるため、閉鎖されたと思います

  1. 上記のような状況では、XML ファイルと真のデータベースのどちらを使用するのがよいでしょうか?
  2. 多くのエントリがある場合、「真の」データベースはパフォーマンス以外に XML よりもどのような利点がありますか?

類似の質問: Xml または Sqlite、データベースの Xml をドロップするのはいつですか?

編集:私がいる文脈を理解するのを助けるために、ここにあなたのためのより多くの情報があります:

実際に使用するシステムはワードです。すべては、ネットワーク上の一部のユーザー間で共有されるフォルダー内のファイルに書き込まれます。ユーザーは、このファイルから情報を取得して、必要なデータ表現に従って他のファイルを作成します。彼らのプロセスを容易にするアプリケーションを作成したいと考えています。彼らは自分たちのシステムに慣れているので、私のアプリケーションをインストールするためになんらかの操作が必要な場合、彼らは自分たちのシステムに固執したいと思うでしょう。各インストールは、特に非公式アプリケーションの場合、遅くて複雑な IT サービスを通過する必要があります。

これらの PC は、おそらく、ユーザーが一般的なタスク以外のことを行うのを妨げています。そのため、アプリケーションをできるだけシンプルにしたいと考えています (実行可能ファイルと dll を USB キー経由で渡すことができ、最小限のユーザー操作でそのまま実行できます)。

4

2 に答える 2

4

要件に応じて、以下を処理するデータベースが必要です。

  1. 並行性を処理します
  2. ネットワークを介して適切に動作します。ファイル共有は良い習慣ではなく、ネットワークで機能するデータベースには、アクセスを制御するためのDBMSが必要です。
  3. トランザクション
  4. ユーザー管理とセキュリティ(認証/承認)。ネットワークで公開している限り、それが必要です。

すべての要件に基づいて、SQLite / SQL CE/XMLファイルのどれも良い答えではないと思います。これらはすべて、(ネットワーク経由ではなく)ローカルデータベースが必要な状況で役立ちます。ネットワークベースのデータベースが必要になるとすぐに、前述のように、同時実行性、セキュリティなど、より高度なものが必要になります。無料、スケーラブル、安全、ネットワークアクセス可能で公平なSQLExpress2012を使用できることをお勧めします。扱いやすい。

経験則として、リモートユーザーが10人いる場合、将来的にはユーザーが増える可能性が非常に高くなります。したがって、DBの変更は後で簡単な作業ではないため、より強力なオプションを選択してください。

于 2012-12-06T23:19:30.260 に答える
0

Sqliteのようなデータベースは、マルチユーザーの読み取り/書き込みの問題を処理します。XMLファイルは、データが変更されるたびにメモリにキャッシュされ、シリアルに書き込まれる必要があります。1人のユーザーだけがファイルに書き込むようにする外部戦略を考え出したとしても、ファイルが更新されている間、他のユーザーが読んでいる可能性があります。

最後に、組み込みデータベースは、処理するデータの量が多いほど効率的になります。

于 2012-12-06T23:20:09.417 に答える