Когда DAO, а когда Active Record

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
xoma_204
Сообщения: 318
Зарегистрирован: 2013.12.12, 02:06

Когда DAO, а когда Active Record

Сообщение xoma_204 »

Так до конца и не понял, есть разные куски сайта которые взаимодействуют с БД, просто напишите плз для каждого конкретного из вариантов что лучше использовать DAO или AR:
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Когда DAO, а когда Active Record

Сообщение zelenin »

xoma_204 писал(а):Так до конца и не понял, есть разные куски сайта которые взаимодействуют с БД, просто напишите плз для каждого конкретного из вариантов что лучше использовать DAO или AR:
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
1) DAO
2) AR
3) AR
4) AR
xoma_204
Сообщения: 318
Зарегистрирован: 2013.12.12, 02:06

Re: Когда DAO, а когда Active Record

Сообщение xoma_204 »

zelenin писал(а):
xoma_204 писал(а):Так до конца и не понял, есть разные куски сайта которые взаимодействуют с БД, просто напишите плз для каждого конкретного из вариантов что лучше использовать DAO или AR:
1)форма поиска (вводим кучу данных - получаем результат, будет куча джоинов, надо чтобы данные защищались)
2)запись комментариев, тут уже пользователь просто оставляет коммент и идет запись в бд
3)выборка для страницы профиля( например у каждого есть свой профиль, и у него ОГРОМНАЯ КУЧА ВСЯКИХ ДАННЫХ - фото, город, пол, возраст и тд...) и все это обедняется и показывается на одной странице
4)Админка, тут удаляем редактируем и создаем например пользователей, опять же с кучей харакеристик
Чем грамотнее всего лучше воспользоваться для этих 4 вариантов?где DAO а где AR?
Заранее благодарю за ответ
1) DAO
2) AR
3) AR
4) AR
Спасибо, а можно вкратце прокоментировать для каждого почему имено так?Я слышал что DAO быстрее, и мне казалось для 3 пункта лучше DAO, ведь тогда страница будет быстрее грузится, почему имено AR?
со 2 и 4 более менее понятно, для записи в бд всегда используем AR
Последний раз редактировалось xoma_204 2014.03.11, 22:14, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Когда DAO, а когда Active Record

Сообщение zelenin »

если делаем тяжелую выборку быстрее будет DAO (да вообще оно будет быстрее). Но для выборки одной/нескольких сущностей УДОБНЕЕ пользоваться AR.
xoma_204
Сообщения: 318
Зарегистрирован: 2013.12.12, 02:06

Re: Когда DAO, а когда Active Record

Сообщение xoma_204 »

zelenin писал(а):если делаем тяжелую выборку быстрее будет DAO (да вообще оно будет быстрее). Но для выборки одной/нескольких сущностей УДОБНЕЕ пользоваться AR.
Ну вот смотрите есть страница пользователя, там сразу идет выборка: аватарки, фотографий, города проживания, друзей, пола,
Т.е куча различных связанных таблиц.
Все равно AR?
К тому же в доках читаю
Лучше всего использовать AR для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. В сложных случаях следует использовать Yii DAO.
Или я чего то не понимаю?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Когда DAO, а когда Active Record

Сообщение zelenin »

xoma_204 писал(а):
zelenin писал(а):если делаем тяжелую выборку быстрее будет DAO (да вообще оно будет быстрее). Но для выборки одной/нескольких сущностей УДОБНЕЕ пользоваться AR.
Ну вот смотрите есть страница пользователя, там сразу идет выборка: аватарки, фотографий, города проживания, друзей, пола,
Т.е куча различных связанных таблиц.
Все равно AR?
ничего страшного - выборка одной сущности с несколькими джойнами. Не думаю, что у вас там что-то тяжелое будет.
xoma_204
Сообщения: 318
Зарегистрирован: 2013.12.12, 02:06

Re: Когда DAO, а когда Active Record

Сообщение xoma_204 »

Лучше всего использовать AR для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. В сложных случаях следует использовать Yii DAO.
Что тогда значит сложные случаи? можно пару примеров?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Когда DAO, а когда Active Record

Сообщение zelenin »

xoma_204 писал(а):
Лучше всего использовать AR для моделирования таблиц в конструкциях PHP и для несложных SQL-запросов. В сложных случаях следует использовать Yii DAO.
Что тогда значит сложные случаи? можно пару примеров?
выборка сотен-тысяч чего-то, с несколькими джойнами - множество моделей, занимающих много памяти.
Профиль пользователя - модель Пользователя, связанная модель Данных Пользователя, если выносите данные в отдельную таблицу. Что там еще может быть? 2 модели всего.
IvanChe
Сообщения: 89
Зарегистрирован: 2012.11.25, 18:55

Re: Когда DAO, а когда Active Record

Сообщение IvanChe »

а еще не забывайте пользоваться грамотно кешем и запросы оптимизировать. Обычно это лучше ускоряет :)
И вообще, как я понимаю, то основная разница между АР и ДАО - это, что в пером случае формируется тяжелый массив со всеми связями, поведениями и тд, а ДАО просто вернет в виде массива выборку из бд.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Когда DAO, а когда Active Record

Сообщение zelenin »

IvanChe писал(а):а еще не забывайте пользоваться грамотно кешем и запросы оптимизировать. Обычно это лучше ускоряет :)
И вообще, как я понимаю, то основная разница между АР и ДАО - это, что в пером случае формируется тяжелый массив со всеми связями, поведениями и тд, а ДАО просто вернет в виде массива выборку из бд.
так и есть.
А кэширование в БД превращает тяжелый запрос на легкий на время кэширования.
Ответить