SlideShare a Scribd company logo
1 of 56
Download to read offline
Производительность
параметрического поиска
на основе опенсорс-
Николай Караман, Максим Терновой
Зачем нам поисковые
движки?
хАчу свой интернет-магазин!!!
Есть интернет-магазин
〉 много разных товаров с разными свойствами
〉 полнотекстовый поиск по названиям/описанию товара
〉 вычислять статистику
〉 учитывать «историю» пользователя
〉 выдавать ответ за приемлемое время
Базы данных с этим справятся плохо:(
4
Search engine спешит на помощь!
〉 Solr
〉 ElasticSearch
〉 Splunk
〉 MarkLogic
〉 Sphnix
…
http://db-engines.com/en/ranking/search+engine 5
Наш выбор – Solr
Solr
〉 open-source платформа полнотекстового поиска
〉 под капотом Apache Lucene
〉 является самым популярным поисковым движком
7
А почему не Lucene?
8
Lucene vs Solr
Many people new to Lucene and Solr will ask the obvious
question: Should I use Lucene or Solr?
The answer is simple: if you're asking yourself this question,
in 99% of situations, what you want to use is Solr.
http://www.lucenetutorial.com/lucene-vs-solr.html 9
http://www.lucenetutorial.com/lucene-vs-solr.html
A simple way to conceptualize the
relationship between Solr and Lucene is
that of a car and its engine. You can't drive
an engine, but you can drive a car.
Lucene vs Solr
Lucene – библиотека
Solr – приложение «из коробки»
11
Возможности Solr
〉 полнотекстовый поиск
〉 подсветка результатов
〉 фасетный поиск
〉 динамическая кластеризация
〉 интеграция с базами данных
〉 обработка документов со сложным форматом
(например, Word, PDF)
12
Пару слов про настройку Solr
Где скачать
http://lucene.apache.org/solr/mirrors-solr-latest-redir.html
Как установить
https://wiki.apache.org/solr/SolrInstall
13
Запросы в Solr
Анализаторы запросов (Query Parsers)
преобразуют текстовый запрос в запрос
соответствующий объектам Lucene Query
задать парсер
〉 defType параметр
defType=lucene
〉 локальный параметр
{!dismax}
15
Встроенные анализаторы
〉lucene – по умолчанию
〉dismax – позволяет запросы по многим полям с
разным весом
〉edismax – расширенный dismax
〉func
〉boost
〉….
https://wiki.apache.org/solr/QueryParser 16
Синтаксис запроса
Что скрывается за этими буквами?
〉 q
〉 fq
〉 facet
18
q
q – запрос вида: os:MACOS AND price:[* TO 2000]
〉 fq
〉 facet
19
fq
〉 q =os:MACOS AND price:[* TO 2000]
fq - фильтрующий запрос
1. q=*:*&fq=os:MACOS AND price:[* TO 2000]
2. q=*:*&fq=os:MACOS&fq=price:[* TO 2000]
〉 facet
20
Зачем такое дублирование?
q – с учетом score
fq – без учета score => fq быстрее
21
График сравнения query и filterQuery
src/test/java/com/yandex/java/party/shop/FqAgainsQTest.java 22
0
17,5
35
52,5
70
fq q
время выполнения 200K запросов при 8 фильтрах, однопоточнСекунд
facet
Отдельный определяющий аспект
пространства значений
Каждый аспект характеризует
пространство значений вдоль
какой-либо независимой оси или
измерения
http://wiki.iis.ru/wiki/Фасет 23
facet
〉 q
〉 fq
facet
〉 facet.field
〉 facet.prefix
〉 facet.query
〉 facet.pivot
24
facet.field
〉 q
〉 fq
facet
facet.field=os
〉 facet.prefix
〉 facet.query
〉 facet.pivot
25
facet.prefix
〉 q
〉 fq
facet
facet.field=os
facet.prefix=WINDOWS
〉 facet.query
〉 facet.pivot
26
facet.query
〉 q =os:MACOS AND price:[* TO 2000]
〉 fq
facet
〉 facet.field
〉 facet.prefix
facet.query=height:[* TO 150]
〉 facet.pivot
27
facet.pivot
〉 q
〉 fq
facet
〉 facet.field
〉 facet.prefix
〉 facet.query
facet.pivot=os,year,…
28
Немного примеров на живом Solr (админка)
http://localhost:8983/solr/#/shop/query 29
И вроде все хорошо,
но…
Какие же проблемы возникают
〉 медленная работа при получении данных
〉 не для всех фасетов все фильтры
〉 не хватает facet.prefix
〉 нужно учитывать «историю» пользователя
31
Медленная работа при получении данных
Solr – не система хранения, это система для индексации и
поиска!
32
33
src/test/java/com/yandex/java/party/shop/MysqlGettingTest.java src/test/java/com/yandex/java/party/shop/SolrGettingTest.java
0
10
20
30
40
4 12 24 100 1000 2000
MYSQL
Solr
Секунд
Размер пачки
Solr vs MYSQL получение 200K элементов
по Х элементов (используя id)
Solr vs MYSQL немного больше параметров поиска
src/test/java/com/yandex/java/party/shop/SolrAgainsMysqlGettingTestManyParamters 34
Секунд
0
160
320
480
640
800
960
1120
1280
1440
1600
mysql solr
время выполнения 200K запросов при 8 фильтрах, однопоточно, по
1486
35
Но как быстро все таки ищет Solr
- А влияет на это размер индекса?
35
К примеру 100K запросов с 8 фильтрами…
Получение 100K id по запросу с фильтрами в
зависимости от размера индекса
src/test/java/com/yandex/java/party/shop/QueryTest.java
36
Секунд
Размер индекса
0
8,5
17
25,5
34
500K 1M 2M 4M
время выполнения 100K запросов с 8 параметрами, однопоточно
Не для всех фасетов все фильтры
Не хотим учитывать цену в фасете по годам.
q=*:*&fq=os:MACOS&fq=price:[* TO 2000]&facet.field=years
q=*:*&fq=os:MACOS
&fq={!tag=price_tag}price:[* TO 2000]
&facet.field={!ex=price_tag}years
37
Как влияют теги на производительность
фасетов
src/test/java/com/yandex/java/party/shop/FacetTest.java 38
Секунд
0
100
200
300
400
500
Без тегов С тегами
Время для 100K запросов с 8 фасетами
Не хватает facet.prefix, но есть facet.query
Нужно учесть серийный номер с закодированным цветом или
же найти количество определенных вещей:
year:[2010 TO 2015] AND ram:[8 TO 12] AND owner:/.*Her.*/"
НО: facet.query не многопоточный пока:(
39
На сколько facet.query быстр?
src/test/java/com/yandex/java/party/shop/FacetTest.java 40
15
19,2
23,4
27,6
31,8
36
1 2 4 8
с тегами
без тегов
Секунд
Facet Query в одном запросе
100K запросов
Нужно учитывать «историю» пользователя
Хочу купить!
〉 Вывести с учетом фильтров, которые просмотрел/
выбрал/купил. А что если их больше 1000?
〉 Не выводить, которые просмотрел/выбрал/купил. И
опять же больше 1000!
41
Выводить с учетом фильтров
42
«Желанные товары, должны быть 

в начале поисковой выдачи», говорили они
А что если «желалок» много?
Смотря на сколько
Как бы выглядели подобные запросы?
43
q=*%3A*&limit=12&offset=46&fq=year%3A%28%221999%22%29&fq=is_free_shipping%3A%28%22true%22%29&fq=graphic_adapter%3A
%28%22ARM+Mali-T760%22%29&fq=color%3A%28%22Black%22%29&fq=location%3A%28%22CHINA%22%29&fq=os%3A%28%22MacOs
%22%29&fq=storage_type%3A%28%22CD%22%29&fq=manufactured_in_city%3A%28%22Kiev%22%29&fq=id%3A
%28745044+150655+654386+96643+720589+539414+299652+520272+289108+551627+83837+49092+512823+449487+751968+263210+39318
4+192611+937748+189766+201049+409053+485720+868563+364079+827460+608443+696274+706465+706148+868334+814274+68423+67379
3+227055+483215+638204+447773+835321+257405+569050+675653+331887+414714+212005+252369+476497+54924+475628+505340+4638
00+259425+988975+744874+614420+850365+646403+810301+948395+466020+915456+827734+591687+418190+684721+392407+929494+59
5189+108977+41683+19010+490934+363326+177203+456386+668946+480791+746274+515179+690288+902657+308506+154556+480277+22
3309+585100+795848+720235+304557+755958+755461+367772+94107+893517+638598+426080+807437+131045+925255+187938+596366+3
91724+323633+629939+646436+662786+990833+925361+595827+215784+33321+903755+343186+633119+421082+776447+810374+705331+8
87675+908318+238245+859773+877837+334673+587335+325171+844978+5917+816251+543908+879951+402703+822408+771204+681177+87
4421+897696+753330+109102+873754+450216+759885+849343+31332+669469+485518+678774+477750+774354+38843+122058+950977+45
1747+956756+678819+578293+517789+513042+83980+881812+665169+493494+538890+898710+594116+751579+561832+882199+902086+49
8571+353318+589182+207314+160343+676971+657597+928936+189316+950723+812690+287199+573909+117120+125536+267361+586201+8
83775+61882+905887+531929+259845+528074+517591+168795+888833+457907+692268+781542+236931+946449+168709+985315+26313+3
43041+153917+4016+570144+696623+704453+189989+297214+414314+195445+109684+758562+431191+197008+37538+436833+122759+416
905+433978+999644+526498+935995+9998+73079+641612+738138+844904+526766+784234+629673+458027+455283+647791+819571+1617
6+459625+556043+278398+6891+125105+510487+136548+26066+302307+491523+455440+530322+372340+605337+228046+77965+557263+
779416+880931+526308+181754+490003+430891+550993+890562+377247+446861+139870+283759+356579+185707+804269+323319+157097
+413721+284364+192535+661775+965084+932195+314572+705707+885878+130290+687176+143577+17641+207914+862781+916736+35588
1+424167+872562+507526+248844+83499+35006+716268+844720+585634+504486+812618+750735+947712+289875+565280+176836+82321
0+206490+439921+313986+654616+487771+950328+573913+137704+211804+52653+438096+964650+790409+474877+104865+311559+47161
4+476655+131447+120515+829642+355741+570968+436883+314489+722880+29518+528926+27717+600247+450313+9378+435926+231626+
35400+802167+336779+568958+476819+125510+156080+884736+883460+238300+608856+581064+740925+475692+547312+658882+984941
+266591+998629+99293+118513+671589+182193+43416+863221+540394+107668+488708+863529+653383+942879+490630+731715+929490+
179013+997587+58778+860379+730898+949367+578149+56208+985687+963959+10164+537498+249523+937237+864398+381655+921577+2
39411+25371+533819+366166+36695+47186+14192+450999+515793+575252+600483+559035+746230+328760+796671+392156+800208+6072
57+554083+210043+408316+698627+875110+445356+255801+254080+816170+314492+340863+376978+216076+568789+79684+165754+7816
95+181039+64085+616319+448756+859563+530911+833361+891068+578399+850711+556077+973661+572221+250572+542093+451242+2627
18+202677+104078+842846+745168+593077+243799+796101+685466+345955+184207+305687+346599+239441+885417+728553+710651+46
7177+112650+726423+553917+530687+944561+465027+990139+641205+324716+255164+792897+679520+303884+926089+314953+282035+1
98142+903823+621627+797933+695757+65427+335470+962306+678627+549719+738860+613898+757610+832340+470239+699860+705261+
63399+972008+826424+487379+547446+567908+431271+685756%29&sort=year+asc%2Cprice+asc%2Cbase_price+asc%2Cid+asc
500 ids:
Как бы выглядели подобные запросы?
44
1000 ids:q=*%3A*&limit=12&offset=19&fq=year%3A%28%221996%22%29&fq=is_free_shipping%3A%28%22true%22%29&fq=graphic_adapter%3A%28%22Amd%22%29&fq=color%3A%28%22WHO+KNOWS%3F%22%29&fq=location%3A%28%22USA%22%29&fq=os%3A
%28%22Windows%22%29&fq=storage_type%3A%28%22WHO+KNOWS%3F%22%29&fq=manufactured_in_city%3A%28%22Paris%22%29&fq=id%3A
%2881201+387157+955839+537448+257298+957836+213542+43934+489038+222336+187761+269044+875755+696484+294845+803004+178071+229714+826747+136867+928540+616502+727577+564158+110072+480792+497353+339159+225401+791355+
125133+972987+514921+118371+656018+306219+696665+27891+345083+866248+146961+540296+266336+416950+257205+282630+62985+458779+512164+602785+73025+143233+676640+352166+603993+628690+995355+11531+49358+115794+829521+
28701+26276+919822+254364+542426+251347+658854+213413+538408+427765+40223+364442+592600+508337+192796+732416+515392+286270+12052+569595+328630+405327+227078+205524+190405+545212+922894+346513+622505+979747+704690
+641546+459224+624135+759548+838171+450330+6568+643933+198180+995099+221572+958566+873661+743817+889484+721869+512549+292299+443850+886182+96543+513300+867437+854212+349161+464594+252496+636330+281650+501254+3717
0+294721+304639+366687+146914+517408+50198+579477+448612+883730+89816+775660+545993+855630+867998+888915+51431+914443+696764+311459+459755+223614+470560+445575+544882+7144+666566+943287+559333+220419+985003+92460
1+714887+427149+198729+681018+243847+11034+925150+857982+403233+112638+587057+100581+475825+676783+888656+145151+310208+561958+613276+143279+623623+547657+267499+682774+640213+403092+963156+111694+248853+759045+8
18772+53418+594743+10234+135961+960370+979861+858583+956709+151013+848587+899885+511837+625864+609580+741464+518492+619459+621080+551144+57502+237561+126329+843650+849193+532473+699621+967608+508422+650070+573129
+881737+345092+48880+505823+868399+210355+813955+30990+647611+280044+137898+816823+351015+589590+706381+169334+656395+471543+834456+250374+125270+691610+753037+795393+850674+746749+166811+231304+919284+737632+460
475+355544+694622+927872+971746+65976+718297+866053+572140+699907+473575+283054+145235+509957+974538+626436+400597+44011+357809+993313+741430+169054+443323+428121+920277+955691+384095+338081+377204+935130+416678+
626770+342102+283568+670478+955106+183833+884211+652827+284044+380241+971400+104070+681720+698582+19695+928671+594355+282404+747536+841774+784186+577452+851844+796764+757278+511959+824818+267222+676903+944005+144
937+683615+617267+177195+445897+424770+736457+545454+246595+5729+551385+54522+896231+548890+555556+446582+995948+839981+188389+149929+341872+693607+782631+935956+713148+65148+679127+486577+579971+976986+16899+292
310+132553+159613+506404+994375+178459+40634+843043+129961+483709+982932+325940+747504+606473+345693+634104+874878+438985+969317+518037+622701+306115+45863+504681+847541+514181+818617+636950+163237+770656+857228+
819623+170936+113607+966507+881125+105916+794445+421021+950727+423923+138394+780043+512356+891257+731606+244036+884868+653812+552738+919534+691300+676726+351295+766410+153076+14247+564607+548803+379310+24948+3393
29+759277+786195+544349+463255+776990+52389+531284+957129+800415+942994+227592+279235+715837+616570+985698+794122+323191+184410+233369+626627+795206+905489+369550+868770+348215+180337+716473+155946+146709+135996+
304638+560265+665780+858919+873136+451527+732505+427317+461563+679755+297479+838138+977984+241998+68387+568422+953432+78704+250397+333432+727191+790896+407387+760546+43013+895745+833700+444729+172837+201043+61127
1+377323+668696+17440+504858+5615+405365+954105+884489+716243+639321+914170+210402+146796+578286+424629+966048+24769+432541+191986+212341+313327+285988+145571+744996+168153+441849+833298+387834+791458+643489+4618
43+26804+90196+774655+9774+590942+251355+578620+5480+700457+772636+871377+382911+802067+440989+771705+605478+116053+261922+234810+662230+302648+707030+477846+173955+256729+783095+657031+353929+137701+801503+67632
7+958656+922021+89777+682877+674917+717473+913668+628235+97093+194674+2611+34289+901486+156675+662193+314246+729884+976444+693477+902740+467695+482973+453754+459957+997287+383027+17493+633895+382631+509320+203825
+75117+395636+73555+641652+153628+275442+322325+405441+74708+783623+597349+67662+502592+617069+257942+812097+945246+161731+908148+141901+997738+409241+308227+138409+778679+769673+915817+28570+694447+10016+184696+
32764+236716+713734+840825+494310+547038+887184+274493+899691+29466+159405+70428+469496+48204+738907+405569+873568+583149+166965+408814+800115+149323+206593+873937+827167+267942+576309+297612+169438+311810+916813
+305988+663+789795+527502+234871+726182+252505+648233+87822+963674+364608+673236+465170+867998+113670+925374+221057+418284+508655+568137+203705+443789+660437+89795+411708+977723+983759+826092+46219+478221+349916+
244028+718371+381535+907594+343324+822688+227596+946552+604257+319487+321306+193276+954575+937481+704124+605678+238112+509731+534586+37587+547160+840030+149783+981563+126425+420844+17406+564332+11442+648166+40512
1+1531+144737+615645+369862+821968+547488+473364+199687+702711+730880+64717+565734+245945+786351+337501+711894+877084+573107+581101+70749+599213+671240+298268+767056+503429+204374+790650+605825+102835+981087+1137
90+387534+741507+881739+93291+376390+586493+979099+977263+81636+272338+632403+294933+872397+984601+69283+630409+384127+142112+528030+724759+120895+466681+97475+794836+150537+74885+982878+494867+768414+303522+7919
20+998965+311184+465505+878690+536389+816568+394585+934700+622858+576379+335115+184495+895726+33380+857494+309059+891066+591572+724391+828362+242909+35878+447895+910320+964918+359773+90523+513187+317734+412074+97
3923+457815+401348+510371+849825+198605+547234+780749+67372+938539+88716+418973+11284+832725+442694+50195+468110+648857+84006+903872+212087+107935+197009+441007+567313+636809+670609+448557+906507+58546+766556+597
440+575292+255055+709919+363983+977199+310902+930950+640688+245762+819248+719826+520053+274797+388958+540324+317290+526551+828136+813389+190236+895065+623227+813490+943565+912339+101648+352749+41107+796875+878426
+284616+411510+447007+951922+884005+522236+632072+647037+581626+457178+703017+481235+858223+364215+369606+959273+575441+799803+521658+575844+706792+658752+743126+169316+899740+396534+987723+890804+424980+473285+8
13867+979670+807457+969371+23813+325010+774551+670269+502436+87971+742461+187971+62528+364013+399549+836854+795153+62425+915156+138118+371203+50659+503027+340484+576244+456541+546114+402037+229136+255303+598347+5
5442+990453+288931+199392+606107+585383+351046+754628+19863+574407+170796+581928+697699+656191+974996+147680+798293+989472+579253+165174+699061+944023+310782+44917+412353+435459+338132+178568+19441+147174+340295+
88989+165153+474139+535088+746491+998514+74939+436846+872477+485607+700927+802264+580942+410449+276515+987870+732577+315010+589616+421398+972094+910544+264825+533917+443831+363850+920247+775899+790648+540243+6752
97+16587+872881+709158+105318+245448+589075+523081+678598+732670+43458+972315+855474+933960+109033+16474+848995+570834+327992+636233+854599+848366+755253+218973+319261+384487+293568+940861+851668+388169+17815+757
247+174307+816633+912532+621594+535644+796578+888788+35320+690844+217393+745102+959387+732347+40475+702740+478918%29&sort=year+asc%2Cprice+asc%2Cbase_price+asc%2Cid+asc
Запрос с дополнительными фильтрами по id
src/test/java/com/yandex/java/party/shop/QueryWithALotOfParameters.java
45
0
17,5
35
52,5
70
500 1000 1500 2000 2500 3000
5K запросов
ids в запросе
Секунд
А если разбить на подзапросы и
src/test/java/com/yandex/java/party/shop/QueryWithALotOfParameters.java 46
0
17,5
35
52,5
70
500 1000 1500 2000 2500 3000
1 запрос
2 запроса
4 запроса
ids в запросе
Секунд
Не выводить
«Уже купленные товары - не отображать», говорили
они.
Не получится разбить! Как быть?!
Индексация пользователя в каждый товар :)
47
А на сколько же быстра индексация в Solr?
1М объектов по X
src/test/java/сom/yandex/java/party/shop/SolrInsertTest.java 48
Секунд
Размер пачки
0
160
320
480
640
800
100 500 1К 2К 5К 10К 20К
Время добавления 1М объектов
А индексировать больше миллиона можно?
src/test/java/сom/yandex/java/party/shop/SolrInsertTest.java 49
0
400
800
1200
1600
500к 1М 2М 3М 4М 5М 6М 7М 8М 9М 10М 11М
Количество элементов
Секунд
Ок, все вроде хорошо
А как потом это тестировать?
50
Embedded server
File solrHome = new File( "path/solr" );

File configFile = new File( solrHome, "solr.xml" );

CoreContainer coreContainer =
CoreContainer.createAndLoad(
solrHome.toString(),
configFile );
SolrServer solr =
new EmbeddedSolrServer(
coreContainer,
"collectionName" );
51
<dependency>

<groupId>org.apache.solr</groupId>

<artifactId>solr-solrj</artifactId>

<version>4.10.4</version>

</dependency>
Подведем итоги!
〉Solr — мощная система
〉много мест для оптимизации
〉определенно стоит попробовать в своих проектах!
52
〉 https://wiki.apache.org/solr/
〉 Solr in Action, Trey Grainger and Timothy Potter
Исходный код:
〉 https://bitbucket.org/nkaraman/javapartyshop/src
53
Почитать/посмотреть
Спасибо!
Вопросы?
56
Николай Караман
Разработчик
Контакты
astral@yandex-team.ru
Максим Терновой
Разработчик
ternovoy@yandex-team.ru

More Related Content

What's hot

MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.Sergey Petrunya
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Yandex
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Ontico
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresqlOleg Churkin
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Ontico
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Ontico
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandraodnoklassniki.ru
 
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Ontico
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДNikolay Samokhvalov
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 

What's hot (20)

MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresql
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandra
 
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы#RuPostgresLive 4: как писать и читать сложные SQL-запросы
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
 
Database First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБДDatabase First! О распространённых ошибках использования РСУБД
Database First! О распространённых ошибках использования РСУБД
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 

Viewers also liked

системный анализ и реинжиниринг
системный анализ и реинжинирингсистемный анализ и реинжиниринг
системный анализ и реинжинирингAleksandr Barmin
 
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Ontico
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды WebDrupalSib
 
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.Uzbekistan Rugby Federation
 
Lucene in odnoklassniki.ru
Lucene in odnoklassniki.ruLucene in odnoklassniki.ru
Lucene in odnoklassniki.ruDmitry Buzdin
 
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиЕвгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиDrupalSib
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийaragozin
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумоеAlexander Byndyu
 
Симаков Алексей - Системы управления кластерами
 Симаков Алексей - Системы управления кластерами   Симаков Алексей - Системы управления кластерами
Симаков Алексей - Системы управления кластерами Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
вера сивакова
вера сиваковавера сивакова
вера сиваковаYandex
 
Руководство по стилю документации: зачем и как, Татьяна Грачёва
Руководство по стилю документации: зачем и как, Татьяна ГрачёваРуководство по стилю документации: зачем и как, Татьяна Грачёва
Руководство по стилю документации: зачем и как, Татьяна ГрачёваYandex
 
Мобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий АлександровМобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий АлександровYandex
 
Антон Качалов - Популярно об IPMI и UEFI
Антон Качалов - Популярно об IPMI и UEFI Антон Качалов - Популярно об IPMI и UEFI
Антон Качалов - Популярно об IPMI и UEFI Yandex
 
Михаил Трошев — Инструменты веб-разработки
Михаил Трошев — Инструменты веб-разработкиМихаил Трошев — Инструменты веб-разработки
Михаил Трошев — Инструменты веб-разработкиYandex
 
Дмитрий Васильев - Задачи ассиметричной криптографии
Дмитрий Васильев - Задачи ассиметричной криптографииДмитрий Васильев - Задачи ассиметричной криптографии
Дмитрий Васильев - Задачи ассиметричной криптографииYandex
 
Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...
Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...
Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...Yandex
 
Коллективная разработка документации: от индивидуального авторства к командн...
 Коллективная разработка документации: от индивидуального авторства к командн... Коллективная разработка документации: от индивидуального авторства к командн...
Коллективная разработка документации: от индивидуального авторства к командн...Yandex
 
Как делается Яндекс.Браузер — Михаил Лопаткин
Как делается Яндекс.Браузер — Михаил ЛопаткинКак делается Яндекс.Браузер — Михаил Лопаткин
Как делается Яндекс.Браузер — Михаил ЛопаткинYandex
 

Viewers also liked (20)

системный анализ и реинжиниринг
системный анализ и реинжинирингсистемный анализ и реинжиниринг
системный анализ и реинжиниринг
 
code4russia
code4russiacode4russia
code4russia
 
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды Web
 
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
Реинжиниринг бизнес-процессов, как результат внедрения программного обеспечения.
 
Lucene in odnoklassniki.ru
Lucene in odnoklassniki.ruLucene in odnoklassniki.ru
Lucene in odnoklassniki.ru
 
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими рукамиЕвгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
Евгений Ильин. Drupal + Solr: Яндекс.Маркет своими руками
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решений
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
Симаков Алексей - Системы управления кластерами
 Симаков Алексей - Системы управления кластерами   Симаков Алексей - Системы управления кластерами
Симаков Алексей - Системы управления кластерами
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
вера сивакова
вера сиваковавера сивакова
вера сивакова
 
Руководство по стилю документации: зачем и как, Татьяна Грачёва
Руководство по стилю документации: зачем и как, Татьяна ГрачёваРуководство по стилю документации: зачем и как, Татьяна Грачёва
Руководство по стилю документации: зачем и как, Татьяна Грачёва
 
Мобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий АлександровМобильная Яндекс.Почта — Дмитрий Александров
Мобильная Яндекс.Почта — Дмитрий Александров
 
Антон Качалов - Популярно об IPMI и UEFI
Антон Качалов - Популярно об IPMI и UEFI Антон Качалов - Популярно об IPMI и UEFI
Антон Качалов - Популярно об IPMI и UEFI
 
Михаил Трошев — Инструменты веб-разработки
Михаил Трошев — Инструменты веб-разработкиМихаил Трошев — Инструменты веб-разработки
Михаил Трошев — Инструменты веб-разработки
 
Дмитрий Васильев - Задачи ассиметричной криптографии
Дмитрий Васильев - Задачи ассиметричной криптографииДмитрий Васильев - Задачи ассиметричной криптографии
Дмитрий Васильев - Задачи ассиметричной криптографии
 
Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...
Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...
Большие данные в физике элементарных частиц на примере LHCb - Guy Wilkinson, ...
 
Коллективная разработка документации: от индивидуального авторства к командн...
 Коллективная разработка документации: от индивидуального авторства к командн... Коллективная разработка документации: от индивидуального авторства к командн...
Коллективная разработка документации: от индивидуального авторства к командн...
 
Как делается Яндекс.Браузер — Михаил Лопаткин
Как делается Яндекс.Браузер — Михаил ЛопаткинКак делается Яндекс.Браузер — Михаил Лопаткин
Как делается Яндекс.Браузер — Михаил Лопаткин
 

Similar to Производительность параметрического поиска на основе опенсорс-платформы

Как читать и интерпретировать вывод команды EXPLAIN
Как читать и интерпретировать вывод команды EXPLAINКак читать и интерпретировать вывод команды EXPLAIN
Как читать и интерпретировать вывод команды EXPLAINAlexey Ermakov
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraSveta Smirnova
 
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo
 
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlOleksandr Petrov
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервисаОмские ИТ-субботники
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Yandex
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...Iosif Itkin
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus0leGG
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»DevDay
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтендTimophy Chaptykov
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoFAleksey Shipilev
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 

Similar to Производительность параметрического поиска на основе опенсорс-платформы (20)

Как читать и интерпретировать вывод команды EXPLAIN
Как читать и интерпретировать вывод команды EXPLAINКак читать и интерпретировать вывод команды EXPLAIN
Как читать и интерпретировать вывод команды EXPLAIN
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
 
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
React со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтенд
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 
Эталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатовЭталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатовYandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 
Эталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатовЭталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатов
 

Производительность параметрического поиска на основе опенсорс-платформы

  • 1.
  • 2. Производительность параметрического поиска на основе опенсорс- Николай Караман, Максим Терновой
  • 4. хАчу свой интернет-магазин!!! Есть интернет-магазин 〉 много разных товаров с разными свойствами 〉 полнотекстовый поиск по названиям/описанию товара 〉 вычислять статистику 〉 учитывать «историю» пользователя 〉 выдавать ответ за приемлемое время Базы данных с этим справятся плохо:( 4
  • 5. Search engine спешит на помощь! 〉 Solr 〉 ElasticSearch 〉 Splunk 〉 MarkLogic 〉 Sphnix … http://db-engines.com/en/ranking/search+engine 5
  • 7. Solr 〉 open-source платформа полнотекстового поиска 〉 под капотом Apache Lucene 〉 является самым популярным поисковым движком 7
  • 9. Lucene vs Solr Many people new to Lucene and Solr will ask the obvious question: Should I use Lucene or Solr? The answer is simple: if you're asking yourself this question, in 99% of situations, what you want to use is Solr. http://www.lucenetutorial.com/lucene-vs-solr.html 9
  • 10. http://www.lucenetutorial.com/lucene-vs-solr.html A simple way to conceptualize the relationship between Solr and Lucene is that of a car and its engine. You can't drive an engine, but you can drive a car.
  • 11. Lucene vs Solr Lucene – библиотека Solr – приложение «из коробки» 11
  • 12. Возможности Solr 〉 полнотекстовый поиск 〉 подсветка результатов 〉 фасетный поиск 〉 динамическая кластеризация 〉 интеграция с базами данных 〉 обработка документов со сложным форматом (например, Word, PDF) 12
  • 13. Пару слов про настройку Solr Где скачать http://lucene.apache.org/solr/mirrors-solr-latest-redir.html Как установить https://wiki.apache.org/solr/SolrInstall 13
  • 15. Анализаторы запросов (Query Parsers) преобразуют текстовый запрос в запрос соответствующий объектам Lucene Query задать парсер 〉 defType параметр defType=lucene 〉 локальный параметр {!dismax} 15
  • 16. Встроенные анализаторы 〉lucene – по умолчанию 〉dismax – позволяет запросы по многим полям с разным весом 〉edismax – расширенный dismax 〉func 〉boost 〉…. https://wiki.apache.org/solr/QueryParser 16
  • 18. Что скрывается за этими буквами? 〉 q 〉 fq 〉 facet 18
  • 19. q q – запрос вида: os:MACOS AND price:[* TO 2000] 〉 fq 〉 facet 19
  • 20. fq 〉 q =os:MACOS AND price:[* TO 2000] fq - фильтрующий запрос 1. q=*:*&fq=os:MACOS AND price:[* TO 2000] 2. q=*:*&fq=os:MACOS&fq=price:[* TO 2000] 〉 facet 20
  • 21. Зачем такое дублирование? q – с учетом score fq – без учета score => fq быстрее 21
  • 22. График сравнения query и filterQuery src/test/java/com/yandex/java/party/shop/FqAgainsQTest.java 22 0 17,5 35 52,5 70 fq q время выполнения 200K запросов при 8 фильтрах, однопоточнСекунд
  • 23. facet Отдельный определяющий аспект пространства значений Каждый аспект характеризует пространство значений вдоль какой-либо независимой оси или измерения http://wiki.iis.ru/wiki/Фасет 23
  • 24. facet 〉 q 〉 fq facet 〉 facet.field 〉 facet.prefix 〉 facet.query 〉 facet.pivot 24
  • 25. facet.field 〉 q 〉 fq facet facet.field=os 〉 facet.prefix 〉 facet.query 〉 facet.pivot 25
  • 27. facet.query 〉 q =os:MACOS AND price:[* TO 2000] 〉 fq facet 〉 facet.field 〉 facet.prefix facet.query=height:[* TO 150] 〉 facet.pivot 27
  • 28. facet.pivot 〉 q 〉 fq facet 〉 facet.field 〉 facet.prefix 〉 facet.query facet.pivot=os,year,… 28
  • 29. Немного примеров на живом Solr (админка) http://localhost:8983/solr/#/shop/query 29
  • 30. И вроде все хорошо, но…
  • 31. Какие же проблемы возникают 〉 медленная работа при получении данных 〉 не для всех фасетов все фильтры 〉 не хватает facet.prefix 〉 нужно учитывать «историю» пользователя 31
  • 32. Медленная работа при получении данных Solr – не система хранения, это система для индексации и поиска! 32
  • 33. 33 src/test/java/com/yandex/java/party/shop/MysqlGettingTest.java src/test/java/com/yandex/java/party/shop/SolrGettingTest.java 0 10 20 30 40 4 12 24 100 1000 2000 MYSQL Solr Секунд Размер пачки Solr vs MYSQL получение 200K элементов по Х элементов (используя id)
  • 34. Solr vs MYSQL немного больше параметров поиска src/test/java/com/yandex/java/party/shop/SolrAgainsMysqlGettingTestManyParamters 34 Секунд 0 160 320 480 640 800 960 1120 1280 1440 1600 mysql solr время выполнения 200K запросов при 8 фильтрах, однопоточно, по 1486 35
  • 35. Но как быстро все таки ищет Solr - А влияет на это размер индекса? 35 К примеру 100K запросов с 8 фильтрами…
  • 36. Получение 100K id по запросу с фильтрами в зависимости от размера индекса src/test/java/com/yandex/java/party/shop/QueryTest.java 36 Секунд Размер индекса 0 8,5 17 25,5 34 500K 1M 2M 4M время выполнения 100K запросов с 8 параметрами, однопоточно
  • 37. Не для всех фасетов все фильтры Не хотим учитывать цену в фасете по годам. q=*:*&fq=os:MACOS&fq=price:[* TO 2000]&facet.field=years q=*:*&fq=os:MACOS &fq={!tag=price_tag}price:[* TO 2000] &facet.field={!ex=price_tag}years 37
  • 38. Как влияют теги на производительность фасетов src/test/java/com/yandex/java/party/shop/FacetTest.java 38 Секунд 0 100 200 300 400 500 Без тегов С тегами Время для 100K запросов с 8 фасетами
  • 39. Не хватает facet.prefix, но есть facet.query Нужно учесть серийный номер с закодированным цветом или же найти количество определенных вещей: year:[2010 TO 2015] AND ram:[8 TO 12] AND owner:/.*Her.*/" НО: facet.query не многопоточный пока:( 39
  • 40. На сколько facet.query быстр? src/test/java/com/yandex/java/party/shop/FacetTest.java 40 15 19,2 23,4 27,6 31,8 36 1 2 4 8 с тегами без тегов Секунд Facet Query в одном запросе 100K запросов
  • 41. Нужно учитывать «историю» пользователя Хочу купить! 〉 Вывести с учетом фильтров, которые просмотрел/ выбрал/купил. А что если их больше 1000? 〉 Не выводить, которые просмотрел/выбрал/купил. И опять же больше 1000! 41
  • 42. Выводить с учетом фильтров 42 «Желанные товары, должны быть 
 в начале поисковой выдачи», говорили они А что если «желалок» много? Смотря на сколько
  • 43. Как бы выглядели подобные запросы? 43 q=*%3A*&limit=12&offset=46&fq=year%3A%28%221999%22%29&fq=is_free_shipping%3A%28%22true%22%29&fq=graphic_adapter%3A %28%22ARM+Mali-T760%22%29&fq=color%3A%28%22Black%22%29&fq=location%3A%28%22CHINA%22%29&fq=os%3A%28%22MacOs %22%29&fq=storage_type%3A%28%22CD%22%29&fq=manufactured_in_city%3A%28%22Kiev%22%29&fq=id%3A %28745044+150655+654386+96643+720589+539414+299652+520272+289108+551627+83837+49092+512823+449487+751968+263210+39318 4+192611+937748+189766+201049+409053+485720+868563+364079+827460+608443+696274+706465+706148+868334+814274+68423+67379 3+227055+483215+638204+447773+835321+257405+569050+675653+331887+414714+212005+252369+476497+54924+475628+505340+4638 00+259425+988975+744874+614420+850365+646403+810301+948395+466020+915456+827734+591687+418190+684721+392407+929494+59 5189+108977+41683+19010+490934+363326+177203+456386+668946+480791+746274+515179+690288+902657+308506+154556+480277+22 3309+585100+795848+720235+304557+755958+755461+367772+94107+893517+638598+426080+807437+131045+925255+187938+596366+3 91724+323633+629939+646436+662786+990833+925361+595827+215784+33321+903755+343186+633119+421082+776447+810374+705331+8 87675+908318+238245+859773+877837+334673+587335+325171+844978+5917+816251+543908+879951+402703+822408+771204+681177+87 4421+897696+753330+109102+873754+450216+759885+849343+31332+669469+485518+678774+477750+774354+38843+122058+950977+45 1747+956756+678819+578293+517789+513042+83980+881812+665169+493494+538890+898710+594116+751579+561832+882199+902086+49 8571+353318+589182+207314+160343+676971+657597+928936+189316+950723+812690+287199+573909+117120+125536+267361+586201+8 83775+61882+905887+531929+259845+528074+517591+168795+888833+457907+692268+781542+236931+946449+168709+985315+26313+3 43041+153917+4016+570144+696623+704453+189989+297214+414314+195445+109684+758562+431191+197008+37538+436833+122759+416 905+433978+999644+526498+935995+9998+73079+641612+738138+844904+526766+784234+629673+458027+455283+647791+819571+1617 6+459625+556043+278398+6891+125105+510487+136548+26066+302307+491523+455440+530322+372340+605337+228046+77965+557263+ 779416+880931+526308+181754+490003+430891+550993+890562+377247+446861+139870+283759+356579+185707+804269+323319+157097 +413721+284364+192535+661775+965084+932195+314572+705707+885878+130290+687176+143577+17641+207914+862781+916736+35588 1+424167+872562+507526+248844+83499+35006+716268+844720+585634+504486+812618+750735+947712+289875+565280+176836+82321 0+206490+439921+313986+654616+487771+950328+573913+137704+211804+52653+438096+964650+790409+474877+104865+311559+47161 4+476655+131447+120515+829642+355741+570968+436883+314489+722880+29518+528926+27717+600247+450313+9378+435926+231626+ 35400+802167+336779+568958+476819+125510+156080+884736+883460+238300+608856+581064+740925+475692+547312+658882+984941 +266591+998629+99293+118513+671589+182193+43416+863221+540394+107668+488708+863529+653383+942879+490630+731715+929490+ 179013+997587+58778+860379+730898+949367+578149+56208+985687+963959+10164+537498+249523+937237+864398+381655+921577+2 39411+25371+533819+366166+36695+47186+14192+450999+515793+575252+600483+559035+746230+328760+796671+392156+800208+6072 57+554083+210043+408316+698627+875110+445356+255801+254080+816170+314492+340863+376978+216076+568789+79684+165754+7816 95+181039+64085+616319+448756+859563+530911+833361+891068+578399+850711+556077+973661+572221+250572+542093+451242+2627 18+202677+104078+842846+745168+593077+243799+796101+685466+345955+184207+305687+346599+239441+885417+728553+710651+46 7177+112650+726423+553917+530687+944561+465027+990139+641205+324716+255164+792897+679520+303884+926089+314953+282035+1 98142+903823+621627+797933+695757+65427+335470+962306+678627+549719+738860+613898+757610+832340+470239+699860+705261+ 63399+972008+826424+487379+547446+567908+431271+685756%29&sort=year+asc%2Cprice+asc%2Cbase_price+asc%2Cid+asc 500 ids:
  • 44. Как бы выглядели подобные запросы? 44 1000 ids:q=*%3A*&limit=12&offset=19&fq=year%3A%28%221996%22%29&fq=is_free_shipping%3A%28%22true%22%29&fq=graphic_adapter%3A%28%22Amd%22%29&fq=color%3A%28%22WHO+KNOWS%3F%22%29&fq=location%3A%28%22USA%22%29&fq=os%3A %28%22Windows%22%29&fq=storage_type%3A%28%22WHO+KNOWS%3F%22%29&fq=manufactured_in_city%3A%28%22Paris%22%29&fq=id%3A %2881201+387157+955839+537448+257298+957836+213542+43934+489038+222336+187761+269044+875755+696484+294845+803004+178071+229714+826747+136867+928540+616502+727577+564158+110072+480792+497353+339159+225401+791355+ 125133+972987+514921+118371+656018+306219+696665+27891+345083+866248+146961+540296+266336+416950+257205+282630+62985+458779+512164+602785+73025+143233+676640+352166+603993+628690+995355+11531+49358+115794+829521+ 28701+26276+919822+254364+542426+251347+658854+213413+538408+427765+40223+364442+592600+508337+192796+732416+515392+286270+12052+569595+328630+405327+227078+205524+190405+545212+922894+346513+622505+979747+704690 +641546+459224+624135+759548+838171+450330+6568+643933+198180+995099+221572+958566+873661+743817+889484+721869+512549+292299+443850+886182+96543+513300+867437+854212+349161+464594+252496+636330+281650+501254+3717 0+294721+304639+366687+146914+517408+50198+579477+448612+883730+89816+775660+545993+855630+867998+888915+51431+914443+696764+311459+459755+223614+470560+445575+544882+7144+666566+943287+559333+220419+985003+92460 1+714887+427149+198729+681018+243847+11034+925150+857982+403233+112638+587057+100581+475825+676783+888656+145151+310208+561958+613276+143279+623623+547657+267499+682774+640213+403092+963156+111694+248853+759045+8 18772+53418+594743+10234+135961+960370+979861+858583+956709+151013+848587+899885+511837+625864+609580+741464+518492+619459+621080+551144+57502+237561+126329+843650+849193+532473+699621+967608+508422+650070+573129 +881737+345092+48880+505823+868399+210355+813955+30990+647611+280044+137898+816823+351015+589590+706381+169334+656395+471543+834456+250374+125270+691610+753037+795393+850674+746749+166811+231304+919284+737632+460 475+355544+694622+927872+971746+65976+718297+866053+572140+699907+473575+283054+145235+509957+974538+626436+400597+44011+357809+993313+741430+169054+443323+428121+920277+955691+384095+338081+377204+935130+416678+ 626770+342102+283568+670478+955106+183833+884211+652827+284044+380241+971400+104070+681720+698582+19695+928671+594355+282404+747536+841774+784186+577452+851844+796764+757278+511959+824818+267222+676903+944005+144 937+683615+617267+177195+445897+424770+736457+545454+246595+5729+551385+54522+896231+548890+555556+446582+995948+839981+188389+149929+341872+693607+782631+935956+713148+65148+679127+486577+579971+976986+16899+292 310+132553+159613+506404+994375+178459+40634+843043+129961+483709+982932+325940+747504+606473+345693+634104+874878+438985+969317+518037+622701+306115+45863+504681+847541+514181+818617+636950+163237+770656+857228+ 819623+170936+113607+966507+881125+105916+794445+421021+950727+423923+138394+780043+512356+891257+731606+244036+884868+653812+552738+919534+691300+676726+351295+766410+153076+14247+564607+548803+379310+24948+3393 29+759277+786195+544349+463255+776990+52389+531284+957129+800415+942994+227592+279235+715837+616570+985698+794122+323191+184410+233369+626627+795206+905489+369550+868770+348215+180337+716473+155946+146709+135996+ 304638+560265+665780+858919+873136+451527+732505+427317+461563+679755+297479+838138+977984+241998+68387+568422+953432+78704+250397+333432+727191+790896+407387+760546+43013+895745+833700+444729+172837+201043+61127 1+377323+668696+17440+504858+5615+405365+954105+884489+716243+639321+914170+210402+146796+578286+424629+966048+24769+432541+191986+212341+313327+285988+145571+744996+168153+441849+833298+387834+791458+643489+4618 43+26804+90196+774655+9774+590942+251355+578620+5480+700457+772636+871377+382911+802067+440989+771705+605478+116053+261922+234810+662230+302648+707030+477846+173955+256729+783095+657031+353929+137701+801503+67632 7+958656+922021+89777+682877+674917+717473+913668+628235+97093+194674+2611+34289+901486+156675+662193+314246+729884+976444+693477+902740+467695+482973+453754+459957+997287+383027+17493+633895+382631+509320+203825 +75117+395636+73555+641652+153628+275442+322325+405441+74708+783623+597349+67662+502592+617069+257942+812097+945246+161731+908148+141901+997738+409241+308227+138409+778679+769673+915817+28570+694447+10016+184696+ 32764+236716+713734+840825+494310+547038+887184+274493+899691+29466+159405+70428+469496+48204+738907+405569+873568+583149+166965+408814+800115+149323+206593+873937+827167+267942+576309+297612+169438+311810+916813 +305988+663+789795+527502+234871+726182+252505+648233+87822+963674+364608+673236+465170+867998+113670+925374+221057+418284+508655+568137+203705+443789+660437+89795+411708+977723+983759+826092+46219+478221+349916+ 244028+718371+381535+907594+343324+822688+227596+946552+604257+319487+321306+193276+954575+937481+704124+605678+238112+509731+534586+37587+547160+840030+149783+981563+126425+420844+17406+564332+11442+648166+40512 1+1531+144737+615645+369862+821968+547488+473364+199687+702711+730880+64717+565734+245945+786351+337501+711894+877084+573107+581101+70749+599213+671240+298268+767056+503429+204374+790650+605825+102835+981087+1137 90+387534+741507+881739+93291+376390+586493+979099+977263+81636+272338+632403+294933+872397+984601+69283+630409+384127+142112+528030+724759+120895+466681+97475+794836+150537+74885+982878+494867+768414+303522+7919 20+998965+311184+465505+878690+536389+816568+394585+934700+622858+576379+335115+184495+895726+33380+857494+309059+891066+591572+724391+828362+242909+35878+447895+910320+964918+359773+90523+513187+317734+412074+97 3923+457815+401348+510371+849825+198605+547234+780749+67372+938539+88716+418973+11284+832725+442694+50195+468110+648857+84006+903872+212087+107935+197009+441007+567313+636809+670609+448557+906507+58546+766556+597 440+575292+255055+709919+363983+977199+310902+930950+640688+245762+819248+719826+520053+274797+388958+540324+317290+526551+828136+813389+190236+895065+623227+813490+943565+912339+101648+352749+41107+796875+878426 +284616+411510+447007+951922+884005+522236+632072+647037+581626+457178+703017+481235+858223+364215+369606+959273+575441+799803+521658+575844+706792+658752+743126+169316+899740+396534+987723+890804+424980+473285+8 13867+979670+807457+969371+23813+325010+774551+670269+502436+87971+742461+187971+62528+364013+399549+836854+795153+62425+915156+138118+371203+50659+503027+340484+576244+456541+546114+402037+229136+255303+598347+5 5442+990453+288931+199392+606107+585383+351046+754628+19863+574407+170796+581928+697699+656191+974996+147680+798293+989472+579253+165174+699061+944023+310782+44917+412353+435459+338132+178568+19441+147174+340295+ 88989+165153+474139+535088+746491+998514+74939+436846+872477+485607+700927+802264+580942+410449+276515+987870+732577+315010+589616+421398+972094+910544+264825+533917+443831+363850+920247+775899+790648+540243+6752 97+16587+872881+709158+105318+245448+589075+523081+678598+732670+43458+972315+855474+933960+109033+16474+848995+570834+327992+636233+854599+848366+755253+218973+319261+384487+293568+940861+851668+388169+17815+757 247+174307+816633+912532+621594+535644+796578+888788+35320+690844+217393+745102+959387+732347+40475+702740+478918%29&sort=year+asc%2Cprice+asc%2Cbase_price+asc%2Cid+asc
  • 45. Запрос с дополнительными фильтрами по id src/test/java/com/yandex/java/party/shop/QueryWithALotOfParameters.java 45 0 17,5 35 52,5 70 500 1000 1500 2000 2500 3000 5K запросов ids в запросе Секунд
  • 46. А если разбить на подзапросы и src/test/java/com/yandex/java/party/shop/QueryWithALotOfParameters.java 46 0 17,5 35 52,5 70 500 1000 1500 2000 2500 3000 1 запрос 2 запроса 4 запроса ids в запросе Секунд
  • 47. Не выводить «Уже купленные товары - не отображать», говорили они. Не получится разбить! Как быть?! Индексация пользователя в каждый товар :) 47
  • 48. А на сколько же быстра индексация в Solr? 1М объектов по X src/test/java/сom/yandex/java/party/shop/SolrInsertTest.java 48 Секунд Размер пачки 0 160 320 480 640 800 100 500 1К 2К 5К 10К 20К Время добавления 1М объектов
  • 49. А индексировать больше миллиона можно? src/test/java/сom/yandex/java/party/shop/SolrInsertTest.java 49 0 400 800 1200 1600 500к 1М 2М 3М 4М 5М 6М 7М 8М 9М 10М 11М Количество элементов Секунд
  • 50. Ок, все вроде хорошо А как потом это тестировать? 50
  • 51. Embedded server File solrHome = new File( "path/solr" );
 File configFile = new File( solrHome, "solr.xml" );
 CoreContainer coreContainer = CoreContainer.createAndLoad( solrHome.toString(), configFile ); SolrServer solr = new EmbeddedSolrServer( coreContainer, "collectionName" ); 51 <dependency>
 <groupId>org.apache.solr</groupId>
 <artifactId>solr-solrj</artifactId>
 <version>4.10.4</version>
 </dependency>
  • 52. Подведем итоги! 〉Solr — мощная система 〉много мест для оптимизации 〉определенно стоит попробовать в своих проектах! 52
  • 53. 〉 https://wiki.apache.org/solr/ 〉 Solr in Action, Trey Grainger and Timothy Potter Исходный код: 〉 https://bitbucket.org/nkaraman/javapartyshop/src 53 Почитать/посмотреть