Postgres or not Postgres ?

Pois é, estou iniciando um novo projeto com desenvolvimento de aplicações e banco de dados.

Porém este novo serviço vou ter a possibilidade de escolher entre dois banco de dados : FirebirdSQL(FB) e Postgres (PG).

O FirebirdSQL já conheço muito bem, e em meu ultimo trabalho com ele foi possível migrar um conjunto de aplicações que acessavam base de dados no Microsoft SQL Server para FirebirdSQL, e ficou muito bom, com procedures, tabelas, triggers,… muito melhor do que o anterior MSSQL. O FB para administrar é muito fácil, parece ser realmente um sistema autonomo e não requerendo ninguém para administra-lo, não foi sem mérito que ganhou o primeiro lugar em duas categorias do SourceForge Community Choice Awards.

Minha principal questão é investir no Postgres, afinal não é apenas o treinamento, mas adaptações a serem feitas. Luto muito pelo Linux, voces sabem, mas muitas empresas já usam tecnologias consideradas consagradas e neste caso em particular, apesar de poder escolher qualquer banco de dados(vou escolher entre FB e PG) , a linguagem de programação já esta escolhida : Delphi (versão 7).

FirebirdSQL com Delphi é como um passeio no parque, poucas preocupações. Componentes de acesso VCL(Delphi) nativas para acesso, Ferramentas de Administração (win32 e linux) muito boas, server com opção para Linux,… tornam o terreno fértil para progresso rápido do desenvolvimento.

No entanto, Postgres é terreno novo, sempre ouço falar bem dele, mas também ouço reclamações sobre o seu peso e complexidade. Para não fazer experiências com o cliente, afinal o cliente já ficou decepcionado com a empresa anterior, provavelmente vou ter que fazer um treinamento específico para Postgres, não somente administração, mas também desenvolvimento (embora ache que SQL é SQL em qualquer banco) e correr atrás de componentes VCL e ferramenta para administração.

Meus nobres colegas, gostaria que àqueles que já tem experiência em administrar e desenvolver usando Postgres e/ou FirebirdSQL comentasse o que eu devo esperar desse terreno novo, ou até mesmo se devo experimentar o PG ou ficar na zona de segurança com o FB.

Àqueles que puderem me ajudar, comentando a respeito :

  • Migrou de FirebirdSQL para Postgres ? Como foi a sua migração, tranquila ? O que ficou melhor ? O que ficou pior ?
  • Usa Delphi? que versão e suite de componentes de acesso está usando ?
  • Qual ferramenta de administração de banco usa atualmente para criar os objetos de banco de dados, backup, reparação, etc… ?

O trabalho não é muito grande, a empresa é de porte médio e o sistema atual (também em MSSQL) conta com 5GB de dados, mas como serão desenvolvidos também novos programas, por isso é provável que essa base aumente muito. São cerca de 50 usuários acessando simultaneamente a base, a maioria das operações são insert e update, o projeto feito em MSSQL está bem definido(normatizado) com tabelas e SPs e não usa triggers e pelo que vejo são raras as exclusões no banco, o que dá a entender que foi muito bem planejado. A empresa está mudando porque o MSSQL é a versão 6.5 e migra-lo para a versão mais recente, além dos custos tem a incompatibilidade e muito código teria de ser reescrito e seria quase como partir para outro banco de dados, e se for para mudar que tal um banco de dados livre ? É aqui que eu entro.

Todo o comentário esclarecedor será muito apreciado.

