За последние 24 часа нас посетили 21948 программистов и 1689 роботов. Сейчас ищут 1411 программистов ...

Синхронизация структур БД

Тема в разделе "PHP и базы данных", создана пользователем vasa_c, 8 апр 2008.

  1. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Сидим втроём, делаем сайтег.

    У каждого на локалке своя рабочая копия.
    Код синхронизируем без проблем - SVN, все дела.

    Сложнее со структурой базы.
    Добавил, например, новый столбец у таблицы - как добавить его в локальные базы других разработчиков?
    Изменения в большинстве своём описываются банальным "ALTER TABLE".
    Данные синхронизировать не нужно.

    Пока делаем так:
    В каталоге SQL лежит файл install.sql - актуальный дамп структуры.
    При внесении изменений, изменяю его, а так же создаю рядом файлик с именем вроде "080408_vasac.sql" - в нём набор инструкций, типа ALTER TABLE для внесения новых изменений.

    Остальный UPDATят SVN, смотрят - появился новый файлик - выполняют его в своей базе.
    Трудности, конечно, не большие, но всё равно хочется лучшего.
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    хм...
    1. каждый раз после update'a запускать скрипт, который будет делать все что описано в "080408_vasac.sql"
    2. Держать структуру в xml. Перед коммитом создавать этот xml скриптом. При update аналогично п.1
    3. Хранить структуру в массивах. По этим массивам строить синхронизацию. Надо новое поле в таблицу? Правим массив, запускаем синхронизацию.

    все... больше ничего к сожалению не встречал
     
  3. Anonymous

    Anonymous Guest

    ORM вас спасет. :) Поэтому то ПХП сосет ))

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

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Имеется ввиду именно ORM, но чтобы реализовать синхронизацию ORM вообщем-то и не нужен
     
  5. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Горбунов Олег
     
  6. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Данные синхронизировать не нужно. Тем более, что они будут меняться у всех постоянно и будет постоянный конфликт версий.

    2 и 3 удобства по сравнению с 1 не несут.
    1 тоже скрипт запускать придется в ручную.

    Спасибо, за ответы. Думал, что все давно используют что-то удобное, а я от жизни отстал. Оказывается, простого решения нет, что радует :)
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    у меня раньше ярлык был в totalcmd, так вот, svn update можно запускать из консоли, а не только правой кнопкой мыши. Батники никто не отменял.
     
  8. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Батники... опять новая сущность :)
    Одни манипуляции придется правой кнопкой делать, для полного update батник искать :)
     
  9. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    path

    из любой директории можно вызвать update mail.ru
     
  10. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    База не должна изменять так часто и скрытно. В крайнем случае изменяется на общей серверной версии, из которой все по мере необходимости восстанавливаются.
     
  11. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Если база растет вместе с проектом, то такое бывает.
     
  12. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    база конечно растет с проектом, но бросаться толпой на один кусок и мешать друг другу не есть гуд
     
  13. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Конечно. Я говорю когда Петя Иванов пошел добавлять новое поле в вакансии, а Вася изменил поля у пользователя
     
  14. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Тестирую регистрацию сейчас. Забил в форму, отправил, юзер создался, мыло не идет - проблемы. Исправил, опять запостил, потом еще. Штук 10 пользователей создал новых в базе. Кому они кроме меня нужны?
     
  15. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    репликация у мускула есть
    под SuSe пробовал - работает
    вот 2 сервера под Suse + сервер под виндой запахали не очень .. иногда возникали проблеммы соединений!(коннект отваливался от мастера к слейву)
    http://dev.mysql.com/doc/refman/5.1/en/replication.html