Как стать автором
Обновить

Комментарии 28

Прошу раскрыть вопрос реализации данной технологии на уровне баз данных. Не гонять же на каждый пользовательский чих select count(*)
А может пользоваться SQL_CALC_FOUND_ROWS?
странная статья, сравнивают SQL_CALC_FOUND_ROWS и count, но при этом к count не плюсуют еще время выполнения выборки 5 айтемов.
Статья очень правильная от очень серьёзных и авторитетных людей.

Что и куда нужно плюсовать?
да был не прав, не внимательным смотрел
Я что-то очень сомневаюсь, что подобные серьезные компании будут использовать MySQL. А не серьезные и не заметят нагрузки на сервер базы данных при пересчетах.
что ж, у всех, такая не любовь к MySQL. В приведенных примерах, где 1 апдейт в секунду будет, поскольку слабо верится, что добавлением товаров занимаются тысячи людей, можно поставить десятки репликаций и все будет летать.
Каждому свое. Я готов любить MySQL до тех пор, пока он твердо стоит на ногах, а не валяется в бессознательном состоянии…
гугл ведь пользуется
А Facebook использует…
По-идее можно всё сильно кешировать. Естественно, будут проблемы с часто обновляющимися данными (вроде количества оставшихся билетов). Может, в таких случаях можно предупреждать: «Данные могут быть немного устаревшими».
круто! пользователю сразу станет легче от осознания того, что он работает с неактуальными данными
А может один раз выбрать все необходимые метрики. Как пользователь выберет что-то тогда уже загрузить отдельно эту сущность из базы и показать актуальные данные.
Можно и сфинкс заюзать, если абсолютная точность данных не критична.
а вариантов других нет — или грузить всё и фильтровать на клиенте (допустимо только тогда, когда данных реально мало. как оптимизация для узких диапазонов — вполне) или делать аяксовые запросы.

да и COUNT(*) совсем не страшный, правда.
(а) почему бы и не гонять? его стоимость на правильной базе невелика.
(б) если оказывается, что стоимость велика, можно кэшировать сабсет данных по поиску целиком, и в памяти делать выборки по нему.
Объясните, почему эта статья — перевод, и почему ссылка на оригинал ведет не на статью?
Что значит «почему эта статья — перевод»? Потому что, видимо, она переведена с другого языка.
Ваш Капитан.

А по поводу ссылки согласен, лучше наверно подправить.
Вещь действительно очень полезная и удобная… Где бы почитать про реализацию данной системы? Может кто-нить поделится ссылкой/опытом?
Да что там читать-то?

На примере kinobaza.tv/filter

Клиентская часть фильтра реализуется элементарно на JS созданием пяти классов (единичный выбор, множественный выбор, выбор диапазона + вспомогательные 2 класса). Затем для каждого критерия фильтра создается объект соответствующего класса, на события изменения объекта навешиваются обновления интерфейса (Observer)

Как было сказано в статье, если выборка долго выполняется, то ставим задержку (пол секунды достаточно). По истечении задержки, если больше изменений фильтра небыло, отправляем запрос на сервер. Обработкой фильтра и поиском подходящих результатов у нас занимается Sphinx. Он выдает id элементов, попавших под выборку. По этим id получаются записи из БД или кеша (в зависимости от наличия во втором).

Ну и финальный этап — генерация представления и вставка вместо уже существующего блока с результатами :)
Если пользователь во время фильтрации изменил значение фильтра, race condition не возникает? И как с этим бороться кроме блокирования фильтров или синхронного аякс запроса?
прерываем текущий активный запрос и иннициируем новый, благо XmlHttpRequest позволяет. Этому конечно же предверяем отложенную загрузку с учетом что пользователь мог изменить фильтр случайно и решил исправиться.
Ага, точно, спасибо=)
Жаль только, что у МТС калькулятор на flash выполнен (для всего этого есть jQuery, притом из коробки), да еще и вылазит из верстки…
Каждый вариант имеет свои недостатки и достоинства, и универсального нету.
Месяц назад на хабре был обзор англоязычных статей про интерфейсы, очень понравилось первое решение. Вполне может посоревноваться с примером с Нокиа.
Интересная реализация получилась на Подбор подарка
Те же фильтры, они же представлены в виде теста, в любой момент предлагается выбрать значение одного фильтра, однако одним кликом можно перейти на любой другой фильтр.
Очень актуально, когда вариантов выбора всех значений для всех фильтров очень много.
В этой задачей это кажется лучшим вариантом, но, разумеется, не универсальным.
Хотя если бы и был какой-то универсальный, лучший механизм, внедренный повсеместно — привыкшие к такому интерфейсу пользователи не замечали бы его возможных недостатков.
Как бы так сделать, чтобы при выборе другого региона, вся эта флэшина не заргужалась заново…
И у меня создалось впечатление, что Питер в явном игноре…
Безотносительно к паттерну и переводу. «Автор», каталог паттернов Quince — на три четверти тянут из книжки Тидвелл: designinginterfaces.com/

Красавцы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории