ドキュメントのサイズが異なることに正しく気づきました。したがって、少なくとも15 bytes
を節約できます ドキュメントごと(60%
同様のドキュメントの場合)2番目のスキーマを採用することにした場合。これは、140MB
のようなものになります あなたの10 million
のために 記録。これにより、次の利点が得られます。
- HDDの節約。 唯一の問題は、現在のHDDの価格を見ると、これはほとんど役に立たないということです。
- RAMの節約。 ハードディスクと比較すると、これはインデックス作成に役立ちます。 のmongodbワーキングセットでは、インデックスをRAMに収めて、優れたパフォーマンスを実現する必要があります。パフォーマンス
。したがって、これら2つのフィールドにインデックスを付ける場合は、
140MB
を節約するだけではありません。 HDDスペースだけでなく140MB
潜在的なRAMスペース(実際には注目に値する)の。 - I / O 。入出力システムの制限により、多くのボトルネックが発生します(ディスクからの読み取り/書き込みの速度が制限されます)。ドキュメントの場合、これは、スキーマ2を使用すると、
twice as many documents
の読み取り/書き込みが可能になる可能性があることを意味します。 1秒あたり。 - ネットワーク 。多くの場合、ネットワークはIOよりもはるかに低速であり、DBサーバーが別のマシン上にある場合は、アプリケーションサーバーにデータをネットワーク経由で送信する必要があります。また、2倍のデータを送信することもできます。
利点について説明した後、小さなキーの欠点について説明する必要があります。
- データベースの読みやすさ。
db.coll.findOne()
を実行する場合{_id: 1, t: 13423, a: 3, b:0.2}
が表示されます ここに正確に何が保存されているかを理解するのはかなり難しいです。 - アプリケーションの読みやすさ データベースと似ていますが、少なくともここで解決策を得ることができます。
currentDate
を変換するマッピングロジックを使用c
へ およびprice
p
へ クリーンなコードを記述して、短いスキーマを作成できます。