1

MongoDBにコレクションのようなマイナーファイルシステムを実装したい。

だから私のオブジェクトはこのように見えると言います

{ 
    "\":{
        'autoexec.bat':{ 
            name:'autoexec',
            filetype:'bat',
            size:1302
    },

    'users':{ /* its own tree */ },
    'windows':{ 
        'system':{ 
            'autoexec.bat':{
                name:'autoexec',
                filetype:'bat',
                size:1302123
            } 
        }
    }
}

「autoexec.bat」という用語を最も効率的な方法で見つける方法を考えています。さらに、ファイルツリーの場合、Node.jsまたはC ++で同じものを実装するためのより良い方法はありますか?検索などの機能を実装したい。

4

2 に答える 2

2

私は言うだろう:1つの巨大な文書でこれをしないでください。各ファイルをコレクション内の独自のドキュメントとし、親と(おそらく)子を参照します。現在、ほとんどすべての操作は簡単です。ツリー全体を読んだり削除したりするための効率的な方法を考えるだけです。

于 2012-05-26T15:50:57.393 に答える
0

先週、MongoNYCでKyle Bankerが、例を挙げてスキーマ設計について素晴らしい講演を行いました。あなたの問題は、彼の最初の音楽ジャンル階層の例と非常に似ていると思います。

実際には、すべてのファイルのコレクションにドキュメントが含まれます。直接の親(この場合はディレクトリ)を識別するための親フィールドと、そのすべての祖先の配列があります。

現在簡単になっているクエリは次のとおりです。-ファイル"autoexec.bat"のディレクトリ-ディレクトリ"foo"のすべてのファイルを一覧表示します-ディレクトリfooのすべてのファイルを再帰的に一覧表示します(祖先に"foo"が含まれるすべてのファイル)。

また、フルパス名とそのベース名をファイル/ディレクトリに保存するオプションもあることを忘れないでください。これにより、フィールドにインデックスが付けられている場合、パスの先頭部分で検索できます。また、ファイル名だけとは異なり、一意になります。

いつものように、重要な情報は、このコレクションとパフォーマンスおよび負荷の期待値を照会するために必要なすべての方法です。それがなければ、後でいくつかの課題を与えるスキーマを簡単に選択できます。

于 2012-05-26T17:59:50.047 に答える