Станислав спасибо. Надо будет подумать.
Тут дело просто в том, что у меня импорт не один раз в день. А именно в рабочие часы прислал поставщик прайс к примеру, или вот прям сейчас позвонил ген дир и просит прям сейчас поменять цены на 20-30 продуктов. Ранее до jbzoo как раз был двиг написанный на C, но к можалению приходится от него уходить.
Так вот вопрос мой именно в мелких импортах по 10-50-100-500 товаров... Пока до оптимизации, как написал Денис, я так понял нужно просто обновлять базу для фильтра 1 раз в сутки например.
У вас будут только 2 нюанса:
1. Новый товар не попал в параметризованную выдачу до индексации. Критично? Да ни разу. Просто задаем себе вопрос "А если бы поставщик добавил новый товар завтра?". Может ли это быть очень критично? Теоретически, да. Если заказчик торгует айфонами и новая модель в первый день официальных продаж не проиндексирована после добавления в прайс. Только обычно в таких случаях на сайте уже висит баннер на полстраницы с прямой ссылкой на товар
2. Имеющийся товар до индексации не будет попадать в фильтр по диапазону цен. Возьмем обычный юзкейс: "выбрать недорогой планшет за 60-80 у.е. для убийства времени в транспорте или ребенку по улице бегать, чтобы было не очень жалко если разобьется, потеряется, будет украден". Многие ли поставят в поиске диапазон цен 60-80 или 0-80? 99,9% поставят с запасом минимум 20-30%. Если скачок цен не будет аномальным (как например в Украине, при аномальном скачке курса доллара с 17,5 до почти 40 в феврале), то тут тоже особо ничего не грозит, так как в большинстве случаев параметры поиска, выставленные с запасом, буду охватывать новую цену.
Для Дениса.
Оптимизация может существенно ускорить индексацию по сравнению с нынешней. Но как бы вы оценили теоретическую возможность сокращения импорта и индексации до максимум 15-20 минут на каталоге из 50тыс. наименований, в которых все товары имеет примерно 20 параметров? Я подозреваю, что для ответа на такой запрос подойдет фраза из "Операции Ы" "Вы ставите нереальные планы!" А если найдется клиент (который всегда прав), который захочет добиться таких показателей? Сразу будем опускать лапки и с виноватым видом бурчать про "Архитектура такая и не заточено под такие объемы?".
Думаю, вы сами прекрасно понимаете пределы скорострельности своей системы и факторы, которые могут на нее повлиять. Если написать собственную процедуру импорта и индексации - неуниверсальную, которая построена на уже существующей статической модели параметров товаров, меняющейся крайне редко, то можно существенно ускориться за счет того что:
1) при манипуляциях в #_zoo_jbzoo_index не нужно будет дополнительно искать ID элементов параметров по их имени - можно сразу оперировать ID. Критично это или нет для такого случая? Причем, у меня пока что добавлены только 3 типа и у меня уже 94 параметра, окончательно ожидается 1000+ параметров.
2) при манипуляциях в #_zoo_jbzoo_index_<тип> не нужно будет искать соответствующее поле (включающее ID и тип данных - string, numeric, date) для параметра по имени. Скриншот структуры таблиц индексов для типа. Обратите внимание на количество полей и это еще не предел.
3) дополнительно не надо проверять - появились ли новые параметры в товарах или нет.
4) некоторые записи индекса #_zoo_jbzoo_index, включащие в себя _itemauthor, _itemcreated,_itemmodified, _itempublish_up, _itempublish_down можно обновлять одним запросом в таблицу или вообще не обновлять.
Скажите, если я не прав, недооцениваю возможности оптимизации или неправильно понимаю принципы работы импорта и индексации, или описанные мною проблемы надуманные
Edited by Станислав, 28 April 2015 - 00:38.