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