oess_1.2.0. Формат базы данных

В связи с тем, что в версии 1.2.0 появилась поддержка простых расширяемых типов (см. oess_1.2.0. Расширяемые типы) и расширяемых наследованием типов (см. oess_1.2.0. Наследование расширением (subclassing_by_extension)), которые поддерживают т.н. неизвестные расширения типов (см. oess_1.2.0. Неизвестные расширения), был изменен формат базы данных. Вызвано это тем, что объекты расширяемых типов могли быть сохранены в базе данных. Если в базе данных был сохранен объект новой версии, а затем использующее базу данных приложение перешло на новую версию схемы данных, то объект не был бы корректно извлечен из старой базы данных. Происходило это из-за того, что при сериализации в базу данных использовалось представление, не совместимое со "штатным" представлением. В частности, имена типов заменялись на идентификаторы типов в базе данных. В результате, даже сериализация одного и того же объекта в одном и том же приложении в разные базы данных могло давать разные двоичные представления (т.к. идентификаторы типов распределялись в каждой базе данных независимо).

В случае же с неизвестными расширениями такая ситуация является недопустимой -- работоспособность механизма неизвестных расширений базируется на том, что двоичное представление объекта всегда должно быть идентичным.

Из-за этого в новом формате базы данных идентификаторы типов не используются. И для сериализации/десериализации объекта в/из базы данных применяется штатным механизм сериализации. Поэтому надобность в сохранении в БД описания схемы данных отпала и в новом формате БД нет хранения схемы данных.

Так же, из-за того, что штатный механизм сериализации сохраняет имена типов в текстовом виде, двоичный образ объекта в штатной сериализации получается большим, чем в старой сериализации объекта БД. Поэтому, в новом формате БД, объект сохраяется в БД блоками не по 32 байта, а по 128 байт.

Внимание:
Из-за этих изменений формата невозможно использовать старые базы данных с ObjESSty версии 1.2.0 и наоборот.

Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:37 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz