NserviceBus - Удаление свойств объектов SagaData

Torfi Karl Ólafsson спросил: 12 мая 2018 в 03:41 в: nservicebus

У меня есть класс SagaData, у которого много избыточных свойств, которые я хотел бы удалить во время нашей следующей версии. Однако сейчас есть действующие Sagas on Production прямо сейчас, и я не уверен, какой эффект будет удалять эти свойства в классе SagaData на уже существующих сайтах.

Afaik NServiceBus обрабатывает создание таблиц db для нас, один из которых имеет все эти избыточные свойства в качестве столбцов. Может ли кто-нибудь указать мне в сторону изучения того, что произойдет, если эти свойства будут удалены из класса SagaData. Предположим, что свойства не используются, только заполненные и код будет соответствующим образом реорганизован. - Мне интересно, что будет с нашим db, и что будет с существующими Sagas

Спасибо


2 ответа

Есть решение
Ramon Smits ответил: 14 мая 2018 в 07:33

Обновления схемы NHibernate

NHibernate только добавляет схему и только тогда, когда генератор схемы NH запускается через установщики NServiceBus NHibernate (.EnableInstallers()). NHibernate не выполняет миграции схемы, такие как изменения типа столбца, переименования столбцов и удаления столбцов. Это ограничение NHibernate, а не NServiceBus.

Scripting SQL

Нарушение изменений схемы все должно быть написано вручную. Вы можете использовать инструмент для запуска созданных вручную скриптов RoundhousE или многих других подобных инструментов. Вы также можете разграничить базы данных с помощью такого инструмента, как Microsoft Database Deployment Projects (SSDT), который может создавать эти сценарии для вас.

Удаление столбцов

Если у вас есть новая сага, вы можете просто подождите, пока все старые саги не будут завершены, как упоминалось в @hadi, вы даже можете удалить эту старую таблицу, когда она не используется.

Изменение существующей саги

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

Hadi Eskandari ответил: 13 мая 2018 в 10:24

Я не думаю, что с вашей базой данных ничего не случится. Вам придется удалить избыточные столбцы с помощью миграции. NServiceBus не сделает этого для вас.

Вы можете развернуть новую версию своих конечных точек для производства, позволить старым / существующим сагам закончить с течением времени, а затем вывести из эксплуатации старую конечную точку и удалить ненужные столбцы.

Посмотрите здесь пример, который подробно объясняет миграцию саги.

Ramon Smits ответил: 14 мая 2018 в 05:56
Не знаете, почему вы делитесь примером миграции, то есть как перейти на другую стойкость без простоя.
Hadi Eskandari ответил: 18 мая 2018 в 11:13
Дело было в том, чтобы показать, что это можно сделать путем "версии" саги и позже отбросить таблицу.