2010-03-02 2 views
2

Я работаю над проектом, где у нас есть большое количество объектов, которые сериализуются и хранятся на диске с использованием pickle/cPickle.Выпущенный объект Versioning

Поскольку жизнь проекта прогрессирует (после выпуска заказчикам в поле), вероятно, что будущие функции/исправления потребуют от нас изменения подписи некоторых наших сохраняемых объектов. Это может быть добавление полей, удаление полей или даже просто изменение инвариантов на части данных.

Есть ли стандартный способ отметить объект, который будет маринован как имеющий определенную версию (например, serialVersionUID в Java)? В принципе, если я восстанавливаю экземпляр Foo версии 234, но текущий код - 236, я хочу получить некоторое уведомление о unickle. Должен ли я просто пойти вперед и развернуть мое собственное решение (может быть PITA).

Благодаря

ответ

3

Формат pickle не имеет такого оговорился. Почему бы вам просто не сделать «серийный номер версии» частью атрибутов объекта, чтобы его мариновали вместе с остальными? Тогда «уведомление» может быть тривиально выполнено путем сравнения фактической и желаемой версии - не понимаю, почему это должно быть PITA.

+0

Да, это направление, которое, я думаю, мы собираемся принять. Я думаю, что я, возможно, переоценил уровень усилий, необходимых для добавления и проверки этих данных. Поскольку мы восстанавливаем все наше сохраненное состояние в одном месте, добавляем любую логику, в которой мы нуждаемся (работа с неперевернутыми объектами или объектами, которые ранее были неверующими, и теперь это не должно быть слишком плохо). Просто, хотя я бы ping сообщество, чтобы увидеть, если рассол обеспечил такое поведение, и я изобретал колесо. –

Смежные вопросы