Как реализуют изменения схемы в системе хранения NoSQL

Как вы управляете большим изменением схемы, когда вы используете магазин NoSQL, как SimpleDB?

Я знаю, что я все еще думаю о терминах SQL, но после работы с SimpledB на несколько недель мне нужно внести изменение в запуск базы данных. Я хотел бы изменить один из классов объектов, чтобы иметь уникальный идентификатор, а не имени имени бизнеса, и, как оно ссылается другой объект, мне нужно также обновить ссылочную стоимость в этих объектах.

С базой данных SQL вы будете запускать набор операторов SQL как часть процесса развертывания программного обеспечения клиента. Очевидно, что это не будет работать с чем-то вроде SimpledB как

  • Нет эквивалента оператора обновления SQL.
  • Из-за распределенного характера SIMPLEDB нет никакого способа узнать, когда изменения, которые вы сделали в базу данных, «отфильтровали» всем узлам, управляющим программным обеспечением клиента.

Некоторые решения, которые я думал, представляют собой

  • , каждый домен имеет номер версии. Клиентское программное обеспечение знает, какую версию домена он должен использовать. Напишите какой-нибудь код, который копирует данные из одной версии домена на другую, что придавало любые необходимые изменения, как вы идете. Затем вы можете установить новое клиентское программное обеспечение, которое затем доступ к новой версии домена. Этот подход не будет работать, если вы не сможете «заморозить» весь доступ к записи во время процесса обновления.

  • Каждый элемент имеет атрибут версии, который указывает формат, используемый, когда он был сохранен. Клиент использует этот атрибут при загрузке объекта в память. Затем объект может быть преобразован в последний формат, когда он записан обратно к SIMPLEDB. Проблема с этим является то, что новое программное обеспечение необходимо развернуть для всех серверов до того, как любые записи в новом формате происходят, или клиенты, работающие на старом программном обеспечении, не знают, как прочитать новый формат.

Все это довольно сложно, и мне интересно, если я что-то упускаю?

Спасибо

Ричард

8
задан richard 30 August 2011 в 05:42
поделиться