Есть ли способ обнаружить изменения базы данных, которые были сделаны сторонними расширениями?

Я работаю в среде разработки /создания /производства, и у меня возникли некоторые проблемы с продвижением кода из одной среды в другую, особенно когда требуется обновление до Joomla и другого программного обеспечения сторонних разработчиков.

Есть ли способ узнать, какие SQL-операторы были запущены с базой данных с определенной даты, чтобы я мог применять их в разных средах без обновления каждой среды?

7 голосов | спросил ContextSwitch 23 PMpWed, 23 Apr 2014 23:06:12 +040006Wednesday 2014, 23:06:12

2 ответа


9

Простой ответ - нет.

Расширенный ответ: mysql может регистрировать запросы, однако он имеет ограничения, и если есть хоть одно различие между средами, это приведет к тому, что эти запросы не будут работать. Даже при этом единственный способ сделать это - это сам сервер, поскольку, насколько мне известно, в JDatabase не добавлено специального ведения журнала (также если компонент не использует JDatabase, тогда управление еще более уменьшает).

С вышесказанным вы можете видеть в идеальном мире, есть способ, однако, если вы перейдете от разработчика к жизни, у вас в настоящее время есть живой сайт, который сам выполняет запросы, и он «отличается», а затем текущий dev /промежуточная версия. Поэтому, если пользователь зарегистрировался на реальном сайте и обновил Joomla в dev, тогда обновление таблицы пользователей добавит необходимость вручную добавить этого пользователя (также могут быть изменения в структуре таблицы). Теперь представьте себе не одного пользователя, а 10 или даже 100, и процесс не может быть автоматизирован.

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

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

ответил Jordan Ramstad 23 PMpWed, 23 Apr 2014 23:38:25 +040038Wednesday 2014, 23:38:25
4

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

В последнее время я начал смотреть, но еще не реализован:

http://phinx.org/

Другим «бедным способом» является экспорт схем БД (если вас интересуют схемы, данные, вероятно, другое животное), а затем запускают diff для схем для каждой базы данных. Следует выявить различия между довольно легко. Тогда вам просто нужна консолидация данных. С этим я бы сказал, что в идеале вам нужно будет только беспокоиться о данных в вашей производственной среде и держать их синхронизированными с промежуточной средой. Затем вы можете использовать песочницу и играть в развитии по мере необходимости.

ответил Chad Windnagle 24 AMpThu, 24 Apr 2014 03:04:46 +040004Thursday 2014, 03:04:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132