Они остаются как есть - свойства, которые больше не существуют, будут игнорироваться при загрузке (и будут потеряны при изменении), а отсутствующие свойства вернутся как ноль,
Рекомендуется использовать операции на основе набора для контроля данных с помощью объектной модели.
О, посмотри на меня, я сейчас на компьютере!
Правильно, по сути, переходя к хранилищу документов, вы правы, признавая, что теряете некоторую функциональность, и получаете некоторую свободу в том, что в базе данных вы определили предварительную схему и пытаетесь загрузить данные, которые не соответствуют эта схема приведет к ошибке.
Важно признать, однако, что существует разница между схемой без схемы и структурой, в которой все ваши документы содержат свою собственную структуру (пары ключ / значение, обозначающие имя свойства и значение свойства).
Это делает его полезным для всего «просто начинающего» факта написания некоторого кода и сохранения ваших данных - но когда так легко обойтись, изменив структуру кода, может быть сложнее согласовать это с вашими уже сохраненными данными .
На данный момент появляется несколько стратегий:
- Сделайте вашу структуру неизменной, как только вы сохраните данные, версируйте ваши классы
- Разрешить изменение структуры, но использовать операции на основе набора для обновления данных для соответствия новой структуре
- Разрешить изменение структуры и писать код для устранения несоответствий при загрузке данных
Третий вариант явно плохая, так как он приведет к неуправляемому коду, управление версиями ваших классов может сработать, если вы просто храните события или другие подобные данные, но на самом деле не подходит для большинства сценариев, так что вы остались со средним вариантом.
Я бы порекомендовал сделать именно это и следовать нескольким простым правилам в том же духе, что и при работе с предварительной схемой в реляционной базе данных.
- Использование системы VCS для определения изменений между развернутыми версиями
- Написание сценариев миграции, которые обновляются с одной версии на другую
- Будьте осторожны с переименованием / удалением свойств - поскольку загрузка документа и сохранение документа приведет к потере данных, если эти свойства не существуют в новом документе
1037 * Etc. *
Надеюсь, это более полезно: -)