-
Espelhamento
boa tarde povo do PHP... eis aqui uma questão bem complicada, espero que possam me dar umas idéias:
tenho um sistema em PHP+PostgreSQL que roda na rede interna da empresa... esse sistema lista links para arquivos pdf armazenados no servidor... então para cada uma desses arquivos pdf, que são documentos, tenho o arquivo armazenado em uma estrutura de diretórios e dados sobre ele armazenados no banco de dados...
agora terei que extender isso para a home page, ou seja, disponibilizar esses documentos na rede interna e atravez do site... porém são servidores diferentes, o do site é externo, está hospedado em um proverdor pago, e a empresa aqui não tem a menor intenção de hospedar o site aqui mesmo...
então aí vem a grande questão: preciso espelhar essas informações e os arquivos nos dois lugares, de modo que tudo que for alterado na rede local seja feito também no site, pois não posso ter os dados em lugar apenas... detalhe: o sistema foi desenvolvido em Postgre e no provedor onde está o site só existe MySQL disponível, de forma que terei que mexer em alguma coisa na programação também, mas isso é o de menos... o grande problemas mesmo é como fazer esse espelhamento de informações e arquivos...
-
Espelhamento
cara, se o banco de dados for algo simples, sem tabelas relacionais com milhares de atributos mágicos e dados sobrenaturais, acho que dá sim.
vc vai precisar criar em ambos os bancos de dados tabelas equivalentes, de forma que os dados de cada uma possam ser intercambiados (sempre quis usar essa palavra...hauhauahua). então vc vai precisar ler os dados desta tabela no servidor que vai ser espelhado, transferir para o espelho e adicionar.
Tenho algums scripts para fazer isto em php, mas somente para mysql, agora com postgresql eu nunca mexi, e nunca sequer axei documentação (também nunca procurei muito). se vc quiser alguma ajuda posso tentar.
-
Espelhamento
então, mas pior do q ser postgre é ser um postgre e outro mysql, ehehehe... complicado hein... não faço ideia de como passar esses dados de um pro outro...
e a questão dos arquivos, tem ideia de como fazer tambem? pq alem dos dados do banco tambem preciso espelhar os documentos...
-
Espelhamento
O que você quer, no final, é uma ferramenta de ETL, o que não é exatamente algo simples...
Se, como disse nosso amigo, forem dados simples sem muitas constraints, até que não é difícil, dependendo da frequência que quer as atualizações...
O mais simples é zerar a tabela destino e inserir tudo de novo a partir da origem (desde que, é claro, só exista uma origem, pois, se for atualizado em ambos os lados, a coisa se complica...)
Outra forma é colocar uma coluna a mais nas tabelas a ser replicadas com data e hora da última atualização da informação e usar essa informação como referência para replicação apenas das atualizações...
Você não pode disponibilizar tudo apenas na internet ???
Ter informações em mais de um lugar é dar chances de informações desencontradas...
-
Espelhamento
olá marcio...
então, a quantidade de tabelas não seriam muitas não, apenas umas 3, que se referenciam com chave estrangeira... até aí, acho q o fato de passar do postgre para o mysql nao seria problema, bastando ter os campos certinhos com as ids...
o esquema de zerar o destino e inserir tudo de novo pode ser feito, mas como faço isso? teria q usar SQL, ou algo assim? considerando que não seriam todos os registros necessários, acredito que nao seriam todoas informações passadas pra lá, teria uma especie de filtro antes...
cara, eu não poderia deixar tudo na internet, porque como eu disse antes, é um sistema que roda na rede local, e tem outras funcionalidades nele que não queremos deixar disponiveis na internet, apenas a leitura de documentos mesmo... o restante seria feito internamente... e mais, no site o banco é mysql, se eu fosse colocar o sistema inteiro lá dae teria que modificar tudo, mas mesmo assim não acho uma boa ideia, pois ja escolhi o postgre por considerar um banco melhor...
e quanto aos arquivos, vc tem alguma ideia tambem de como fazer?