Как управлять версиями данных, хранящихся в MySQL - PullRequest
7 голосов
/ 02 мая 2010

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

Есть идеи, как это сделать?

Ответы [ 4 ]

8 голосов
/ 02 мая 2010

Обычный метод «отслеживания любых изменений» в таблице - это добавить в таблицу триггерные процедуры вставки / обновления / удаления и сохранить эти записи в таблице истории.

Например, если ваша основная таблица данных - «ItemInfo», то у вас также будет таблица ItemInfo_History, которая получает копию новой записи каждый раз, когда что-либо изменяется (через триггеры).

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

Вот несколько примеров, они для SQL Server, но они демонстрируют логику:

Мой Таблица репозитория Моя Таблица истории репозитория Моя процедура запуска вставки в репозиторий Моя процедура запуска обновления репозитория

3 голосов
/ 02 мая 2010

Хм, о чем вы говорите, звуки похожи на Медленно меняющееся измерение .

Имейте в виду, что управление версиями в произвольных структурах базы данных официально является довольно сложной задачей. : -)

1 голос
/ 02 мая 2010

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

0 голосов
/ 07 февраля 2013

Может быть, инструмент поможет вам сделать это для вас. Посмотрите на Nextep Designer:

https://github.com/christophefondacci/nextep-designer

С помощью этой среды IDE вы сможете делать снимки структуры вашей базы данных и данных и ставить ее под контроль версий. После этого вы можете вычислить различия между любыми двумя версиями и сгенерировать соответствующий SQL, который может вставлять / обновлять / удалять ваши данные.

Может быть, это альтернативный способ достичь того, чего вы хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...