Как осуществлять контроль версий и ветвление базы данных MySQL без создания полных копий БД? - PullRequest
0 голосов
/ 25 мая 2018

У меня есть база данных MySQL, которой пользуются более 20 человек с частыми изменениями.Мне нужно это под управлением версиями с ветвлением, журналами того, какие пользователи внесли какие изменения, и мне нужно хранить всю историю каждой ветви до года.Тратить деньги на это также было бы не идеально, но управляемо.

База данных используется для хранения данных, которые тесно связаны с кодом, написанным командой программистов, которые будут работать над различными функциями.У каждой функции должна быть своя ветвь, которая будет завершена после успешной проверки кода и данных.Когда программист меняет свой код, он также должен изменить базу данных, чтобы отразить изменение в своем коде.Это может включать частые изменения схемы.Конечно, в одной и той же ветке одновременно могут работать более одного программиста.Они также должны откатывать изменения или объединять ветви в основную ветку по своему усмотрению.База данных используется для генерации данных JSON и других файлов, которые продукт, который мы разрабатываем, использует для запуска.Мы не можем просто использовать один набор таблиц для каждого пользователя, потому что каждому пользователю нужна возможность изменять схему, не влияя на других пользователей.

Я особенно обеспокоен требованиями к объему дискового пространства для этого.База данных в настоящее время имеет 45 таблиц, каждая занимает около 30 МБ.Если каждый из 20 пользователей меняет свою ветвь один раз в день в течение года, и если решение по управлению версиями требует сохранения полных копий таблиц, то это 30 МБ * 45 таблиц * 20 ветвей * 365 дней истории = 9855 ГБ дискового пространства.Я бы предпочел не резервировать почти терабайт хранилища для этой базы данных.

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

У меня есть списоксистем контроля версий, которые поддерживают MySQL, но у меня возникают проблемы с поиском информации о том, делают ли они полные копии базы данных, не пытаясь проверить каждую из них.Вот список, который я нашел:

  • Liquibase
  • Flyway
  • FluentMigrator
  • Ruby on Rails Migrations
  • DBV
  • DBGeni
  • Sqitch
  • DeltaSQL
...