Opa,

Rodrigo Castardo wrote:
> 
>
>  Fala Rafael =)
>
>  2009/8/11 Rafael Monnerat <rmonner...@gmail.com>:
>  >
>  >
>  > E ai Rodrigo,
>  >
>  > Rodrigo Castardo wrote:
>  >>
>  >>
>  >> Fala Rafael,
>  >>
>  >> 2009/8/6 Rafael Monnerat <rmonner...@gmail.com>:
>  >>
>  >> <corta> ...
>  >>
>  >> > Eu acredito que o ZODB, nao tem problemas com armazenamento mesmo pra
>  >> > aplicações financeiras prova disso é o [1], basta só planejar
>  >> > direitinho, criar mounting points... etc etc.
>  >>
>  >> Claro, eu concordo contigo na questão tecnológica pura. Porém o RP5
>  >> tem inumeras funcionalidades interessantes que não existem por padrão,
>  >> este é um ponto.
>  >>
>  >> Outro ponto é que, embora a essência da pergunta seja técnica, estamos
>  >> falando sob uma ótica um pouco mais abrangente, uma visão mais
>  >> sócio-técnica. O que eu coloquei não foi que o ZODB não serve para
>  >> aplicações financeiras, de forma alguma, ele pode muito bem ser
>  >> utilizado, porém com uma certa expertise que imagino que o autor da
>  >> pergunta ainda não tem.
>  >>
>  >> Sem contar o esforco de integracao e a fase de convencimento de que o
>  >> banco escolhidos eh algo novo, diferente dos outros bancos (que
>  >> normalmente tem investimentos muito altos e confiabilidade consumada),
>  >> entrar nesse merito em grandes corporacoes eh complicado.
>  >>
>  >> Mas como vc bem disse, tecnicamente eh possível sim.
>  >
>  > Bem, meu ponto de vista era puramente técnico (tecnicamente quase tudo é
>  > possível hehe). E também acho que muitas vezes as pessoas sao
>  > desestimuladas a acreditar no ZODB, por vários motivos. Eu só dei um
>  > exemplo de caso de uso, onde o ZODB possui muitos milhares de documentos
>  > (ou objetos) em uma aplicação financeira.
>
>  "Tecnicamente td eh possivel" Essa frase eh meio emblematica =)
>
>  Claro, acho otimo teu exemplo ... o case de vcs fala sozinho, e eh bem
>  conhecido ... ateh conversei com um developer de vcs no FISL, ele
>  quase sempre aparece junto com o Claudio no INPI, mas sempre esqueco o
>  nome dele =)
>

Bem, era eu :)


