Система контроля версии для баз данных

Тема в разделе "Базы данных", создана пользователем gauss_gauss, 12 окт 2015.

Модераторы: latteo
  1. gauss_gauss

    gauss_gauss Постоялец

    Регистр.:
    13 окт 2011
    Сообщения:
    87
    Симпатии:
    4
    Друзья, поделитесь опытом, кто нибудь пользуется системами контиоля версий баз данных? Если да, то каким отдаете предподпочтения?
     
  2. Black Hat

    Black Hat Постоялец

    Регистр.:
    15 май 2015
    Сообщения:
    107
    Симпатии:
    69
    Есть несколько вариантов и все "плохи" в том или ином виде.
    Что приходилось реально использовать
    - "внутреннюю" утилиту, которая брала XML (под управлением гита) и выдавала DDL
    - mysqldump можно запустить с ключиком --no-data плюс добавить еще несколько, и на выходе DDL, который также можно хранить вместе с кодом в гите
    - ... есть и много других решений (гугл)
     
  3. DeaDSandro

    DeaDSandro Создатель

    Регистр.:
    30 апр 2010
    Сообщения:
    49
    Симпатии:
    16
    http://habrahabr.ru/post/121265/
    Миграции сейчас есть во многих популярных фреймворках или например в Doctrine (PHP) из коробки
     
  4. gauss_gauss

    gauss_gauss Постоялец

    Регистр.:
    13 окт 2011
    Сообщения:
    87
    Симпатии:
    4
    Читал эту статью :). Мне бы хотелось услышать реальный опыт, кто что в проектах применяет
     
  5. kto-to

    kto-to Создатель

    Регистр.:
    19 май 2012
    Сообщения:
    14
    Симпатии:
    2
    Ключевое слово - миграции
    Именно так и поддерживается актуальность базы данных. Ну а так, если задача стоит контролировать процесс создания схемы - то файл создания схемы можно сложить в тот же гит - и всегда будет видно когда что добавилось.
     
  6. lgtch

    lgtch Писатель

    Регистр.:
    16 окт 2015
    Сообщения:
    4
    Симпатии:
    1
    Для актуализации БД в проектах применяются миграции. Реализованы в любом фреймворке и даже в некоторых CMS.

    Работает так - пишите руками скрипт для выполнения sql-запроса к вашей БД, запускаете скрипт (он делает нужные вам изменения в вашей локальной БД), коммитите его в репозиторий, другие разработчики вытаскивают ваш коммит со скриптом и применяют его, профит)

    За долгие год работы в команде над большими проектами убедился в эффективности и полезности этого подхода.
     
  7. HunterNNm

    HunterNNm Создатель

    Регистр.:
    3 сен 2010
    Сообщения:
    49
    Симпатии:
    6
    Во всех проектах, где нет фреймворка, пользуем https://phinx.org/ . И Вам советуем:) Мощный инструмент...
     
  8. tuthanhamon

    tuthanhamon Создатель

    Регистр.:
    14 ноя 2015
    Сообщения:
    21
    Симпатии:
    6
    Если кратко - есть набор скриптов (файлов вида database####.sql). Файл database_0000.sql был создан когда было принято решение о том, что "в лесу порядок должен быть"©. Любые последующие изменения базы данных - это файл database0001.sql, 0002.sql и так далее, в котором описано все что надо изменить в базе чтобы она соответствовала эталону: добавить/удалить таблицы, изменить данные, добавить комментарии и т.д. В конце каждого файла есть строка вида

    insert into database_log(version, changes, note) values (2, 'Добавили новое поле для хранения истории статусов', 'Для всех пользователей в историю записано "Молодец" как маркер начала истории');

    Все эти файлы хранятся в репозитории git-a.
    В результате в любой момент можно получить базу данных любой версии, или посмотреть прямо в базе что, когда и почему менялось.
    Потенциальная проблема только одна - если над базой работает очень много народу, надо контролировать, чтобы случайно двое разработчиков не закоммитили разные скрипты с одинаковым названием. Но это - типичная проблема в больших коммандах и методики решения стандартные: конвенция наименований, код-ревью, ответственный за коммиты и т.п.
     
  9. Bezhev

    Bezhev

    Регистр.:
    26 дек 2012
    Сообщения:
    362
    Симпатии:
    123
    Применются миграции, пользовался Doctrine migrations и Phinx, и еще doctrine fixtures для накидыванию тестовых данных.
     
  10. nick dee

    nick dee Создатель

    Регистр.:
    15 дек 2015
    Сообщения:
    11
    Симпатии:
    18
    Должен прочитать Получить базу данных под управлением версиями. Проверьте ряд должностей К. Скотт Аллен .