JBoss / EJB vs Symmetric DS
Pergunta
Eu estou trabalhando em um projeto que está prestes a começar, e desde que eu estava ocupado com outro meus colegas foi em frente e começou a trabalhar nas especificações para o novo. Quando eu entrei, eles tinham acabado escolhido para fazer a persistência com SQL simples (prontamente aceitou a minha sugestão para adicionar Hibernate, embora), mas insistiu em que a replicação de dados deve ser realizada usando uma ferramenta chamada Symmetric DS , de que eu nunca tinha ouvido falar.
Estou preocupado porque, tanto quanto eu sei, ter um servidor JBoss (planos atuais são para usar Tomcat apenas) com EJB3 cuida de toda a trabalheira transação / replicação, e deve nos poupar de um monte de dores de cabeça.
Como vocês ver este Symmetric DS ? (Note que eu não tenho nada contra ele qualquer, é só que eu sei JBoss ser em torno de um longo tempo e tem uma reputação muito respeitável)
Como você compararia as duas soluções?
Obrigado!
Editar : By the way, como é que SymmetricDS lidar com chaves primárias duplicados? Quer dizer, se eu adicionar uma linha no banco de dados Uma e outra no banco de dados B, ambos provavelmente será adicionado com a mesma chave primária, certo? Como é que SymmetricDS lidar com isso de forma a evitar conflitos? Este fórum de discussão parecia à primeira vista a abordar alguns dos que, mas não chega a responder à minha pergunta.
Solução
Eu acho EJB e SymmetricDS estão tentando resolver problemas diferentes. EJB é uma estrutura que fornece (entre muitas coisas) persistência no banco de dados. SymmetricDS é uma aplicação que captura as alterações feitas em um banco de dados e aplica-los para outro banco de dados de forma assíncrona. Na verdade, os dois trabalham juntos, permitindo-lhe a persistir facilmente dados de um feijão de Java no banco de dados e tê-lo replicado para outros bancos de dados remotos.
Você pode implantar SymmetricDS para JBoss ou Tomcat (há autônomo e opções embutidas bem), e tudo o que preocupa é o banco de dados. Debaixo das cobertas, ele está usando o framework Spring para acessar o banco de dados. Ele instala gatilhos de banco de dados para mudanças de captura, e aplica-se alterações para o banco de dados destino exatamente da mesma maneira. Então, se as linhas A e B foram cometidos juntos no banco de dados origem, em seguida, eles se comprometem em conjunto sobre o alvo.
Espero que ajuda a esclarecer as duas tecnologias. Existe uma comunidade ativa no SourceForge para SymmetricDS que é mais do que feliz em responder perguntas e dar exemplos de implementações bem-sucedidas:
http://sourceforge.net/projects/symmetricds
Boa sorte em seu projeto!
Eric