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.