Reduza o tempo de indexação de visualização para couchdb

Quando comecei a usar o couchdb, foi ótimo poder usar JS para gerar as visualizações indexadas para nosso banco de dados. O nosso Db cresceu muito, e a reindexação após uma grande atualização estava causando tempos limite do lado do aplicativo. Então, tentei isso: mude as visualizações para Erlang nativo.

JS / Coffee View:

(d)->
emit d
.type.toLowerCase(), d._id if d.type

Esta visualização em um banco de dados de 11845 documentos estava levando mais de 33 segundos.

Erlang transferido levará 3 ~ segundos.

fun({Doc}) ->
Id = proplists:get_value(<<"_id">>, Doc, null),
NameSpace = binary:bin_to_list(Id),
case re:split(NameSpace, "[/]") of
[_] -> null;
[T, BID] -> Emit(T, BID)
end
end.

Para fazer isso, sigo o wiki couchdb http://wiki.apache.org/couchdb/EnableErlangViews

Que em resumo é.

Pare o couchdb, mude sua configuração para adicionar:

[native_query_servers]
erlang
= {couch_native_process, start_link, []}

Reinicie o couchdb. Verifique a visualização temporária no Futon, no erlang estará nas opções suspensas de idiomas.

Agora meu TODo é configurar o sofá para poder usar a linguagem Elixir.