0

タイトルが悪くてすみません。

ウェブページを保存しています。現在、1 つの XML ファイルをインデックスとして使用しています。1 つの要素には、ファイル作成日 (UTC)、完全な URL (クエリ文字列など) が含まれます。また、同様の名前で特別な拡張子が追加された別のファイルのヘッダー。

ただし、40k (ヘッダーを含む) ファイルになると、XML は 3.5 MB になります。最近、私はまだ読んでいて、新しいエントリを追加して、この XML ファイルを保存しました。しかし、今ではそれを記憶に留めて、時々保存しています。

ページをリクエストすると、XML ファイルの XPath を使用して URL が検索され、エントリがあればファイル パスが返されます。

ディレクトリ構造は .\www.host.com/ randomFilename.randext です

だから私はより良い方法を探しています。

考えている:

  • あたり 1 つの XML ファイル。ドメイン (サブドメインを含む)。しかし、これは面倒かもしれないと思います。
  • SVN の使用。テストしたばかりですが、大規模なリポジトリでの経験はありません。ダウンロードごとにsvn add " path to file " を実行し、完了したらコミットします。
  • カスタムファイルシステムを作成し、そこに必要なものすべてを含めることができます. POST データ。
  • URL からファイル名を生成し、何らかの方法でクエリ文字列を平坦化しますが、大きなクエリ文字列は OS によって拒否される可能性があります。また、ヘッダーと一緒に保存する場合でも、それぞれのクエリ文字列にマップされた複数のファイルを追跡する必要があります。面倒。また、実行が遅すぎることも望ましくありません。

複数のプログラム インスタンスが、異なるコンピューター上で読み取り/書き込み操作を実行します。

ディレクトリ/ファイルの方法に従えば、理論的には間にレイヤーを追加して、その場でDotNetZipを使用することができます。しかし、やはりクエリ文字列です。

私はここで方向性や経験を探しています。

私が必要としているのは、これらのファイルの履歴を保持する機能です。これにより、ローカル ファイルが上書きされず、必要なバージョンを (日付で) 選択できます。それが私がSVNを試した理由です。

4

2 に答える 2

0

2 つのデータ ストアを使用します。1 つは生ファイル用、もう 1 つはインデックス用です。

フラット ファイルを保存するには、Berkeley DB が適切な選択だと思います。キーは md5 またはその他のハッシュ関数によって生成でき、ファイルの内容を圧縮してディスク領域を節約することもできます。

インデックスには、リレーショナル データベースまたは Lucene などのより高度なテキスト検索エンジンを使用できます。

于 2009-08-30T22:48:36.327 に答える
0

リレーショナル データベースまたはバージョン管理システムのいずれかをお勧めします。

SQL Server 2008 の新しいFILESTREAM機能を使用して、ファイル自体をデータベースに格納することをお勧めします。

于 2009-08-30T20:10:18.067 に答える