Я работаю над проектом, в котором я буду использовать Membase (представьте себе Memcached + постоянство) в качестве нашего уровня постоянства с многоузловым кластером.
Мы используем клиент Enyim для связи с кешем и используем двоичную сериализацию для сериализации / десериализации объектов в кеш и из него.
Одна из проблем, с которыми мы сталкиваемся, заключается в том, как нам эффективно управлять изменениями в нашей модели данных, если мы работаем с обычной базой данных SQL, мы можем запустить скрипт обновления для обновления ваших таблиц.
Используя Membase и имея дело с кэшированными двоичными объектами, мы МОЖЕМ захватить все кэшированные объекты и загрузить оба двоичных файла:
- версия кода, которая использовалась для сериализации кэшированных объектов
- новая версия кода, которая определяет различные свойства
и эффективно переносить данные, такие как , это , но это вряд ли желательно, когда мы потенциально можем иметь в кэше десятки миллионов объектов. В идеале мы хотели бы иметь возможность переносить данные только тогда, когда необходимо и иметь некоторый итеративный процесс, который мы можем запустить для переноса данных версии 1 в версию 2 и затем в 3 и т. д., но я изо всех сил пытаюсь придумать способ сделать это с двоичными данными ..
Просто выстрел в темноте, кто-нибудь имел опыт работы с такими проблемами раньше? Мы более чем рады использовать другие формы сериализации и могли бы просто вместо этого хранить строковые (возможно сжатые) данные в кэше и сами обрабатывать сериализацию.
Спасибо