MongoDBドキュメントでの配列とハッシュの内部割り当てと配置(私の理解では、配列を介して実装されている)を理解しようとしています。
私たちのドメインには、最大 5 ~ 6 レベルの深さ (ネストされたハッシュを考えてください) までの論理グループに、数千から数十万のキーと値のペアを含むドキュメントがあります。
キーのネストをドットで表します。たとえば、x.y.z
MongoDB に挿入すると、自動的に次のようになります。
{
"_id" : "whatever",
"x" : {
"y" : {
"z" : 5
}
}
}
最も一般的な操作は、値をインクリメントすることです。これは、atomic を使用して行います$inc
。通常は、1 回の更新コマンドで一度に 1000 以上の値を処理します。新しいキーは時間の経過とともに追加されますが、頻繁ではありません (たとえば、1 日 100 回)。
別の表現は、名前にドットを使用せず、他の区切り文字を使用して、フラットなドキュメントを作成することであると思いました。
{
"_id" : "whatever",
"x-y-z" : 5
}
キーと値のペアの数と、$inc
更新と新しいキーの挿入に関する使用パターンを考慮して、次の観点から 2 つのアプローチ間のトレードオフに関するガイダンスを探しています。
ディスク上のスペース オーバーヘッド
$inc
更新のパフォーマンス新しいキー挿入のパフォーマンス