Apresentação FIREBIRDRodrigo Ribeiro Gonçalves
Origem Firebird
Em 1980, Jim Starkey
Analista da Digital
Equipment Corp, teve a
idéia de um sistema que
gerenciasse melhor a
concorrência
transacional...
Groton Systems
Com amigos e uma outra empresa
chamada APOLLO Systems, fundou
a Groton Systems em 1984.
A Grotom Systems desenvolveu um
software que se denominaria
INTERBASE...
Ashton Tate
De 1986 a 1991, a Grotom
entra em crise e começa a
ser comprada por uma
empresa chamada Ashton
Tate, detentora do dBase.
DBASE e CLIPPER
DBASE fez muito suce$$o nos anos 80 com o Clipper
Borland
Em 1992, a Ashton Tate passar por
dificuldades .... E acaba sendo
comprada pela Borland Corporation,
desenvolvedora do Delphi e C++
Builder.
Ano 2000...
No ano 2000, a Borland decide tornar o Interbase um projeto Open Sourcesob a licença Mozilla PublicLicense....
E seis meses depois
muda de idéia!
Mas foi tarde demais...
O tempo que o código ficou
disponível, foi suficiente
para que um fork do projeto
fosse criado...
Nasceu então, Firebird SQL
Firebird SQL
Open Source
Multi-plataforma
ACID
Mantido pela Firebird
Foundation
Problemas...
Poucas atualizações, não tem uma empresa forte patrocinando
Não tem suporte a dados geográficos (GIS), clustering, backups parciais, entre algumas funcionalidades que já existem em outros bancos mais atuais...
Versões
2001 – Firebird 1.0.0
2002 – Firebird 2.0.0
2012 – Firebird 2.5.2
QUEM USA???
Prefeitura Municipal de Praga –
República TCheca
QUEM USA?
MOSCOW INTERBANK CURRENCY EXCHANGE
STAR AIRLINES
CASO DE USO.... Sistema Analítico
para o Hospital Municipal de Moscow City
Hospital
Hospital Municipal de Moscow
700 Leitos
400 funcionários
20 INTERNAÇÕES/DIA
Hospital Municipal de Moscow
O PROBLEMA
Até 2008 um sistema legado
que atendia as necessidades
de entrada de dados e
relatórios básicos.
MASSS..... NÃO TINHA
FUNÇÕES ANALÍTICAS!!!!
HOSPITAL DE MOSCOW - PROBLEMA
Haviam relatórios
importantes que
requeriam análises e
estruturas de dados mais
complexas das que eram
usadas até o momento….
CUSTOS DO ORACLE...
ORACLE custaria U$ 15.000 (2002)
por servidor mais taxas altas de
suporte vitalícias (enquanto a
empresa usasse o SGBD).
REQUISITOS TÉCNICOS
COMPLEXIDADE dos algorítimos de análise
médica, implicava que os dados fossem
armazenados em tabelas desnormalizadas,
com leitura e escrita dos dados a serem
inseridos dentro das TRIGGERS.
REQUISITOS TÉCNICOS
Isto não pode ser feito no ORACLE, que
chama isso de DATA MUTATION.
Isto forçaria o uso de operações
assíncronas
O FIREBIRD atende todos os requisitos....
Firebird 2.0 foi usado no novo sistema
Atualmente o Banco de dados tem 2
GB com crescimento de 50 mb por
mês
Há um planejamento de controle de
farmácias vinculadas ao Hospital
Há planejamento de migração para o
FB 2.5
Outros diferenciais que influenciaram na
escolha...
As procedures retornam DATASETS sem
necessidade de tabelas temporárias
É possível gerar exceções dentro de
procedures e triggers
A ESCOLHA DA TECNOLOGIA
ESTÁ RELACIONADA AO
DESAFIO ...
Mas as vezes, outros intere$$es estão
no caminho....
OUTROS CASES INTERESSANTES....
http://www.firebirdsql.org/en/case-studies-catalog/
INSTALAÇÃO
Download
http://www.firebirdsq
l.org/en/firebird-2-5-
2-upd1/.
Instalação
Instalação
Instalação
Instalação
Classic ou Super Server
Diferença é o modo de
processamento:
Classic usa um processo separado
para cada conexão, e o super usa
um único processo, e por este
motivo gerencia melhor os
recursos do servidor....
Instalação
Instalação
Instalação
Softwares gerenciadores do FB
Firebird não tem uma interface oficial de
acesso...
Existem produtos gratuitos e pagos desenvolvidos
por empresas independentes.
DESTAQUE PARA IBExpert (EUR 55)
O turbo admin
Gratuito, OPEN SOURCE.... Disponível no
SOURCEFORGE.NET
Usando o Turbo Admin
Data e hora atual...
Criando um banco de dados
Estrutura de um Banco de dados Firebird
É composta apenas por um arquivo
com terminação .FDB ou .IDB (arquivos
originados do Interbase)
Registrando
Conexão com o banco de dados
Diferente de outros SGDBs, uma conexão no Firebird é realizada referenciando um ARQUIVO, através do listener do Firebird.
É possível acessar apenas o arquivo FDB, sem ter um servidor instalado, usando apenas a DLL Dgs32.dll ou fbclient.dll
Acessando o banco de dados
Funcionalidades do Firebird
Tipos de dados no Firebird
algumas diferenças SQL
SERVER:
DATE, DATETIME e
SMALLDATETIME não
existem...apenas TIMESTAMP
BIT só pode ser simulado com
CHAR(1)
Criando uma tabela no FBCREATE TABLE Clientes(
Nome varchar(100),
Endereco varchar(100),
Telefone varchar(25),
Email varchar(100),
DataNascimento timestamp,
Codigo int,
CEP varchar(10),
VALOR NUMERIC(18,2)
)
Criando um campo auto-incremento
Não existe a propriedade auto-
increment no Firebird, para
fazer esta funcionalidade é
necessário usar os generators
Criando um Generator
CREATE GENERATOR gen_t1_id;
SET GENERATOR gen_t1_id TO 0;
Criando uma Trigger que referencia o
Generatorset term !! ;
CREATE TRIGGER T1_BI FOR Clientes
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
if (NEW.codigo is NULL) then NEW.codigo =
GEN_ID(GEN_T1_ID, 1);
END!!
set term ; !!
EXEMPLO DE READ/WRITE EM TRIGGERS
FIREBIRD
create trigger biu_parts for parts
before insert or update
as
begin
/* conditional code when inserting: */
if (inserting and new.id is null) then
new.id = gen_id(gen_partrec_id, 1);
new.partname_upper = upper(new.partname);
end
CRIAR UMA EXCEÇÃO
Create Exception ExErroProc
'Erro ao executar procedure';
Executando um Insert
Insert into
Clientes(Codigo, Nome, email)
values
(null,'Rodrigo Ribeiro','[email protected]')
Criar uma procedure
create procedure AlteraValor(a integer,b
numeric(18,2))
returns (c int)
as
begin
update clientes
set valor=:b
where codigo=:a;
End
Executar a procedure
execute procedure
AlteraValor(1,10);
CRIANDO EXCEÇÕES
CREATE EXCEPTION ExErroProc 'Erro ao
executar procedure';
Usando EXCEÇÕES
create procedure Atualiza(a integer)
returns (c int)
as
begin
if (:a = 0) then
exception ExErroProc;
End;
EXECUTE PROCEDURE Atualiza(0);
Criando uma tabela com CHAVE
PRIMÁRIA
CREATE TABLE tbcategories (
code int ,
description varchar(150) ,
PRIMARY KEY (code)
)
Criando uma CHAVE ESTRANGEIRA
CREATE TABLE tbproducts (
code int ,
description varchar(150) ,
salevalue decimal(18,2) ,
active int,
category int
REFERENCES tbcategories,
PRIMARY KEY (code)
)
Paliativo...usar procedure para retornar
uma informação...
CREATE PROCEDURE SEARCH_CLIENTE(
COD INT)
RETURNS (
NAME VARCHAR(150))
AS
BEGIN
select NOME from CLIENTES
where CODIGO = :COD
INTO :NAME;
END
DECLARE VARIABLE NAME VARCHAR(150)
EXECUTE PROCEDURE SEARCH_CLIENTE(1)
RETURNING_VALUES :NAME;
BACKUP
Backup e Restore
O arquivo pode ter qualquer
terminação
Não há retro-
compatibilidade entre
versões
Restore
OBRIGADO!
Top Related