Да, похоже, вы пробовали CouchDB не в её области применения.<div><br></div><div>CouchDB используется для хранения описаний узлов сети, RabbitMQ - как высокопроизводительный движок очередей.<br><br></div><div>Оба продукта из категории &quot;поставил и забыл&quot;.</div>
<div><br><div class="gmail_quote">29 сентября 2010 г. 19:55 пользователь Alexander Lourier <span dir="ltr">&lt;<a href="mailto:aml@rulezz.ru">aml@rulezz.ru</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Wednesday 29 September 2010 19:32:41 Akzhan Abdulin wrote:<br>
<br>
&gt; Я бы рекомендовал ознакомится именно с последней версией CouchDB и именно<br>
&gt; вживую.<br>
<br>
</div>Лично знакомился с 0.11, она мне понравилась по задумке, но по<br>
проиводительности ни в какие ворота не влазила. Последнюю как-нибудь гляну,<br>
спасибо.<br>
<div class="im"><br>
&gt; Да, так называемые Views используют JavaScript, но они вычисляются сразу<br>
&gt; при попадании документов базу. То есть на скорость выборок это не влияет.<br>
<br>
</div>Да это понятно. Но вообще выборки и так обычно хорошо кешируются, и узким<br>
местом базы остаются как раз вставки.<br>
<div class="im"><br>
&gt; У нас используются CouchDB и RabbitMQ, к обоим продуктам нареканий пока<br>
&gt; нет.<br>
<br>
</div>А что за задача у вас?<br>
<div><div></div><div class="h5"><br>
&gt; 29 сентября 2010 г. 19:12 пользователь Alexander Lourier<br>
&lt;<a href="mailto:aml@rulezz.ru">aml@rulezz.ru</a>&gt;написал:<br>
&gt; &gt; On Wednesday 29 September 2010 17:53:54 Oleg Kostyuk wrote:<br>
&gt; &gt; &gt; &lt;<a href="mailto:aml@rulezz.ru">aml@rulezz.ru</a>&gt; написал:<br>
&gt; &gt; &gt; &gt; On Wednesday 29 September 2010 17:20:18 Oleg Kostyuk wrote:<br>
&gt; &gt; &gt; &gt;&gt; CouchDB, не?<br>
&gt; &gt; &gt; &gt;&gt; AnyEvent::CouchDB или KiokuDB (через KiokuDB::Backend::CouchDB)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; CouchDB - великий тормоз. Подходит только для академических задач.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Благородного дона конечно же не затруднит обосновать своё заявление?...<br>
&gt; &gt;<br>
&gt; &gt; Конечно, уважаемый сэр :)<br>
&gt; &gt;<br>
&gt; &gt; CouchDB даёт очень большую нагрузку на процессор, поскольку вычисление<br>
&gt; &gt; индексов (исполнение кода на JavaScript) осуществляется на сервере. Там,<br>
&gt; &gt; где<br>
&gt; &gt; SQL-базы обходятся вычислением простейших индексов (по одной или<br>
&gt; &gt; нескольким колонкам), CouchDB выполняет скриптовую программу. Вычисление<br>
&gt; &gt; индексов совсем<br>
&gt; &gt; необязательно делать на сервере базы данных - оно вполне себе выносится<br>
&gt; &gt; на бэкенды, которые горизонтально масштабировать очень просто. Впрочем,<br>
&gt; &gt; будем анализировать то, что есть. Посмотрим на скорость последовательного<br>
&gt; &gt; исполнения запросов на CouchDB. Бенчмарков полно в сети. С ходу нагуглил:<br>
&gt; &gt;<br>
&gt; &gt; <a href="http://rwsleep.blogspot.com/2010/02/tokyotyrant-vs-mongodb-vs-couchdb.htm" target="_blank">http://rwsleep.blogspot.com/2010/02/tokyotyrant-vs-mongodb-vs-couchdb.htm</a><br>
&gt; &gt;l<br>
&gt; &gt;<br>
&gt; &gt; <a href="http://metalelf0dev.blogspot.com/2008/09/mysql-couchdb-performance-compar" target="_blank">http://metalelf0dev.blogspot.com/2008/09/mysql-couchdb-performance-compar</a><br>
&gt; &gt;ison.html<br>
&gt; &gt;<br>
&gt; &gt; <a href="http://www.snailinaturtleneck.com/blog/2009/06/29/couchdb-vs-mongodb-benc" target="_blank">http://www.snailinaturtleneck.com/blog/2009/06/29/couchdb-vs-mongodb-benc</a><br>
&gt; &gt;hmark/<br>
&gt; &gt;<br>
&gt; &gt; <a href="http://www.codeweblog.com/couchdb-vs-mysql-insert-performance-test-data-o" target="_blank">http://www.codeweblog.com/couchdb-vs-mysql-insert-performance-test-data-o</a><br>
&gt; &gt;f-the-speed-test/<br>
&gt; &gt;<br>
&gt; &gt; CouchDB всегда отстаёт. Однако, последовательное исполнение запросов - не<br>
&gt; &gt; самый ценный показатель базы. Всегда есть несколько процессорных ядер и,<br>
&gt; &gt; наконец, несколько серверов, которые позволят исполнять несколько<br>
&gt; &gt; запросов одновременно, и если не будет хватать одного сервера, то можно<br>
&gt; &gt; будет добавить<br>
&gt; &gt; других и обеспечить такую пропускную способность, какую захотим.<br>
&gt; &gt;<br>
&gt; &gt; Однако, и тут у CouchDB проблемы. Встроенных средств масштабирования у<br>
&gt; &gt; неё нет<br>
&gt; &gt; (хотя тут могу ошибаться - erlang-программы умеют работать поверх<br>
&gt; &gt; кластера, но поскольку у меня такого опыта нет, то в таких условиях не<br>
&gt; &gt; тестировал). Зато есть внешняя прокси, которая позволяет получить запрос<br>
&gt; &gt; от<br>
&gt; &gt; пользователя,<br>
&gt; &gt; разослать его на нужные узлы кластера, а потом собрать (reduce) результат<br>
&gt; &gt; обратно. И снова эта операция требует исполнения javascript-кода, и эти<br>
&gt; &gt; прокси опять же нагружают процессор - нужно ставить отдельные серверы под<br>
&gt; &gt; прокси и т.д.<br>
&gt; &gt;<br>
&gt; &gt; База данных - это узкое место большинства проектов, его очень сложно<br>
&gt; &gt; масштабировать, и все операции, которые можно вынести за пределы сервера<br>
&gt; &gt; с базой данных, должны быть вынесены. С CouchDB это явно не так.<br>
&gt; &gt;<br>
&gt; &gt; Как-то так.<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; Если сможете запустить thrift over AnyEvent, то есть отличная СУБД -<br>
&gt; &gt; &gt; &gt; Cassandra.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; А расскажите, как вам подходит key/value? Я для себя сделал вывод,<br>
&gt; &gt; &gt; &gt;&gt; что key/value - весьма специфическая штука. И для работы с ней надо<br>
&gt; &gt; &gt; &gt;&gt; пересмотреть устоявшиеся (реляционные) принципы. Конечно, бывает<br>
&gt; &gt; &gt; &gt;&gt; так, что просто задача не подходящая для key/value... но если<br>
&gt; &gt; &gt; &gt;&gt; подходящая - надо &quot;выворачивать&quot; мозг.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Key/value - специфическая модель, зато в правильную сторону мозги<br>
&gt; &gt; &gt; &gt; разворачивает. Всё, что сложно реализовать на key/value, наверняка<br>
&gt; &gt;<br>
&gt; &gt; будет<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; тормозить на SQL. А если уж реализуешь на key/value, да и минимальным<br>
&gt; &gt; &gt; &gt; количеством запросов, то это будет и работать быстро.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Это всё круто, но слегка не в тему - ведь это не рассказ &quot;как вы<br>
&gt; &gt; &gt; используете key/value&quot;. Интересует именно реальное применение, а-ля<br>
&gt; &gt; &gt; &quot;вот тут можно было вот так, реляционно (+детали), но я подумал и<br>
&gt; &gt; &gt; сделал вот так, на key/value (+детали), потому что ... (+ ещё<br>
&gt; &gt; &gt; детали)&quot;. Есть кому поделиться таким опытом?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; 29 сентября 2010 г. 16:04 пользователь Ruslan Zakirov<br>
&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; &lt;<a href="mailto:ruz@bestpractical.com">ruz@bestpractical.com</a>&gt; написал:<br>
&gt; &gt; &gt; &gt;&gt; &gt; 2010/9/29 Vany Serezhkin &lt;<a href="mailto:ivan@serezhkin.com">ivan@serezhkin.com</a>&gt;:<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt; On 09/29/2010 04:58 PM, Ruslan Zakirov wrote:<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;&gt; Решил написать проект на AnyEvent, но нуна БД. Чего выбрать не<br>
&gt; &gt;<br>
&gt; &gt; знаю.<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;&gt; Можно Pg взять и попробовать его async интерфейс, но как-то не<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;&gt; хочется по таймеру чекать запросы.<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;&gt; Вполне подойдет key/value storage, но тут сплошной пробел в<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;&gt; опыте. Какие есть у меня опции?<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt; AnyMongo.<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt;&gt; Только очень подумай в начале.<br>
&gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt;&gt; &gt; О чем подумать? Я как раз и пытаюсь подумать, но о чем думать не<br>
&gt; &gt; &gt; &gt;&gt; &gt; уверен.<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Moscow.pm mailing list<br>
&gt; &gt; <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br>
<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br></div>