Apresentação fb

70
Apresentação FIREBIRD Rodrigo Ribeiro Gonçalves

Transcript of Apresentação fb

Page 1: Apresentação fb

Apresentação FIREBIRDRodrigo Ribeiro Gonçalves

Page 2: Apresentação fb

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...

Page 3: Apresentação fb

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...

Page 4: Apresentação fb

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.

Page 5: Apresentação fb

DBASE e CLIPPER

DBASE fez muito suce$$o nos anos 80 com o Clipper

Page 6: Apresentação fb

Borland

Em 1992, a Ashton Tate passar por

dificuldades .... E acaba sendo

comprada pela Borland Corporation,

desenvolvedora do Delphi e C++

Builder.

Page 7: Apresentação fb

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!

Page 8: Apresentação fb

Mas foi tarde demais...

O tempo que o código ficou

disponível, foi suficiente

para que um fork do projeto

fosse criado...

Page 9: Apresentação fb

Nasceu então, Firebird SQL

Page 10: Apresentação fb

Firebird SQL

Open Source

Multi-plataforma

ACID

Mantido pela Firebird

Foundation

Page 11: Apresentação fb

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...

Page 12: Apresentação fb

Versões

2001 – Firebird 1.0.0

2002 – Firebird 2.0.0

2012 – Firebird 2.5.2

Page 13: Apresentação fb

QUEM USA???

Page 14: Apresentação fb

Prefeitura Municipal de Praga –

República TCheca

QUEM USA?

Page 15: Apresentação fb

MOSCOW INTERBANK CURRENCY EXCHANGE

Page 16: Apresentação fb

STAR AIRLINES

Page 17: Apresentação fb

CASO DE USO.... Sistema Analítico

para o Hospital Municipal de Moscow City

Hospital

Page 18: Apresentação fb

Hospital Municipal de Moscow

700 Leitos

400 funcionários

20 INTERNAÇÕES/DIA

Page 19: Apresentação fb

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!!!!

Page 20: Apresentação fb

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….

Page 21: Apresentação fb

CUSTOS DO ORACLE...

ORACLE custaria U$ 15.000 (2002)

por servidor mais taxas altas de

suporte vitalícias (enquanto a

empresa usasse o SGBD).

Page 22: Apresentação fb

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.

Page 23: Apresentação fb

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

Page 24: Apresentação fb

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

Page 25: Apresentação fb

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

Page 26: Apresentação fb

A ESCOLHA DA TECNOLOGIA

ESTÁ RELACIONADA AO

DESAFIO ...

Mas as vezes, outros intere$$es estão

no caminho....

Page 27: Apresentação fb

OUTROS CASES INTERESSANTES....

http://www.firebirdsql.org/en/case-studies-catalog/

Page 28: Apresentação fb

INSTALAÇÃO

Page 29: Apresentação fb

Download

http://www.firebirdsq

l.org/en/firebird-2-5-

2-upd1/.

Page 30: Apresentação fb

Instalação

Page 31: Apresentação fb

Instalação

Page 32: Apresentação fb

Instalação

Page 33: Apresentação fb

Instalação

Page 34: Apresentação fb

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....

Page 35: Apresentação fb

Instalação

Page 36: Apresentação fb

Instalação

Page 37: Apresentação fb

Instalação

Page 38: Apresentação fb

Softwares gerenciadores do FB

Firebird não tem uma interface oficial de

acesso...

Existem produtos gratuitos e pagos desenvolvidos

por empresas independentes.

Page 39: Apresentação fb

DESTAQUE PARA IBExpert (EUR 55)

Page 40: Apresentação fb

O turbo admin

Gratuito, OPEN SOURCE.... Disponível no

SOURCEFORGE.NET

Page 41: Apresentação fb

Usando o Turbo Admin

Page 42: Apresentação fb

Data e hora atual...

Page 43: Apresentação fb

Criando um banco de dados

Page 44: Apresentação fb

Estrutura de um Banco de dados Firebird

É composta apenas por um arquivo

com terminação .FDB ou .IDB (arquivos

originados do Interbase)

Page 45: Apresentação fb

Registrando

Page 46: Apresentação fb

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

Page 47: Apresentação fb

Acessando o banco de dados

Page 48: Apresentação fb

Funcionalidades do Firebird

Page 49: Apresentação fb

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)

Page 50: Apresentação fb

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)

)

Page 51: Apresentação fb

Criando um campo auto-incremento

Não existe a propriedade auto-

increment no Firebird, para

fazer esta funcionalidade é

necessário usar os generators

Page 52: Apresentação fb

Criando um Generator

CREATE GENERATOR gen_t1_id;

SET GENERATOR gen_t1_id TO 0;

Page 53: Apresentação fb

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 ; !!

Page 54: Apresentação fb

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

Page 55: Apresentação fb

CRIAR UMA EXCEÇÃO

Create Exception ExErroProc

'Erro ao executar procedure';

Page 56: Apresentação fb

Executando um Insert

Insert into

Clientes(Codigo, Nome, email)

values

(null,'Rodrigo Ribeiro','[email protected]')

Page 57: Apresentação fb

Update

update clientes

set email='[email protected]'

where codigo=1

Page 58: Apresentação fb

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

Page 59: Apresentação fb

Executar a procedure

execute procedure

AlteraValor(1,10);

Page 60: Apresentação fb

CRIANDO EXCEÇÕES

CREATE EXCEPTION ExErroProc 'Erro ao

executar procedure';

Page 61: Apresentação fb

Usando EXCEÇÕES

create procedure Atualiza(a integer)

returns (c int)

as

begin

if (:a = 0) then

exception ExErroProc;

End;

EXECUTE PROCEDURE Atualiza(0);

Page 62: Apresentação fb

Criando uma tabela com CHAVE

PRIMÁRIA

CREATE TABLE tbcategories (

code int ,

description varchar(150) ,

PRIMARY KEY (code)

)

Page 63: Apresentação fb

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)

)

Page 64: Apresentação fb

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

Page 65: Apresentação fb

DECLARE VARIABLE NAME VARCHAR(150)

EXECUTE PROCEDURE SEARCH_CLIENTE(1)

RETURNING_VALUES :NAME;

Page 66: Apresentação fb

BACKUP

Page 67: Apresentação fb

Backup e Restore

O arquivo pode ter qualquer

terminação

Não há retro-

compatibilidade entre

versões

Page 68: Apresentação fb
Page 69: Apresentação fb

Restore

Page 70: Apresentação fb

OBRIGADO!