ファイルシステムにおけるパフォーマンスの最適化、検索データ

Samarjit Baruah:

私の周り500万TXTファイルがある約3万トランザクションに関連しているネットワークに関連するストレージを持っています。総データのサイズは約3.5 TBです。私は、トランザクション関連のファイルが利用可能であるかどうかを見つけるために、その場所を検索し、「利用可能なファイル」と「利用できないファイル」のCSVファイルとして二つの別々のレポートを作るために持っている必要があります。私たちは、JAVA 6にまだ私は再帰的な場所に検索する必要があるため、私は直面しています、それが原因で巨大なサイズのその場所で検索するには平均2分の周りに私を取ることを課題としています。私は以下のように再帰的に検索するためにJavaのI / O APIを使用しています。私は、パフォーマンスを向上させることができます方法はありますか?

File searchFile(File location, String fileName) {
     if (location.isDirectory()) {
         File[] arr = location.listFiles();
         for (File f : arr) {
             File found = searchFile(f, fileName);
             if (found != null)
                 return found;
         }
     } else {
         if (location.getName().equals(fileName)) {
             return location;
         }
     }
     return null;
}
utpal416:
  • ディレクトリが大きすぎる/深さであるとき、ディレクトリでの検索や、ネットワークに関連するストレージがnightmare.Itであることは多くの時間を要します。あなたは、Java 6であるとして、だから、昔ながらのアプローチに従うことができます。以下のようなCSVファイル内のすべてのファイルを一覧表示します。
  • たとえば、

    見つけます。-type F -name '* .txtの' >>のtest.CSV。(UNIXの場合)

    DIR / B / S * .TXT>のtest.CSV(Windowsの場合)

  • 今、ファイル名としてインデックスを持っている地図には、このCSVファイルを読み込みます。(それがファイル名になりますように)、それは巨大であるように、ファイルがいくつかの時間がかかりますが、あなたはマップで検索後、ロード後にロードすると、はるかに迅速になり、大幅な検索時間を短縮します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=180919&siteId=1