<?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>commit &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/commit/feed/" rel="self" type="application/rss+xml" />
	<link>https://solr.pl</link>
	<description>All things to be found - Blog related to Apache Solr &#38; Lucene projects - https://solr.apache.org</description>
	<lastBuildDate>Wed, 11 Nov 2020 18:49:39 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Kiedy należy commitować ?</title>
		<link>https://solr.pl/2011/06/27/kiedy-nalezy-commitowac/</link>
					<comments>https://solr.pl/2011/06/27/kiedy-nalezy-commitowac/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 27 Jun 2011 17:49:03 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[dane]]></category>
		<category><![CDATA[indeksowanie]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[udostępnianie]]></category>
		<category><![CDATA[udostępnianie danych]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=250</guid>

					<description><![CDATA[Pytanie jakie ostatnio sobie zadałem, wydaje się jednym z tych na które odpowiedź powinna być szybka i bezproblemowa. Tak więc, kiedy należy wysyłać polecenie commit do Solr (lub Lucene) ? Pomimo prostoty pytania, odpowiedź nie jest moim zdaniem jednoznaczna. Aby]]></description>
										<content:encoded><![CDATA[<p>Pytanie jakie ostatnio sobie zadałem, wydaje się jednym z tych na które odpowiedź powinna być szybka i bezproblemowa. Tak więc, kiedy należy wysyłać polecenie <em>commit</em> do Solr (lub Lucene) ? Pomimo prostoty pytania, odpowiedź nie jest moim zdaniem jednoznaczna.</p>
<p><span id="more-250"></span></p>
<p>Aby odpowiedzieć sobie na pytanie, kiedy należy wysyłać polecenie <em>commit</em>, należy przyjrzeć się kilku różnym wariantom indeksowania danych oraz jak szybko chcemy te dane udostępniać. Przyglądając się typowym wdrożeniom, którymi miałem do czynienia, można wyróżnić następujące kategorie:</p>
<h3>Dane mogą być udostępnione jedynie po całkowitej aktualizacji indeksu</h3>
<p>Sytuacja teoretycznie i praktycznie bardzo prosta. Commitujemy dopiero kiedy skończą się dokumenty do zaindeksowania.</p>
<h3>Dane mogą być udostępniane partiami, bez konieczności czekania na pełną aktualizację indeksu</h3>
<p>Tutaj mamy trzy możliwości:</p>
<ol>
<li>Jeżeli nie ma znaczenia czy dane będą udostępnianie partiami, czy nie możemy wysyłać polecenie <em>commit</em> dopiero po przesłaniu ostatniego dokuementu.</li>
<li>Jeżeli chcemy udostępniać dane partiami, nasza aplikacja może wysłać polecenie <em>commit</em> co pewien czas.</li>
<li>Jeżeli nie chcemy wysyłać polecenia <em>commit</em> z aplikacji, możemy powiedzieć, aby Solr robił to za nas, czyli po prostu skorzystać z mechanizmu <em>autocommit</em>.</li>
</ol>
<h3>Dane muszą być zaindeksowane najszybciej jak to możliwe</h3>
<p>Jeżeli dane mają być indeksowane najszybciej jak to jest możliwe (pomijając w tym momencie temat sposobu indeksowania) należy wysyłać polecenie <em>commit</em> dopiero po przesłaniu wszystkich danych. <em>Commit </em>jest dość kosztowny pod względem wydajności i dlatego, w omawianym przypadku, powinien być stosowany jedynie na samym końcu procesu indeksacji.</p>
<h3>Ważne jest, aby dane były publikowane jak najszybciej</h3>
<p>Jest to chyba najtrudniejszy z wymienionych przypadków. Wszystko zależy od tego, jak szybko chcemy mieć dane widoczne na slave&#8217;ach. Na przykład w przypadku systemu CMS, kiedy użytkownik zapisuje edytowaną stronę, chcielibyśmy, aby jej zaktualizowana zawartość dostępna była od razu &#8211; wtedy <em>commit</em> po każdym dokumencie i szybka replikacja jest wskazana.W przypadku dodawania artykułów do sklepu internetowego, można pokusić się o pewne opóźnienie. Takie przypadki można mnożyć w nieskończoność. Należy jednak pamiętać o odpowiednim przygotowaniu zapytań rozgrzewających, aby Solr był przygotowany do obciążenia zapytaniami oraz o tym, aby nie replikować indeksów co 30 sekund, ponieważ może to być przyczyną problemów wydajnościowych.</p>
<p>Osoby zainteresowane bardzo częstą aktualizacją indeksu powinny obserwować to co się dzieje w Lucene i Solr odnośnie NRT (near real time).</p>
<h3>Optymalizacja</h3>
<p>Warto pamiętać też o optymalizacji indeksu. Jeżeli wysyłamy polecenie <em>commit</em> tylko raz, na zakończenie indeksowania warto zastanowić się, czy zamiast <em>commit</em> nie wysyłać <em>optimize</em>. Nasze slave&#8217;y dostaną wtedy zoptymalizowaną wersję indeksu z najnowszymi danymi. Należy jednak pamiętać, iż optymalizacja indeksu jest dłuższa, niż commit.</p>
<h3>Niebezpieczeństwa</h3>
<p>Warto pamiętać, iż odwlekanie operacji <em>commit</em> w nieskończoność wiąże się z niebezpieczeństwem utraty danych, które nie zostały fizycznie zapisane do plików indeksu. Oczywiście nic się z danymi nie stanie, jeżeli Solr zostanie poprawnie wyłączony, natomiast w przypadku awarii maszyny może się zdarzyć sytuacja, kiedy dane które indeksowaliśmy zostaną stracone.</p>
<h3>Podsumowanie</h3>
<p>Jak widać, nie ma jasnej odpowiedzi kiedy należy wysyłać polecenie <em>commit</em> ponieważ zależy to od sytuacji i indywidualnych potrzeb. Należy jednak pamiętać, iż czynności, jakie wykonywane są przez Lucene/Solr po wysłaniu polecenia <em>commit</em> są mocno zasobożerne. Nie korzystajmy z tego polecenia często ponieważ może się okazać, iż zamiast indeksować dane Lucene/Solr spędza większość czasu na przetwarzaniu polecenia <em>commit</em>.</p>
<p>&nbsp;</p>
<p>&nbsp;
</p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; left: -10000px; top: 281px; width: 1px; height: 1px; overflow: hidden;">Pomijając temat samego sposobu indeksowania</div>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2011/06/27/kiedy-nalezy-commitowac/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
