<?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>Aen Sidhe&#039;s Weblog &#187; алгоритмы</title>
	<atom:link href="http://www.aensidhe.ru/tag/%d0%b0%d0%bb%d0%b3%d0%be%d1%80%d0%b8%d1%82%d0%bc%d1%8b/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aensidhe.ru</link>
	<description>Просто блог.</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:13:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>А давайте поиграем в задачки.</title>
		<link>http://www.aensidhe.ru/2012/02/03/%d0%b0-%d0%b4%d0%b0%d0%b2%d0%b0%d0%b9%d1%82%d0%b5-%d0%bf%d0%be%d0%b8%d0%b3%d1%80%d0%b0%d0%b5%d0%bc-%d0%b2-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%ba%d0%b8/</link>
		<comments>http://www.aensidhe.ru/2012/02/03/%d0%b0-%d0%b4%d0%b0%d0%b2%d0%b0%d0%b9%d1%82%d0%b5-%d0%bf%d0%be%d0%b8%d0%b3%d1%80%d0%b0%d0%b5%d0%bc-%d0%b2-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%ba%d0%b8/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 09:02:28 +0000</pubDate>
		<dc:creator>Aen Sidhe</dc:creator>
				<category><![CDATA[дневник]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[алгоритмы]]></category>
		<category><![CDATA[субд]]></category>

		<guid isPermaLink="false">http://www.aensidhe.ru/?p=1454</guid>
		<description><![CDATA[А давайте поиграем в задачки. Дано: посты с комментариями. У постов есть теги, у комментариев есть авторы. Ну, комментарии и их авторы нас пока не интересуют. Лежит это всё дело в СУБД. Задача: находить все посты, помечены одним или более тегами (теги на вход подаёт юзер). Чтобы распределение данных было близко к реальности, надо чтобы [...]]]></description>
			<content:encoded><![CDATA[<p>А давайте поиграем в задачки.</p>
<p>Дано: посты с комментариями. У постов есть теги, у комментариев есть авторы. Ну, комментарии и их авторы нас пока не интересуют. Лежит это всё дело в СУБД.</p>
<p>Задача: находить все посты, помечены одним или более тегами (теги на вход подаёт юзер). Чтобы распределение данных было близко к реальности, надо чтобы постов было более 100 тысяч, а количество тегов не превышало 2-3 тысячи, в идеале &#8212; +/- 1 тысяча. На пост от 0 до 10-15 тегов (техническое ограничение должно отсутствовать, возможность не указывать теги должна присутствовать).</p>
<p>Ответ СУБД должна выдавать за минимально возможное время. Например, на системе без нагрузки после компиляций планов/поднятия кеша с винта &#8212; не более 50 мс на один поиск на стандартном десктопе (примерно i7 860 @ 2.8 GHz, 8 Gb DDR3).</p>
<p>Во время решения задачи можно предполагать, что все данные находятся в оперативной памяти.</p>
<p>Для решения задачи можно использовать любую СУБД, обладающую следующими свойствами:<br />
1. СУБД обязана иметь ACID-транзакции.<br />
2. СУБД обязана уметь гарантировать ссылочную целостность данных. Например, через foreign keys.</p>
<p>ЗЫ: я задачку решил и оно используется у нас в продакшене <img src='http://www.aensidhe.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ЗЫ2: важное забыл. Распределение тегов по постам крайне неравномерно. Может быть так, что одним тегом покрыто 10% постов, а другим &#8212; 2 (два, не два процента) поста. И находить должно с одинаковой скоростью по каждому из таких тегов в отдельности и по обоим вместе.</p>
<p>ЗЫ3: решение задачи &#8212; это минимум два запроса: тот, который создаст структуру базы и тот, которым вы выберите посты (id, text минимум) по заданному вводу.</p>

	Метки:<a href="http://www.aensidhe.ru/tag/optimization/" title="optimization" rel="tag">optimization</a>, <a href="http://www.aensidhe.ru/tag/%d0%b0%d0%bb%d0%b3%d0%be%d1%80%d0%b8%d1%82%d0%bc%d1%8b/" title="алгоритмы" rel="tag">алгоритмы</a>, <a href="http://www.aensidhe.ru/category/blog/" title="дневник" rel="tag">дневник</a>, <a href="http://www.aensidhe.ru/category/development/" title="программирование" rel="tag">программирование</a>, <a href="http://www.aensidhe.ru/tag/%d1%81%d1%83%d0%b1%d0%b4/" title="субд" rel="tag">субд</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.aensidhe.ru/2012/02/03/%d0%b0-%d0%b4%d0%b0%d0%b2%d0%b0%d0%b9%d1%82%d0%b5-%d0%bf%d0%be%d0%b8%d0%b3%d1%80%d0%b0%d0%b5%d0%bc-%d0%b2-%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%ba%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>intellegent design sorting</title>
		<link>http://www.aensidhe.ru/2008/10/08/intellegent-design-sorting/</link>
		<comments>http://www.aensidhe.ru/2008/10/08/intellegent-design-sorting/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 07:47:12 +0000</pubDate>
		<dc:creator>Aen Sidhe</dc:creator>
				<category><![CDATA[программирование]]></category>
		<category><![CDATA[алгоритмы]]></category>
		<category><![CDATA[сортировка]]></category>

		<guid isPermaLink="false">http://ur-dnd.ru/aensidhe/?p=63</guid>
		<description><![CDATA[The probability of the original input list being in the exact order it&#8217;s in is 1/(n!). There is such a small likelihood of this that it&#8217;s clearly absurd to say that this happened by chance, so it must have been consciously put in that order by an intelligent Sorter. Therefore it&#8217;s safe to assume that [...]]]></description>
			<content:encoded><![CDATA[<p>The probability of the original input list being in the exact order it&#8217;s in is 1/(n!). There is such a small likelihood of this that it&#8217;s clearly absurd to say that this happened by chance, so it must have been consciously put in that order by an intelligent Sorter. Therefore it&#8217;s safe to assume that it&#8217;s already optimally Sorted in some way that transcends our naive mortal understanding of &#171;ascending order&#187;. Any attempt to change that order to conform to our own preconceptions would actually make it less sorted.</p>
<p>(c) не я.</p>

	Метки:<a href="http://www.aensidhe.ru/tag/%d0%b0%d0%bb%d0%b3%d0%be%d1%80%d0%b8%d1%82%d0%bc%d1%8b/" title="алгоритмы" rel="tag">алгоритмы</a>, <a href="http://www.aensidhe.ru/category/development/" title="программирование" rel="tag">программирование</a>, <a href="http://www.aensidhe.ru/tag/%d1%81%d0%be%d1%80%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b0/" title="сортировка" rel="tag">сортировка</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.aensidhe.ru/2008/10/08/intellegent-design-sorting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

