1

新しいプロジェクトを開始していますが、データに関する制約があります。基本的に、「データ」は実際には明確に定義された階層に編成された一連のファイルです。

クライアントは、Windows ファイル エクスプローラーを使用してこれらのファイルにアクセスできるようにすると同時に、プログラムにデータをロードして、情報の詳細なビューを取得できるようにしたいと考えています。このプログラムは、ファイルをロードして解析し、必要な情報を抽出します。ファイルに対して何らかのクエリを実行できる必要があります(最終変更日、サイズ、特定の種類のすべてのファイル)

私の問題は、これらの 2 つのビューを結合できるようにすることです。

私の最初のアイデアは、パスとファイルに関するいくつかのメタデータを保持するデータベースでファイル システムをバックアップすることでした...しかし、この種のことを達成するための何らかの種類のファイルシステムの抽象化があるかどうか、私はさまよっていましたか? またはドキュメントベースのデータベースを使用できますか?

基本的に、ファイルシステムをできるだけ扱いたくありません (しかし、そうすべきではないかもしれません)。

これが曖昧すぎないことを願っています...ありがとう。

4

1 に答える 1

2

私には建築上の問題のように聞こえます。

実際のファイルへの結合を避けるために、プレゼンテーション層とデータ ソースの間に抽象化層を使用することをお勧めします。ファイル アクセスとデータベース アクセスの両方に共通のインターフェイスを確立します。アプリケーションは、ファイルやデータベース データ、または将来の変更で必要になる可能性のあるその他のソースを処理しているかどうかを知る必要はありません。ここでは、リポジトリの設計パターンを実装すると便利です。

また、基礎となるファイル/データベース構造から完全に独立した汎用データ アクセス オブジェクトを使用することをお勧めします。これにより、アプリケーション自体に触れることなく、さまざまなデータ アクセス方法を試すことができます。

ドキュメント指向データベースに関しては、私はこの分野の経験がありません。しかし、たとえばRavenDbは、すぐに使用できる .NET サポートを備えた人気のあるオープン ソース製品であり、一見の価値があります。

アプリケーションと Windows エクスプローラーを介した二重アクセスについて考えると、FileSystemWatcherを使用してファイルが変更されたかどうかを確認し、対応するデータベース エントリを変更された内容で更新することを検討する必要があります。

もちろん、これが有用なアプローチであるかどうかは、データが変更される頻度に大きく依存します。ファイルが頻繁に編集されると、DB アクセスに過剰な負荷がかかる可能性があります。パフォーマンスへの影響の可能性を早期に確認する必要があります。

他のアイデアについては、より多くの情報が必要になるでしょう。しかし、少なくともこれらの考えが出発点になるかもしれません。

于 2012-12-13T11:27:45.940 に答える