>  >
>  >> > O grande problema é a buscar dentro de uma base de dados > 10 
milhoes de
>  >> > objetos por exemplo, ou quando você que fazer uma operaçao que 
precisa
>  >> > de muitos objetos (exemplo calcular a movimentação financeira do 
ultimo
>  >> > ano). Pra resolver esse "pequeno" problema o ERP5 substituiu o 
ZCatalog
>  >> > pelo ZSQLCatalog a anos atrás, mas o BD relacional é usado apenas pra
>  >> > catalogação, toda a persistência e armazenamento dos dados ainda
>  >> > permanecem no ZODB.
>  >>
>  >> Mais aqui vc jah nao estah falando de storage, e sim de outras
>  > estrategias.
>  >
>  > Bem, esta de certa forma relacionado, porque a quantidade de objetos
>  > influencia na busca dele. Mas sim, isso nao é necessariamente
>  > diretamente ao storage.
>
>  Vdd, no caso de aplicacoes Zope eh diferente o modo como vc pensa, as
>  coisas se unem, aplicacao+storage+servidor de aplicacao+etc ... e
>  poucas coisas sao eficientes qdo sao mto pontuais.
>
>  >>
>  >> Estes tipos de estrategia sao bem interessantes e tem outras coisas q
>  >> poderiam ser elencadas pra isso, por exemplo:
>  >
>  > Eu vou dar meus exemplos tbm : )
>
>  Como se diz, so awesome =)
>
>  >>
>  >> 1- Usar memcached pra segurar em cache as operacoes que tem baixa
>  >> tempestividade ou grande carga de processamento
>  >
>  > Esse é um ponto interessante, no erp5 a gente tem suporte nativo ao
>  > memcache e recentemente foi adicionado suporte ao Flare [1]. Estamos
>  > mudando os caches persistentes (que usavam PersistenseMapping por algum
>  > motivo) para usar o Flare. Isso reduz as modificações no ZODB e evita
>  > que o cache seja perdido em um restart.
>
>  Essa eh nova, bem interessante.
>
>  Nossa API de memcached eh software livre e pode ser baixada em:
>
>  http://bitbucket.org/liberiun/liberiunportalcaching/
>
>  >> 2- Separar o catalog, deixar ele fora ... usando o Lucene (um solr da
>  > vida)
>  >
>  > Como a gente usa MySQL , temos support nativo o Senna[2] (segundo a
>  > lenda é mais rapido que o Lucene mas isso gera muitas controvérsias 
hehehe)
>
>  Essa lenda eu desconhecia, conhecia apenas a lenda do Lucene =)
>
>  >> 3- Usar Deliverance + tema vazio no plone, pra poupar o plone de
>  >> processar um tema (q eh bem pesado) e poder processar mais requisicoes
>  >
>  > Eu nao conheço deliverance direito, preciso me atualizar : )
>
>  Basicamente tu tem um cara WSGI que lida com o tema, vc tira essa
>  carga de dentro do Plone (que soa a camisa pra montar esse
>  quebra-cabeca).
>
>  Esse cara WSGI tem o tema morto (XHTML+CSS puros, sem logica) e regras
>  (troque o id x do plone pelo y do tema morto), qdo o acesso (user ->
>  deliv -> zope) chega ao portal normalmente, na volta ele sofre a
>  aplicacao das regras e faz a magica!
>
>  Nosso portal usa Deliverance, e roda em uma maquina que tem poucos
>  recursos (sao 512 de RAM) e nao estamos usando praticamente nenhum
>  cache, e ele tem uma velocidade mto boa.
>

Interessate.

>  >>
>  >> E por ai vai, mas a duvida era de storage em si, claro q eh bom levar
>  >> isso td em consideração tbm ...
>  >
>  > Bem, eu nao acho que storage por si só seja um problema, o problema é o
>  > como você um arquivo (ou mais) de 100 GB depois : ), acho que o sistema
>  > tem muitos outros gargalos antes do tamanho do Storage ser um problema.
>
>  Concordo, a equacao eh mais complexa e o storage eh uma parte dela.
>
>  Acho importante tbm citar que estas evolucoes todas q estou trocando
>  com o Rafael sao para grandes projetos (leia-se: gde
>  sites/portais/intranets/sistemas aliados a um grande assedio). Se vc
>  tem um projeto, ou um grande projeto, que nao tem mtos acessos vc pode
>  usar o Plone padrao pra atender a mtos casos ... e em caso de
>  problemas, coisas mais simples podem te garantir performance.
>
>  No caso estas praticas nos utilizamos para cases com 70 milhoes de
>  hits/mes. Temos um caso que tem 140G de transferencia por dia, e
>  crescendo. O Rafael deve ter numeros de transacoes absurdos,
>  compartilha com a gente Rafael?
>

Transações de que ZODB ou financeiras?

A aplicação gerencia entre outras coisas, controle monetário. Cada 
Cédula produzida pelo Banco tem um objecto correspondente no ERP5 e com 
tem um workflow.

Eu nao sei os números exatos porque eu nao trabalhei diretamente no 
projeto. Mas o ERP5 usa 46 mounting points em um único ZEO, 32 Zopes 
como clientes e 1 mysql para o catalog. Cada modulo (cada modulo é um 
folder) tem alguns milhões objetos, acredite eu nunca perguntei quanto 
da no total, mas já deve ter mais de 20 milhões a algum tempo.

Se somarmos o ZODB dá aproximadamente 64 GB. Que eu até acho pouco hoje 
em dia...

Nós acreditamos que somos capazes de implantar o ERP5 em projetos que 
cheguem a 1 000 000 000 (um bilhão) de objetos, o difícil é encontrar 
alguém que precise de tantos objetos assim. e que esteja interessado em 
bancar. : )

[]'s

Rafael


