Diferenças entre Firebird e InterBase
(c) Dmitry Kuzmenko, Alexey Kovyazin, IBSurgeon, 21.05.2017
Visão geral histórica
O InterBase foi criado em 1985: foi o primeiro banco de dados comercial com versionamento múltiplo. No final de 1999, a Borland decidiu encerrar o desenvolvimento do InterBase e publicou seus códigos-fonte sob a Licença Pública do InterBase. Esse código foi copiado (o que é permitido pela licença), e o Firebird nasceu - a partir da versão 1.0, o Firebird é um banco de dados pronto para produção, baseado em décadas anteriores de desenvolvimento do InterBase.
No final de 2000, a Borland voltou ao código fechado e às licenças comerciais (exatamente como era antes) com o InterBase e iniciou o desenvolvimento da versão 6.5.
Firebird 1.0 foi lançado em 2002, com muitas correções de bugs e extensões de DDL e DML. O desenvolvimento ativo do Firebird continuou após a versão 1.0, e em 2004 foi lançada a segunda versão principal do Firebird (v.1.5). A Borland também lançou novas versões naquela época (7.0 e 7.1). O Firebird 1.5 e o InterBase 7.0 eram incompatíveis tanto no formato do banco de dados (ODS) quanto na funcionalidade principal. A migração do InterBase para o Firebird e vice-versa com backup/restore é impossível desde o Firebird 2.0 e o InterBase 7.0.
Desde então, a diferença entre Firebird e InterBase tornou-se maior.
Situação atual (2017)
A única forma de migração entre as versões atuais do InterBase e do Firebird é por meio de script SQL (com a correção manual das diferenças) e, em seguida, a transferência de dados do banco de dados antigo para o novo. No entanto, a migração do InterBase para o Firebird ainda é mais fácil do que para outro SGBD, pois os princípios de gerenciamento de transações são os mesmos.
Realizamos várias dessas migrações para diferentes versões do InterBase e do Firebird - veja mais detalhes sobre nosso serviço de migração aqui - e elas ocorreram bem.
Abaixo você encontra a tabela com a lista de diferenças entre as versões mais recentes: Firebird 3.0 e InterBase 2017.
| Diferenças entre Firebird e InterBase |
|---|
| Recursos |
| — |
| SQL (DML e DDL) |
| Estabilidade de cursor (INSERT FROM SELECT correto) |
| Cursores roláveis (bidirecionais) |
| Execute Statement |
| Execute Statement On External (consultas a bancos de dados Firebird externos) |
| Transações autônomas |
| Tabelas derivadas (SELECT de SELECT) |
| Common Table Expressions recursivas (CTE) |
| Funções de janela e estatísticas |
| MERGE |
| Cláusula RETURNING para insert/update/delete |
| Triggers em connect/disconnect |
| Triggers em início/commit/rollback de transações |
| Triggers para DDL |
| Suporte a regexp para SUBSTRING |
| Tipo de dado Boolean |
| Tipo de dado BIGINT |
| Funções PSQL |
| Procedimentos, funções e triggers externos ( Java) |
| Procedimentos e funções aninhados |
| Funções determinísticas |
| Variáveis de contexto em namespaces SYSTEM, USER_SESSION e USER_TRANSACTION |
| Pacotes (procedimentos e funções) |
| Exceções com parâmetros |
| Coluna IDENTITY |
| RECREATE (combinação de CREATE ou ALTER) |
| Suporte a UTF8 |
| Suporte a pesquisa sem diferenciação de maiúsculas/minúsculas em Unicode |
| Comprimento do identificador |
| Índices COMPUTED BY (em expressão) |
| Arquitetura/Administração |
| SMP SuperServer (suporte a múltiplos núcleos) |
| Classic (instância por conexão) |
| SuperClassic |
| Múltiplas instâncias (em portas diferentes) |
| Aliases de bancos de dados |
| Re-roteamento entre instâncias de servidor |
| Log de write-ahead (WAL) |
| Recuperação point-in-time |
| Criação paralela de índices durante restore |
| Backup incremental |
| Tabelas de monitoramento do sistema |
| Cliente e servidor 64 bits |
| Versão embarcada |
| Embarcado para Android (móvel) |
| Embarcado para iOS (móvel) |
| ChangeViews ( o que é?) |
| Compressão de wire |
| Melhorias no protocolo de rede para redes de alta latência (para consultas SQL pela internet) |
| Replicação em nível de servidor (nativa) |
| Trace e auditoria |
| Validação online do banco de dados |
| Segurança |
| Banco de dados de segurança |
| Usuários no banco de dados |
| Criptografia do banco de dados |
| Criptografia de coluna |
| Múltiplas chaves de criptografia |
| Criptografia de wire |
| Direitos de usuário para DDL |
| Gerenciar usuários via SQL |
| UDF e funções embutidas |
| User Defined Functions |
| SDF também conhecidas como Server Defined Functions (mais rápidas que UDF) |
| Suporte a drivers e bibliotecas de cliente |
| Java |
| .NET |
| PHP |
| Python |
| ODBC |
| Node.JS/TypeScript |
| Golang |
| Yii2 |
| Ruby |
| Perl |
| Erlang |
| QT |
| Licenciamento/Preços |
| Preço por servidor (conexões ilimitadas) |
| Suporte da comunidade |
| Suporte profissional, por servidor |
| Ferramentas de recuperação, monitoramento, trace/auditoria, otimização e replicação nativa |
Fale conosco
Você tem alguma dúvida? Não hesite em nos contatar por e-mail!