私の仕事は、JSONのリストを(データベースを使用せずに)ディスクに保存することであり、次のオプションがあります。
それらを単一の大きなファイルに保存します。
IDをキーとして、別々のファイルに保存します。
個人的には、他のJSONに触れることなく、IDでJSONを直接アドレス指定できる2番目のオプションを好みます。ただし、ほぼ10万から100万のJSONエントリがあり、基盤となるファイルシステム(私の場合はext4)に悪影響が及ぶ可能性があることを恐れています。
これは、(ディレクトリ内またはファイルシステム全体の)ファイル数に関するファイルシステムの制限を超えますか?
これにより、特定のIDの取得中に速度が低下しますか?
具体的には、ディレクトリの下にあるファイルのリストは、ディレクトリのiノード構造によって維持されていると思いますが、ファイルリストを保持するためにどのデータ構造(リストまたはマップ)を使用しているかはわかりません。ディレクトリの階層を使用すると、ルックアップでパフォーマンスが向上しますか?たとえば、put 0123456789.json
からroot/01/0123456789.json
の代わりに root/0123456789.json
?
1つのディレクトリに100万個のファイルがあると処理速度が低下しますが、100万個のエントリを持つ集約JSONを解析することになります。最善の策は確かにハッシュディレクトリを使用することですが、おそらく1つではなく2つのレベルを深くしたいと思うでしょう。つまり、0123456789.json
in root/0/01/0123456789.json
、および987654321.json
in root/9/98/987654321.json
。