Banco de Dados Firebird Ivanildo José de Sousa Aquino Júnior(JSAJ)
Visão Geral Oque é Interbase? O que é Firebird? Um pouco de história...
O que é Interbase Banco de dados comercial
O que é Interbase Fácil de administrar (instalar, manter, mover e modificar) Pequeno (5mb, 2milhões de linhas de código, etc)
O que é Firebird? Baseado no Interbase 6.0 Código aberto
Um pouco de história Firebird é beasado no código fonte do InterBase 6.0 que foi lançado como Open Source pela Borland em agosto de 2000. A história do InterBase teve início em 1984, logo, no total são 20 anos de história de banco de dados relacional como experiêncio do Firebird.
Histórico: Início Fazer o código funcionar Entender as convenções
Hoje Adicionados novos recursos Remoção de bugs Migração para C++ Reorganização e Simplificação
Recursos (1 de 3) SQL 89, SQL 92 e SQL99 Stored procedures Triggers Constraints Delimited Identifiers Index Compression
Recursos (2 de 3) Compressão de dados Localização Funções definidas pelos usuários Eventos Arrays Segurança baseada em regras
Recursos (3 de 3) A.C.I.D Read-only database (cd-rom) Generetors Onlinebackup Character Sets
v1.5: Características 100% compatível com a interface do Interbase Nova extensão padrão para o banco de dados (.fdb) Novo administrador de configuração de servidor (Firebird.conf substistitui IBConf)
v1.5: Novos recursos Triggers e SP Savepoints SAVEPOINT save_pointname; ROLLBACK [WORK] TO [SAVEPOINT] save_pointname; “CREATE OR ALTER” syntax Universal Triggers CREATE TRIGGER my_trigger FOR my_table BEFORE INSERT OR UPDATE… Declaração de variáveis aninhadas DECLARE [VARIABLE] name <variable_type> [{'=' | DEFAULT} value]; Exception re-initiate semantics (ie. Throw) Suporte para blocos “BEGIN … END” vazios
v1.5: Novos recursos SQL (1 de 2) Função com suporte para “CASE” Função com suporte para “COALESCE” Função com suporte para “NULLIF” “GROUP BY” suporta: By Function, Sub-Query, By Column Alias, and By ordinal (posição da coluna) “ORDER BY” expressão arbitrária “SELECT First X” e “ORDER BY” suporta Sub-Selects
v1.5: Novos recursos SQL (2 de 2) RECREATE VIEW NULL Ordering, como parte do padrão SQL92 User-Defined Constraint index names Index names now based on either constraint name, or user defined name Explicit locking in SELECT statements “SELECT … FOR UPDATE WITH LOCK” EXECUTE STATEMENT EXECUTE STATEMENT “…”; “Boolean” alias to SmallInt “BIGINT” alias to Numeric( 18, 0)
Equipe do Firebird 4 Administradores 56 Membros dos projetos 12 Desenvolvedores ativos
Banco de dados ativo Computed Fields Triggers Views com triggers Funções definas pelo usuário Filtros BLOB Stored procedures
Computed Fields Incluem uma fórmula em sua definição
Triggers SQL extendido Ações BEFORE e AFTER
Views com triggers Visões atualizáveis (Ações BEFORE e AFTER dos triggers) Visões não atualizáveis Uso de procedimentos
Funções definidas pelo Usuário Bibliotecas escritas em linguagem de programação Contexto de falta de conexão Retorna valores simples
Filtros BLOB Blob type translation Compressão Criptografia Edição Cascade Escritas em linguagem de programação
Stored procedures Encapsula mento de ações Construção de pseudo-tabelas Atomicidade
Linguagem dos triggers e procedimentos IF / THEN / ELSE BEGIN / END WHILE / DO Exceptions FOR SELECT … SUSPEND
Motivos para usar firebird (1/4) DBA não requerido Alta performance nas aplicações Versioning Arquitetura SuperServer
Motivos para usar firebird (2/4) Sinalizadores de Eventos Funções definidas pelo usuário UDFs Binary Large Objects Arrays Multidimensionais Banco de Dados distribuídos
Motivos para usar firebird (3/4) Junção de múltiplos banco de dados Versioning Commit em duas fases Recuperação distribuída de commit em duas fases Sistema de travamento otimista
Motivos para usar firebird (4/4) Flexibilidade de Plataforma Distribuição Livre Usuários de Peso
Exemplos consultas (adicionando usuários e regras) SQL> GRANT SELECT, UPDATE, INSERT, DELETE ON sales_catalog TO administrator; SQL> GRANT administrator TO TestAdmin; SQL> quit;
Exemplos consultas (inserindo e procurando dados) SQL> INSERT INTO sales_catalog VALUES('001', 'Aluminum Wok', 'Chinese wok'); SQL> SELECT * FROM sales_catalog;
Conclusões Ideal para banco de dados embutidos Possui todas os recursos comuns Baixa complexidade
Perguntas?