AndreM

Рейтинг
47
Регистрация
12.09.2007
potemishe:
Понравился новый список заявок: все информация о конкурентах и потенциальных исполнителях на виду. Может имеет смысл сделать значение рейтинга другим цветом (синим, например), чтобы он тоже выделся из всего текста, как количество отзывов?

Ok, попробуем, может действительно лучше будет.

Уважаемые пользователи! По результатам обращений в техподдержку на бирже создан раздел "Вопросы и ответы".

oldvovk:
Попробовал. В целом остался доволен текстами, ценами,
оперативностью перевода средств, поиском. Но. Но.
После покупки статьи по ссылке на загрузку даунлоадер не смог
ее загрузить, страница рефрешнулась и вывалилась на главную.
Теперь в админке найти ссылку на купленную статью не найти.
На посланное сообщение с вопросом за день ответа не получил.
Неприятно как-то.

Проблему решаем, вчера не было возможности ответить. Извините за неудобства.

Ратник:
Не знаю, что тому послужило причиной, но "червонцевые" заказы с биржи исчезли! 🍾 Хочется верить, что к этому причастны все критиковавшие унизительные расценки, что и побудило заказчика искать халявы в других местах. Биржу с праздником 🍻 успехов, процветания, и... жирных заказчегов!

Червонцевые заказы приняты к исполнению ))) потому и исчезли

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

Коля Дубр:

Ладно, я пойду бухать корпоратив и придумывать каверзные контраргументы, завтра Вас еще потерзаю :) Спасибо за интересную дискуссию.

не за что )) давай те лучше в понедельник, завтра выходные, отдыхать от компа надо... надо придумать еще что нибудь интересное.

базы можно здесь посмотреть http://www.maxmind.com/app/csv

кэширование не заменяет оптимальный алгоритм построения деревьев, это просто некая следующая ступень оптимизации.

Коля Дубр:
AndreM, а, вот тут-то мы и добрались до самого интересного, бишь до кеширования. Тогда внимание вопрос: если мы кэшируем дерево целиком, нам не пофигу, как его выбирать? Хоть тыщей запросов :) И еще вопрос: а зачем кэшировать промежуточно-абстрактное "дерево целиком", если можно закешировать результаты?

Насчет зависающих процессов - это надо смотреть на Вашу конкретную систему. Убейте, не пойму, где должен повиснуть запрос, достающий 1 запись по primary :)

ОК, а как Вы решаете задачу поиска в категории?

timur-kar, да, именно так. Ну, с небольшими хитростями.

1. Категории обновляются, то есть кэшируем мы на несколько минут. Кэшируется и весь результат, но дерево категорий используется и в некэширующихся местах. То есть имеем частичное кэширование.

2. 1 запрос по праймари не виснет, виснет очередь из нескольких тысяч таких запросов в секунду. К тому же паралельно много и других, довольно тяжелых запросов. Одно дерево нафиг никому не нужно по большому счету, нужно в сочетании.

3. Эффективный поиск пока в разработке, сейчас обычный полнотекстовый поиск по базе с указанием id категорий.

4. Рекурсия - не плохо, это математика и это хорошо. Только с умом.

5. Хранить левел - это удобно выводить, но не удобно обновлять, если что, кучи апдейтов и насилование мозга, не дай бог цифирку упустить. Было, проходили уже.

6. Путь к узлу не решит все задачи.

В общем все эти задачи у меня решаются один запросом, который я написал выше. На практике работает в целом отлично.

Коля Дубр:
timur-kar, для таких вещей как раз придумали Nested Sets. На такой структуре, очевидно, придется найти все айдишники подветвей и делать WHERE parent_id IN (1, 2, 3...). Подветви выбираем либо по схеме "раскрытое меню до текущей категории", либо последовательностью запросов с WHERE parent_id IN (...) по числу уровней. Но это действительно тяжелая штука. Я в итоге все-таки добавил nested sets специально под это.

да, штука тяжелая, но работает. У меня есть мысли, что по уму то надо бы у категории хранить инфу о подкатегориях, то есть использовать некую таблицу связок. Возможно это будет быстрее, чем IN (500 категорий), не проверял, хотя тут по индексам нормально.

Да, забыл что еще необходимо: в любой момент каждая категория должна знать своих потомков. Всех.

А про доступ к каждой категории. Предположим есть список статей с категоризацией. Если мы уже построили дерево для поиска в категориях, неужели мы будет опять выбирать названия категории, к которой относится каждая статья?

1. Задача не из учебника, а реальная. Проект http://www.tkat.ru

2. Связанные списки, я не математик, поэтому понимаю, что в этом случае каждая категория знает соседа и тд. Без доп выборок. Ну это оффтоп в нашем вопросе.

3. Селект - это я к тому, зачем на странице полное дерево. Например, искать в категории. А то скажут, что не нужно.

4. По большому счету и по моему мнению уровень вложенности не должен играть какую либо важную роль.

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

6. Практика показала, что доставание категорий запросом select * from category и последующий разбор пхпой, с возможным кэшированием на диске/в памяти построенного дерева, эффективней рекурсивных запросов примерно в 1000 раз - только по замеру времени, а про зависшие эти запросы в процессах под реальной нагрузкой я уже забыл. 🚬

Всего: 271