Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как работает база данных для yandex market / 19 сообщений из 19, страница 1 из 1
07.01.2014, 10:31
    #38518932
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Там база товаров, у каждого товара есть атрибуты, общее число различных атрибутов вероятно десятки тысяч.
Запрос может включать фильтр - комбинацию нескольких атрибутов, включая атрибуты с диапазоном значений.
Но, все это не ново и делается с SQL базами.

Интересен другой момент - если внимательно посмотреть - для каждого аттрибута там показывается - сколько значений в него попадает при текущем фильтре (текущий фильтр - имеется ввиду текущая комбинация из других аттрибутов). Особенно это заметно для аттрибутов с диапазоном (см скриншот).

Как они это делают? Если взять и попробовать посчитать это в лоб - это не получится - будет слишком много запросов к базе - считать число товаров для каждого аттрибута + дополнительно считать границы значений для аттрибутов-диапазонов.

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

Вобщем, хочу знать как такую штуку можно слелать, если кто знает информацию по теме скиньте плиз.



П.С. Еще вроде-как некоторые поисковики умеют похожую штуку делать, вроде-как ElasticSearch делает что-то похобное - показывает число выбранных элементов по аттрибутам фильтра, но я его плохо знаю и не уверен что это именно так, кто с ним работал просветите плиз.
...
Рейтинг: 0 / 0
07.01.2014, 11:24
    #38518944
arni
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
private,

не понятно что конкретно вы вопрошаете:
- как яндекс считает?
- как ему удается считать так быстро?

Полагаю ответами будут:
- грамотная организация БД, далее SQL,
- в распоряжении Яндекса вычислительная мощь "до жопы", к тому же она размазана по нескольким ДЦ. Не вижу магии в том, чтобы посчитать конкретного клиента без тормозов. Полагаю, их параллельно тысячи сидят на подборе, а не миллионы.
...
Рейтинг: 0 / 0
07.01.2014, 11:35
    #38518945
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Посчитать число результатов возвращаемых для каждого аттрибута на SQL базе мне кажется не получится - потому-что надо тогда выполнить столько запросов сколько аттрибутов на странице.

На странице выбора фотоаппаратов их штук 40 наверно, делать по нескольку десятков запросов к базе ради одной страницы - мне кажется это слишком даже если есть лишние мощности.
...
Рейтинг: 0 / 0
07.01.2014, 11:47
    #38518947
arni
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
private,

учитывая, что после поиска и связаной с этим рекламы для Яндекса его Маркет наверное следующий по доходам сервис, то я думаю на серверах там не экономят. Ресурс организован отлично, работает быстро - тут не поспоришь. И при наличии достаточных можностей я не вижу проблем размазать базу так, чтобы параллельно выполнять запросы по всем катагорям разом.
...
Рейтинг: 0 / 0
07.01.2014, 12:01
    #38518953
Goffman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
privateНа странице выбора фотоаппаратов их штук 40 наверно, делать по нескольку десятков запросов к базе ради одной страницы - мне кажется это слишком даже если есть лишние мощности.
скорее всего делают одним запросом
...
Рейтинг: 0 / 0
07.01.2014, 12:10
    #38518955
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
privateПосчитать число результатов возвращаемых для каждого аттрибута на SQL базе мне кажется не получится - потому-что надо тогда выполнить столько запросов сколько аттрибутов на странице.

???!!! чиво ??!

ты как себе представляешь, ваще, структуру БД в части этих "аттрибутов" ?
это делается одним запросом, без вариантов !
...
Рейтинг: 0 / 0
07.01.2014, 13:42
    #38518981
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
private,

Откройте для себя понятие составного индекса и вас попустит. И да, вам в домашних условиях такой фокус провернуть неполучится - железо не то.
...
Рейтинг: 0 / 0
07.01.2014, 14:52
    #38519019
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
privateОсобенно это заметно для аттрибутов с диапазоном (см скриншот).
Хранить минимальное и максимальное значение для атрибута не так уж и сложно. Вытащить два
целых числа из базы тоже не занимает времени. Как уже сказали, вычислительные мощности там
совсем не помоечного железа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.01.2014, 18:03
    #38519101
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
авторХранить минимальное и максимальное значение для атрибута не так уж и сложно.Там только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно.

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

select количество товаров(*)
where текущий фильтр из других аттрибутов + фильтр по интересующему нас атрибуту

И просчитать такие запросы по всем аттрибутам.
...
Рейтинг: 0 / 0
07.01.2014, 18:03
    #38519102
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Опечатался, авторТам только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно. Читать как

