6

1 人のユーザーが顧客と求人サイトに関する情報を入力できる C# アプリケーションがあります。情報は非常に基本的なものです。

  • 顧客: 名前、番号、住所、電子メール、関連する求人サイト。
  • 勤務地: 名前、場所。

このプログラムに必要な仕様は次のとおりです。

  • 入力データ量に制限はありません。
  • アプリケーションごとに 1 人のユーザー。同時アクティビティや複数のユーザーはありません。
  • アプリケーション/ユーザー間で簡単に共有できる外部ファイルにユーザー エントリ/データをエクスポートできるようにします。
  • 顧客情報/求人サイト情報のさまざまな組み合わせに基づいて、ユーザー クエリが顧客を表示できるようにします。
  • データがアプリケーションの外部で表示または操作されることはありません。
  • プログラムはほとんど常に実行されており、タスク バーに最小化されています。
  • 起動時間はそれほど重要ではありませんが、クエリをかなり高速にしたいと考えています。

これはすべて、データベースを指しているように見えますが、非常に軽量です。ただし、データストレージに関して制限がないことも必要です。データベースを使用することに同意する場合は、私のニーズに最適なものを教えてください。データベースを使用する必要がないと思われる場合は、他に最適と思われる方法を提案してください。

4

6 に答える 6

4

私の提案は、SQLite を使用することです。ここで見つけることができます: http://sqlite.org/また、C# ラッパーのバージョンはhttp://sqlite.phxsoftware.com/にあります。

SQLite は非常に軽量で、このような軽量エンジン向けの非常に強力な機能を備えています。調べることができる別のオプションは、Microsoft Access です。

于 2010-08-18T17:17:02.427 に答える
4

あなたはまた間違った質問をしています:)

より適切な質問は、「データ ストレージの実装を変更できるアプリケーションをどのように構築すればよいか」ということです。

リポジトリ パターンを適用し、適切に接続すると、交換可能な永続化レイヤーを構築できます。したがって、1 つの実装から始めて、必要に応じて変更することができ、ビジネスまたはアプリケーション層を再設計する必要はありません。


リポジトリ インターフェイスを取得したら、多くの異なるアプローチで実装を試すことができます。

フラット ファイル- データを XML として永続化できます。大量のデータではない場合は、完全なコンテンツをメモリ内に格納できます (起動時にファイルを読み取り、シャットダウン時にファイルを書き込むだけです)。インメモリ XML を使用すると、データベース インデックスなどを気にすることなく、非常に高いスループットを得ることができます。

分散可能 DB - SQLite または SQL Compact はうまく機能します。多くのDBの利点を提供し、インストールは不要です

ローカル DB - SQL Express は、軽量 DB とフル機能 DB の中間に位置します。アクセスは、慎重に使用すれば十分です。主な利点は、MS Office に含まれていること (既定ではインストールされません) であり、一部の IT グループは、SQL Express よりも Access をマシンにインストールする方が快適であることです。

フル DB - MySql、SQL Server、PostGreSQL など。


特定の要件を考えると、XML ベースのフラット ファイルをお勧めします。唯一の条件は、ファイルのサイズに直接相関するアプリケーションのメモリ使用量に問題がないことです (データはテキストであるため、. XML の重みを考慮すると、非常に大きくなるには多くのエントリが必要になります)。

要件ごとにリストされた長所/短所は次のとおりです。

短所

  • 入力データ量に制限はありません。
    • インメモリ XML を使用すると、アプリケーションが拡張できなくなります。10MB のデータファイルを簡単に処理できます。100MB は問題にならないはずです (システムの RAM が不足していない限り)。

長所

  • アプリケーションごとに 1 人のユーザー。同時アクティビティや複数のユーザーはありません。
    • XML はメモリに読み込まれ、プロセス (実際には AppDomain) によって保持されます。これは、同時実行性が非常に限定的な問題であるシングル ユーザー シナリオに最適です。
  • アプリケーション/ユーザー間で簡単に共有できる外部ファイルにユーザー エントリ/データをエクスポートできるようにします。
    • XML はエクスポートに最適で、Excel やデータベースなどに簡単にインポートできます。
  • 顧客情報/求人サイト情報のさまざまな組み合わせに基づいて、ユーザー クエリが顧客を表示できるようにします。
    • Linq-to-XML はあなたの友達です :D
  • データがアプリケーションの外部で表示または操作されることはありません。
    • ....完全にメモリ内に保持しても問題はありません
  • プログラムはほとんど常に実行されており、タスク バーに最小化されています。
    • そのため、起動時に XML をロードし、シャットダウン時に書き込むことができます (ファイルが非常に大きい場合、時間がかかる場合があります)。
  • 起動時間はそれほど重要ではありませんが、クエリをかなり高速にしたいと考えています
    • XML の読み取りは、起動時に比較的遅くなります。しかし、メモリ内にロードされると、打ち負かすのは難しくなります。特定の DB では、DB エンジンが開始されていること、相互運用/クロスプロセス/クロスネットワーク呼び出しが行われていること、結果がディスクからロードされていること (エンジンによってキャッシュされていない場合) などが必要です。
于 2010-08-18T17:21:33.387 に答える
3

データベースは 100% 必要なもののように思えます。データ ストレージ、データ取得 (クエリを含む)、およびデータを標準形式にエクスポートする機能 (データベースから直接、またはアプリケーションを介して) の両方を提供します。

軽いデータベースの場合は、SQLite (「SQL Lite」と発音します;)) をお勧めします。セットアップ方法に関するチュートリアル、および C# コードを介してインターフェイスする方法については、Google で検索できます。また、このSQLite 用の C# ラッパーへのリファレンスも見つけました。

于 2010-08-18T17:18:14.903 に答える
3

SQLiteはどうですか? あなたのアプリケーションにぴったりのようです。

System.Data.SQLiteを .NET ラッパーとして使用できます。

于 2010-08-18T17:15:39.363 に答える
0

SQL Server Express は無料で入手できます。問題は、なぜデータベースを使用する必要があるのか​​ということではなく、なぜデータベースを使用しないのかということです。この種の問題はまさにデータベースの目的であり、SQL Server は非常に強力で広く使用されているデータベースであるため、他のソリューション使用する場合は、データベースを使用しない正当な理由を提供する必要があります。 .

于 2010-08-18T17:20:47.870 に答える
0

データベースが適しています。 他の人が言及したように、 SQLiteは優れています。

また、 SQL Server Expressのローカル インスタンスを使用して、Microsoft 開発スタックの他の部分との改善された統合を利用することもできます (C# に言及しているため)。

3 番目のオプションは、Ravenのようなドキュメント データベースで、データのサウンドに適合する可能性があります。

edit
4 番目のオプションは、ベータ版が数日後に公開されたら、 Lightswitchを試すことです。(2010 年 8 月 23 日)
/edit

データ ストレージ (ハードディスクの空き容量) には常に制限があります。ウィキペディアによると、SQL Express は、SQL Server Express 2008 R2 では 10 GB に制限されています。

于 2010-08-18T17:24:34.990 に答える