スキーマレスは少し誤称です。次のように考える方がよいでしょう。
- SQL=書き込み時にRDBMSによって適用されるスキーマ
- NoSQL =書き込み時にDBMSによって強制される部分スキーマ、読み取り時にアプリケーションによって完全に強制されるPLUSスキーマ(外部化されたスキーマ)
したがって、想定されるスキーマレスのNoSQLデータストアでは、理論的には、キーやデータ型についての事前の知識がなくても、好きなデータ(通常はキーと値のペアをドキュメントに)を保存できますが、データを取得して使用するためのメカニズム。したがって、基本的に、スキーマはRDBMSからアプリケーションコードに部分的に移動されます。ドキュメントコレクションにインデックスを追加したり、パフォーマンスのためにデータを分割したりするので、部分的に言います。そのため、NoSQL DBMSには、ローカルで定義された部分スキーマがあり、場合によっては一意の制約を介して適用されます。
ストア内のドキュメント/オブジェクトに属性を追加することについて。ドキュメント(未使用スペース)の周囲のパディングの量によっては、その物理データブロックで、ドキュメントにさらにいくつかのキーと値のペアを追加すると、ドキュメントをより大きな連続したストレージブロックに物理的に移動する必要が生じる場合があります。関連するインデックスが再構築されました。頻繁に使用されるクエリで新しいキーを使用する場合は、適切な新しいインデックスも追加する必要があります。これには明らかに物理ストレージが必要であり、最初にビルドするのに時間がかかり、場合によってはシステム管理者に次のように依頼する必要があります。新しいインデックスをキャッシュできるように、DBMSにより多くのメモリを割り当てます。