Метка «activerecord»

Введение

В процессе создания более ли мене сложного сайта приходится задумываться об организации доступа к БД(базе данных). Если сайт создается на базе существующего фреймворка или CMS, то там как правило имеются встроенные механизмы ORM (с англ. — Объектно-реляционное отображение, подробнее в вики). В данной статье я расскажу как можно прикрутить популярную и простую ORM систему ActiveRecord к собственному фреймворку.
Читать полностью »

В процессе роста и развития проекта «АвтоОфис — Прием платежей и полная автоматизация продаж» мы столкнулись с тем, что при появлении клиентов имеющих у себя в базах более 100 000+ контактов, одна из основных функций, отвечающих за создания и отправку массовых email-рассылок по базе клиентов данных интернет-магазинов стала безбожно тормозить.

Покопавшись в коде, было выявлено, что при выборках данных, насчитывающих 100 000+ записей из таблиц MySQL с использованием класса ActiveRecord, сильно увеличивается потребление оперативной памяти и времени отработки скриптов. Доходило до того, что одна переменная, хранящая в себе результат выборки из 100 000 записей, потребляла 644 750 972 байт (614 Мб) оперативки, а время выполнения скрипта превышало 50 секунд.

Т.к. 100 000 записей, это мягко говоря, не предел мечтаний, и количество клиентов сервиса АвтоОфис уже давно исчисляется тысячами, мы не могли оставить данную проблему без внимания и не принять меры по её устранению. В итоге описанная выше функция была полностью переписана на выборки с использованием широко известного DAO, что существенно снизило расход ресурсов и увеличило скорость выполнения скрипта.

В процессе перехода наши программисты не поленились и сделали несколько тестов, наглядно показывающие сравнительные характеристики использования ActiveRecord и DAO при попытке выборки из БД MySQL 1, 5, 10, 50, 100, 500, 1 000, 5 000, 10 000, 50 000 и 100 000 записей. С результатами данных тестов и предлагаю Вам ознакомиться прямо сейчас.Читать полностью »

в 16:14, , рубрики: activerecord, ruby, ruby on rails, метки: , ,

Сегодня я поделюсь своим набором не всегда очевидных функций и возможностей Active Record, с которыми я столкнулся в процессе разработки Ruby on Rails приложений или нашел в чужих блогах.

Читать полностью »

Всем привет!

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

Напомню, что в проекте используется php(Yii), mysql и memcached. В проекте достаточно много сущностей, для каждой из которой есть своя модель, которая наследуется от CActiveRecord.

Хранятся файлы моделей следующим образом. В папке models создаем папку base. Когда генерируем модель через Gii, то указываем, что ее нужно положить в папку models/base и к имени класса добавляем Base. Затем создаем в models аналогичный класс без Base, который наследуется от базового класса и имеет в себе лишь метод model().

Кстати заранее скажу, что базовые модели наследуем не от CActiveRecord, а от ExtActiveRecord — расширяем CActiveRecord под наши нужды. Но об этом позже. Пока что разницы никакой.

Пример:
models/base/BaseUser.php — стандартный класс, который генерируется через Gii
models/User.php — класс, который наследуется от BaseUser и имеет в себе метод model()

	/**
	 * Returns the static model of the specified AR class.
	 * @param string $className active record class name.
	 * @return User the static model class
	 */
	public static function model($className=__CLASS__) {
		return parent::model($className);
	}
	

Данная схема используется для того, чтобы в случае повторной генерации файла модели не потерять свой код и просто не забивать пространство стандартными кодом от Yii.

Не забываем добавить в конфиге 'application.models.base.*'.

Перейдем собственно к теме поста и поставим задачи, которые хотим решить:

  1. Уменьшить количество запросов в базу на обновление
  2. Уменьшить количество запросов в базу на выборку

Читать полностью »

в 13:36, , рубрики: activerecord, module, Zend Framework, zf2, метки: , ,

Всем привет.

Сравнительно недавно начал изучать Zend Framework 2. Так как имею большой опыт работы с первой версией, решил заодно написать что-то полезное. Посмотрел modules.zendframework.com и решил — это будет Zf2ActiveRecord.

В статье я не буду описывать как делаются модули (есть много статей на эту тему), а просто приведу некоторые примеры работы с Zf2ActiveRecord. Предполагается что Вы уже умеете работать с Git и Composer. Если нет, то можно почитать это и это. Будет мало текста и много кода. Итак, поехали.

Читать полностью »

Подкаст

http://ruby.rpod.ru/284727.html

Новости

Читать полностью »

Подкаст

http://ruby.rpod.ru/281312.html

Новости

Читать полностью »

Вышла версия 0.3 node.js фреймворка для разработки веб приложений Autodafe

У фреймворка появился сайт autodafe.ws, который стремительно обрастает документацией и статьями. (Документация на сайте генерируется автоматически из кода, задокументированного по правилам jsdoc. Поэтому если вы хотите быстро поднять сайт с документацией вашего проекта, можете спросить меня «как?»)

В новой версии фреймворка значительно улучшена работа с моделями, писать классы для сохранения данных стало удобнее, а сами они стали выглядеть красивее. Множественное задание атрибутов, их неявная фильтрация во время присвоения, асинхронная валидация моделей и изумительное использование статических методов моделей несомненно сделают вашу жизнь лучше и проще :) Работа с моделями в Autodafe

Читать полностью »

Доброго времени суток, дорогой читатель. Ты наверное знаком с популярным web-framework Ruby on Rails. Если нет, то в этом посте ты сможешь найти много интересной и познавательной информации. Одно из его правил – «Одна модель – одна таблица». Следуя ему модель Cat должна брать информацию из таблицы cats, если не указано другое имя. А если наша модель состоит из нескольких, допустим шести, таблиц? Стандартный joins/include тут уже не в помощь.

Постановка задачи

Итак, смоделируем себе задачу для наглядности представленного решения. Допустим у нас должна быть модель Product. Графическая структураЧитать полностью »

Доброго времени суток. Многие из вас, кто так или иначе соприкасался с веб-разработкой, знают о таком удобном способе обращения к БД как ActiveRecord, чуть меньше человек согласиться, что это действительно очень удобно, примерно столько же понимает, что это далеко не всегда лучшее решение для проекта из соображений производительности. И это действительно так, но можно много чего придумать для избавления от этих проблем: кеширование всего и вся, различные архитектурные ухищрения и т.д.
Именно различными улучшениями AR мы и займемся на протяжении всего цикла этих статей :)
Если уж совсем подробно: мы будем вместе писатьЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js