Anúncios
  1. #1 por Marcos Jordão em 1 \01\UTC agosto \01\UTC 2007 - 14:58

    Olha, eu trabalhei muitos anos com Delphi e Firebird e realmente é uma combinação fantástica.
    Nunca ouvi falar de componentes VCL para conexão com Postgree.
    Não gosto de dbExpress e nem cogitaria BDE! Já o Firebird é acessado nativamente pela IBX, e fica melhor ainda com a MDO (mdo.sf.net).

    No seu lugar eu levaria em consideração mais o fator “tempo”, se o prazo que você tem com o cliente permite fazer um estudo avançado do Postgree, com o que leio por aí dificilmente você vai se arrepender; se não permite fique com o Firebird mesmo que esse temos certeza que não há arrependimento.

    Abraços.

  2. #2 por guigouz em 1 \01\UTC agosto \01\UTC 2007 - 15:17

    Eu sempre vivi no mundinho MySQL/Postgresql, Delphi aqui não é fator determinante, já que só trabalhamos com aplicativos multiplataforma, e os dois bds são muito bem suportados por qualquer distribuição Linux. Estamos com um projeto agora que deverá rodar também em servidores Windows, e fiquei intrigado sobre como seria o suporte do Firebird em plataforma Windows (tanto o Postgre como o Mysql rodam, mas não sei detalhes sobre a performance). Como você já disse, o postgre é muito bom, mas peca na complexidade.

    Se puder escrever um artigo depois de toda essa pesquisa (prós/contras) agradecemos!

    Abraço

  3. #3 por Milton Br. Jr. em 1 \01\UTC agosto \01\UTC 2007 - 15:31

    Cara, eu já trabalhei com Delphi e PostgreSQL. Quanto ao banco, acho realmente muito bom e aconselho. Já o acesso (usando DBExpress) via Delphi a gente fazia com componente pago (não havia nenhum free). O único free que tentei era um que acessava via ODBC, porém, descobri que pouca manutenção se dava a esse driver de acesso e havia um bug que praticamente impossibilitava de trabalhar com ele. Já esse pago que usávamos numa outra empresa que trabalhei era bem bom e nunca deu problemas. O site desse driver pago é o seguinte: http://www.vitavoom.com/. O outro free problemático (ODBC) achei no Sourceforge, mas não sei se é uma boa.
    Quanto ao uso do DBExpress, discordo um pouco do Marcos. Acho muito bom e sempre que podia usava o DBExpress. Bastavam poucas DLLs no cliente e pronto, tudo conectado que era uma maravilha.
    Espero ter colaborado.
    []s;

  4. #4 por Roberto Mello em 1 \01\UTC agosto \01\UTC 2007 - 16:32

    “Hamacker”,

    A primeira coisa a ser dita e’ que o nome do SGBD e’ PostgreSQL, e a abreviacao e’ “Postgres”. “Postre”, se nao me engano, e’ sobremesa em Frances.

    A nao ser que voce tenha motivo especificos para querer usar o PostgreSQL — como um requerimento que o Firebird nao atenda — e voce tenha tempo incluido na sua estimativa para poder aprender a lidar com o PostgreSQL, me parece que devido a sua experiencia voce deve ficar com o Firebird.

    Nao tenho experiencia com o Firebird. O que eu li a respeito dele foi tempos atras e provavelmente os problemas que eu li a respeito (eu espero) nao existam mais. A facilidade de integracao do Firebird com Delphi e’ obvia e esperada, devido as origens do Firebird.

    A comunidade de desenvolvedores Delphi ou nao gostam muito de open source, ou nao viram motivo para investir no PostgreSQL, por que ha’ anos ja’ que eu vejo pessoas perguntando sobre PostgreSQL e Delphi, e a resposta sempre e’ a mesma: os drivers abertos nao sao muito bons, e o melhor e’ o da VitaVoom, que e’ proprietario, mas a um preco bem acessivel. O Steve Howe, desenvolvedor do driver para Vitavoom, eu conheco e ele e’ um excelente profissional.

    O PostgreSQL e’ um servidor de verdade. Nao foi desenhado para ser instalado na maquina cliente. Foi desenhado desde o inicio para ser cliente-servidor. E’ extremamente flexivel, possui funcionalidades muito boas e muitas das quais so disponiveis em SGBDs proprietarios e caros. O grupo de desenvolvimento e’ extremamente capaz e serio.

    As pessoas que eu ja’ vi fazerem reclamacoes do tipo “peso” apenas estavam com expectativas erradas. Elas estavam procurando apenas por um engine de aramazenamento SQL que pudesse ser embutido junto com a aplicacao, do tipo de como o Firebird pode se comportar (afinal, ele foi desenhado assim, salvo engano).

    Se voce esta’ procurando por um _servidor_ robusto, capaz, rapido, eficiente, escalonavel e flexivel, o PostgreSQL e’ uma excelente escolha.

    Atualmente eu uso uma ferramenta proprietaria: EMS SQL Studio, e funciona muito bem. E’ para Windows, mas eu rodo sem problemas sob Wine no meu Linux e no meu Mac.

    Grande abraco e boa sorte. Precisando, estamos ai.

    -Roberto

  5. #5 por Gustavo Ferreira em 1 \01\UTC agosto \01\UTC 2007 - 16:45

    Olá,

    Aprovo os comentários dos colegas acima e penso também que não deve-se mudar o time no meio do jogo.
    Eu já trabalhei com a dobradinha Delphi/MySQL e acho que as facilidades, difuldades e desempenho do MySQL e Postgre, são muito semelhantes. Sinceramente, quando iniciei meus estudos com DB´s Open Source, me identifiquei muito com o MySQL, ainda mais com as atuais versões.

    Resumindo: vá em frente com o Postgre (pena não ser com o MySQL). Não tenha medo. Com o seu conhecimento vai ser mu-mu.

    Abraços,
    Gustavo Ferreira

  6. #6 por Johny Rubens em 1 \01\UTC agosto \01\UTC 2007 - 17:02

    Eu uso Delphi com PostgreSql, pq antes do Delphi eu usava uma ferramneta de programação pouco conhecia chamada Clarion. E o Clarion para acessar o Postgre só através do ODBC. O sistema começou a ficar lento devido ao ODBC e então migrei para o Delphi.
    Eu utilizo o suíte de componentes Zeosdbo, que além de acessar direto ao Postgre tem acessos a outros SGDB (SQLite3, Mysql, FireBird).
    Talvez ele tenha melhor perfomace num servidor Linux, pq ele é nativo do Linux, assim como muita gente fala que o Mysql roda melhor num Linux do q num WIndows.
    Pessoalmente, não vi complexidade no PostgreSQL.

  7. #7 por Fábio Arezi em 1 \01\UTC agosto \01\UTC 2007 - 17:13

    Tche… é exatamente o que o Roberto falou.
    O PostgreSQL é um SGBD feito pra médias/grandes aplicações onde pode se comparar em vários pontos com o Oracle. É um banco que se existir uma base mais complexa, provavelmente vai precisar de um DBA pra fazer manutenções e otimizações conforme o hardware usado e o crescimento do banco.
    Para o teu projeto, se ele for pequeno (ate 5 usuários em rede), pessoalmente eu te aconselho usar o Firebird que é um banco muito bom também, principalmente para esses casos e já que vc tem experiência. Agora se seu projeto for maiorzinho, e for usar um servidor dedicado para o banco (linux é claro..) vale a pena investir no PostgreSQL. Inicio do ano passado fizemos uma migração de Oracle para PostgreSQL e estou muito satisfeito, mas como usamos java nao posso comentar do delphi.
    Qualquer duvida fico a disposição.
    Abraço

  8. #8 por Linuxpoa em 1 \01\UTC agosto \01\UTC 2007 - 17:28

    Olá hamaker,
    Amigão, você está no caminho certo com a excessão do delphi…. Se for pra reescrever o código, já faça-o multi-plataforma. Eu trabalho em meus cliente com alguns programas feitos em delphi e com firebird, mas os problemas começam em rodar a aplicação em linux e ter algum tipo de replicação de dados com filiais e ou acesso remoto (normalmente tem que ter TS). É só uma opinião. Usar Firebird ou postgresql … Você mesmo disse SQL é SQL .. Abraço amigo.

  9. #9 por Silfar em 2 \02\UTC agosto \02\UTC 2007 - 15:52

    Cara, acho que o que vc tem que levar em conta é :

    O banco vai ser centralizado ou vc vai ter que distribuir junto com a aplicação, sendo o primeiro caso o ppostgres sem dúvida é a opção pelo poder, se vai distribuir firebird é melhor.

    O zeos é sim uma boa opção de conexão, aqui tô usando ele para acessar o firebird, mas vou migrar mais tarde para o postgres, até pq quero desenvolver para web com rails e neste caso o postgres é melhor suportado.

    abraços

  10. #10 por Andre Almeida em 3 \03\UTC agosto \03\UTC 2007 - 14:40

    Olha só, trabalhei alguns alguns com Delphi/Firebird, para Delphi acredito que o melhor seja Firebird mesmo. Mas. putz, tem certeza sobre o Delphi?? hehhe
    Não existe possibilidade de usar outra ferramenta/linguagem?

    Abraços

  11. #11 por hamacker em 3 \03\UTC agosto \03\UTC 2007 - 14:47

    Obrigatóriamente o Delphi porque a empresa já tem esse software comprado, mas tem uma parte que será feita em php.
    Vou usar o delphi, mas vou torna-lo compátivel com o wine.

    Eu queria usar a oportunidade e começar com python, sinto que estou perdendo o “bum” do python.

  12. #12 por Marcelo Oliveira em 3 \03\UTC agosto \03\UTC 2007 - 19:39

    Olá pessoal acredito que o que eu vou dizer não acrescenta muito mais ao que ja foi dito! para projetos grandes use Postgre, mas se for algo relativamente pequeno e não vai crescer nos próximos anos o firebird acredito ser o mais indicado, mas em questão a linguagem eu sou suspeito pra falar que java seria uma boa, em todo o caso como ja foi comprado o Delphi manda bala!

  13. #13 por Hero em 10 \10\UTC agosto \10\UTC 2007 - 16:47

    Interbase/Firebird são muito bons, principalmente em ambientes onde não existe administrador de banco de dados ou servidores dedicados, talvez por isso corrompa tanto, faz realmente falta um arquivo de log no Firebird. Hoje uso Delphi/Firebird, mas se fosse começar do zero usaria Python/Postgre, dê uma olhada nesta solução, não custará nada para o cliente, você terá portabilidade e ambiente de desenvolvimento web superior ao PHP com o Django.

  14. #14 por Eides Veron de Faria em 21 \21\UTC agosto \21\UTC 2007 - 7:24

    Olá pessoal! sou usuário do Firebird desde a versão do Interbase 6. Acampanhei todos os processos de atualização das versões de lá pra cá. O Firebird é muito rápido, embora, um código SQL mal elaborado não tem banco que aguenta… Em relação à aquela
    versão 6 melhorou muito e vem melhorando a cada versão. A Facilidade e ferramentas para trabalhar com trigers e stored procedures é notável. Problemas de corrupção de banco.. Nunca tive nenhum problema que parace o servidor ou que não pudesse resolver. Embora o firebird seja novo.. o Interbase tem mais de 16 anos, pense nisso. Quanto à administração do banco do banco praticamente não tem o que administrar. É óbvio que nenhum banco de dados com tamanho razoável deve ficar sem administração por seguro que seja…

  15. #15 por EMANOEL DIEGO em 16 \16\UTC dezembro \16\UTC 2007 - 16:50

    Boa Tarde

    Vou começar a desenvolver um sistema, que pretendo apresentar como Trabalho de Conclusão de Curso da minha Faculdade.
    Esse sistema será um Sistema de Gerenciamento e Controle de Tráfego de uma empresa de Transporte Coletivo de Ônibus.
    Como é um grupo de empresas, e a aplicação será grandinha, e tenho certeza que o Banco Interbase não vai suportar a demanda,
    além de que, mostrei a eles o Postgre e eles adoraram, além de ser Free, não fica devendo em nada pro Oracle.

    Ai vem o problema: Eles utilizam o Delphi 7, e eu também gosto muito do Delphi, já ouvi falar na ferramenta sSoftoutch, só que é para
    Delphi6 ó que já instalei o Zeos duas vezes lá, e sempre dá uns eros doidos de DLL. Gostaria de ter uma opinião, sobre qual ferramenta
    seria a mais interessante para utilizar nesse caso no Delphi,se o ADO, Zeos, ou outra, e se puderem me ajudar, como configo passo a
    passo para que não ocorra esses erros que comentei.

    Obrigado
    Emanoel Diego

%d blogueiros gostam disto: