Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
PetroNotC Sharp
полудух
пропущено...

денормализация и поиск по ID - это самый быстрый вариант что-то найти
да. Но магазин плохо ложиться на данную модель. Отсюда костыли в виде EAV, xml, json,...

EAV - не обеспечивает нужной скорости сбора информации. Фактически EAV эффективен на коротких
точечных транзакциях типа security, metadata где мы берем ID принципала и смотрим какие напрмиер
у него права и привилегии есть. Если мы по толстому EAV (магазин) будем постоянно бомбить поисковыми
реквестами от UI фронта интернет магазина - то база умрёт.

Я готов спорить что умрёт на продуктовой нагрузке и при той архитектуре которую я имею в виду.
22 авг 19, 15:00    [21955587]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
mayton,
У меня тоже к нему куча наезда)).
Это костыль к Рсубд для движка магазина.
22 авг 19, 15:05    [21955593]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
mayton
на это ЛЮДИ нужны, а их нет. Сам такой поиск у них не в приоритете.
FTS и так есть. И кстати, в постгресе редиску тоже можно прикрутить.
также как у них есть битмапы на любую длину и операции по ним.

Ну и пускай нужны. Я-то тут причем?

По поводу FTS. Насколько я понимаю он потребности фасетного поиска не покрывает.
Если-бы покрывал - господин на хабре не стал-бы писать статью про Редисочный поиск.

Сообщение было отредактировано: 22 авг 19, 19:05
22 авг 19, 18:47    [21955868]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
полудух
откуда у тебя кириллица взялась во WHERE?
ну причем тут кодировка или ищем по ID или названию отеля.
Вроде главное что тут битовой маской не пахнет и битмапом. Или пахнет?
И если пахнет, то в каком месте?))))
Вот что главное.
22 авг 19, 19:10    [21955889]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
Прошу прощения. Вместо квотировать сообщение я нажал редактировать. Старая копия не сохранилась.
22 авг 19, 19:13    [21955892]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
mayton,
)
Хде прогер движка форума который должен был ТРИ раза спросить: "вы уверены?")))
22 авг 19, 19:23    [21955901]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
Да мы давно просили. Главный грохнул ПТ и с тех пор ни с кем ни общается.
22 авг 19, 19:28    [21955906]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
полудух,
Вот такое в урл
checkin_month=9;checkin_monthday=28;checkin_year=2019;checkout_month=10;checkout_monthday=3;checkout_year=2019;city=-2738120;class_interval=1;dest_id=-2738120;dest_type=city;dtdisc=0;from_sf=1;group_adults=2;group_children=0;highlighted_hotels=17190;inac=0;index_postcard=0;label_click=undef

Конечно, там есть и строки-стринги)
22 авг 19, 19:38    [21955918]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
mayton
Прошу прощения. Вместо квотировать сообщение я нажал редактировать. Старая копия не сохранилась.

бл?*:! ну спасибо
22 авг 19, 19:58    [21955934]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
денормализация по сути

PetroNotC Sharp
полудух
откуда у тебя кириллица взялась во WHERE?
ну причем тут кодировка или ищем по ID или названию отеля.
Вроде главное что тут битовой маской не пахнет и битмапом. Или пахнет?
И если пахнет, то в каком месте?))))
Вот что главное.

когда ищут по названию отеля, это отдельный input с поиском "налету"
фильтр к ней не имеет отношение
разумеется, если делать такие кривые "фильтры", там никакой битмап не прикрутишь.
22 авг 19, 20:01    [21955937]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
mayton
Прошу прощения. Вместо квотировать сообщение я нажал редактировать. Старая копия не сохранилась.

кстати, а какого у тебя есть кнопка редактировать, а у нас нет??
22 авг 19, 20:02    [21955938]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
При грамотном шардинге или партишенинге мы можем бизнес модель резать на кусочки.
Например checkout_year=2019 сразу отсечет нам ненужные года. Ну и хеш партицирование.
22 авг 19, 20:05    [21955942]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
полудух
mayton
Прошу прощения. Вместо квотировать сообщение я нажал редактировать. Старая копия не сохранилась.

кстати, а какого у тебя есть кнопка редактировать, а у нас нет??

У меня - перчатка Таноса.
22 авг 19, 20:06    [21955943]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
полудух
когда ищут по названию отеля, это отдельный input с поиском "налету"
это не понял.
Реально в букинге не на лету, т.к. перезапрос страницы на Enter.
И отель будет не конкретный, а просто справа в списке "товаров".
Его дополнительно надо будет там найти.
Криво это или нет, не задумывался. Не с чем сравнить.
Поисковый запрос не должен искать конкретный отель.
Он сохраняется у юзверя и может лежать годами.
22 авг 19, 20:16    [21955956]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
полудух,
Имхо, фасетный можно применять если у тебя запрос дольше 100мс.
Если нет, то можно не заморачиваться.
22 авг 19, 20:18    [21955958]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
PetroNotC Sharp
полудух,
Имхо, фасетный можно применять если у тебя запрос дольше 100мс.
Если нет, то можно не заморачиваться.