Там НЕ только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно.
...
Рейтинг: 0 / 0
07.01.2014, 18:18
    #38519112
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
АПДЕЙТ, проигнорируйте пожжалуйста 2 предыдущих сообщения, я непонятно там написал, вот что хотел сказать:

Там не только минимальное и максимальное хранится, с ними то вобщем понятно что вытащить можно.

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

Для аттрибутов булеан

Код: sql
1.
2.
select количество товаров
where текущий фильтр из других аттрибутов + фильтр по интересующему нас атрибуту


Для аттрибутов перечислений (см скриншот ниже, там показывается какие значения из перечисления пустые а какие нет)

Код: sql
1.
2.
3.
для каждого значения из перечисления
  select количество товаров
  where текущий фильтр из других аттрибутов + фильтр по значению


Для аттрибутов диапазонов

Код: sql
1.
2.
3.
4.
5.
select нижнюю границу диапазона
where текущий фильтр из других аттрибутов

select верхнюю границу диапазона
where текущий фильтр из других аттрибутов


И просчитать такие запросы по всем аттрибутам.

Скриншот где видно что по каждому значению из перечисления посчитано количество товара для каждого значения
...
Рейтинг: 0 / 0
07.01.2014, 18:34
    #38519121
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
private,

Все три типа атрибутов физически реализовываются через диапазон, т.к. первые два являются его частными случаями.

По сути, задачу можно решить многомерным кубом. Очень многомерным, в некоторых случаях. Но зная яндекс, я не думаю, что они использовали для этого реляционную БД, не говоря уже о каком-либо стандартном OLAP.
...
Рейтинг: 0 / 0
07.01.2014, 18:58
    #38519137
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Да, я тоже подозреваю что там какой-то многомерный индекс, интересно узнать как такие штуки работают.
...
Рейтинг: 0 / 0
07.01.2014, 22:38
    #38519231
Как работает база данных для yandex market
Ennor TiegaelПо сути, задачу можно решить многомерным кубом. Очень многомерным, в некоторых случаях. Но зная яндекс, я не думаю, что они использовали для этого реляционную БД, не говоря уже о каком-либо стандартном OLAP.
В рекламе они MS Sql Server пользуют (смотрите их вакансии). Уверен, что на Маркете тоже, задача вполне по силам сиквелу.

private, если субд у вас Sql server, читайте про оконные функции )
...
Рейтинг: 0 / 0
08.01.2014, 07:39
    #38519370
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Евгений Кульпин,

Я как-то собеседовался в яндекс, несколько лет назад, правда. Так вот, о какой бы то ни было разработке на MSSQL речь не шла вообще - исключительно администрирование покупных инсталляций (1С или Навижн, не помню точно, но что-то в этом духе).

Что-то, конечно, могло измениться за 5 лет, но скорее всего до сих пор все через grep делают :)
...
Рейтинг: 0 / 0
08.01.2014, 08:50
    #38519384
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Есть специальные многомерные индексы R-tree http://en.wikipedia.org/wiki/R-tree
Может у них что-то похожее
...
Рейтинг: 0 / 0
08.01.2014, 15:26
    #38519561
Как работает база данных для yandex market
Ennor TiegaelЕвгений Кульпин,

Я как-то собеседовался в яндекс, несколько лет назад, правда. Так вот, о какой бы то ни было разработке на MSSQL речь не шла вообще - исключительно администрирование покупных инсталляций (1С или Навижн, не помню точно, но что-то в этом духе).

Что-то, конечно, могло измениться за 5 лет, но скорее всего до сих пор все через grep делают :)
Повторяю, просмотрите их вакансии http://company.yandex.ru/job/vacancies/?city=msk ), сейчас есть позиции на MySql, периодически встречаются и другие СУБД.
В октябре 2013 знакомый туда пошел работать именно на MS Sql Server.
У них огромный зоопарк решений.
...
Рейтинг: 0 / 0
08.01.2014, 15:49
    #38519590
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
private
П.С. Еще вроде-как некоторые поисковики умеют похожую штуку делать, вроде-как ElasticSearch делает что-то похобное - показывает число выбранных элементов по аттрибутам фильтра, но я его плохо знаю и не уверен что это именно так, кто с ним работал просветите плиз.

Это называется faceted search.
...
Рейтинг: 0 / 0
08.01.2014, 16:41
    #38519630
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает база данных для yandex market
Да, это так и называется в ElasticSearch, на днях постараюсь с ним подробней разобраться, может он из коробки это делает.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как работает база данных для yandex market / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]