大規模な辞書にアクセスする

大規模な辞書にアクセスする

たとえば、250,000 の辞書エントリが同じ数のファイルに分割されているとします。各ファイルは見出し語を含む行で始まります。これらを合わせると 2 GB になります。単語を簡単にすばやく調べられるように情報を整理する最適な方法は何でしょうか。abc などのサブディレクトリを作成する必要がありますか。複数のファイルを結合して、より大きなファイルにする必要がありますか。

答え1

何をしようとしているのか、データが何なのかについてはあまり触れられていませんが、私の考えは、すべての単語が一意であると仮定しています。ディスク領域の効率的な使用について懸念しているとは述べられていません。

Ext4 ファイルシステム。各単語を 1 つの大きなディレクトリ内の個別のファイルに保存します。ファイルシステムにそれらを見つけさせます。非常に簡単です (必要なファイルを名前で開くだけです)。ファイルシステムには、ファイルを見つけるための効率的な方法があります。

ファイルシステムに十分な空き inode があることを確認する必要があります。ファイルごとに 1 つずつあるため、250,000 個の空き inode が必要ですdu -i

lsファイルを列挙する必要がある操作(ファイル ブラウザーで開くなど)を避ければ、パフォーマンスは良好になるはずです。

答え2

Python辞書のような辞書の場合は、JSONに変換してMongoDBまたはNoSQL実装に保存し、データベースからアクセスします。

関連情報