О проблеме внесения изменений в БД в ходе разработки приложения писали на Хабре много раз.Версионная миграция БД — удобный подход к решению проблемы.
Уже долгое время я участвую в разработке ECM7.Migrator — инструмента для автоматизации изменений БД. О том, как его использовать и почему это удобно, мы писали здесь.
8 месяцев назад мы выпустили версию 2.0, а на этой неделе вышла версия 2.6. По сравнению с версией 2.0 многое изменилось.Полностью переписаны классы всех провайдеров: API стал проще и удобнее, все методы работают адекватно (а для проверки адекватности было написано большое количество модульных тестов);
Поддержка SQL AzureЧитать полностью »
Рубрика «базы данных» - 50
.NET / Миграции БД для .NET — новый ECM7.Migrator
2012-02-11 в 23:23, admin, рубрики: database migrations, базы данных, миграции, метки: database migrations, базы данных, миграцииPHP / Готовим ActiveRecord из PDO. Часть 0
2012-02-11 в 10:33, admin, рубрики: activerecord, PDO, php, базы данных, метки: activerecord, PDO, PHP, базы данных Доброго времени суток. Многие из вас, кто так или иначе соприкасался с веб-разработкой, знают о таком удобном способе обращения к БД как ActiveRecord, чуть меньше человек согласиться, что это действительно очень удобно, примерно столько же понимает, что это далеко не всегда лучшее решение для проекта из соображений производительности. И это действительно так, но можно много чего придумать для избавления от этих проблем: кеширование всего и вся, различные архитектурные ухищрения и т.д.
Именно различными улучшениями AR мы и займемся на протяжении всего цикла этих статей :)
Если уж совсем подробно: мы будем вместе писатьЧитать полностью »
MySQL / немного о SELECT… FOR UPDATE и GET_LOCK
2012-02-10 в 19:09, admin, рубрики: mysql, базы данных, метки: mysql, базы данных
Для примера рассмотрим такой случай.
У нас есть MySQL база, в которой есть таблица queue. В эту таблицу поступают задания для выполнения.
Задания должны распределяться между процессами. Одна и та же задача не должна попасть к разным процессам.
Для решения задачи можно воспользоваться SELECT … FOR UPDATE.
Каждый процесс для получения задачи будет выполнять вот такой запрос.SELECT id FROM queue WHERE is_run = 0 ORDER BY date_task ASC LIMIT 1 FOR UPDATE
И помечать эту полученную задачу как занятую.UPDATE queue SET is_run = 1 WHERE id = ?
Теперь рассмотрим диаграмму работы процессов.
Процессы выполняются последовательно. Получается, что FOR UPDATE блокируетЧитать полностью »