Banco de Dados FIREBIRD

O Sistema AUDITOR utiliza em suas aplicações o Banco de Dados FIREBIRD.

Firebird (algumas vezes chamado de FirebirdSQL) é um sistema gerenciador de banco de dados. Roda em Linux, Windows, Mac OS e uma variedade de plataformas Unix. A Fundação FirebirdSQL coordena a manutenção e desenvolvimento do Firebird, sendo que os códigos fonte são disponibilizados sob o CVS da SourceForge.

Baseado no código do InterBase da Borland, quando da abertura de seu código na versão 6.0 (em 25 de Julho de 2000), alguns programadores em associação, assumiram o projecto de identificar e corrigir inúmeros defeitos da versão original, surgindo aí o Firebird 1.0, que se tornou um banco com características próprias, obtendo uma aceitação imediata no círculo de programadores. A versão mais recente estável é a 2.5. Ela tem uma nova arquitetura chamada SuperClassic, que fará a ponte para a versão 3.0, que sairá em breve e oferecerá suporte total a SMP. O Firebird é gratuito em todos os sentidos: não há limitações de uso, e seu suporte amplamente discutido em listas na Internet, o que facilita enormemente a obtenção de ajuda técnica. O Firebird receberá tambem uma versão mobile para Android o sistema operacional da Google para dispositivos móveis.
O produto é bastante seguro e confiável, suportando sistemas com centenas de usuários simultâneos e bases de dados com dezenas/centenas de gigabytes. Há suporte gratuito na Internet através de vários sítios.

Desde sua primeira versão, oferece recursos de um verdadeiro SGBD, como: compatibilidade ACID, transações MVCC, triggers, procedures, collations, UDFs, etc.

O Firebird é amplamente utilizado em todo o mundo, com a maior base de usuários no Brasil, Rússia e Europa.

Documentação do FIREBIRD:

Há um número enorme de documentos, FAQs e artigos disponíveis no site oficial do Firebird. Você também pode verificar se existe uma comunidade ou lista de discussão, a fim de obter suporte.

Todas essas informações podem ser encontradas nas diversas seções do site oficial do Firebird. Acesse periodicamente o site www.firebirdnews.org para ficar atualizado quanto às notícias mais recentes do mundo Firebird.

Principais Recursos:

Não se engane com o tamanho do instalador! O Firebird é um SGBD completo e poderoso. Ele pode gerenciar bancos de dados de alguns Kbytes até dezenas de Gigabytes com boa performance e praticamente sem necessidade de manutenção!
Abaixo segue uma lista dos principais recursos do Firebird:
· Suporte total a Stored Procedures e Triggers
· Transações compatíveis com ACID
· Integridade Referencial
· Multi Generational Architecture
· Consome poucos recursos de processamento
· Linguagem nativa para Stored Procedures e Triggers (PSQL)
· Suporte para Funções Externas (UDFs)
· Praticamente não necessita de DBAs especializados
· Quase nenhuma configuração - instale e já comece a usar!
· Grande comunidade de usuários e vários lugares para se obter suporte gratuito
· Versão embedded do SGBD - perfeita para criação de catálogos em CDROM, aplicações "demo" ou standalone
· Dezenas de ferramentas de terceiros, incluindo aplicações gráficas de administração, replicação, etc.
· Careful writes - recuperação rápida, dispensa o uso de log de transações!
· Diversas formas de acesso ao banco de dados: nativo/API, dbExpress, ODBC, OLEDB, .Net provider, JDBC nativo tipo 4, Python module, PHP, Perl, etc.
· Suporte nativo para os maiores sistemas operacionais, incluindo o Windows, Linux, Solaris, MacOS.
· Backups incrementais
· Builds de 64bits disponíveis
· Total controle de cursores em PSQL
· Tabelas de Monitoramento
· Triggers de conexão e transação
· Tabelas temporárias
· TraceAPI - saiba o que está acontecendo no servidor

Características principais:

_ Conceito A.C.I.D
_ Character Sets
_ MGA
_ Procedimentos Armazenados (Stored Procedures)
_ Geradores (Generators)
_ Backups Online
_ Gatilhos (Triggers)

Cada tabela pode ter múltiplos gatilhos (Triggers) que são disparados para cada linha da tabela antes ou depois de Inserts, Updates ou Deletes. Dentro de um gatilho, a riqueza da PSQL pode ser usada para aplicar valores padrões, assegurar a integridade dos dados, gerar exceções, etc. A novidade no Firebird 1.5 são os "Gatilhos universais": Aqui você pode ter um único gatilho para manipular Inserts, Updates e/ou Deletes na tabela de uma só vez.

_ Funções Externas (External Functions)
_ Integridade Referencial em Cascata

Assegura consistência e validade de um relacionamento 1-N (Pai e Filho) entre tabelas.

Integridade Referencial no Firebird:

Em resumo, integridade referencial é um conceito de banco de dados que garante que todos os relacionamentos propostos entre tabelas no modelo de entidade-relacionamento (ER) serão respeitados dando a certeza que os dados de um banco de dados estarão íntegros. Esses relacionamentos são baseados nas definições de uma chave primária e uma chave estrangeira, além de regras pré-definidas para a manipulação dessas chaves.

