|
|
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Там база товаров, у каждого товара есть атрибуты, общее число различных атрибутов вероятно десятки тысяч. Запрос может включать фильтр - комбинацию нескольких атрибутов, включая атрибуты с диапазоном значений. Но, все это не ново и делается с SQL базами. Интересен другой момент - если внимательно посмотреть - для каждого аттрибута там показывается - сколько значений в него попадает при текущем фильтре (текущий фильтр - имеется ввиду текущая комбинация из других аттрибутов). Особенно это заметно для аттрибутов с диапазоном (см скриншот). Как они это делают? Если взять и попробовать посчитать это в лоб - это не получится - будет слишком много запросов к базе - считать число товаров для каждого аттрибута + дополнительно считать границы значений для аттрибутов-диапазонов. Мне кажется там используется что-то вроде базы в памяти, когда основная часть данных эффективно отсекается по индексам по паре тройке аттрибутов - а оставшийся небольшой кусок уже неэффективно просчитывается тупым перебором. Вобщем, хочу знать как такую штуку можно слелать, если кто знает информацию по теме скиньте плиз. П.С. Еще вроде-как некоторые поисковики умеют похожую штуку делать, вроде-как ElasticSearch делает что-то похобное - показывает число выбранных элементов по аттрибутам фильтра, но я его плохо знаю и не уверен что это именно так, кто с ним работал просветите плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 10:31 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
private, не понятно что конкретно вы вопрошаете: - как яндекс считает? - как ему удается считать так быстро? Полагаю ответами будут: - грамотная организация БД, далее SQL, - в распоряжении Яндекса вычислительная мощь "до жопы", к тому же она размазана по нескольким ДЦ. Не вижу магии в том, чтобы посчитать конкретного клиента без тормозов. Полагаю, их параллельно тысячи сидят на подборе, а не миллионы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 11:24 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Посчитать число результатов возвращаемых для каждого аттрибута на SQL базе мне кажется не получится - потому-что надо тогда выполнить столько запросов сколько аттрибутов на странице. На странице выбора фотоаппаратов их штук 40 наверно, делать по нескольку десятков запросов к базе ради одной страницы - мне кажется это слишком даже если есть лишние мощности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 11:35 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
private, учитывая, что после поиска и связаной с этим рекламы для Яндекса его Маркет наверное следующий по доходам сервис, то я думаю на серверах там не экономят. Ресурс организован отлично, работает быстро - тут не поспоришь. И при наличии достаточных можностей я не вижу проблем размазать базу так, чтобы параллельно выполнять запросы по всем катагорям разом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 11:47 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
privateНа странице выбора фотоаппаратов их штук 40 наверно, делать по нескольку десятков запросов к базе ради одной страницы - мне кажется это слишком даже если есть лишние мощности. скорее всего делают одним запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 12:01 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
privateПосчитать число результатов возвращаемых для каждого аттрибута на SQL базе мне кажется не получится - потому-что надо тогда выполнить столько запросов сколько аттрибутов на странице. ???!!! чиво ??! ты как себе представляешь, ваще, структуру БД в части этих "аттрибутов" ? это делается одним запросом, без вариантов ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 12:10 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
private, Откройте для себя понятие составного индекса и вас попустит. И да, вам в домашних условиях такой фокус провернуть неполучится - железо не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 13:42 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
privateОсобенно это заметно для аттрибутов с диапазоном (см скриншот). Хранить минимальное и максимальное значение для атрибута не так уж и сложно. Вытащить два целых числа из базы тоже не занимает времени. Как уже сказали, вычислительные мощности там совсем не помоечного железа. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 14:52 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
авторХранить минимальное и максимальное значение для атрибута не так уж и сложно.Там только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно. Там также показывается минимальное и максимальное значение с учетом текущего выбранного фильтра по другим аттрибутам . Соответственно чтобы эти числа посчитать нужно выполнить запрос select количество товаров(*) where текущий фильтр из других аттрибутов + фильтр по интересующему нас атрибуту И просчитать такие запросы по всем аттрибутам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 18:03 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Опечатался, авторТам только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно. Читать как Там НЕ только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 18:03 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
АПДЕЙТ, проигнорируйте пожжалуйста 2 предыдущих сообщения, я непонятно там написал, вот что хотел сказать: Там не только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно. Там также показывается минимальное и максимальное значение с учетом текущего выбранного фильтра по другим аттрибутам. Соответственно чтобы эти числа посчитать нужно выполнить запросы Для аттрибутов булеан Код: sql 1. 2. Для аттрибутов перечислений (см скриншот ниже, там показывается какие значения из перечисления пустые а какие нет) Код: sql 1. 2. 3. Для аттрибутов диапазонов Код: sql 1. 2. 3. 4. 5. И просчитать такие запросы по всем аттрибутам. Скриншот где видно что по каждому значению из перечисления посчитано количество товара для каждого значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 18:18 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
private, Все три типа атрибутов физически реализовываются через диапазон, т.к. первые два являются его частными случаями. По сути, задачу можно решить многомерным кубом. Очень многомерным, в некоторых случаях. Но зная яндекс, я не думаю, что они использовали для этого реляционную БД, не говоря уже о каком-либо стандартном OLAP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 18:34 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Да, я тоже подозреваю что там какой-то многомерный индекс, интересно узнать как такие штуки работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 18:58 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelПо сути, задачу можно решить многомерным кубом. Очень многомерным, в некоторых случаях. Но зная яндекс, я не думаю, что они использовали для этого реляционную БД, не говоря уже о каком-либо стандартном OLAP. В рекламе они MS Sql Server пользуют (смотрите их вакансии). Уверен, что на Маркете тоже, задача вполне по силам сиквелу. private, если субд у вас Sql server, читайте про оконные функции ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 22:38 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Евгений Кульпин, Я как-то собеседовался в яндекс, несколько лет назад, правда. Так вот, о какой бы то ни было разработке на MSSQL речь не шла вообще - исключительно администрирование покупных инсталляций (1С или Навижн, не помню точно, но что-то в этом духе). Что-то, конечно, могло измениться за 5 лет, но скорее всего до сих пор все через grep делают :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 07:39 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Есть специальные многомерные индексы R-tree http://en.wikipedia.org/wiki/R-tree Может у них что-то похожее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 08:50 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelЕвгений Кульпин, Я как-то собеседовался в яндекс, несколько лет назад, правда. Так вот, о какой бы то ни было разработке на MSSQL речь не шла вообще - исключительно администрирование покупных инсталляций (1С или Навижн, не помню точно, но что-то в этом духе). Что-то, конечно, могло измениться за 5 лет, но скорее всего до сих пор все через grep делают :) Повторяю, просмотрите их вакансии http://company.yandex.ru/job/vacancies/?city=msk ), сейчас есть позиции на MySql, периодически встречаются и другие СУБД. В октябре 2013 знакомый туда пошел работать именно на MS Sql Server. У них огромный зоопарк решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 15:26 |
|
||
|
Как работает база данных для yandex market
|
|||
|---|---|---|---|
|
#18+
private П.С. Еще вроде-как некоторые поисковики умеют похожую штуку делать, вроде-как ElasticSearch делает что-то похобное - показывает число выбранных элементов по аттрибутам фильтра, но я его плохо знаю и не уверен что это именно так, кто с ним работал просветите плиз. Это называется faceted search. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 15:49 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38518947&tid=1541019]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 158ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...