Apresentação fb

Post on 04-Jul-2015

351 views 5 download

Transcript of Apresentação fb

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','rodrigo@hotmail.com')

Update

update clientes

set email='rodrigo@ig.com.br'

where codigo=1

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!