Скорость, CouchDB просмотров и альтернативы - PullRequest
3 голосов
/ 13 августа 2010

У меня большой набор данных, который я хочу запросить. Запрос не изменяется, но основные данные изменяются. Из того, что я прочитал, я мог построить «представление» и запросить его. Кроме того, я прочитал, что Couch DB знает, как обновить представление при изменении данных, поэтому я предполагаю, что запрос к представлению снова будет быстрым.

Мои вопросы: правильно ли я понимаю взгляды CounchDB? Мне не нужны никакие другие функции CouchDB, мне даже не нужен SQL, все, что мне нужно, это быстрый запрос по изменению данных. Могу ли я использовать что-то еще? Если бы я использовал, скажем, старый добрый MySQL, он действительно был бы медленнее, чем CouchDB (читай: в приведенном выше сценарии, как приблизительно будут работать различные БД?).

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

Ваша оценка полностью верна. Наслаждайтесь!

Единственный прием производительности, о котором стоит упомянуть, это то, что вы можете увидеть повышение, если вы emit() получите все данные, необходимые вам из представления, и никогда не будете использовать функцию ?include_docs, потому что include_docs заставляет CouchDB вернуться в основную базу и получить исходный документ, который вызвал эту строку представления. Другими словами, вы можете emit() все, что вам нужно, в индекс представления (больше места, но быстрее), или вы можете использовать ссылку обратно на исходный документ (меньше места, но медленнее.)

1 голос
/ 13 августа 2010

Не думаю, что кто-либо может ответить на ваш вопрос, учитывая предоставленную вами информацию.

Индексы в реляционной базе данных аналогичны представлениям CouchDB. В обоих случаях они хранят предварительно отсортированный экземпляр данных, а база данных синхронизирует этот экземпляр с каноническими данными. Оба типа баз данных прозрачно используют индекс / представление для ускорения последующих запросов в форме, для которой был разработан индекс / представление.

Без индексов / представлений запросы должны сканировать всю коллекцию n записей данных, и они выполняются за O(n) время. Когда запрос получает выгоду от индексов / представлений, он выполняется за O(log n) раз.

Но это очень широко говорит о кривой производительности по отношению к объему данных. Данная база данных может иметь такую ​​быструю производительность в определенных случаях, что она превосходит другой продукт, несмотря ни на что. Трудно сделать обобщение, что бренд X всегда быстрее, чем бренд Y. Единственный способ убедиться в конкретном случае - это попробовать его в обеих базах данных и измерить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...