Изменение классификации экземпляров
Изменение классификации означает, что некоторый существующий листовой класс (не имеющий подклассов) подвергается рефакторингу путем введения нескольких подклассов. Каждый существующий экземпляр назначается в один из подклассов на основе критерия, задаваемого приложением. Этот процесс снова состоит из трех шагов.
Многие сценарии эволюции схемы могут быть обслужены путем непосредственного вызова инструментального средства эволюции схем ObjectStore. Это средство обеспечивает нахождение всех объектов, их изменение, перемещение их при необходимости в другие страницы и исправление значений и типов указателей. Подробности сценариев, для которых не требуется писать код на C++ для эволюции схемы, лучше всего описаны в руководстве ObjectStore Advanced C++ API User Guide [2], к которому отсылаются заинтересованные читатели.
В тех случаях, когда от пользователей требуется написание некоторого кода на C++, этот код является относительно простым и обычно включает нахождение в базе данных всех эволюционирующих объектов и вызов некоторой функции ObjectStore или инициализацию элементов данных. В любом случае обычно код является достаточно прозаичным. Перемещение эволюционирующих объектов в новые области памяти, если у них изменяется размер, и исправление значений и типов указателей обеспечивается средствами библиотеки эволюции схем.
Здесь фокус состоит в том, что эволюция схемы в ObjectStore действительно является сложной с инженерных позиций, но большая часть этой сложности скрывается от пользователя в утилите эволюции схемы базы данных, поставляемой вместе с продуктов.