Контроль версий баз данных

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

Например,

Клиент 1 решает изменить профиль лиц, чтобы он вносил изменения в локальную копию на своем компьютере. Когда они довольны редактированием, они публикуют результаты в центральной базе данных. Точно так же, как вы будете делать подачу в perforce.

Клиент 2 пытается отредактировать одну и ту же локальную копию, но при отправке им необходимо разрешить конфликты.

Центральная база данных должна хранить сжатые различия между версиями данных.

В любой момент кто-то может просмотреть все версии представленных данных.

Ответы

Ответ 1

"Управление версиями баз данных" немного неоднозначно для заголовка, потому что вы действительно просите VCS использовать базу данных в качестве хранилища данных "хранилище данных".

Subversion имеет такую ​​модель (Berkeley DB или файловая система).
Он также имеет модель Copy-Modify-Merge, которая похожа на тип механизма блокировки, который вы описываете.

alt text http://svnbook.red-bean.com/nightly/en/images/ch02dia4.png alt text http://svnbook.red-bean.com/nightly/en/images/ch02dia5.png

Ответ 2

Отметьте OffScale DataGrove.

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

Отказ от ответственности - я работаю в OffScale: -)

Ответ 3

Инструменты sql из redgate предлагают некоторые из этих функций, но не реализованы так, как вы описываете. Например, сравнение данных sql может сравнивать различия между данными в 2 базах данных и контроль источника sql.

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

Ответ 5

Это именно то, что мой продукт (да, я смещен:)) DBMAestro Teamwork делает.

  • Он обеспечивает соблюдение и отслеживание изменений структуры и содержимого.
  • Он предотвращает два параллельных изменения структуры объекта или содержимого на два (поскольку они работают на одном и том же объекте - то есть на той же базе данных, на той же схеме,...)
  • Он использует базовый анализ, который понимает природу изменения и знает, следует ли продвигать изменение или его следует игнорировать (как это было сделано из другой среды) или если есть конфликт И многое другое.

Я бы посоветовал вам прочитать всесторонний, беспристрастный обзор решения по управлению базами данных экспертом по базам данных Ben Taylor, который он опубликовал в LinkedIn https://www.linkedin.com/pulse/article/20140907002729-287832-solve-database-change-mangement-with-dbmaestro