3

私はC#アプリケーションを開発しており、これらの仕様に適合するデータストレージに最適な選択肢を確実に選択したいと考えています。

プログラムには無限の量のデータを含めることができますが、そのデータは、アプリケーションを使用している1人のユーザーによってのみ使用されます。アプリケーションを閉じるたびにデータを保存する必要があり、アプリケーションの起動時にデータをロードする必要があります。

私はデータベースを見てきましたが、どれが私のニーズに最も適しているかわかりません。また、上記の仕様でデータベースが必要かどうか疑問に思います。おそらく、シリアル化と逆シリアル化を実装するバイナリファイル/XMLファイルを使用する必要があります。

私を正しい方向に向けてください!

ありがとう、OC

編集:私が含めるのを忘れた重要な要素の1つは、1人のユーザーが入力したすべてのエントリを保存し、アプリケーション/ユーザー間で簡単に共有できる外部ファイルにエクスポートできるようにする必要があることです。

4

4 に答える 4

6

特定のアプリケーションが何をするのかを詳しく知らなければ、データベースが正しい選択であるかどうかを(私たちにとって)言うのは難しいです。ただし、決定を導くために使用できる経験則がいくつかあります。

データベースは、次の場合に適しています。

  • データは複数のユーザーによって使用される場合があります。
  • 同時アクティビティが可能な場合は、正しく保存する必要があります。
  • 収集されたデータすべてを一度にメモリにロードする必要がない場合。
  • 複雑な方法でデータを照会またはレポートできるようにしたい場合。
  • 標準ツールを使用して保存されているデータに透明性を持たせたい場合。
  • データストア全体を再構築する必要はなく、変更の大部分がローカライズされている場合。
  • データが(階層表現ではなく)リレーショナルに適している場合。

次の場合、データベースは最良の選択ではない可能性があります。

  • 1人のユーザーにのみサービスを提供します。
  • 同時アクティビティはほとんどなく、変更を保存するときにデータモデル全体を再作成する必要があります。
  • データが非常に少なく、一度にメモリにロードされる場合。
  • データが階層的であるか、関係的にモデル化するのが難しい場合。
  • アプリケーションがドキュメント指向であり、ドキュメント(ファイル)が他のユーザーに送信される場合。
  • 保存するデータに大量のバイナリデータが散在している場合。
  • サードパーティのツールやサービスへの依存を避けたい場合。
  • データモデルの構造が頻繁に変更される可能性がある場合。

これらはすべて経験則です...データベースを使用するかどうかを決定する単一の条件はありません。すべての考慮事項を検討し、データベースを使用することで十分なメリットが得られるかどうかを判断する必要があります。

多くの環境(iPhoneなど)では、プラットフォーム上で直接利用できる組み込みのデータベースレイヤーがあります。オブジェクトリレーショナルモデリング(ORM)のインピーダンスの不一致を克服するのに役立つツール(NSCoreDataなど)もあります。このような場合、非常に単純なデータストレージにデータベースを使用することは非常に理にかなっています。

データベースを永続ストアとして使用することを簡素化するのに役立つオープンソースのデータ永続レイヤー(NHiberante、DB4Oなど)も多数あります。これらを使用できる場合は、データベースの使用を優先して方程式をシフトできます。 。

データベースを使用すると、クエリや検索機能をサポートする必要がある場合に、アプリケーションの開発を大幅に簡素化できます。リレーショナルデータベースはクエリ言語(SQL)をサポートしているため、データベースから結果を識別して取得する作業がはるかに簡単になります。データベースはクエリ操作を正しく効率的に実行するように特別に設計されているため、データベースに手間のかかる作業を任せることで、時間を大幅に節約できます。ただし、これには、適切に設計されたリレーショナルデータ構造が犠牲になります。これを作成する必要があります。

重要な考慮事項の1つは、ユーザーがアプリケーションを使用して作成/消費するデータを共有するかどうかです。アプリケーションがよりドキュメント指向である場合(Word、Excel、Powerpointなど)、ファイルベースのシリアル化モデルの方が適切な場合があります。アプリケーションのデータが共有されない場合は、データベースが理にかなっている可能性があります。

もう1つの重要な要素は、データをどれだけオープンにするかです。データベースは、明確に定義された構造(テーブル)に情報を格納します。これにより、ユーザー(およびユーザー)がデータに直接アクセスして検査することが容易になります。XMLのようなストレージ形式でもこれが可能ですが、程度はやや劣ります。

于 2010-08-18T16:34:51.617 に答える
4

MySQLやSQLServerのような本格的なクライアント/サーバーデータベースは、おそらく1人のユーザーにとってはやり過ぎでしょう。ただし、 SQLiteSQL Server CEなどの組み込み/ファイルベースのエンジンを使用すると、特にIDで単一のレコードを検索するだけでなく、データをさらに活用したい場合に役立ちます。データストレージを自分で作成した場合、特定の条件を満たすレコードを取得するには、大量のコードを作成する必要があります。私は、それを生活のために行う人々ほどうまく機能しないことを保証します。

于 2010-08-18T16:32:35.387 に答える
2

個人的には、アプリケーションを使用しているユーザーの数よりも、データに関するものです。

あなたのデータについて考えてください、それは複雑ですか?実際にデータベースを作成する場合、行の数ではなく、オブジェクトの観点からデータベースのサイズはどれくらいになるでしょうか...テーブルの数など...

将来について考えてみてください。ユーザーは1人だけですが、データはまだ増え続けると思います。毎回どのくらいのデータが保存されるのでしょうか。

データベースアプローチは間違いなく開発をスピードアップします-そしてあなたのデータはXMLファイルよりも良い整合性を持ちます。私は個人的にファイルを使うのが嫌いです...私は過去にファイルからデータが失われたなどの経験があります。

リソースを制限したい場合は、SQLCompactEditionが常に存在することを忘れないでください。

于 2010-08-18T16:32:11.310 に答える
1

ストレージ機能をリポジトリに実装する場合1)2)、ファイルへの保存から始めて、後で必要性を特定した場合はデータベースストレージに移動できます。

1)http://martinfowler.com/eaaCatalog/repository.html
2)https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08 /the-repository-pattern.aspx

于 2010-08-18T16:34:33.497 に答える