<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Просто про веб технологии &#187; Development</title>
	<atom:link href="http://pro100pro.com/category/development/feed" rel="self" type="application/rss+xml" />
	<link>http://pro100pro.com</link>
	<description>Про PHP, MySQL, Sphinx и Zend Framework, про архитектуру и производителность, про высокие нагрузки и масштабирование</description>
	<lastBuildDate>Thu, 13 Oct 2011 12:58:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>ZendFramework Day 12 ноября 2011</title>
		<link>http://pro100pro.com/zendframework-day-12-noyabrya-2011</link>
		<comments>http://pro100pro.com/zendframework-day-12-noyabrya-2011#comments</comments>
		<pubDate>Thu, 13 Oct 2011 12:58:03 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[ZendFramework]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=574</guid>
		<description><![CDATA[12 ноября, в Киеве, пройдет конференция &#8220;Zend Framework Day&#8221; &#8211; посвященная популярному PHP фреймворку Zend Framework. Среди докладчиков непосредственные разработчики компонент Zend Framework. Событие соберет лучших PHP и Zend Framework специалистов из Украины, России, Белоруссии и других стран СНГ. С текущим списком тем и докладчиков можно ознакомиться на странице. Событие будет интересно не только тем, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://frameworksdays.com/uploads/events/zend-framework-day.png" alt="Zend Framework Day" align="left" style="margin-right: 20px;" />12 ноября, в Киеве, пройдет конференция &#8220;Zend Framework Day&#8221; &#8211; посвященная популярному PHP фреймворку Zend Framework. Среди докладчиков непосредственные разработчики компонент Zend Framework. Событие соберет лучших PHP и Zend Framework специалистов из Украины, России, Белоруссии и других стран СНГ.</p>
<p>С текущим списком тем и докладчиков можно ознакомиться на <a href="http://frameworksdays.com/event/zend-framework-day-2011/speakers">странице</a>.</p>
<p>Событие будет интересно не только тем, кто использует Zend Framework, но и всем веб-разработчикам и PHP программистам в частности.</p>
<p>Место проведения — отель &#8220;Казацкий&#8221;, г. Киев, ул. Михайловская 1/3 (Площадь Независимости).</p>
<p>Со стоимостю участия и другой необходимой информацией вы можете ознакомиться на <a href="http://frameworksdays.com/event/zend-framework-day-2011">странице</a>.</p>
<p>Для участия в конференции необходимо пройти регистрацию на <a href="http://frameworksdays.com/register">странице</a>, а затем произвести оплату из личного кабинета.</p>
<p>
Сайт конференции &#8211; <a href="http://frameworksdays.com/event/zend-framework-day-2011">http://frameworksdays.com/event/zend-framework-day-2011</a><br />
Наши новости в twitter &#8211; <a href="http://twitter.com/fwdays">http://twitter.com/fwdays</a><br />
Наша страница в facebook – <a href="http://facebook.com/fwdays">http://facebook.com/fwdays</a></p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2011. |
<a href="http://pro100pro.com/zendframework-day-12-noyabrya-2011">Permalink</a> |
<a href="http://pro100pro.com/zendframework-day-12-noyabrya-2011#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/zendframework-day-12-noyabrya-2011&title=ZendFramework Day 12 ноября 2011">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/events" rel="tag">Events</a>, <a href="http://pro100pro.com/tag/zend-framework" rel="tag">Zend Framework</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/zendframework-day-12-noyabrya-2011/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Увеличиваем производительность Sphinx BuildExcerpts</title>
		<link>http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts</link>
		<comments>http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts#comments</comments>
		<pubDate>Sun, 07 Aug 2011 09:41:04 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[Search excerpts]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=568</guid>
		<description><![CDATA[English version of this post. Начиная с версии 2.0.1 в Sphinx появилась возможность параллельного построения поисковых сниппетов. Под параллельным построением имеется ввиду, что процесс обработки массива текста предназначенного для построения сниппетов будет распределен по нескольким CPU. Приведенная ниже реализация лучше всего подойдет системам в которых требуется генерировать сниппеты для сотен мегабайт текста. Для распараллеливания процессов [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ivinco.com/blog/high-performance-buildexcerpts-with-sphinx-search/" title="High performance BuildExcerpts() with Sphinx Search" target="_blank">English version</a> of this post. </p>
<p>Начиная с версии 2.0.1 в Sphinx появилась возможность параллельного построения поисковых сниппетов. Под параллельным построением имеется ввиду, что процесс обработки массива текста предназначенного для построения сниппетов будет распределен по нескольким CPU.  Приведенная ниже реализация лучше всего подойдет системам в которых требуется генерировать сниппеты для сотен мегабайт текста.</p>
<p>Для распараллеливания процессов в Sphinx предусмотрена опция dist_threads, которая указывает searchd на сколько CPUs разбивать задачу.  dist_threads используется как для обработки поисковых запросов в распределенных индексах, так и для обработки сниппетов, которые мы рассмотрим ниже.</p>
<p>Рассмотрим функцию SphinxAPI BuildExcerpt. По умолчанию функция BuildExcerpt в качестве первого параметра принимает массив текста для обработки,<br />
но к сожалению такой вызов функции не использует параллельную обработку. </p>
<p>Но, начиная с версии 2.0.1, для BuildExcerpt был разработана новая опция load_files. load_files указывает Sphinx, что первый параметр функции BuildExcerpt должен содержать имена файлов, в которых должен находиться текст для обработки. Опция load_files совместно с опцией dist_threads позволяет Sphinx распаралеливать процесс построения сниппетов.</p>
<p>К сожалению у данной реализации есть узкое место - это необходимость использовать файловую систему.  Так как, прежде чем генерировать сниппеты на основе файлов, надо эти файлы создать, а для жестких дисков это достаточно медленная операция.  Поэтому, правильное решение, это создавать файлы в памяти, т.к. запись в память происходит в тысячи раз быстрее, чем на жесткий диск.</p>
<p>Для создания файлов в оперативной памяти в ядро Linux начиная с версии 2.4. включена файловой системой tmpfs, который мы и воспользуемся. </p>
<h3>Файловая система</h3>
<p>Для этого создадим директорию будущей системы и смонтируем ее.</p>
<div class="igBar"><span id="lcode-4"><a href="#" onclick="javascript:showPlainTxt('code-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-4">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mkdir /space</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mount -t tmpfs -o size=1G,nr_inodes=10k,mode=<span style="color:#800000;color:#800000;">0700</span> tmpfs /space </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>В данном примере права на запись будут только у владельца директории /space, а максимальный размер файловой системы будет установлен в 1Gb.</p>
<h3>Модифицируем BuildExcerpts</h3>
<div class="igBar"><span id="lcode-5"><a href="#" onclick="javascript:showPlainTxt('code-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-5">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function buildExcerptFile<span style="color:#006600; font-weight:bold;">&#40;</span>$documents, $options = array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; foreach<span style="color:#006600; font-weight:bold;">&#40;</span>$documents as $doc<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $file = <span style="color:#CC0000;">"/space/"</span>.<span style="color:#CC0000;">'snip_'</span>.<span style="">md5</span><span style="color:#006600; font-weight:bold;">&#40;</span>$doc<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#CC0000;">'_'</span>.<span style="">time</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file_put_contents<span style="color:#006600; font-weight:bold;">&#40;</span>$file, $doc<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $files<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = $file;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $client = new SphinxClient<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $client-&gt;<span style="">setServer</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'localhost'</span>, <span style="color:#800000;color:#800000;">9312</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $res = $client-&gt;<span style="">BuildExcerpts</span><span style="color:#006600; font-weight:bold;">&#40;</span> $files, <span style="color:#CC0000;">'index'</span>, $keywords,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; array<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'around'</span>=&gt;<span style="color:#800000;color:#800000;">10</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'limit'</span> =&gt; <span style="color:#800000;color:#800000;">300</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'load_files'</span> =&gt; <span style="color:#800000;color:#800000;">1</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; foreach<span style="color:#006600; font-weight:bold;">&#40;</span>$files as $file<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unlink<span style="color:#006600; font-weight:bold;">&#40;</span>$file<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; return $res;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Функция работает в три этапа: </p>
<ul>
<li>Первый. Записываем все документы в файлы, причем имена файлов выбираются так, чтоб не получилось коллизий.</li>
<li>Второе. Вызываем функцию Sphinx BuildExcerpt, первым параметром передаем массив файлов вместо массива текста.  А в третьем параметре указываем опцию load_files = 1</li>
<li>Третий. Удаляем созданные файлы для очистки памяти.</li>
</ul>
<h3>Sphinx.conf</h3>
<p>В разделе searchd добавляем следующую строку:</p>
<div class="igBar"><span id="lcode-6"><a href="#" onclick="javascript:showPlainTxt('code-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-6">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">dist_threads = <span style="color:#800000;color:#800000;">2</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
dist_thread лучше делать равным количеству CPU в системе.</p>
<p>На моих тестовых данных, данная реализация работает в два раза быстрее «стандартного» вызова BuildExcerpts на системе с двумя CPU. Средний размер документа 1-3 Mb, количество документов для одной было равным 100, т.е. один вызов обрабатывал в среднем 200 Mb текста.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2011. |
<a href="http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts">Permalink</a> |
<a href="http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts&title=Увеличиваем производительность Sphinx BuildExcerpts">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/performance" rel="tag">Performance</a>, <a href="http://pro100pro.com/tag/search-excerpts" rel="tag">Search excerpts</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мастер-класс по Sphinx</title>
		<link>http://pro100pro.com/master-klass-po-sphinx</link>
		<comments>http://pro100pro.com/master-klass-po-sphinx#comments</comments>
		<pubDate>Wed, 01 Jun 2011 08:28:48 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[Master-class]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=565</guid>
		<description><![CDATA[В субботу, 18-го июня в Киеве пройдет мастер-<strong>класс СОЗДАТЕЛЯ  движка полнотекстового поиска Sphinx Андрея Аксенова</strong> "Как готовить Sphinx". 

Мастер-класс будет интересен <strong>разработчикам, руководителям и владельцам проектов</strong>, которые сталкиваются с проблемой поиска при высоких нагрузках.]]></description>
			<content:encoded><![CDATA[<p>В субботу, 18-го июня в Киеве пройдет мастер-<strong>класс СОЗДАТЕЛЯ  движка полнотекстового поиска Sphinx Андрея Аксенова</strong> "Как готовить Sphinx". </p>
<p>Мастер-класс будет интересен <strong>разработчикам, руководителям и владельцам проектов</strong>, которые сталкиваются с проблемой поиска при высоких нагрузках.</p>
<p>Sphinx используют такие монстры, как <strong>CraigsList, DailyMotion, Meetup, HupPages, HabraHabr</strong> и еще десятки высоконагруженных сайтов. Андрей Аксенов  выступал на многочисленных конференциях в России: <strong>"DevPoint 1-2", "РИТ", "DevConf 2011", "HighLoad ++"</strong>. Организатор конференции пользователей Sphinx в Москве. Автор нашумевшего доклада “Как прекратить писать”.</p>
<p>Дополнительная информация и <strong>подробный план</strong> мастер-класса можно посмотреть на сайте <a href="http://www.smartme.com.ua/sphinx-workshop/">http://www.smartme.com.ua/sphinx-workshop/</a></p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2011. |
<a href="http://pro100pro.com/master-klass-po-sphinx">Permalink</a> |
<a href="http://pro100pro.com/master-klass-po-sphinx#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/master-klass-po-sphinx&title=Мастер-класс по Sphinx">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/master-class" rel="tag">Master-class</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/master-klass-po-sphinx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Sphinx Search plugin version 3.0</title>
		<link>http://pro100pro.com/wordpress-sphinx-search-plugin-version-3-0</link>
		<comments>http://pro100pro.com/wordpress-sphinx-search-plugin-version-3-0#comments</comments>
		<pubDate>Fri, 08 Apr 2011 07:40:20 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[WPSphinx plugin]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=559</guid>
		<description><![CDATA[Мы рады представить новую третью версию плагина поиска для Wordpress.

Стоит отметить что мы разработали целый набор новых инструментов который поможет не только улучшить поиск, но так же и улучшить поисковую оптимизацию всего вебсайта.]]></description>
			<content:encoded><![CDATA[<p><!-- p { margin-bottom: 0.21cm; } -->Мы рады представить новую третью версию плагина поиска для WordPress.</p>
<p>Стоит отметить что мы разработали целый набор новых инструментов который поможет не только улучшить поиск, но так же и улучшить поисковую оптимизацию всего вебсайта.</p>
<p><!-- p { margin-bottom: 0.21cm; } -->Кратко о плагине:</p>
<ul>
<li>поиск с помощью 	Sphinx Search;</li>
<li>поддержка Google like запросов;</li>
<li>виджеты релевантных, 	последних и ТОП поисковых запросов;</li>
<li>набор инструментов 	по управлению поисковыми фразами;</li>
<li>мастер автоматической 	установки Sphinx Search;</li>
<li>статистика поисковых 	фраз;</li>
<li>все компоненты 	используют Sphinx Search, количество SQL 	запросов сведено к минимуму.</li>
</ul>
<p><!-- p { margin-bottom: 0.21cm; } -->Больше информации на <a title="WordPress Sphinx Search Plugin" href="http://www.ivinco.com/software/wordpress-sphinx-search-plugin/">официальной странице плагина</a>.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2011. |
<a href="http://pro100pro.com/wordpress-sphinx-search-plugin-version-3-0">Permalink</a> |
<a href="http://pro100pro.com/wordpress-sphinx-search-plugin-version-3-0#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/wordpress-sphinx-search-plugin-version-3-0&title=WordPress Sphinx Search plugin version 3.0">del.icio.us</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/wordpress-sphinx-search-plugin-version-3-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как увеличить производительность Sphinx Real Time индексов в 5-10 раз?</title>
		<link>http://pro100pro.com/kak-uvelichit-proizvoditelnost-sphinx-real-time-indeksov-v-5-10-raz</link>
		<comments>http://pro100pro.com/kak-uvelichit-proizvoditelnost-sphinx-real-time-indeksov-v-5-10-raz#comments</comments>
		<pubDate>Fri, 25 Mar 2011 14:05:05 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Sphinx Search]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=556</guid>
		<description><![CDATA[На презентации доклада о Sphinx Real Time индексах на HighLoad++  я показал RT индексы не с лучшей стороны. По сути в докладе я показал, что RT индексы уступают обычным индексам минимум в 5 раз по производительности.

Соответсвенно обсуждение этой проблемы подтолкнуло меня провести эксперименты в поисках оптимальной настройки Sphinx для RT индексов. Задача была обойти или хотя бы достичь производительности обычных индексов.]]></description>
			<content:encoded><![CDATA[<p>На презентации доклада о Sphinx Real Time индексах на HighLoad++  я показал RT индексы не с лучшей стороны. По сути в докладе я показал, что RT индексы уступают обычным индексам минимум в 5 раз по производительности.</p>
<p>Соответсвенно обсуждение этой проблемы подтолкнуло меня провести эксперименты в поисках оптимальной настройки Sphinx для RT индексов. Задача была обойти или хотя бы достичь производительности обычных индексов.</p>
<p>Результаты и подробности исследования читайте на <a title="How to speed up Sphinx Real Time indexes up to 5-10 times" href="http://www.ivinco.com/blog/how-to-speed-up-sphinx-real-time-indexes-up-to-5-10-times/">блоге компании Ivinco целиком посвященному Sphinx Search</a>.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2011. |
<a href="http://pro100pro.com/kak-uvelichit-proizvoditelnost-sphinx-real-time-indeksov-v-5-10-raz">Permalink</a> |
<a href="http://pro100pro.com/kak-uvelichit-proizvoditelnost-sphinx-real-time-indeksov-v-5-10-raz#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/kak-uvelichit-proizvoditelnost-sphinx-real-time-indeksov-v-5-10-raz&title=Как увеличить производительность Sphinx Real Time индексов в 5-10 раз?">del.icio.us</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/kak-uvelichit-proizvoditelnost-sphinx-real-time-indeksov-v-5-10-raz/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>27го ноября, Киев. Совместная конференция ZFConf Ukraine &amp; MageConf</title>
		<link>http://pro100pro.com/27go-noyabrya-kiev-sovmestnaya-konferenciya-zfconf-ukraine-mageconf</link>
		<comments>http://pro100pro.com/27go-noyabrya-kiev-sovmestnaya-konferenciya-zfconf-ukraine-mageconf#comments</comments>
		<pubDate>Tue, 09 Nov 2010 11:11:23 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[ZendFramework]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[kiev]]></category>
		<category><![CDATA[MageConf]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=546</guid>
		<description><![CDATA[27го ноября в Киеве пройдет бесплатная, международная совместная конференция ZFConf Ukraine &#038; MageConf.]]></description>
			<content:encoded><![CDATA[<p>27го ноября в Киеве пройдет бесплатная, международная совместная конференция ZFConf Ukraine &amp; MageConf.</p>
<p>Конференция пройдет 27 ноября, в Киеве<br />
Титульный спонсор конференции – компания Magento<br />
Место: КиевЭкспоПлаза, ул. Салютная 2б, 3 павильон<br />
Время: 27 ноября 2010 г. (с 11:00 до 19:00)<br />
Длительность: 1 полный день<br />
Формат: доклады в три потока и обсуждения на флипчарте (в перерывах)<br />
Язык докладов: русский<br />
Стоимость участия: бесплатно<br />
Потоки: Zend Framework, PHP, Magento.</p>
<p>Доклады и Докладчики:</p>
<p><strong>1. Встречайте Zend Framework 2.0</strong><br />
Александр Веремьев / Zend Framework Core команда (Zend Technologies)</p>
<p><strong>2. Эволюция ZF: архитектура, шаблоны, рефакторинг</strong><br />
Виктор Фараздаги / Component Maintainer и Contributor ZF 2.0 (4C)</p>
<p><strong>3. Юнит тестирование в Zend Framework 2.0</strong><br />
Ростислав Михайлив / Chief Developer / Software Architect (Gadu-Gadu)</p>
<p><strong>4. Хранение, обработка и отдача статики с использованием \Zend \File. Опыт социальной сети starlook.ru</strong><br />
Кирилл Мокевнин / Senior developer (undev)</p>
<p><strong>5. Чуть сложнее чем Singleton: аннотации, IOC, АОП</strong><br />
Кирилл Чебунин / Senior PHP Developer (Альпари)</p>
<p><strong>6. Doctrine 2</strong><br />
Валерий Рабиевский / Team leader (stfalcon.com)</p>
<p>Список еще будет обновляться, вы также можете подать заявку на доклад, если вам есть чем поделиться поделиться с общественностью.<br />
Также были бы рады услышать ваши комментарии по текущим темам.</p>
<p>Следите за обновлениями на <a href="http://zfconf.org.ua/">http://zfconf.org.ua</a></p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/27go-noyabrya-kiev-sovmestnaya-konferenciya-zfconf-ukraine-mageconf">Permalink</a> |
<a href="http://pro100pro.com/27go-noyabrya-kiev-sovmestnaya-konferenciya-zfconf-ukraine-mageconf#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/27go-noyabrya-kiev-sovmestnaya-konferenciya-zfconf-ukraine-mageconf&title=27го ноября, Киев. Совместная конференция ZFConf Ukraine &#038; MageConf">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/conference" rel="tag">Conference</a>, <a href="http://pro100pro.com/tag/kiev" rel="tag">kiev</a>, <a href="http://pro100pro.com/tag/mageconf" rel="tag">MageConf</a>, <a href="http://pro100pro.com/tag/magento" rel="tag">Magento</a>, <a href="http://pro100pro.com/tag/zend-framework" rel="tag">Zend Framework</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/27go-noyabrya-kiev-sovmestnaya-konferenciya-zfconf-ukraine-mageconf/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отчет о Sphinx Search User Conference 2010</title>
		<link>http://pro100pro.com/otchet-o-sphinx-search-user-conference-2010</link>
		<comments>http://pro100pro.com/otchet-o-sphinx-search-user-conference-2010#comments</comments>
		<pubDate>Sat, 30 Oct 2010 10:29:29 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Moscow]]></category>
		<category><![CDATA[Real time]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=533</guid>
		<description><![CDATA[Занимаясь разработкой Sphinx Search приложений последние три года, я не смог упустить возможности посетить первую Sphinx Search User Conference.

Но, на конференцию я поехал не только как участник, а также как докладчик.
Тема моего выступления была "Sphinx Search Real Time индексы и их сравнение с обычными индексами".]]></description>
			<content:encoded><![CDATA[<p>Занимаясь разработкой Sphinx Search приложений последние три года, я не смог упустить возможности посетить первую Sphinx Search User Conference.</p>
<p>Но, на конференцию я поехал не только как участник, а также как докладчик.<br />
Тема моего выступления была "Sphinx Search Real Time индексы и их сравнение с обычными индексами".</p>
<p>Конференция была организована в одном из корпусов МГУ(Московского Государственного Университета),<br />
участники заняли места за партами, а докладчики сменяли друг друга за лекторской трибуной.</p>
<div id="attachment_539" class="wp-caption aligncenter" style="width: 235px"><a href="http://pro100pro.com/wp-content/uploads/2010/10/img_023.jpg"><img src="http://pro100pro.com/wp-content/uploads/2010/10/img_023-225x300.jpg" alt="Московской Государственный Университет" title="img_023" width="225" height="300" class="size-medium wp-image-539" /></a><p class="wp-caption-text">Московской Государственный Университет</p></div>
<p>Открыл конференцию и провел первый доклад конечно же Андрей Аксенов.<br />
Рассказав про общие понятия Sphinx Search, Андрей таким образом подготовил аудиторию к более сложным темам.</p>
<div id="attachment_537" class="wp-caption aligncenter" style="width: 310px"><a href="http://pro100pro.com/wp-content/uploads/2010/10/img_025.jpg"><img src="http://pro100pro.com/wp-content/uploads/2010/10/img_025-300x225.jpg" alt="Андрей рассказывает про новый тип стрингов" title="img_025" width="300" height="225" class="size-medium wp-image-537" /></a><p class="wp-caption-text">Андрей рассказывает про новый тип стрингов</p></div>
<p>Следом за Андреем выступил Слава Крюков с докладом о построении высокомасштабируемых систем на базе Sphinx Search.<br />
Доклад Славы был очень глубоким и интересным, поэтому к нему было больше всего вопросов во время кофе-брейка.</p>
<p><a href="http://pro100pro.com/wp-content/uploads/2010/10/img_027.jpg"><img src="http://pro100pro.com/wp-content/uploads/2010/10/img_027-300x225.jpg" alt="Слава Крюков с докладом про BoardReader" title="img_027" width="300" height="225" class="aligncenter size-medium wp-image-541" /></a></p>
<p>Следующим интересным докладом, был доклад главного гостя конференции Пети Зайцева, который рассказал про применение Sphinx совместно с MySQL и без него.</p>
<p>Вторая часть конференции прошла под эгидой применения Sphinx Search в интернет магазинах.<br />
И закрывал конференцию мой доклад о Real Time индексах Sphinx Search.</p>
<p>В конце конференции был проведен круглый стол с разработчиками Sphinx и докладчиками.<br />
Было много интересных вопросов и пожеланий, Андрей провел несколько конкурсов где раздал много футболок с большим глазом на спине. :)</p>
<div id="attachment_542" class="wp-caption aligncenter" style="width: 310px"><a href="http://pro100pro.com/wp-content/uploads/2010/10/img_034.jpg"><img src="http://pro100pro.com/wp-content/uploads/2010/10/img_034-300x225.jpg" alt="Круглый стол с разработчиками Sphinx и докладчиками" title="img_034" width="300" height="225" class="size-medium wp-image-542" /></a><p class="wp-caption-text">Круглый стол с разработчиками Sphinx и докладчиками</p></div>
<p>Конференцию считаю прошедшей удачно!<br />
Спасибо Андрей!</p>
<p>Моя презентация <a href='http://pro100pro.com/wp-content/uploads/2010/10/Presentation-sphinx-RT-indexes.pdf' title='Presentation Sphinx Search RT indexes'>Sphinx Search RT indexes</a></p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/otchet-o-sphinx-search-user-conference-2010">Permalink</a> |
<a href="http://pro100pro.com/otchet-o-sphinx-search-user-conference-2010#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/otchet-o-sphinx-search-user-conference-2010&title=Отчет о Sphinx Search User Conference 2010">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/conference" rel="tag">Conference</a>, <a href="http://pro100pro.com/tag/moscow" rel="tag">Moscow</a>, <a href="http://pro100pro.com/tag/real-time" rel="tag">Real time</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/otchet-o-sphinx-search-user-conference-2010/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Скрипт миграции обычных индексов на real time индексы Sphinx Search</title>
		<link>http://pro100pro.com/skript-migracii-obychnyx-indeksov-na-real-time-indeksy-sphinx-search</link>
		<comments>http://pro100pro.com/skript-migracii-obychnyx-indeksov-na-real-time-indeksy-sphinx-search#comments</comments>
		<pubDate>Wed, 22 Sep 2010 13:59:48 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[indexes]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[Real time]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=521</guid>
		<description><![CDATA[Скрипт предназначен для заполнения и обнволения real time индексов. Скрипт выполняет похожую работу, которую делал sphinx indexer для обычных индексов.
Поэтому конфигурационный файл sources.ini практически повторяет конфигурацию блока source из sphinx.conf.]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Скрипт предназначен для заполнения и обнволения real time индексов. Скрипт выполняет похожую работу, которую делал sphinx indexer для обычных индексов.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поэтому конфигурационный файл sources.ini практически повторяет конфигурацию блока source из sphinx.conf.</div>
<p>Скрипт предназначен для заполнения и обнволения real time индексов. Скрипт выполняет похожую работу, которую делал sphinx indexer для обычных индексов.</p>
<p>Поэтому конфигурационный файл sources.ini практически повторяет конфигурацию блока source из sphinx.conf.</p>
<p>Возможности</p>
<ul>
<li>Заполнять индекс данными</li>
<li>Дописывать в индекс новые данные</li>
<li>Обновлять в индексе существующие данные</li>
<li>Выполнять pre и post sql запросы</li>
<li>Поддерживает ranged запросы</li>
</ul>
<p>Установка</p>
<p>Скачайте архив из <a title="Sphinx Search migration from plain to real time indexes script" href="https://launchpad.net/migrate-sphinx-plain-indexes-into-real-time-indexes" target="_self">launchpad.net</a></p>
<p>Распакуйте его в любую директорию вашего веб сервера.</p>
<p>Откройте sources.ini, в этом файле уже определен один раздел, используйте его как пример.</p>
<p>Определять можно столько разделов, сколько потребуется.</p>
<p>Каждый раздел описывает один источник данных для одного real time индекса.</p>
<p>Для поддержки добавления новых данных в индекс без перезаписи старых, необходимо использовать счетчик id для источника данных.</p>
<p>Вы должны будете выполнить следующие шаги:</p>
<ul>
<li>Создать таблицу для счетчиков</li>
<li>Добавить счетчики в таблицу</li>
<li>Изменить sql_query для поддержки $start и $end</li>
<li>Изменить sql_query_range для выборки минимального и максимального id используя таблицу счетчик</li>
<li>Изменить sql_query_post_index для обновления таблицы счетчика</li>
</ul>
<p>Подробнее про счетчик вы можете прочитать в документации к <a title="Delta updates" href="http://sphinxsearch.com/docs/current.html#delta-updates">Sphinx Search</a></p>
<p>Теперь когда мы закончили с конфигурацией, можно начать заполнение индекса.</p>
<p>Для этого просто запустить indexer.php</p>
<div class="igBar"><span id="lcode-7"><a href="#" onclick="javascript:showPlainTxt('code-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-7">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">php indexer.<span style="">php</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Спасибо!</p>
<p>Желаю удачи!</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/skript-migracii-obychnyx-indeksov-na-real-time-indeksy-sphinx-search">Permalink</a> |
<a href="http://pro100pro.com/skript-migracii-obychnyx-indeksov-na-real-time-indeksy-sphinx-search#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/skript-migracii-obychnyx-indeksov-na-real-time-indeksy-sphinx-search&title=Скрипт миграции обычных индексов на real time индексы Sphinx Search">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/indexes" rel="tag">indexes</a>, <a href="http://pro100pro.com/tag/migration" rel="tag">migration</a>, <a href="http://pro100pro.com/tag/real-time" rel="tag">Real time</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/skript-migracii-obychnyx-indeksov-na-real-time-indeksy-sphinx-search/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Тестирование производительности Обычных, Real Time и Смешанных индексов Sphinx Search</title>
		<link>http://pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search</link>
		<comments>http://pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search#comments</comments>
		<pubDate>Tue, 21 Sep 2010 09:10:02 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[Diagrams]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Plain index]]></category>
		<category><![CDATA[Real time]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=508</guid>
		<description><![CDATA[Я провел несколько сравнительных тестов над всеми типами индексов, а именно:

   1. Сравнил использования HDD каждым из типов
   2. Сравнил скорость поиска по одиночному запросу
   3. Сравнил скорость поиска по мулти запросам

]]></description>
			<content:encoded><![CDATA[<p>Немного определенй</p>
<p><strong>Обычный индекс</strong> - <em>это индекс, который имеет блок source в конфигурационном файле Sphinx и заполняется путем вызова утилиты indexer.</em><br />
<strong>Real time (RT)</strong> - <em>не имеет блока source, а содержит только определение полей и атрибутов. Заполнение RT индекса уже не является обязанностью утилит Sphinx, а ложиться на плечи разработчика приложения.</em><br />
<strong>Смешанный индекс</strong> - <em>это индекс, который образуется путем создания распределенного индекса из обычного индекса и RT индекса.</em></p>
<p>Пример смешанного индекса:</p>
<div class="igBar"><span id="lcode-8"><a href="#" onclick="javascript:showPlainTxt('code-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-8">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">index distributed</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">type = distributed</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">local = plain_main_index</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">local = real_time_increment_index</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
В данном примере мы через один распределенный индекс можем обращаться одновременно к RT и обычным индексам.</p>
<p><strong>Измерение производительности</strong></p>
<p>Я провел несколько сравнительных тестов над всеми типами индексов, а именно:</p>
<ol>
<li>Сравнил использования HDD каждым из типов</li>
<li>Сравнил скорость поиска по одиночному запросу</li>
<li>Сравнил скорость поиска по мулти запросам</li>
</ol>
<p>Все тесты проходили на четырех различных наборах данных. Данные были взяты из wikipedia и распределены на четыри части по:<br />
10 тыс., 100 тыс., 1 млн. и 2 млн. записей.</p>
<p><strong>Сравнение HDD</strong></p>
<p>Я сравнил использование hdd, только для обычных и RT индексов.</p>
<p><a href="http://pro100pro.com/wp-content/uploads/2010/09/hdd.jpg"><img class="size-full wp-image-511 alignnone" title="hdd usage by RT and plain index" src="http://pro100pro.com/wp-content/uploads/2010/09/hdd.jpg" alt="hdd usage by RT and plain index" width="695" height="378" /></a></p>
<p><em>Красное поле RT индексы.<br />
</em><em>Синее поле обычные индексы.</em></p>
<p>Как видно из диаграммы, RT индексы для 1 млн. и 2 млн. данных используют примерно на 20% больше места.<br />
Но, Я считаю, что RT индексы все таки по этому показателю лучше, так как для обычных индексов при переиндексации требуется в 2 раза больше места чем сам индекс. Соответственно используя RT мы сможем экономнее использовать hdd на сервере.</p>
<p><strong>Сравнение скорости поиска по одинчоному запросу</strong></p>
<p>Для запросов я создал словарь из 1000 самых популярных слов из каждого индекса. И по этим словам выполнил запросы.</p>
<p><a href="http://pro100pro.com/wp-content/uploads/2010/09/single.jpg"><img class="alignnone size-full wp-image-512" title="single query performance tests" src="http://pro100pro.com/wp-content/uploads/2010/09/single.jpg" alt="single query performance tests" width="696" height="378" /></a></p>
<p><em>Красное поле RT индексы.<br />
</em><em>Синее поле обычные индексы.<br />
Желтое поле смешанные индексы. </em></p>
<p>Из диаграммы мы видим, что на небольших индексах скорость поиска практически одинаковая.<br />
В то время как на больших данных RT индексы существенно проигрывают обычным индексам, а смешанные индексы заняли положение посередине.</p>
<p><strong>Сравнение скорости поиска по мулти запросам</strong></p>
<p>Словарь я использовал тот же, что и для предыдущего теста, только поиск исполнял сразу по пять запросов паралельно.</p>
<p><a href="http://pro100pro.com/wp-content/uploads/2010/09/multi.jpg"><img class="alignnone size-full wp-image-513" title="multi query performance tests" src="http://pro100pro.com/wp-content/uploads/2010/09/multi.jpg" alt="multi query performance tests" width="702" height="372" /></a></p>
<p><em>Красное поле RT индексы.<br />
</em><em>Синее поле обычные индексы.<br />
Желтое поле смешанные индексы.</em></p>
<p>Тут мы видим практически туже самую картину. На больших объемах RT индексы сильно проигрывают обычным индексам.<br />
Но, стоит отметить, что производительность мультизапросов примерно в 5 раз лучше чем у одинчоных запросов.</p>
<p>Из этого можно сделать несколько выводов:</p>
<ul>
<li> RT индексы работают быстро только на малых масивах данных</li>
<li>Для поддержки высокой производительности приложение стоит проектировать с поддержкой мульти запросов</li>
<li>RT индексы могуть стать хорошей заменой инкрементному индексу</li>
</ul>
<p>Благодарю за внимание.<br />
Желаю удачи!</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search">Permalink</a> |
<a href="http://pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search&title=Тестирование производительности Обычных, Real Time и Смешанных индексов Sphinx Search">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/diagrams" rel="tag">Diagrams</a>, <a href="http://pro100pro.com/tag/performance" rel="tag">Performance</a>, <a href="http://pro100pro.com/tag/plain-index" rel="tag">Plain index</a>, <a href="http://pro100pro.com/tag/real-time" rel="tag">Real time</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a>, <a href="http://pro100pro.com/tag/tests" rel="tag">tests</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Переходить ли на Sphinx Search real time индексы</title>
		<link>http://pro100pro.com/perexodit-li-na-sphinx-search-real-time-indeksy</link>
		<comments>http://pro100pro.com/perexodit-li-na-sphinx-search-real-time-indeksy#comments</comments>
		<pubDate>Mon, 20 Sep 2010 16:09:15 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[live update]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[Real time]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=505</guid>
		<description><![CDATA[Основаня проблема обычных индексов заключается в скорости обновления.
Для того, чтобы обновить индекс необходимо его полностью перестраивать.
]]></description>
			<content:encoded><![CDATA[<p><strong>Проблема обычных индексов</strong></p>
<p>Основаня проблема обычных индексов заключается в скорости обновления.<br />
Для того, чтобы обновить индекс необходимо его полностью перестраивать.</p>
<p>Для больших массивов данных, используется метод main + delta индексы.<br />
Где main содержит основную часть данных, а delta - только последние изменения.</p>
<p>Таким образом, чтоб поддерживать индекс "свежим" необходимо перестраивать delta индекс, каждые 3-5 минут.<br />
Но, чем больше становится delta индекс, тем дольше идет перестроение, поэтому delta индекс рекомендуется сбрасывать в<br />
main индекс раз в сутки или неделю в зависимости от частоты обновления данных.</p>
<p>Отсюда возникает две проблемы:</p>
<ol>
<li>Из-за частой переиндексации система всегда нагружена.</li>
<li>Данные попадают в индекс только спустя 3-5-10 минут.</li>
</ol>
<p><strong>Real time индексы</strong></p>
<p>В версии 1.10 Sphinx включил поддержку нового типа индексов - real time индексы.<br />
Основное преимущество и отличие от обычных индексов - это возможность обновить запись в индексе на "лету".<br />
Также - это поддержка mysql протокола, что позволяет использовать существующие инструменты(mysql client, mysqldump) для работы с real time индексами.<br />
<em>Для обычных индексов доступ по mysql протоколу также поддерживается, но только в режиме чтения.<br />
</em>И - это SphinxQL, язык запросов основанный на SQL, поддерживающие такие операции как SELECT, DELETE, INSERT, REPLACE.</p>
<p>Но, в данный момент сущесвтует проблема с производительность в RT индексах на больших объемах данных.<br />
Хотя, на малых объемах, скажем до 500.000 документов содержащих статьи из wikipedia, скорость работы не уступает обычным индексам.</p>
<p>Из этого можно сделать вывод, что простота работы и высокая скорость поиска на небольших объемах данных выгодно отличет real time<br />
индексы от обычных индексов для delta (инкрементного) индекса.</p>
<p><strong>Вывод</strong><br />
Real time индексы можно использовать как инкрементный delta индекс в Sphinx.<br />
Это снизит нагрузку на сервер, и упростит обновление данных в инкрементном индексе.<br />
А поддержка смешанных индексов позволит очень просто подключить RT индексы к работающему приложению.</p>
<p>Пример смешанного индекса.</p>
<div class="igBar"><span id="lcode-9"><a href="#" onclick="javascript:showPlainTxt('code-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-9">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">index distributed</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">type = distributed</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">local = plain_main_index</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">local = real_time_increment_index</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
В данном примере мы через один распределенный индекс обращаемся одновременно к RT и обычным индексам.</p>
<p>Как мы видим миграция на RT индексы может быть сделана очень просто, начать можно с малого не трогая при этом основу работающей системы.</p>
<p>Всем желаю удачи в этом непростом, но интересном деле!</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/perexodit-li-na-sphinx-search-real-time-indeksy">Permalink</a> |
<a href="http://pro100pro.com/perexodit-li-na-sphinx-search-real-time-indeksy#comments">2 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/perexodit-li-na-sphinx-search-real-time-indeksy&title=Переходить ли на Sphinx Search real time индексы">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/live-update" rel="tag">live update</a>, <a href="http://pro100pro.com/tag/migration" rel="tag">migration</a>, <a href="http://pro100pro.com/tag/real-time" rel="tag">Real time</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/perexodit-li-na-sphinx-search-real-time-indeksy/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