Любая база имеет тенденцию к росту. И эти 100мс с каждым днем растут.
22 авг 19, 20:27    [21955968]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
mayton,
Конечно.
автор
Фасетный поиск позволяет перемещаться по многомерному информационному пространству через объединение текстового поиска с постепенным сужением выбора в каждом измерении[

Ровно как букинге. Текстовый поиск плюс многомерное уточнение.
22 авг 19, 20:42    [21955979]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
Dima T
Member

Откуда:
Сообщений: 14090
mayton
Давайте обсудим недостатки решения которое приведено в статье https://habr.com/ru/post/261137/

Я так понимаю ТС в курсе тех алгоритмов, но ищет чудо, а все кто говорит что чуда не будет обзывает обкурившимися.
22 авг 19, 20:52    [21955989]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
Dima T
mayton
Давайте обсудим недостатки решения которое приведено в статье https://habr.com/ru/post/261137/

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

так ты сюда вбрасываешь даже не вникая в тему
эту ссылку сюда принёс я, так что да, я в курсе
чудо я не ищу, по факту я сейчас тут будущим магазино-строителям раскрываю глаза на качественный фильтр - отвечаю на вопросы
ты же мне советуешь EAV на первой странице, которое для фильтров где-то на последнем месте
учитывая, что я свой фреймворк написал и несколько CRM на заказ, я несколько в курсе про EAV
про ссылки и указатели так долго троллил, что аж жЫр с монитора закапал.
могу предложить другие варианты: невнимательный, рассеянный, тролльжЫрный Картинка с другого сайта.

PetroNotC Sharp
полудух
когда ищут по названию отеля, это отдельный input с поиском "налету"
это не понял.
Реально в букинге не на лету, т.к. перезапрос страницы на Enter.
И отель будет не конкретный, а просто справа в списке "товаров".
Его дополнительно надо будет там найти.
Криво это или нет, не задумывался. Не с чем сравнить.
Поисковый запрос не должен искать конкретный отель.
Он сохраняется у юзверя и может лежать годами.

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

ну вот поисковая строка, справа от неё 2 селекта "Заезд/Отъезд" + ещё опции.
поисковая строка сразу же выдаёт селектор аяксом, в нём выбирается пункт, у пункта есть ID и текст
спрашивается - НАХРЕНА текст пихать в URL?! Почему не ID?
КАК можно было такую длинную строку мусора сгенерить из такого маленького фильтра, это же талант нужен!
там всего-то должно было быть: /?f=id:22;in:2019-08-25;out:2019-09-10;mat:2;ch:1;num:1
а они чего сделали Картинка с другого сайта. дичь какая
на след.странице есть "Место/название объекта", так они даже оттуда слово воткнули в GET Картинка с другого сайта.
даже если они хотели, чтобы клиент, глядя на этот урл, мог увидеть название отеля...
как он его там увидит за всем этим мусором? Там один label занимает четверь.
22 авг 19, 22:08    [21956049]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
ну и на второй странице, слева, длинная колонка тех самых чекбоксов (опять же дичь - там 5 экранов вниз скроллить надо, а когда выбираешь один внизу, то страница обновляется и кидает обратно наверх Картинка с другого сайта.), которые должны быть просто цифрами
но это было бы слишком просто...
22 авг 19, 22:14    [21956055]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 938
PetroNotC Sharp
Криво это или нет, не задумывался. Не с чем сравнить.

https://fcenter.ru/product/type/5?vend=7¶m=1585_766_754&offset=0
22 авг 19, 22:16    [21956056]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
полудух, дружище , сбавь обороты. Здесь - тихий добрый форум и никто никого не обличает.
22 авг 19, 23:02    [21956077]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2447
полудух
PetroNotC Sharp
Криво это или нет, не задумывался. Не с чем сравнить.

https://fcenter.ru/product/type/5?vend=7¶m=1585_766_754&offset=0
основа фасетных фильтров в циферках в скобочках после фильтра.
По ссылке я этого не увидел.
И давайте различать интерфейс и функционал.
- если фильтр город=Москва, то нафига отправлять ID москвы вместо москвы?
Можно и порассуждать об этом.
полудух
глядя на этот урл, мог увидеть название отеля...
да не смотрит на урл никто.
22 авг 19, 23:13    [21956083]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42897
полудух
ну вот поисковая строка, справа от неё 2 селекта "Заезд/Отъезд" + ещё опции.
поисковая строка сразу же выдаёт селектор аяксом, в нём выбирается пункт, у пункта есть ID и текст
спрашивается - НАХРЕНА текст пихать в URL?! Почему не ID?
КАК можно было такую длинную строку мусора сгенерить из такого маленького фильтра, это же талант нужен!
там всего-то должно было быть: /?f=id:22;in:2019-08-25;out:2019-09-10;mat:2;ch:1;num:1
а они чего сделали Картинка с другого сайта. дичь какая
на след.странице есть "Место/название объекта", так они даже оттуда слово воткнули в GET Картинка с другого сайта.
даже если они хотели, чтобы клиент, глядя на этот урл, мог увидеть название отеля...
как он его там увидит за всем этим мусором? Там один label занимает четверь.

Если серъезно заниматься оптимизацией трафика - то нужно смотреть не в request а в response.
Там действительно вот где много избыточного. GraphQL в помощь. А эстетика URL никого не
парит потому что по хорошему она не нужна. Она может быть скрыта за приложением
типа thin-client и может строиться специальным билдером параметров.
23 авг 19, 07:40    [21956158]     Ответить | Цитировать Сообщить модератору
 Re: самый эффективный способ посчитать позиции в битмапе?  [new]
Dima T
Member

Откуда:
Сообщений: 14090
полудух
так ты сюда вбрасываешь даже не вникая в тему

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

Как посчитать единички в строке ты уже сам ответил 21954674, для ускорения можно только параллелить, и то не факт что значительное ускорение получишь.
Возможно быстрее будет искать с помощью strchr().
Еще можешь вектору заранее побольше памяти выделить, чтобы он часто перевыделением не занимался.
idV.reserve(1000000);

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

Но непонятно почему надо именно строку эту трансформировать в массив индексов? Почему сразу не получить массив в процессе расчета? Тем более что это СУБД, а в СУБД удобнее массивами(таблицами) оперировать, а не строки парсить.
23 авг 19, 08:38    [21956170]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / C++ Ответить