Схема MySQL для синхронизации схемы через триггеры? - PullRequest
1 голос
/ 01 октября 2009

Краткое примечание: у меня есть 19 дней, чтобы выяснить проблемы моего клиента.

Справочная информация: Клиент нанял подрядчика, который хвастался, что через три месяца он может получить новое приложение. Через два месяца и несколько дней меня привели, и человека отпустили; нет полного кода, нет мыслей, вложенных в схему, и мерзость для пользовательского интерфейса.

У меня есть два приложения: одно производственное и зрелое, а другое нуждается в любви. Один имеет все данные, которые мне нужны, а другой нет. Я пишу новый стиль кода TDD и нацеливаюсь на частично сфальсифицированную инфраструктуру SOA, которая охватывает все проблемы, кроме самих данных. Если бы у меня было больше времени, я мог бы использовать ликвидазу, чтобы преобразовать схемы в осколки мерзости (используйте свое воображение), но я не ... поэтому план Б следующий:

Приложение A (вставляет | обновляет | удаляет) сущность Foo, которая обновляет AppASchema.FooTable, которая посредством триггера записи обновляет AppBSchema.FooLikeTable и наоборот.

Я знаю, что это безумная идея, но это наименьшее из худших идей, которые у меня есть, мои опасения

  1. Можно создать бесконечный цикл (триггер AppA обновляет AppB, который обновляет AppA)
  2. Там нет высокой нагрузки, но это в основном удваивает число операций до n * 2, поэтому, если я достигну половины емкости сервера MySQL, кажется, что это будет эффективно при или почти на полную мощность для базовых вещей, таких как обновление индексов и тому подобное .
  3. Как смешанное благословение, разработчики оригинальных схем сделали все таблицы движком InnoDB ... это ужасно для производительности, но может ли эта установка обеспечить более высокий шанс сохранения целостности.

Мой временной бюджет для реализации триггеров составляет 12 часов или перебор.

1 Ответ

1 голос
/ 10 октября 2009

Являются ли AppASchema.FooTable и AppBSchema.FooLikeTable достаточно похожими , чтобы вы могли переопределить один из них как обновляемое представление ? Возможно, вам придется создать несколько дополнительных таблиц для хранения столбцов, которые являются уникальными для одной из схем приложения. Это было бы гораздо более приемлемо, чем набор триггеров.

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

...