Как вы управляете большим изменением схемы, когда вы используете магазин NoSQL, как SimpleDB?
Я знаю, что я все еще думаю о терминах SQL, но после работы с SimpledB на несколько недель мне нужно внести изменение в запуск базы данных. Я хотел бы изменить один из классов объектов, чтобы иметь уникальный идентификатор, а не имени имени бизнеса, и, как оно ссылается другой объект, мне нужно также обновить ссылочную стоимость в этих объектах.
С базой данных SQL вы будете запускать набор операторов SQL как часть процесса развертывания программного обеспечения клиента. Очевидно, что это не будет работать с чем-то вроде SimpledB как
Некоторые решения, которые я думал, представляют собой
, каждый домен имеет номер версии. Клиентское программное обеспечение знает, какую версию домена он должен использовать. Напишите какой-нибудь код, который копирует данные из одной версии домена на другую, что придавало любые необходимые изменения, как вы идете. Затем вы можете установить новое клиентское программное обеспечение, которое затем доступ к новой версии домена. Этот подход не будет работать, если вы не сможете «заморозить» весь доступ к записи во время процесса обновления.
Каждый элемент имеет атрибут версии, который указывает формат, используемый, когда он был сохранен. Клиент использует этот атрибут при загрузке объекта в память. Затем объект может быть преобразован в последний формат, когда он записан обратно к SIMPLEDB. Проблема с этим является то, что новое программное обеспечение необходимо развернуть для всех серверов до того, как любые записи в новом формате происходят, или клиенты, работающие на старом программном обеспечении, не знают, как прочитать новый формат.
Все это довольно сложно, и мне интересно, если я что-то упускаю?
Спасибо
Ричард