--- Em zope-pt@yahoogrupos.com.br, "Fabiano Weimar dos Santos"
<[EMAIL PROTECTED]> escreveu
>
> 2008/3/4 vinicius_marco <[EMAIL PROTECTED]>:
> >
> >
> >
> >
> >
> >
> > Pessoal,
> >
(...)
> 
> Você já estimou o tamanho de seu ZODB? Você terá memória suficiente
para ele?
> 
> Calculo: 500mil x 10 kb cada objeto = 4.7 GB
> 
> Agora, se você armazenar fotos associadas a noticias e seu objeto
> subir para apenas 200 kb (uma foto JPEG em dois tamanhos mais o
> conteúdo em si) dariam cerca de 95 GB. Como você precisa de 2x esse
> tamanho em espaço em disco, precisarias de uns 190GB (fora espaço de
> backup). Outra coisa interessante para prever é o consumo de memória
> por instancia. Se você considerar que precisa de uns 10% do tamanho do
> ZODB por instancia de Zope, precisarias de 500MB a 9,5GB de RAM por
> instancia (e isso se sua aplicação for BEM otimizada).


São 4GB e esta carga não possui fotos. Vamos considerar uns 20Kb por
notícia. 


> 
> Não sei se você percebeu, mas para um volume de informações como esse,
> eu acho que vale a pena tomar cuidado e adotar soluções de SGDB
> relacional e indexação externa (estilo XAPIAN)/Lucene).


Pois.. mas o ZODB não é otimizado para gerenciar e buscar conteúdo?
Não é esse o propósito? Vou ter que apelar para o relacional por causa
de volume?


> 
> >  2. Posso colocar todos os registros em uma única pasta (LargeFolder
> >  - BtreeFolder)? Tenho que separar por algum critério (notícias de
2005
> >  numa pasta chamada not_2005, not_2006, not_2007, por exemplo)? Sendo
> >  que cada ano tem mais de 200.000 registros..
> 
> Poder você pode, mas quando for listar o conteúdo de uma pasta, o
> resultado será um pouco exagerado. Talvez criar uma pasta por dia seja
> mais adequado.

Uma pasta por dia? Certo, mas aí vem uma dúvida. Como otimizo uma
busca que envolva 10 dias de notícias? Dá para informar mais de um
path para o portal_catalog numa única consulta? Se eu não informar o
path a pesquisa será feita em todos os milhares de registros sem
necessidade. 

> 
> >
> >  3. Instalamos o TextIndexNG3 por considerá-lo mais robusto que o
> >  ZCTextIndex. Contudo estamos tendo problemas quando o usuário coloca
> >  caracteres não convencionais no campo de busca. Ex.: 1. ,
(vírgula) 2.
> >  Abertura de parenteses sem fechamento (parece que ele tenta
> >  interpretar a consulta), etc. Vale à pena? Volto patra o ZCTextIndex?
> >
> 
> Para um volume muito grande de informações eu sempre achei o
TextIndexNG lento.

Beleza. Vamos voltar para o ZCTextIndex. 

> 
> O seu problema com virgulas e parenteses é uma questão de
> parametrização no splitter (da uma investigada no código :-).


ok!!

> 
> >  4. A importação de cada registro da notícia que vem do banco SQL é
> >  feita via um ExternalMethod que lê um arquivo texto do disco e insere
> >  no ZODB via invokeFactory. Quando executamos a importação de um
> >  arquivo com 3000 registros o comportamento é satisfatório até os
> >  primeiros 100 registros (menos de um segundo por registro).. a partir
> >  daí há uma degradação de performance muito grande, levando a inserção
> >  durar mais de 3 segundos por registro. Existe algum macete para este
> >  tipo de operação? Já tentamos realizar o commit a cada 50 registros
> >  inseridos para aliviar o backlog do ZODB e tivemos um ganho rezoável.
> >  Mas acima de 5000 registros por arquivo não vai nem com reza brava.
> >
> 
> Talvez pq o ZODB começa a crescer e exigir um consumo de memória além
> dos recursos disponíveis/desejáveis.
> 
> Durante a importação você chegou a monitorar a memória?

Não.. Mas supondo que seja isso. Não há solução? Não dá para fazer uma
leitura bufferizada e ir persistindo em disco imediatamente? O commit
feito em nosso código melhorou a performance, mas não foi o suficiente. 


> 
> >  É isso aí pessoal.
> >
> >  Toda dica é bem vinda.
> >
> >  []'s
> >
> >  Marcov,
> >
> >  


> 
> -- 
> Fabiano Weimar dos Santos (xiru)
> Weimar Consultoria

Valeu Fabiano!!!!!!!!


> 
> Hospedagem Plone, Zope e Python
> http://www.pytown.com
>


Responder a