Настройка распределенного индекса поиска Sphinx

Я решаю, как разделить 3 больших индекса sphinx между 3 серверами. Каждый из 3-х индексов ищется отдельно.

Что эффективнее с точки зрения производительности (скорости поиска):

  1. разместить каждый индекс на отдельной машине

Пример

machine1 - index1
machine2 - index2
machine3 - index3
  1. или разделить каждый индекс на 3 части и разместить каждую часть одного и того же индекса на отдельной машине.

Пример

machine1 - index1_chunk1,  index2_chunk1, index3_chunk1
machine2 - index1_chunk2,  index2_chunk2, index3_chunk2
machine3 - index1_chunk3,  index2_chunk3, index3_chunk3

?


person Andriy B    schedule 23.03.2010    source источник


Ответы (1)


Интуитивно я бы сказал, что первый вариант был бы более эффективным.

В этом сценарии, когда вы выполняете поиск по любому из индексов, скажем, index1, система просто ищет идентификатор компьютера, на котором он размещен, и выполняет поиск по нему, возвращая набор результатов.

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

person viksit    schedule 30.03.2010
comment
да, но во втором сценарии система сможет выполнять параллельный поиск по одному и тому же индексу, и это может повысить производительность. Чанков будет немного, поэтому найти и сохранить в памяти таблицу чанков не составит большого труда. - person Andriy B; 30.03.2010