Transferência de Tecnologia

Propaganda
SENADO FEDERAL
Secretaria Especial do Interlegis - SINTER
Subsecretaria de Tecnologia da Informação - SSTIN
RELATÓRIO DE PROJETO
versão 2.1
Transferência de Tecnologia
1.Termo de Referência
Esse relatório diz respeito ao edital número 46, “OBJ-REL - Camada de
Persistência Objeto-Relacional”, publicado entre os dias 04 a 11 de maio de 2008,
a ser realizado no período de maio/2008 a outubro/2008.
2.Introdução
De acordo com o descrito no termo de referência desse projeto, os frameworks
utilizados pelo Interlegis permitem o armazenamento de informações tanto em
banco de dados relacionais (PostgreSQL e MySQL) quanto em banco de dados
orientados a objetos (ZODB).
De forma geral, quando trata-se de representar informações dentro do Plone
(utilizando-se o framework Archetypes), a persistência dos dados costuma ser
orientada a objetos (OO) e realizada diretamente no banco de dados orientado a
objetos ZODB. Há algumas soluções do Interlegis como, por exemplo, o SAPL
(Sistema de Apoio ao Processo Legislativo), que podem ser consideradas soluções
“híbridas”, armazenando informações em diferentes modelos (parte das
informações em banco de dados relacional e parte em banco de dados orientado a
objetos). No entanto, o SAPL não utiliza o framework Archetypes e, por sua vez, não
está relacionado com esse projeto.
Esse relatório tratará apenas das considerações relevantes ao primeiro caso, o
mapeamento de informações objeto-relacional. Nesse caso, as informações que
normalmente seriam armazenadas em bancos de dados OO precisam ser mapeadas
para um banco de dados relacional.
Esse quarto relatório complementa os Relatório 1, 2 e 3 já entregues anteriormente
e diz respeito a entrega “transferência de tecnologia”. Esse relatório tratará dos
procedimentos a serem adotados para que o produto desenvolvido seja facilmente
integrado as solução já existentes do Interlegis.
3. Considerações Gerais
Antes de relatar a respeito da integração do produto desenvolvido com as soluções
Interlegis já existentes, é oportuno fazer algumas considerações.
O Relatório 1 explana a respeito dos requisitos a serem atendidos por esse produto,
requisitos esses tem relação direta com as escolhas feitas durante o
desenvolvimento. O Relatório 2 relata a respeito da entrega do código fonte
produzido e o Relatório 3 detalha o processo de instalação desse código fonte. Esse
último relatório cobre o último aspecto importante do projeto, que será como utilizar
esse código fonte na prática, permitindo que o mesmo seja integrado facilmente as
soluções que o Interlegis já possui.
Apesar desse relatório ser bastante breve, a maior parte do esforço realizado foi
justamente para que o processo de integração e, por sua vez, a transferência da
tecnologia implementada fosse simples e objetiva. Todo o código fonte produzido foi
implementado com essa preocupação em mente e, nesse sentido, acredita-se que a
solução implementada seja bastante produtiva.
1
SENADO FEDERAL
Secretaria Especial do Interlegis - SINTER
Subsecretaria de Tecnologia da Informação - SSTIN
4. Transferência de Tecnologia
De acordo com o que foi especificado nos capítulos 6 e 7 do Relatório 1, existem
duas perguntas a serem respondidas a fim de permitir a transferência da tecnologia
e sua utilização em soluções do Interlegis:
1) Como são definidas quais serão as classes mapeada?
2) Como alteramos o modo de persistência para que os dados sejam persistidos
apenas no ZODB, apenas do banco de dados relacional ou em ambos?
Essas perguntas são, de fato, resultado dos requisitos definidos ainda no Termo de
Referência e, em última instancia, os objetivos práticos desse projeto.
O produto interlegis.sqlalchemystorage foi desenvolvido para permitir que esse
processo de integração seja o mais simples possível. Para isso, todo processo de
integração é guiado por um arquivo de configuração que armazena parâmetros de
persistência. Esse arquivo faz parte do código fonte produzido e encontra-se em
src/interlegis.sqlalchemystorage/interlegis/sqlalchemystorage/storage.conf.
O
arquivo tem o seguinte formato:
[general]
storage = SQL
[classes]
importpath = Products.ATContentTypes.content.document.ATDocument
Products.ATContentTypes.content.newsitem.ATNewsItem
O arquivo de configuração segue a sintaxe do módulo ConfigParser do python.
Nele existem duas seções distintas.
A primeira seção (general) define o modo como o mapeamento objeto-relacional
ocorre. Os valores possíveis para o parâmetro “storage” são: ZODB (todas as
informações são persistidas no ZODB, nada é gravado no banco de dados
relacional), SQL (os campos das classes a serem mapeadas são armazenados em
um banco de dados relacional de acordo com a tabela descrita no capítulo 6 do
Relatório 1) e BOTH (todas as operações de leitura são efetuadas apenas no ZODB
e todas as operações de escritas são efetuadas no ZODB e no banco de dados
relacional também, funcionando como uma “replicação”).
A segunda seção (classes), define quais classes Archetypes devem ser mapeadas.
Isso é feito através do parâmetro “importpath”, onde devem ser informadas quais
são as classe de conteúdo Archetypes que devem ter todos seus campos mapeados.
Por definição, o mapeamento é feito por classe de conteúdo Archetypes e o modo de
mapeamento é valido por instancia de Zope.
5. Considerações sobre a Implementação
Existem duas razões importantes para que a implementação em modo BOTH
processe todas as operações de leitura diretamente no ZODB. A primeira razão é
performance, preocupação essa explícita no Termo de Referência. Acredita-se que
operar um Plone Site com mapeamento em modo BOTH não tenha diferença
significativa de performance quando comparado ao mesmo Plone Site usando
informações apenas no ZODB. O próprio ZODB é um banco de dados planejado para
2
SENADO FEDERAL
Secretaria Especial do Interlegis - SINTER
Subsecretaria de Tecnologia da Informação - SSTIN
ter performance otimizada nas operações de leitura e, evitando-se que consultas
SQL sejam feitas no banco de dados para “buscar” uma informação que estaria
disponível no ZODB, temos uma economia de processamento.
As operações de escrita, por sua vez, são sempre feitas no ZODB e no banco de
dados relacional. Isso permite que todas as informações mapeadas esteja
atualizadas no ZODB e numa base relacional ao mesmo tempo, permitindo a
integração das soluções do Interlegis com outras plataformas através do acesso as
informações armazenadas no banco de dados relacional (através de ferramentas de
geração de relatórios ou “data mining”, por exemplo).
No modo de operação SQL, todas as operações de leitura e escritas são realizadas
no banco de dados relacional. Isso traz uma sobrecarga de processamento
(minimizada pelo framework SQLAlchemy, mas significativa quando comparada a
operação apenas com o ZODB). No entanto, esse modo de operação permite que
aplicações externas alterem o conteúdo do banco de dados relacional e que essa
alteração tenham impacto direto no conteúdo servido pelo Zope.
Por fim, mo modo de operação ZODB, nada é modificado no comportamento normal
do Zope; é como se a solução de mapeamento objeto-relacional não estivesse
instalada.
3
Download