IamSmorodin
22.10.2012 - 20:57
Человек на сайте оставляет комментарии. Мне необходимо получить то количество, которое оставил тот или иной пользователь. Как лучше: выбирать из таблицы комментариев по id автора или при добавлении комментария увеличивать определенный параметр в таблице пользователей? Спасибо.
_____________
Мой TwitterПодписывайтесь :)
Игорь_Vasinsky
22.10.2012 - 21:11
COUNT ... WHERE id = ....
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
IamSmorodin выгодно и правильно конечно же хранить количество комментариев в отдельном поле, а не считать на лету.
waldicom
22.10.2012 - 22:02
Цитата (ИНСИ @ 22.10.2012 - 19:01) |
IamSmorodin выгодно и правильно конечно же хранить количество комментариев в отдельном поле, а не считать на лету. |
правильно, то конечно правильно, но иногда бывает правильно по-другому. На нагруженных сайтах...
Но в данном случае покатит и так.
_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Цитата |
На нагруженных сайтах... |
Ну, это уже совсем другое. В таких проектах обычно свои движки специально пишут + кеш в основном выполняет всю работу.
Ramzil_Nixon
23.10.2012 - 17:46
Цитата (IamSmorodin @ 22.10.2012 - 16:57) |
Человек на сайте оставляет комментарии. Мне необходимо получить то количество, которое оставил тот или иной пользователь. Как лучше: выбирать из таблицы комментариев по id автора или при добавлении комментария увеличивать определенный параметр в таблице пользователей? Спасибо. |
Мне лучше считать по ID пользователя. Так в случаи удаление какого либо комментария будет верно показывать. Это конечно мое мнение..
_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...
vagrand
23.10.2012 - 18:42
waldicom
Цитата |
правильно, то конечно правильно, но иногда бывает правильно по-другому. На нагруженных сайтах... |
Как раз то для нагруженных сайтов и нужно подсчитывать при изменении количества коментов и хранить в отдельном поле.
Ramzil_Nixon
Цитата |
Мне лучше считать по ID пользователя. Так в случаи удаление какого либо комментария будет верно показывать. Это конечно мое мнение.. |
Триггеры для этого есть
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Цитата |
Как раз то для нагруженных сайтов и нужно подсчитывать при изменении количества коментов и хранить в отдельном поле. |
Не всегда. Все зависит от того, как ты структуру БД спроектировал и реализовал сам движок.
vagrand
27.10.2012 - 10:45
ИНСИ
Цитата |
Не всегда. Все зависит от того, как ты структуру БД спроектировал и реализовал сам движок. |
Валяй, приведи пример организации БД и движка (без кешироваия) где запрос:
select count(...) from comments where post_id = ...
будет быстрее чем взять уже посчитанное значение из поля в самой таблице постов.
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Ты по человечески говорить можешь? Если у тебя не хватает опыта в таких делах, это не значит что другие неправы.
После твоего "гонора" (типа я говорю чушь, а ты меня пытаешься вразумить) не буду отвечать и делиться опытом. Поэтому если считаешь что использовать отдельное поле ВСЕГДА лучше, то делай как считаешь нужным.
vagrand
28.10.2012 - 19:31
ИНСИ
Ой как удобно то построить из себя оскорбленную невинность. Если сказал А то надо говорить и Б, а так можешь оставить свой опыт при себе, т.к. мне и своего хватает. Я очень часто в своей работе сталкиваюсь с подобными вещами и не нашел способа лучше чем использовать отдельное поле обновляя его при помощи триггеров. Если у тебя опыта больше то приведи мне нормальный пример, который будет быстрее и создаст меньше нагрузки на БД и я с удовольствием признаю что был не прав и пополню свои знания, а нет так и не надо вводить людей в заблуждение.
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Ок. Тогда давай будем поэтапно разбирать ситуацию.
Как ты обычно реализовываешь хранение Логов, Уведомлений и т.д, учитывая что онлайн у тебя 10-15к людей ?
sharki
28.10.2012 - 21:47
vagrand
Наверное уже говорили, но стоит создать таблицу состояний, и там уже хранить и кол-во комментов и что-то еще, тем самым ты исключишь возможность блокировок таблиц
Цитата |
Наверное уже говорили, но стоит создать таблицу состояний, и там уже хранить и кол-во комментов и что-то еще, тем самым ты исключишь возможность блокировок таблиц |
Это если использовать MyISAM
sharki
29.10.2012 - 09:08
ИНСИ
MyISAM редко используется в нормальных продакшинах, а потому что там нету транзакций, а если подумать о ТС, то ему все равно как хранить, ибо транзакции не использует, и нагрузки как таковой на БД не будет.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.