Configuração escalável do CouchDB

6

Eu quero migrar um aplicativo existente com aprox. 10 milhões de registros armazenados em um banco de dados relacional para o CouchDB. O que mais adoro no CouchDB é a replicação fácil e visualizações rápidas em cache. O que não gosto são as velocidades de criação de gravação e visualização, que serão muito lentas com 10 milhões de documentos.

Uma ideia que tenho para contornar esses possíveis afunilamentos é ter três instâncias do CouchDB:

  1. Write only instance : esta é a instância mestre. Nosso único ponto de verdade. Apenas atualizações, inserções e exclusões permitidas aqui. Não há leituras nem visualizações nesta instância.
  2. Visualizar apenas a instância de criação : usada apenas para criar e armazenar em cache as visualizações. Não há leituras ou gravações nesta instância.
  3. Somente instância de leitura : acesso de leitura por meio de visualizações replicadas.

A instância 2 é replicada da instância 1. Como não haverá aplicativos que usam a instância 2, é possível criar novas visualizações sem afetar os aplicativos de produção.

A instância 3 é replicada da instância 2, que inclui todas as visualizações em cache.

Esta é uma solução viável?

    
por jensendarren 04.08.2009 / 11:56

2 respostas

1

Tenho quase certeza de que o CouchDB não replica os caches de exibição (afinal, eles são caches), então você teria que replicar os out-of-band (o que não é o caso, IMO).

O CouchDB provavelmente não é tão bom para cargas pesadas de gravação. Se a sua carga é pesada, afinal, eu acho que você pode apenas chamar as visualizações após cada inserção / atualização, para que as visualizações sejam sempre totalmente protegidas por cache.

Aviso: Estou usando o CouchDB em alguns sites, mas nem de longe o tamanho que você está falando.

    
por 18.08.2009 / 09:03
1

Eu nunca rodei o CouchDB, apenas o pesquisei, então não leve minhas sugestões aqui como verdadeiras sem verificação ...

Primeiramente, eu recomendo a leitura da série de John P. Wood sobre suas experiências com o uso de produção do CouchDB: link

Em seguida, quando você diz instâncias, isso é um servidor físico com uma única instância do CouchDB? Se estamos falando apenas de 3 servidores, não acho que dividir a capacidade atribuindo funções diferentes seja o ideal. Minha intuição seria manter todos os 3 servidores idênticos e carregados com o conjunto de dados completo, para permitir consultas de leitura paralelas ...?

Se forem apenas 3 servidores, considerarei o RDBMS tradicional e uma configuração de replicação tradicional. Duvido que o CouchDB faça essa grande diferença para você com essa quantidade relativamente pequena de poder computacional?

Outra coisa, dê uma boa olhada no HBase, construa em cima do Hadoop. A estrutura do Hadoop está obtendo um excelente patrocínio corporativo agora, com o Yahoo e o Facebook sendo grandes usuários. Diante disso, o HBase pode se desenvolver mais rápido e ser mais bem testado do que alguns concorrentes.

HTH

    
por 05.08.2009 / 23:45