среда, 23 марта 2011 г.

Прямые SQL-запросы в Magento

Столкнувшись с необходимостью использовать прямое обращение к базе данных в Magento, нашел полезную статью и перевел ее в первую очередь для себя (чтобы лучше усволась). Первоисточник находится здесь.

Использование в Magento моделей данных (data models) предоставляет великолепную возможность для получения и редактирования данных. Используя метко именованные методы и искусные абстракции, Varien полностью скрывает совокупность SQL-запросов, необходимых для выполнения операций с данными. Но облегчая изучение моделей, это часто влияет на скорость операций, а следовательно и на отзывчивость вашего сайта. Это в особенности справедливо при сохранении моделей, использующих архитектуру EAV. Чаще всего этого нельзя избежать, однако бывают ситуации, когда прямое выполнение SQL-запросов было бы проще и гораздо быстрее. Примером этого является глобальное обновление цен продуктов в Magento. Было бы довольно просто написать немного кода, который обойдет все продукты и изменит цену. В больших наборах данных сохранение каждого отдельного продукта может занять много времени и соответственно сделать систему недоступной. Для борьбы с этим можно использовать прямой SQL-запрос, который сможет обновить 1000 продуктов за 1-2 секунды.

Для более подробной информации о массовом обновлении цен, смотрите следующую статью:
Magento: Update Product Prices Globally.