>  Valeu Rafael, um abraco!
>
>  > [1] http://labs.gree.jp/Top/OpenSource/Flare-en.html
>  > [2] http://qwik.jp/senna/
>  >
>  >> Abracos
>  >>
>  >> > [1] http://www.erp5.com/news-central.bank
>  >> >
>  >> > []'s
>  >> >
>  >> > Rafael
>  >> >
>  >> >>
>  >> >> Em casos onde mesmo a informação de conteúdo de um portal é grande,
>  >> >> você tem artifícios como o FSS[1] e o Catalog mencionado pelo 
Marinho.
>  >> >> Como no caso do pessoal da EBC (antiga RADIOBRAS), eles tem as
>  >> >> notícias todas em ZODB (e estamos falando de uns 10G pelo menos) 
e os
>  >> >> infográficos (imagens em alta, vídeos, flash, etc...) estão todos em
>  >> >> File System (na época somavam 40G).
>  >> >>
>  >> >> Com os binários em FS você pode trabalhar mais tranquilo com o 
ZODB. É
>  >> >> a mesma coisa que fazemos com streaming por exemplo, os vídeos estão
>  >> >> em FS e o conteúdo todo em ZODB.
>  >> >>
>  >> >> Abraços.
>  >> >>
>  >> >> [1] http://plone.org/products/filesystemstorage
>  >> >> <http://plone.org/products/filesystemstorage>
>  >> >>
>  >> >> 2009/7/31 Luciano Pacheco <lucm...@gmail.com
>  >> >> <mailto:lucmult%40gmail.com>>:
>  >> >> >
>  >> >> >
>  >> >> > 2009/7/31 Alexandre Marinho <lyrale...@gmail.com
>  >> >> <mailto:lyralemos%40gmail.com>>
>  >> >> >>
>  >> >> >>
>  >> >> >> Acredito que a grande quantidade de dados não seja uma 
limitação do
>  >> >> ZODB,
>  >> >> >> usando corretamente o catalogo e so "acordando" os objetos
>  > quando for
>  >> >> >> estritamente necessário... o único problema será o tamanho do
>  >> >> Data.fs que
>  >> >> >> realmente pode chegar em gigas.
>  >> >> >
>  >> >> > Concordo que podemos ter o ZODB mesmo em casos com muitos 
dados, as
>  >> >> vezes
>  >> >> > temos que tomar alguns cuidados, mas toda aplicação grande 
precisa de
>  >> >> > cuidados, mesmo em base relacional.
>  >> >> >
>  >> >> >>
>  >> >> >> Á unica situação em que usei uma base relacional foi quando
>  > precisava
>  >> >> >> fazer soma e agrupamento de valores. Ai era mais fácil 
utilizar SQL
>  >> >> no lugar
>  >> >> >> do ZODB.
>  >> >> >
>  >> >> > Eu fiz um produto que pode-se utilizar para fazer o agrupamento,
>  > ai não
>  >> >> > precisei usar SQL \o/
>  >> >> >
>  >> >> > http://pypi.python.org/pypi/collective.pivottable
>  >> >> <http://pypi.python.org/pypi/collective.pivottable>
>  >> >> >
>  >> >> > Sobre utilizar o SQL, eu acho tão simples e eficiente utilizar o
>  >> >> ZODB que
>  >> >> > prefiro ficar com ele, eu usava muito SQL em outros tipos de
>  >> >> aplicação, mas
>  >> >> > é tão bom viver sem ele. :-)
>  >> >> >
>  >> >> > Até mais,
>  >> >> > --
>  >> >> > Luciano Pacheco
>  >> >> > Simples Consultoria
>  >> >> > www.simplesconsultoria.com.br
>  >> >> >
>  >> >> >
>  >> >>
>  >> >> --
>  >> >>
>  >> >> --
>  >> >> Rodrigo Castardo
>  >> >> Liberiun
>  >> >> COO
>  >> >> rodrigocasta...@liberiun.com <mailto:rodrigocastardo%40liberiun.com>
>  >> >> +55 61 9123-7847
>  >> >> +55 61 3468-2662
>  >> >>
>  >> >>
>  >> >
>  >> >
>  >>
>  >> --
>  >>
>  >> --
>  >> Rodrigo Castardo
>  >> Liberiun
>  >> COO
>  >> rodrigocasta...@liberiun.com
>  >> +55 61 9123-7847
>  >> +55 61 3468-2662
>  >>
>  >> <!-- #ygrp-mkp{ border: 1px solid #d8d8d8; font-family: Arial; margin:
>  > 14px 0px; padding: 0px 14px; } #ygrp-mkp hr{ border: 1px solid #d8d8d8;
>  > } #ygrp-mkp #hd{ color: #628c2a; font-size: 85%; font-weight: bold;
>  > line-height: 122%; margin: 10px 0px; } #ygrp-mkp #ads{ margin-bottom:
>  > 10px; } #ygrp-mkp .ad{ padding: 0 0; } #ygrp-mkp .ad a{ color: #0000ff;
>  > text-decoration: none; } --> <!-- #ygrp-sponsor #ygrp-lc{ font-family:
>  > Arial; } #ygrp-sponsor #ygrp-lc #hd{ margin: 10px 0px; font-weight:
>  > bold; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad{
>  > margin-bottom: 10px; padding: 0 0; } --> <!-- #ygrp-mlmsg
>  > {font-size:13px; font-family:
>  > arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}
>  > #ygrp-mlmsg table {font-size:inherit;font:100%;} #ygrp-mlmsg select,
>  > input, textarea {font:99% arial,helvetica,clean,sans-serif;} #ygrp-mlmsg
>  > pre, code {font:115% monospace;*font-size:100%;} #ygrp-mlmsg *
>  > {line-height:1.22em;} #ygrp-text{ font-family: Georgia; } #ygrp-text p{
>  > margin: 0 0 1em 0; } dd.last p a { font-family: Verdana; font-weight:
>  > bold; } #ygrp-vitnav{ padding-top: 10px; font-family: Verdana;
>  > font-size: 77%; margin: 0; } #ygrp-vitnav a{ padding: 0 1px; }
>  > #ygrp-mlmsg #logo{ padding-bottom: 10px; } #ygrp-reco { margin-bottom:
>  > 20px; padding: 0px; } #ygrp-reco #reco-head { font-weight: bold; color:
>  > #ff7900; } #reco-category{ font-size: 77%; } #reco-desc{ font-size: 77%;
>  > } #ygrp-vital a{ text-decoration: none; } #ygrp-vital a:hover{
>  > text-decoration: underline; } #ygrp-sponsor #ov ul{ padding: 0 0 0 8px;
>  > margin: 0; } #ygrp-sponsor #ov li{ list-style-type: square; padding: 6px
>  > 0; font-size: 77%; } #ygrp-sponsor #ov li a{ text-decoration: none;
>  > font-size: 130%; } #ygrp-sponsor #nc{ background-color: #eee;
>  > margin-bottom: 20px; padding: 0 8px; } #ygrp-sponsor .ad{ padding: 8px
>  > 0; } #ygrp-sponsor .ad #hd1{ font-family: Arial; font-weight: bold;
>  > color: #628c2a; font-size: 100%; line-height: 122%; } #ygrp-sponsor .ad
>  > a{ text-decoration: none; } #ygrp-sponsor .ad a:hover{ text-decoration:
>  > underline; } #ygrp-sponsor .ad p{ margin: 0; font-weight: normal; color:
>  > #000000; } o{font-size: 0; } .MsoNormal{ margin: 0 0 0 0; } #ygrp-text
>  > tt{ font-size: 120%; } blockquote{margin: 0 0 0 4px;} .replbq{margin:4}
>  > dd.last p span { margin-right: 10px; font-family: Verdana; font-weight:
>  > bold; } dd.last p span.yshortcuts { margin-right: 0; } div.photo-title
>  > a, div.photo-title a:active, div.photo-title a:hover, div.photo-title
>  > a:visited { text-decoration: none; } div.file-title a, div.file-title
>  > a:active, div.file-title a:hover, div.file-title a:visited {
>  > text-decoration: none; } #ygrp-msg p#attach-count { clear: both;
>  > padding: 15px 0 3px 0; overflow: hidden; } #ygrp-msg p#attach-count span
>  > { color: #1E66AE; font-weight: bold; } div#ygrp-mlmsg #ygrp-msg p a
>  > span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight:
>  > normal; } #ygrp-msg p a { font-family: Verdana; } #ygrp-mlmsg a { color:
>  > #1E66AE; } div.attach-table div div a { text-decoration: none; }
>  > div.attach-table { width: 400px; } -->
>  >
>  >
>
>  --
>
>  --
>  Rodrigo Castardo
>  Liberiun
>  COO
>  rodrigocasta...@liberiun.com
>  +55 61 9123-7847
>  +55 61 3468-2662
>  
>  <!-- #ygrp-mkp{ border: 1px solid #d8d8d8; font-family: Arial; margin: 
14px 0px; padding: 0px 14px; } #ygrp-mkp hr{ border: 1px solid #d8d8d8; 
} #ygrp-mkp #hd{ color: #628c2a; font-size: 85%; font-weight: bold; 
line-height: 122%; margin: 10px 0px; } #ygrp-mkp #ads{ margin-bottom: 
10px; } #ygrp-mkp .ad{ padding: 0 0; } #ygrp-mkp .ad a{ color: #0000ff; 
text-decoration: none; } --> <!-- #ygrp-sponsor #ygrp-lc{ font-family: 
Arial; } #ygrp-sponsor #ygrp-lc #hd{ margin: 10px 0px; font-weight: 
bold; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad{ 
margin-bottom: 10px; padding: 0 0; } --> <!-- #ygrp-mlmsg 
{font-size:13px; font-family: 
arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;} 
#ygrp-mlmsg table {font-size:inherit;font:100%;} #ygrp-mlmsg select, 
input, textarea {font:99% arial,helvetica,clean,sans-serif;} #ygrp-mlmsg 
pre, code {font:115% monospace;*font-size:100%;} #ygrp-mlmsg * 
{line-height:1.22em;} #ygrp-text{ font-family: Georgia; } #ygrp-text p{ 
margin: 0 0 1em 0; } dd.last p a { font-family: Verdana; font-weight: 
bold; } #ygrp-vitnav{ padding-top: 10px; font-family: Verdana; 
font-size: 77%; margin: 0; } #ygrp-vitnav a{ padding: 0 1px; } 
#ygrp-mlmsg #logo{ padding-bottom: 10px; } #ygrp-reco { margin-bottom: 
20px; padding: 0px; } #ygrp-reco #reco-head { font-weight: bold; color: 
#ff7900; } #reco-category{ font-size: 77%; } #reco-desc{ font-size: 77%; 
} #ygrp-vital a{ text-decoration: none; } #ygrp-vital a:hover{ 
text-decoration: underline; } #ygrp-sponsor #ov ul{ padding: 0 0 0 8px; 
margin: 0; } #ygrp-sponsor #ov li{ list-style-type: square; padding: 6px 
0; font-size: 77%; } #ygrp-sponsor #ov li a{ text-decoration: none; 
font-size: 130%; } #ygrp-sponsor #nc{ background-color: #eee; 
margin-bottom: 20px; padding: 0 8px; } #ygrp-sponsor .ad{ padding: 8px 
0; } #ygrp-sponsor .ad #hd1{ font-family: Arial; font-weight: bold; 
color: #628c2a; font-size: 100%; line-height: 122%; } #ygrp-sponsor .ad 
a{ text-decoration: none; } #ygrp-sponsor .ad a:hover{ text-decoration: 
underline; } #ygrp-sponsor .ad p{ margin: 0; font-weight: normal; color: 
#000000; } o{font-size: 0; } .MsoNormal{ margin: 0 0 0 0; } #ygrp-text 
tt{ font-size: 120%; } blockquote{margin: 0 0 0 4px;} .replbq{margin:4} 
dd.last p span { margin-right: 10px; font-family: Verdana; font-weight: 
bold; } dd.last p span.yshortcuts { margin-right: 0; } div.photo-title 
a, div.photo-title a:active, div.photo-title a:hover, div.photo-title 
a:visited { text-decoration: none; } div.file-title a, div.file-title 
a:active, div.file-title a:hover, div.file-title a:visited { 
text-decoration: none; } #ygrp-msg p#attach-count { clear: both; 
padding: 15px 0 3px 0; overflow: hidden; } #ygrp-msg p#attach-count span 
{ color: #1E66AE; font-weight: bold; } div#ygrp-mlmsg #ygrp-msg p a 
span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight: 
normal; } #ygrp-msg p a { font-family: Verdana; } #ygrp-mlmsg a { color: 
#1E66AE; } div.attach-table div div a { text-decoration: none; } 
div.attach-table { width: 400px; } -->


Responder a