В ходе ресерча был исследован ряд “синхронизаторов”, и их все условно можно разделить на несколько классов:
1) написанные *не* на php (java/c#/c++…) – абсолютно большая часть из того что есть по предложенному урлу википедии
(http://en.wikipedia.org/wiki/Comparison_of_database_tools). Все это как правило платные, имеющие UI, и что как по мне самое
неприятное – закрытые продукты. Т.е. они в первую очередь расчитаны на юзание их как отдельно стоящего продукта,
а не как фронтенд для какого-то внешнего скриптика (что тоже будет не тривиально, я думаю), и имхо, их покупка будет просто переплатой
за то, что реально нам не надо. Однако ресерч по такому виду продуктов был произведен, и вот соотв результаты по обозначенным приоритетам:
а) многоплатформенные
Epictetus : http://www.antilogics.com/epictetus.html
SQL Developer : http://sqldeveloper.solyp.com/index.html
SQuirreL SQL : http://squirrel-sql.sourceforge.net
SQLyog : http://webyog.com/en/sqlyog_feature_matrix.php
DbSchema : http://www.dbschema.com
ACDB : http://www.electronic-experience.net
DbVisualizer : http://www.dbvis.com/products/dbvis
Navicat : http://www.navicat.com/download/download.html
Aqua Data Studio : http://www.aquafold.com
б) windows-only
Toad : http://www.toadsoft.com/toadmysql/Overview.htm
dbForge Schema Compare for MySQL : http://www.devart.com/dbforge/mysql/schemacompare
Database Master : http://nucleonsoftware.com
DreamCoder : http://www.sqldeveloper.net/database-tools/products/database-tools-catalog.html
Altova DatabaseSpy : http://www.altova.com/databasespy.html
Плюсы – универсальность (как правило – поддержка очень многих типов БД(но надо ли это нам?)), спектр возможностей…
Минусы – платно, нет доступа к исходникам, если мы говорим о работе через нашу надстройку – думаю что это не всегда будет тривиальной задачей…
В целом, я считаю что этот класс синхронайзеров – это *не* то что нам надо.
Для меня, видимо одним из фаворитов в этой группе стал SQLyog, по большей части из-за этого:
http://www.mysql.it/news-and-events/newsletter/2003-10/a0000000248.html
2) написанные на php, *но*, реализующие понятие миграции как пхп-класс…
если в 2х словах как это:
фактически синхронайзеры этого класса представляют из себя сильно сильно упрощенный вариант системы версионирования для БД…
методами синхронайзера, каждый из девелоперов может управлять состоянием своей базы по отношению к состоянию общей базы:
апаться, откатывать назад до определенной ревизии, идти вперед и т.п…..
при этом файлы миграций ложатся в свн в определенную папку….
все вроде как красиво, четко, НО – файл миграции представляет из себя пхп класс…как правило все синхронайзеры этого класса
просят от такого класса 2 метода – up/down (как накатить мигру/как откатить мигру), *и* эти 2 метода пишутся на языке самого синхронайзера…
т.е. все кто хотят юзать такую вещь должны знать не только скл, но и язык этого синхронайзера….и мне кажется это довольно грустно…
В принципе их немало в инете, я рассмотрел несколько примеров, в целом все дублируют друг друга….
Вот один из них…
ruckusing : http://code.google.com/p/ruckusing
Плюсы – бесплатно, универсально, есть доступ к исходникам, просто в интеграции…
Минусы – всем надо знать язык синхронайзера для написания мигр…
В целом, опять таки, думаю это не совсем то что нам надо…
3) написанные на php, и делающие синхронайз структур N баз, одна из которых – “базовая” (все приводятся к ней)…
по удобству юзания – один из самых приятных вариантов как по мне…т.е. имея дифф по 2м базам (основной у нас будет чистая база из “schema.sql”),
мы сможем организовать накладывание всех изменений на локальну базу девелопера…
пока нашел и пощупал простенький вариант, работающий по таблицам, полям и праймари ключам (хотя на самом деле это и есть основа основ),
хотя конечно ключи, форейны и т.п. тоже было бы очень неплохо саппортить…
Пока пощупал и поковырял слегка только 1
Class: DBSync : http://www.phpclasses.org/browse/package/2354.html
Плюсы – бесплатно, универсально, есть доступ к исходникам, просто в интеграции…
Минусы – готовые решения сыроваты…
Думаю это самое оно…
ты про репликацию? оракл ставь, остальное всё глючное
Не. Я про накат изменения структур.
Девелопер добавил поле в табличку. Как накатить изменения, чтоб не пересоздавать таблицы.
дык alter. это хз мы апдейт-скрипты пишем обычно.
но знаю что oracle 11 если на одном сервере в репликации изменить структуру таблиц, процедуры или еще какиенить триггеры, разносит изменение структуры по всем участникам репликации. собственно это был главный момент апгрейда с десятки – раньше надо было ложить все системы, теперь апдейты идут без потерь.