Como você agendar Índice Atualizações em CouchDB
Pergunta
Tanto quanto eu entendo, índices CouchDB são atualizados quando uma visão é consultado. Assumindo que há mais leituras do que escreve, não é tão ruim para o dimensionamento? Como eu iria configurar CouchDB a índices de atualização nas gravações, ou melhor ainda, em uma programação?
Solução
CouchDB faz vistas Regenerar em atualização, mas apenas sobre o que mudou desde o último acesso de leitura para a vista. Assumindo que o seu volume de leitura supera muito o seu volume de gravação, isso não deve ser um problema.
Quando você está mudando um grande número de documentos ao mesmo tempo isso poderia levar à possibilidade dos primeiros pedidos de leitura que tomam uma quantidade considerável de tempo. Para aliviar este um foram sugeridas algumas possibilidades diferentes. A maioria depende de registrar com notificações de atualização do CouchDB e provocando lê automaticamente.
Um exemplo de script para fazer exatamente que está disponível no wiki do CouchDB em [1].
[1] http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate
Outras dicas
a) "Escala" é tal um termo sobrecarregado. O "tipo" de escala que você está se referindo? (De qualquer forma, eu não posso ver como isso afeta você negativamente).
b) Atualização sobre as gravações: Apenas consultar a sua visão depois de uma gravação. Note-se que a adição de um monte de dados para o índice é mais recurso amigável (que não é específico para CouchDB). Então você pode querer desencadear a sua visão a cada N escreve.
c) Programada:. Configurar um cronjob que consulta sua visão a cada M minutos
d) Aguarde CouchDB a evoluir para lhe fornecer a infra-estrutura que permite configurá-lo com um parâmetro de configuração.
e) (MELHOR OPÇÃO). Sujar as mãos e nos ajuda a polir CouchDB! As contribuições são muito apreciados.
Você não pode e também, por que você iria querer isso?
Pense nisso assim:
- Quando você importar dados para o MySQL você pode transformar de indizes porque é mais caro para atualizar o índice para cada linha inserir, que é para atualizar o índice para 100 gravações (ou no entanto muitas linhas importadas) em uma única corrida .
- É por isso que CouchDB atualiza o índice de leitura porque é menos caro para integrar essas 100 alterações ao mesmo tempo, então cada mudança quando ele é escrito.
Esta é uma das vantagens do CouchDB! :) Eu não estou dizendo que esta é uma característica CouchDB somente, mas é apenas inteligente para fazer isso em leitura.
Uma coisa que você pode fazer é ler com update = false, que é um sujo ler e pode não retornar o que você espera. Se você sempre faz isso, você poderia marcar uma "regular" ler através de um cron e atualizar seu índice com isso. Eu só não acho que faz sentido.