Ответ 1
Schema-less является немного неправильным, лучше подумать об этом как:
- SQL = Схема, выполняемая RDBMS при записи
- NoSQL = частичная схема, применяемая СУБД на Write, схема PLUS, полностью внедренная в приложение для чтения (внешняя схема)
Таким образом, хотя предполагаемый Schema-less NoSQL-хранилище данных теоретически позволит вам хранить любые данные, которые вам нравятся (как правило, пары ключевых значений в документе) без предварительного знания ключей или типов данных, будет бессмысленным если у вас нет механизма для извлечения и использования данных. Поэтому, по существу, схема частично перемещается из РСУБД в код приложения. Я говорю частично, поскольку вы добавили индексы для документирования коллекций и/или секционировали данные для производительности, поэтому СУБД NoSQL будет иметь частичную схему, определенную локально, и, возможно, принудительно с помощью ограничений Unique.
Что касается добавления дополнительных атрибутов к документу/объекту в хранилище. В зависимости от того, сколько отступов вокруг документа (неиспользуемое пространство), в нем блок физических данных, добавление нескольких пар значений в документы может привести к физическому перемещению документа в большем непрерывном блоке хранения, и связанные индексы перестроены. Если вы планируете использовать новые ключи в часто используемом запросе, вы также захотите добавить подходящий новый индекс, который, очевидно, потребует некоторого физического хранилища, потребуется некоторое время для первоначальной сборки и, возможно, приведет вас к тому, чтобы спросить системного администратора выделять больше памяти в СУБД, чтобы можно было кэшировать новый индекс (ы).