O Firebird suporta integridade referencial, junções, visões, funções definidaspelo usuário e, principalmente, a programação cliente/servidor através de procedimentos armazenados e gatilhos. Este banco de dados, dispensa maiores estruturas dentro da empresa ( DBA / Preparação ), onde basta instalar o software e usá-lo, sem a interferência freqüente de profissionais, especializados na manutenção do banco de dados de produção. É extremamente bem apropriado, por embutir dentro de aplicações distribuídas. Acompanhando isso tudo, ele ainda dispensa o uso de superservidores, usando pouco espaço em disco para sua instalação e utilizando pouca memória em situações normais de uso. Por isso a plataforma necessária para a sua instalação e utilização pode ser reduzida diminuindo consideravelmente os custos do projeto.

Firebird é um SGBD(Sistema Gerenciador de Banco de Dados) SQL completo. É poderoso e leve ao mesmo tempo, com mínima necessidade de configuração e administração.
Atende igualmente bem a aplicações de um único usuário e a aplicações corporativas. Um simples servidor Firebird pode manipular múltiplas bases de dados independentes, cada uma com múltiplas conexões clientes. E o melhor de tudo: é verdadeiramente Open Source, assim, livre de qualquer exigência de licenças, mesmo para uso comercial.

 

Conceitos de IR (Integridade Referencial)
A figura abaixo mostra alguns conceitos de IR e o uso de sua terminologia:

O Sistema Gerenciador de Banco de Dados e a integridade dos dados:

Os SQL statements INSERT, DELETE e UPDATE modificam as informações em um banco de dados existente. Toda vez que os dados são alterados existe a possibilidade da integridade lógica ser afetada. Por exemplo, a inserção de um produto inexistente em um pedido de cliente. E, ainda, um cliente pode ser eliminado mesmo tendo pedidos pendentes em seu nome. Em ambos os casos houve perda da integridade das informações.

A integridade de dados em SGDBs é uma combinação de:

· Integridade semântica: o dado de uma coluna sempre será do tipo de dado definido na criação da coluna
· Integridade de entidade: cada linha de uma tabela possui um indicador que garanta a unicidade da mesma
· Integridade referencial: os relacionamentos lógicos entre as entidades serão forçados pelos SGDB
· Integridade de domínio: domínio é um conjunto de valores previamente definido no qual uma coluna só poderá conter valores pertencentes a esse domínio

Quando bem definido um banco de dados, provavelmente estes quatro conceitos de integridade serão aplicados.

Integridade Semântica

A integridade semântica garante que o dado inserido em uma linha da tabela seja um valor válido. Para esse valor ser válido deve ser do mesmo tipo de dados definido na especificação da coluna na tabela. Por exemplo, um atributo de uma determinada entidade definido como DATA só conterá dados relativos a DATA. É a certeza que no campo DATA_CONTRATACAO só terá datas válidas. Caso um SGDB permita a inserção de um outro tipo de dado diferente do definido, a integridade semântica será violada.
A integridade semântica em um SGDB é aplicada com a utilização de constraints.

Constraints (Restrições )

Constraint pode ser definido resumidamente como uma regra que limita o valor que pode ser inserido, modificado ou eliminado em uma tabela. Na linguagem SQL temos os seguintes tipos de constraints:

· Constraint de dados
· Constraint NOT NULL (não nulo)
· Constraint única
· Constraint de validação (check constraint)

Constraint de dados
Esse tipo de constraint pode ser considerado o mais simples e por muitas vezes ignorado como um constraint. Ele é o que delimita o tipo de dado de cada coluna em uma tabela. Os tipos de informações disponíveis na maioria dos SGDBs existentes pode ser dividia em:

· Numérico
· Alfanumérico ou caracteres
· Data e tempo
· Grandes objetos

 

Para servidores firebird de múltiplas conexões os preferidos são,  Classic Server e Superserver

Em servidores Windows,

Na pasta de instalação do firebird, editar o arquivo firebird.conf

Para Superserver da versão 2.5  ou mais nova

Altere  CpuAffinityMask, de acordo com número de processadores

CpuAffinityMask = 1

Usa apenas a primeira CPU (CPU 0).

CpuAffinityMask = 2

usa apenas a segunda CPU (CPU 1).

CpuAffinityMask = 3

Usa a primeira e segunda CPU.

CpuAffinityMask = 15

Usa as 4 CPUs.

CpuAffinityMask = 255

Usa as 8 CPUs.

 

Após fazer alteração, necessário reiniciar o serviço.

Para Classic Server (CpuAffinityMask é ignorado)

Em servidor Windows, é necessário definir a afinidade do processo no gerenciador de tarefas para usar todos processadores;

Fontes:

http://www.firebirdsql.org/manual/qsg25-appx-architectures.html

http://www.sinatica.com/blog/br/index.php/artigos/firebird-superserver-classicserver-ou-superclassic (Informação  sobre funcionamento dos servidores FIREBIRD)

Ver também: Instalação e Inicialização do FIREBIRD