[sapl-dev] Integridade referencial do Banco de Dados do SAPL

Fabiano Weimar dos Santos xirumacanudo em gmail.com
Quarta Setembro 26 13:00:59 BRT 2012


A versao 5.6 está "em devel", mas deve sair stable GA em breve.

Essa melhoria do Innodb com suporte textual vai também estar
disponivel no MariaDB.

-- Fabiano Weimar


Em 26 de setembro de 2012 12:57, sergiodamiati
<sergiodamiati em camaracampinas.sp.gov.br> escreveu:
> As textuais são feitas todas usando o portal_catalog.
>
> As FullText são usadas para pesquisa de autor de matérias legislativas,
> nomes de parlamentares, assunto na ementa e na indexação de normas e
> matérias legislativas.
>
> Boa notícia essa do InnoDB, demorou. Ainda estamos na versão 5.1 do
> MysqlServer.
>
> Acredito que a performance tenha sido melhorada nas novas versões.
>
>
> Sérgio Damiati
>
> Em 25-09-2012 19:12, Fabiano Weimar dos Santos escreveu:
>> Eu pensava que as pesquisas textuais eram todas feitas usando o portal_catalog.
>>
>> De qualquer forma, o InnoDB na versao 5.6 do MySQL ja suporta isso.
>>
>> http://blogs.innodb.com/wp/2011/12/innodb-full-text-search-in-mysql-5-6-4/
>>
>> Quanto a diferenca de performance, nao acho significativa.
>>
>> -- Fabiano Weimar
>>
>>
>> Em 25 de setembro de 2012 17:24, sergiodamiati
>> <sergiodamiati em camaracampinas.sp.gov.br> escreveu:
>>> Cabe lembrar que o acesso a tabelas InnoDB é mais lento e perderemos
>>> performance, e elas também não suportam Pesquisas FullText usadas no Sapl.
>>>
>>> []s
>>>
>>> Sérgio Damiati
>>>
>>> Em 25-09-2012 17:03, Luciano De Fazio escreveu:
>>>
>>> Concordo tb, mas lembro novamente que tabelas MyISAM nao tem suporte a
>>> integridade.
>>> Alguem vai ter de refazer as tabelas  como InnoDB e criar um script de
>>> conversao.
>>> Como nao se mexe no banco dentro da versao estavel, isso tera que ficar pra
>>> proxima.
>>> Por enquanto, validar por aplicacao eh a unica alternativa viavel.
>>> Luciano De Fazio
>>>
>>> Em 25/09/2012 16:34, "Gustavo Lepri" <gustavolepri em gmail.com> escreveu:
>>>> Fabiano,
>>>>
>>>> Eu também concordo com você sobre a integradidade ser toda feita no banco
>>>> e não na aplicação.
>>>>
>>>> +1 para essa alteração!
>>>>
>>>> Gustavo Lepri
>>>>
>>>> Em 25 de setembro de 2012 14:27, Angelo Marcondes de Oliveira Neto
>>>> <angelomarcondes em gmail.com> escreveu:
>>>>> Fabiano,
>>>>>
>>>>> Bem, vou estudar alternativa ao relacionamento no BD e ver se consigo
>>>>> apresentar algo também.
>>>>>
>>>>> Abraços
>>>>>
>>>>> UaiGeek - Angelo Marcondes de Oliveira Neto.
>>>>> #votoemmongaba
>>>>> Blog do UaiGeek
>>>>> Carneirinho - MG
>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>> - - - - - - -
>>>>> P: Por que esta mensagem é tão curta?
>>>>> R: http://3frases.efetividade.net
>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>> - - - - - - -
>>>>>
>>>>>
>>>>>
>>>>> Em 25 de setembro de 2012 14:09, Fabiano Weimar dos Santos
>>>>> <xirumacanudo em gmail.com> escreveu:
>>>>>
>>>>>> Oi Pessoal,
>>>>>>
>>>>>> nada contra seu código Angelo, mas eu acredito que tentar garantir a
>>>>>> integridade relacional usando código na camada de aplicacao é errado.
>>>>>> Integridade relacional é uma tarefa da camada de banco de dados.
>>>>>>
>>>>>> A resposta a sua questão é: todos concordam comigo?
>>>>>>
>>>>>> Eu acho essa estratégia de "flag" para registro excluido errada
>>>>>> também. Se isso é importante, ou seja, o ato de excluir manter uma
>>>>>> copia dos dados apagados para posterior inspeção manual, pq então não
>>>>>> fazemos isso utilizando a estratégia de banco de dados versionado que
>>>>>> adotei no spdo. Infelizmente o codigo que utilizei la nao serviria
>>>>>> para o sapl, mas a ideia me parece fazer mais sentido.
>>>>>>
>>>>>> Se houver interesse em atacar essa questao, primeiro define-se a
>>>>>> abordagem (se vamos fazer isso usando código no zope ou usando
>>>>>> constraints no banco de dados) e depois debates os detalhes técnicos.
>>>>>>
>>>>>> Minha opniao tecnica pessoal já conhece ;)
>>>>>>
>>>>>> -- Fabiano Weimar
>>>>>>
>>>>>> Em 25 de setembro de 2012 12:11, Angelo Marcondes de Oliveira Neto
>>>>>> <angelomarcondes em gmail.com> escreveu:
>>>>>>> Amigos,
>>>>>>>
>>>>>>> Estou preocupado com a integridade referencial dos banco de dados do
>>>>>>> SAPL e
>>>>>>> por isso estou lhes escrevendo, com objetivo de discutirmos qual a
>>>>>>> melhor
>>>>>>> maneira de evitar que existam quebras de referências, seguindo a linha
>>>>>>> de
>>>>>>> uma discussão iniciada pelo Xiru e pelo Damiatti, anteriormente.
>>>>>>> Abaixo, segue uma proposta de código para verificar a integridade,
>>>>>>> antes da
>>>>>>> exclusão do parlamentar, ou seja do formulário
>>>>>>> parlamentar_excluir_proc.dtml.
>>>>>>> Gostaria da analise de todos, e saber se esta é a melhor opção no
>>>>>>> momento e
>>>>>>> se posso trabalhar neste sentido.
>>>>>>>
>>>>>>>
>>>>>>> <dtml-comment>
>>>>>>> *****************************************************************
>>>>>>> *   Função: Esse método apenas chama o Método SQL de exclusão do*
>>>>>>> *       parlamentar, isto é, o método que atribui a verdadeiro o*
>>>>>>> *       campo ind_excluido do parlamentar cujo o cod_parlamentar*
>>>>>>> *       é recebido.                                             *
>>>>>>> *   Argumentos: cod_parlamentar : int - o código do parlamentar *
>>>>>>> *       a ser escluído.                                         *
>>>>>>> *   Retorno: Atribuição do flag ind_excluido do parlamentar e   *
>>>>>>> *       redirecionamento para a página de parlamentares.        *
>>>>>>> *   Michael S. Onishi / Daniel C. Azevedo em 01-03-2001.        *
>>>>>>> *****************************************************************
>>>>>>> * UPDATE                                                        *
>>>>>>> *    Ao se excluir um parlamentar, alteramos o índice da tabela *
>>>>>>> *  com o autor correspondente (ind_excluido=1) representado a   *
>>>>>>> *  exclusão desse relacionamento, além da exclusão, se houver,  *
>>>>>>> *  do username cadastrado no acl_user como login.               *
>>>>>>> *  Rogério Ueda em 18-12-2003                                   *
>>>>>>> *****************************************************************
>>>>>>> </dtml-comment>
>>>>>>>
>>>>>>> <dtml-if
>>>>>>>
>>>>>>> expr="zsql.composicao_comissao_obter_zsql(cod_parlamentar=cod_parlamentar)">
>>>>>>>    <dtml-let mensagem="'Parlamentar está cadastro como membro de
>>>>>>> comissão(ões) e não pode ser excluído!'">
>>>>>>>       <dtml-var mensagem_emitir>
>>>>>>>    </dtml-let>
>>>>>>> <dtml-elif
>>>>>>>
>>>>>>> expr="zsql.composicao_mesa_obter_zsql(cod_parlamentar=cod_parlamentar)">
>>>>>>>    <dtml-let mensagem="'Parlmentar está cadastrado como membro de mesa
>>>>>>> diretora e não pode ser excluído'">i
>>>>>>>       <dtml-var mensagem_emitir>
>>>>>>> </dtml-let>
>>>>>>> <dtml-elif
>>>>>>>
>>>>>>> expr="zsql.composicao_mesa_sessao_obter_zsql(cod_parlamentar=cod_parlamentar)">
>>>>>>>    <dtml-let mensagem="'Parlmentar está cadastrado como membro de mesa
>>>>>>> diretora de sessão plenária e não pode ser excluído'">i
>>>>>>>       <dtml-var mensagem_emitir>
>>>>>>>          </dtml-let>
>>>>>>>
>>>>>>>
>>>>>>> <dtml-else>
>>>>>>> <dtml-try>
>>>>>>>     <dtml-call
>>>>>>> expr="zsql.parlamentar_excluir_zsql(cod_parlamentar=cod_parlamentar)">
>>>>>>> <dtml-except>
>>>>>>>    <dtml-let mensagem="'Houve um erro! Parlamentar não excluído!'">
>>>>>>>       <dtml-var mensagem_emitir>
>>>>>>>    </dtml-let>
>>>>>>>    <dtml-call expr="REQUEST.set('erro', 1)">
>>>>>>> </dtml-try>
>>>>>>>
>>>>>>> <dtml-unless erro>
>>>>>>>    <dtml-try>
>>>>>>>       <dtml-in
>>>>>>> expr="zsql.autor_obter_zsql(cod_parlamentar=cod_parlamentar)">
>>>>>>>          <dtml-call expr="zsql.autor_excluir_zsql(cod_autor)">
>>>>>>>          <dtml-call
>>>>>>> expr="pysc.username_excluir_pysc(username=col_username)">
>>>>>>>       </dtml-in>
>>>>>>>    <dtml-except>
>>>>>>>       <dtml-let mensagem="'Parlamentar Excluído com Sucesso!<BR>Houve
>>>>>>> um
>>>>>>> erro! Autor Não Excluído!'">
>>>>>>>          <dtml-var mensagem_emitir>
>>>>>>>       </dtml-let>
>>>>>>>    <dtml-else>
>>>>>>>       <dtml-let mensagem="'Parlamentar Excluído com Sucesso!'"
>>>>>>> sucesso="1">
>>>>>>>          <dtml-var mensagem_emitir>
>>>>>>>       </dtml-let>
>>>>>>>    </dtml-try>
>>>>>>>
>>>>>>> </dtml-unless>
>>>>>>>
>>>>>>> </dtml-if>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> UaiGeek - Angelo Marcondes de Oliveira Neto.
>>>>>>> #votoemmongaba
>>>>>>> Blog do UaiGeek
>>>>>>> Carneirinho - MG
>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>> - - -
>>>>>>> - - - - - -
>>>>>>> P: Por que esta mensagem é tão curta?
>>>>>>> R: http://3frases.efetividade.net
>>>>>>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>>>> - - -
>>>>>>> - - - - - -
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Wiki do SAPL:
>>>>>>> http://colab.interlegis.gov.br/wiki/ProjetoSapl
>>>>>>>
>>>>>>> Regras de participação:
>>>>>>> http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>>>>>>>
>>>>>>> Para administrar sua conta visite:
>>>>>>> http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Interessado em meus Cursos e Palestras? Inscreva-se em:
>>>>>> https://groups.google.com/d/forum/cursos-do-xiru?hl=pt-BR
>>>>>>
>>>>>> Fabiano Weimar dos Santos @xiru
>>>>>> http://blog.xiru.org
>>>>>> http://www.pytown.com
>>>>>> --
>>>>>> Wiki do SAPL:
>>>>>> http://colab.interlegis.gov.br/wiki/ProjetoSapl
>>>>>>
>>>>>> Regras de participação:
>>>>>> http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>>>>>>
>>>>>> Para administrar sua conta visite:
>>>>>> http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>>>>>
>>>>>
>>>>> --
>>>>> Wiki do SAPL:
>>>>> http://colab.interlegis.gov.br/wiki/ProjetoSapl
>>>>>
>>>>> Regras de participação:
>>>>> http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>>>>>
>>>>> Para administrar sua conta visite:
>>>>> http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>>>>
>>>>
>>>>
>>>> --
>>>> Gustavo Lepri
>>>>
>>>> --
>>>> Wiki do SAPL:
>>>> http://colab.interlegis.gov.br/wiki/ProjetoSapl
>>>>
>>>> Regras de participação:
>>>> http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>>>>
>>>> Para administrar sua conta visite:
>>>> http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>>>
>>>
>>>
>>>
>>> --
>>> Wiki do SAPL:
>>> http://colab.interlegis.gov.br/wiki/ProjetoSapl
>>>
>>> Regras de participação:
>>> http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>>>
>>> Para administrar sua conta visite:
>>> http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev
>>
>>
>
> --
> Wiki do SAPL:
> http://colab.interlegis.gov.br/wiki/ProjetoSapl
>
> Regras de participação:
> http://colab.interlegis.gov.br/wiki/ComoParticiparComunidade
>
> Para administrar sua conta visite:
> http://listas.interlegis.gov.br/mailman/listinfo/sapl-dev



-- 
Interessado em meus Cursos e Palestras? Inscreva-se em:
https://groups.google.com/d/forum/cursos-do-xiru?hl=pt-BR

Fabiano Weimar dos Santos @xiru
http://blog.xiru.org
http://www.pytown.com


Mais detalhes sobre a lista de discussão SAPL-dev