<?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; база данных</title>
	<atom:link href="http://www.job-blog.bullgare.ru/tag/%d0%b1%d0%b0%d0%b7%d0%b0-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.job-blog.bullgare.ru</link>
	<description>о программировании и работе</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:39:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Заметки об использовании MongoDB в реальной системе (сервис Server Density)</title>
		<link>http://www.job-blog.bullgare.ru/2010/03/%d0%b7%d0%b0%d0%bc%d0%b5%d1%82%d0%ba%d0%b8-%d0%be%d0%b1-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-mongodb-%d0%b2-%d1%80%d0%b5%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b9/</link>
		<comments>http://www.job-blog.bullgare.ru/2010/03/%d0%b7%d0%b0%d0%bc%d0%b5%d1%82%d0%ba%d0%b8-%d0%be%d0%b1-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-mongodb-%d0%b2-%d1%80%d0%b5%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b9/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 12:37:19 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[ссылка]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=643</guid>
		<description><![CDATA[http://blog.boxedice.com/2010/02/28/notes-from-a-production-mongodb-deployment/. Узнал здесь]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.boxedice.com/2010/02/28/notes-from-a-production-mongodb-deployment/">http://blog.boxedice.com/2010/02/28/notes-from-a-production-mongodb-deployment/</a>.<br />
Узнал <a href="http://habrahabr.ru/blogs/hi/85938/">здесь</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2010/03/%d0%b7%d0%b0%d0%bc%d0%b5%d1%82%d0%ba%d0%b8-%d0%be%d0%b1-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-mongodb-%d0%b2-%d1%80%d0%b5%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Profiler: простой и удобный инструмент профилирования запросов</title>
		<link>http://www.job-blog.bullgare.ru/2009/09/mysql-profiler-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%b8-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%bf%d1%80%d0%be%d1%84%d0%b8/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/09/mysql-profiler-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%b8-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%bf%d1%80%d0%be%d1%84%d0%b8/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 09:42:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[серверная оптимизация]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[оптимизация]]></category>
		<category><![CDATA[профилирование]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=339</guid>
		<description><![CDATA[оригинал; полная цитата: Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL. Хочу представить вашему вниманию фичу MySQL — профайлинг. Появилась она начиная с версии 5.0.37. Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов) и почему она тормозит. И раньше подобный функционал был доступен, но пользоваться журналом запросов не в [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://habrahabr.ru/blogs/mysql/70435/">оригинал</a>; полная цитата:<br />
Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL.</p>
<p>Хочу представить вашему вниманию фичу MySQL — профайлинг.<br />
Появилась она начиная с версии 5.0.37.</p>
<p>Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов)<br />
и почему она тормозит.</p>
<p>И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.</p>
<p>Итак, как пользоваться:</p>
<p>mysql> set profiling=1;<br />
mysql> select count(*) from comment;<br />
mysql> select count(*) from message;<br />
mysql> show profiles;</p>
<p>+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
| Query_ID | Duration   | Query                        |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
|        1 | 0.00012700 | select count(*) from comment |<br />
|        2 | 0.00014200 | select count(*) from message |<br />
+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+<br />
2 rows in set (0.00 sec)</p>
<p>Вуаля! Все выполненные запросы за сессию с временем выполнения.</p>
<p>На мой взгляд очень просто и сверх-удобно.</p>
<p>Можно пойти дальше, и узнать подробно на что тратилось время по каждому запросу:</p>
<p>mysql> show profile for query 1;<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
| Status                         | Duration |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
| starting                       | 0.000015 |<br />
| checking query cache for query | 0.000021 |<br />
| checking permissions           | 0.000003 |<br />
| Opening tables                 | 0.000007 |<br />
| System lock                    | 0.000004 |<br />
| Table lock                     | 0.000023 |<br />
| init                           | 0.000005 |<br />
| optimizing                     | 0.000005 |<br />
| executing                      | 0.000025 |<br />
| end                            | 0.000003 |<br />
| end                            | 0.000001 |<br />
| query end                      | 0.000002 |<br />
| storing result in query cache  | 0.000003 |<br />
| freeing items                  | 0.000003 |<br />
| closing tables                 | 0.000004 |<br />
| logging slow query             | 0.000002 |<br />
| cleaning up                    | 0.000001 |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;-+<br />
17 rows in set (0.00 sec)</p>
<p>Подробнее о профайлинге в статье: <a href="http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html">Using the New MySQL Query Profiler</a></p>
<p>Upd: как точно подметил zayceslavshow profiles по умолчанию показывает профили для 15 запросов. Кол-во запрсов можно увеличить с помощью параметра profiling_history_size, но не более чем до 100.</p>
<p>mysql> set profiling=1;<br />
mysql> set profiling_history_size=100;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/09/mysql-profiler-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%b8-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b9-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%bf%d1%80%d0%be%d1%84%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Инструмент в помощь для настройки mySQL</title>
		<link>http://www.job-blog.bullgare.ru/2009/08/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%b2-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-mysql/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/08/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%b2-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-mysql/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 11:52:40 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[серверная оптимизация]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=171</guid>
		<description><![CDATA[Случайно наткнулся на комментарий, что привело меня к инструменту MySQL Performance Tuning (ещё ссылка, tuning-primer &#8211; сам скрипт) для оптимизации mySQL путём советов по изменению конфига на основе логов.]]></description>
			<content:encoded><![CDATA[<p>Случайно наткнулся на <a href="http://habrahabr.ru/blogs/mysql/66684/#comment_1877973">комментарий</a>, что привело меня к <a href="http://www.transcendlinux.com/mysql-performance-tuning">инструменту MySQL Performance Tuning</a> (<a href="http://www.day32.com/MySQL/">ещё ссылка</a>, <a href='http://www.job-blog.bullgare.ru/wp-content/uploads/2009/08/tuning-primer.sh'>tuning-primer &#8211; сам скрипт</a>) для оптимизации mySQL путём советов по изменению конфига на основе логов.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/08/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82-%d0%b2-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Структура хранения данных в поисковых движках</title>
		<link>http://www.job-blog.bullgare.ru/2009/08/%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d0%b0-%d1%85%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b2-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%be%d0%b2%d1%8b/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/08/%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d0%b0-%d1%85%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b2-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%be%d0%b2%d1%8b/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 08:26:40 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[проектирование]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[архитектура]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[поиск]]></category>
		<category><![CDATA[Ссылки]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=168</guid>
		<description><![CDATA[Вот заинтересовало;). Решил почитать. Статья в Википедии (англ.) Архитектура Google (оригинал). видео про BigTable]]></description>
			<content:encoded><![CDATA[<p>Вот заинтересовало;).<br />
Решил почитать.<br />
<a href="http://en.wikipedia.org/wiki/Index_%28search_engine%29">Статья в Википедии</a> (англ.)<br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-google/">Архитектура Google</a> (<a href="http://highscalability.com/google-architecture">оригинал</a>).<br />
<a href="http://video.google.com/videoplay?docid=7278544055668715642">видео про BigTable</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/08/%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d0%b0-%d1%85%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b2-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%be%d0%b2%d1%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с ревизиями в CouchDB</title>
		<link>http://www.job-blog.bullgare.ru/2009/08/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%80%d0%b5%d0%b2%d0%b8%d0%b7%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-couchdb/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/08/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%80%d0%b5%d0%b2%d0%b8%d0%b7%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-couchdb/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 07:59:49 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[CouchDb]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[пример]]></category>
		<category><![CDATA[ревизия]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=113</guid>
		<description><![CDATA[Здесь пишут, что не надо полагаться на ревизии, т.к. они стираются при репликации и при сжатии (compaction) базы. Тем не менее посмотрим пример (работаем с данными, приведёнными в предыдущем посте): Ревизии документа доступны только при обращении по _id документа, так что из view они недоступны. Посмотрим все ревизии, к примеру, документа с _id=compas1_mod0: http://localhost:5984/modules/compas1_mod0?revs=true &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wiki.apache.org/couchdb/DocumentRevisions">Здесь</a> пишут, что не надо полагаться на ревизии, т.к. они стираются при репликации и при сжатии (compaction) базы.</p>
<p>Тем не менее посмотрим пример (работаем с данными, приведёнными в <a href="http://www.job-blog.bullgare.ru/2009/08/пример-работы-с-view-для-couchdb/">предыдущем посте</a>):<br />
<span id="more-113"></span><br />
Ревизии документа доступны только при обращении по _id документа, так что из view они недоступны.<br />
Посмотрим все ревизии, к примеру, документа с _id=compas1_mod0:<br />
http://localhost:5984/modules/compas1_mod0?revs=true &#8211; получим:</p>
<pre class="code">
{"_id":"compas1_mod0","_rev":"2-4271250713","cid":"compas1","pos":0,"data":"ser_1_0","_revisions":{"start":2,"ids":["4271250713","4209376694"]}}
</pre>
<p>В &laquo;_revisions&raquo; хранятся ревизии документа, при этом к конкретной ревизии можно обратиться так (start=2, id=4271250713):<br />
http://localhost:5984/modules/compas1_mod0?rev=2-4271250713 &#8211; получим:</p>
<pre class="code">
{"_id":"compas1_mod0","_rev":"2-4271250713","cid":"compas1","pos":0,"data":"ser_1_0"}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/08/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%80%d0%b5%d0%b2%d0%b8%d0%b7%d0%b8%d1%8f%d0%bc%d0%b8-%d0%b2-couchdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример работы с view в CouchDB</title>
		<link>http://www.job-blog.bullgare.ru/2009/08/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-view-%d0%b4%d0%bb%d1%8f-couchdb/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/08/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-view-%d0%b4%d0%bb%d1%8f-couchdb/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 12:53:19 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[CouchDb]]></category>
		<category><![CDATA[map-функция]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[пример]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=100</guid>
		<description><![CDATA[Вместо индексов в CouchDB используется map/reduce. Часто хватает создания одной только map-функции вида function(doc) { emit(key, value); } После чего в индексный файл помещаются все пары ключ-значение (из базы данных, к которой привязана map-функция), упорядоченные по ключу. Пример использования map-функций. Для начала надо создать базу данных с документами. На главной странице Futon&#8217;а нажимаем на &#171;create [...]]]></description>
			<content:encoded><![CDATA[<p>Вместо индексов в CouchDB используется map/reduce.<br />
Часто хватает создания одной только map-функции вида<br />
<span id="more-100"></span></p>
<pre class="code">
function(doc) {
  emit(key, value);
}
</pre>
<p>После чего в индексный файл помещаются все пары ключ-значение (из базы данных, к которой привязана map-функция), упорядоченные по ключу.</p>
<p><strong>Пример использования map-функций</strong>.<br />
Для начала надо создать базу данных с документами.<br />
<a href="http://localhost:5984/_utils/index.html">На главной странице Futon&#8217;а</a> нажимаем на &laquo;create database&raquo; &#8211; создаём базу &laquo;modules&raquo;. Дальше в этой базе &laquo;create document&raquo; &#8211; создаём документы:</p>
<pre class="code">
{_id: "compas1_mod0", _rev: "2-4271250713", cid: "compas1", pos: 0, data: "ser_1_0"},
{_id: "compas1_mod1", _rev: "2-2506425121", cid: "compas1", pos: 1, data: "ser_1_1"},
{_id: "compas1_mod2", _rev: "2-2782315297", cid: "compas1", pos: 2, data: "ser_1_2"} и
{_id: "compas2_mod0", _rev: "2-3025733035", cid: "compas2", pos: 0, data: "ser_2_0"}.
</pre>
<p>*при внесении текстового поля его надо брать в кавычки</p>
<p>Затем в селекте справа выбираем &laquo;temporary view&raquo;.<br />
<strong>Создаём первый view</strong>.<br />
В поле &laquo;Map Function:&raquo;:</p>
<pre class="code">
function(doc) {
  emit(doc.cid, doc);
}
</pre>
<p>и сохраняем (&laquo;save as&raquo;) с параметрами<br />
Design Document &#8211; modules_views<br />
View Name &#8211; compas_modules.</p>
<p><strong>Создаём второй view</strong>.<br />
В поле &laquo;Map Function:&raquo;:</p>
<pre class="code">
function(doc) {
  emit([doc.cid, doc.pos], doc);
}
</pre>
<p>и сохраняем (&laquo;save as&raquo;) с параметрами<br />
Design Document &#8211; modules_views<br />
View Name &#8211; one_module.</p>
<p>После чего в браузере можно набрать<br />
http://localhost:5984/modules/_design/modules_views/_view/compas_modules?key=&raquo;compas1&#8243; &#8211; выдаст</p>
<pre class="code">
{"total_rows":4,"offset":0,"rows":[
{"id":"compas1_mod0","key":"compas1","value":{"_id":"compas1_mod0","_rev":"2-4271250713","cid":"compas1","pos":0,"data":"ser_1_0"}},
{"id":"compas1_mod1","key":"compas1","value":{"_id":"compas1_mod1","_rev":"2-2506425121","cid":"compas1","pos":1,"data":"ser_1_1"}},
{"id":"compas1_mod2","key":"compas1","value":{"_id":"compas1_mod2","_rev":"2-2782315297","cid":"compas1","pos":2,"data":"ser_1_2"}}
]}
</pre>
<p>а если набрать<br />
http://localhost:5984/modules/_design/modules/_view/one_module?key=["compas1",0] &#8211; выдаст</p>
<pre class="code">
{"total_rows":4,"offset":0,"rows":[
{"id":"compas1_mod0","key":["compas1",0],"value":{"_id":"compas1_mod0","_rev":"2-4271250713","cid":"compas1","pos":0,"data":"ser_1_0"}}
]}
</pre>
<p>Вообще-то надо обязательно проверять каждый раз, присутствует ли указанное свойство у документа,<br />
т.е. вместо</p>
<pre class="code">
function(doc) {
  emit([doc.cid, doc.pos], doc);
}
</pre>
<p>желательно писать</p>
<pre class="code">
function(doc) {
  if (doc.cid &#038;&#038; doc.pos)
  {
    emit([doc.cid, doc.pos], doc);
  }
}
</pre>
<p>т.к. при регулярных возникновениях ошибок при использовании map-функции (что может случиться, если свойства нет) CouchDB запрещает любое индексирование, чтобы прекратить дальнейшее использование ресурсов.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/08/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-view-%d0%b4%d0%bb%d1%8f-couchdb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHPillow &#8211; php-библиотека для работы с CouchDB</title>
		<link>http://www.job-blog.bullgare.ru/2009/07/phpillow-php-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d0%be%d1%82%d0%b5%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-couchdb/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/07/phpillow-php-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d0%be%d1%82%d0%b5%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-couchdb/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 12:03:37 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[CouchDb]]></category>
		<category><![CDATA[PHPillow]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=97</guid>
		<description><![CDATA[&#171;официальный&#187; сайт объяснение работы с CouchDB через php]]></description>
			<content:encoded><![CDATA[<p><a href="http://arbitracker.org/phpillow.html">&laquo;официальный&raquo; сайт</a></p>
<p><a href="http://wiki.apache.org/couchdb/Getting_started_with_PHP">объяснение работы с CouchDB через php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/07/phpillow-php-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d0%be%d1%82%d0%b5%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-couchdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка CouchDB под Windows</title>
		<link>http://www.job-blog.bullgare.ru/2009/07/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-couchdb-%d0%bf%d0%be%d0%b4-windows/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/07/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-couchdb-%d0%bf%d0%be%d0%b4-windows/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 10:23:20 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[CouchDb]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[установка]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=84</guid>
		<description><![CDATA[Честно пытался поставить всё сам в соответствии с официальной Wiki. Почти получилось. Но так и не смог забороть эксепшн ** exception exit: "I?eei?aiea ia auei caiouaii, iineieueo iii iaei??aeoii iano?iaii. Iiaoi?iay onoaiiaea i?eei?aiey ii?ao ?aoeou aaiio? i?iaeaio." in function couch_util:start_driver/1 in call from couch_server_sup:start_server/1 Пришлось воспользоваться ссылкой на бинарники CouchDB под Windows (полный &#171;пак&#187;) и [...]]]></description>
			<content:encoded><![CDATA[<p>Честно пытался поставить всё сам в соответствии с официальной Wiki.<br />
Почти получилось.<br />
Но так и не смог забороть эксепшн</p>
<pre class="code">
** exception exit: "I?eei?aiea ia auei caiouaii,
iineieueo iii iaei??aeoii iano?iaii.
Iiaoi?iay onoaiiaea i?eei?aiey ii?ao ?aoeou aaiio? i?iaeaio."
     in function  couch_util:start_driver/1
     in call from couch_server_sup:start_server/1
</pre>
<p>Пришлось воспользоваться <a href="http://shockdragon.com/couchdb/couchdb-0.9-windows.zip">ссылкой на бинарники CouchDB под Windows (полный &laquo;пак&raquo;)</a> и вроде заработало.<br />
Но правда надо, чтоб был установлен <a href="http://www.erlang.org/download.html">Erlang</a> (какие-то библиотеки видимо ставит).</p>
<p>После этого осаталось только запустить werl и набрать</p>
<pre class="code">
couch_server:start().
</pre>
<p>Проверить работоспособность можно <a href="http://localhost:5984/_utils/index.html">по ссылке</a>.</p>
<p>Ссылки:<br />
<a href="http://wiki.apache.org/couchdb/Installing_on_Windows">установка CouchDB под Windows</a><br />
(англ.)<br />
<a href="http://mail-archives.apache.org/mod_mbox/couchdb-user/200907.mbox/%3C5cd531ee0907231518w338435f3lcd5f58d05d23d707@mail.gmail.com%3E">и ещё про установку CouchDB под Windows</a><br />
(англ.)<br />
<a href="http://mail-archives.apache.org/mod_mbox/couchdb-dev/200904.mbox/%3C49D7E0DD.9080409@gmail.com%3E">в этом письме</a><br />
есть<br />
<a href="http://shockdragon.com/couchdb/couchdb-0.9-windows.zip">ссылка на бинарники CouchDB под Windows</a><br />
(с эрлангом и всем прочим)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/07/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-couchdb-%d0%bf%d0%be%d0%b4-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CouchDb &#8211; что почитать</title>
		<link>http://www.job-blog.bullgare.ru/2009/07/couchdb-%d1%87%d1%82%d0%be-%d0%bf%d0%be%d1%87%d0%b8%d1%82%d0%b0%d1%82%d1%8c/</link>
		<comments>http://www.job-blog.bullgare.ru/2009/07/couchdb-%d1%87%d1%82%d0%be-%d0%bf%d0%be%d1%87%d0%b8%d1%82%d0%b0%d1%82%d1%8c/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 11:12:57 +0000</pubDate>
		<dc:creator>bullgare</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[CouchDb]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[база данных]]></category>
		<category><![CDATA[бд]]></category>
		<category><![CDATA[Ссылки]]></category>

		<guid isPermaLink="false">http://www.job-blog.bullgare.ru/?p=45</guid>
		<description><![CDATA[CouchDb &#8211; это документоориентированная база данных. Само хранилище — это набор документов, неструктурированных. Точнее, индексированных только по ключу. Плюс к документам есть набор view, то есть срезов, отображающих с помощью функций map/reduce множество документов в список {key, value}, отсортированный, естественно, по ключу (map, как водится, создаёт &#171;срезы&#187;, reduce &#8211; выбирает по ключу). То есть view [...]]]></description>
			<content:encoded><![CDATA[<p>CouchDb &#8211; это <a href="http://en.wikipedia.org/wiki/Document-oriented_database">документоориентированная база данных</a>.<br />
Само хранилище — это набор документов, неструктурированных. Точнее, индексированных только по ключу.<br />
Плюс к документам есть набор <a href="http://en.wikipedia.org/wiki/View_%28database%29">view</a>, то есть срезов, отображающих с помощью функций <a href="http://en.wikipedia.org/wiki/MapReduce">map/reduce</a> множество документов в список {key, value}, отсортированный, естественно, по ключу (map, как водится, создаёт &laquo;срезы&raquo;, reduce &#8211; выбирает по ключу).<br />
То есть view это индекс такой по сути (ключ тут, кстати, может быть довольно сложный, не просто цифра или строчка).<br />
При этом и построение этих срезов, и выборка из них легко масштабируются и распределяются по кластеру.</p>
<p><a href="http://books.couchdb.org/relax/">Официальная книга</a> (англ.)<br />
<a href="http://en.wikipedia.org/wiki/CouchDB">http://en.wikipedia.org/wiki/CouchDB</a> (англ.) &#8211; очень коротенько<br />
<a href="http://habrahabr.ru/blogs/webdev/25841/">http://habrahabr.ru/blogs/webdev/25841/</a> &#8211; &laquo;тизер&raquo;<br />
<a href="http://www.cmlenz.net/archives/2007/10/couchdb-joins">http://www.cmlenz.net/archives/2007/10/couchdb-joins</a> (англ.) &#8211; примеры <a href="http://labs.mudynamics.com/2009/04/03/interactive-couchdb/">http://labs.mudynamics.com/2009/04/03/interactive-couchdb/</a> (англ.) &#8211; показывает, какие map/reduce  к какой выборке приводят (примеры)<br />
<a href="http://wiki.apache.org/couchdb/">http://wiki.apache.org/couchdb/</a> (англ.) &#8211; официальная wiki для CouchDB<br />
<a href="http://wiki.apache.org/couchdb/Installing_on_Windows">установка CouchDB под Windows</a> (англ.)<br />
<a href="http://mail-archives.apache.org/mod_mbox/couchdb-user/200907.mbox/%3C5cd531ee0907231518w338435f3lcd5f58d05d23d707@mail.gmail.com%3E">и ещё про установку CouchDB под Windows</a> (англ.)<br />
<a href="http://mail-archives.apache.org/mod_mbox/couchdb-dev/200904.mbox/%3C49D7E0DD.9080409@gmail.com%3E">в этом письме</a> есть <a href="http://shockdragon.com/couchdb/couchdb-0.9-windows.zip">ссылка на бинарники CouchDB под Windows</a> (с эрлангом и всем прочим)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.job-blog.bullgare.ru/2009/07/couchdb-%d1%87%d1%82%d0%be-%d0%bf%d0%be%d1%87%d0%b8%d1%82%d0%b0%d1%82%d1%8c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

