sábado, fevereiro 18, 2006

Banco de Dados

Introdução

Bancos de dados (ou bases de dados) são conjuntos de dados com uma estrutura regular que organizam informação. Essas estruturas costumam ter a forma de tabelas (cada tabela é composta por linhas e colunas). Informações utilizadas para um mesmo fim são agrupadas num banco de dados.
Em sistemas computacionais, bases de dados são geridas por um sistema gestor de bancos de dados, ou SGBD. A apresentação dos dados pode ser semelhante à de uma planilha eletrônica, porém os sistemas de gestão de banco de dados possuem características especiais para o armazenamento, classificação e recuperação dos dados.
Existe uma grande variedade de bancos de dados, desde exemplos simples como uma coleção de tabelas, até um modelo formalmente definido como o relacional.
Os bancos de dados são diferenciados por muitas características. A mais útil e usada é o modelo de programação..
O modelo plano, ou tabular, é basicamente uma matriz bi-dimensional de elementos de dados na qual todos os membros de uma dada coluna possuem valores de mesmo tipo, e todos os membros de uma linha estão relacionados entre si. Por exemplo, uma tabela de um banco de dados para segurança do SISTEMA pode ter colunas de nome e de senha; cada linha deve ter a senha específica associada a cada um dos usuários.
O modelo em rede amplia o modelo de tabela permitindo a adição de múltiplas tabelas. Uma coluna de tabela pode ser definida como uma referência a uma ou mais entradas de uma tabela diferente. Assim, as tabelas são relacionadas por meio de referências, o que pode ser visualizado como uma estrutura de rede. Um subconjunto particular do modelo de rede, o modelo hierárquico, limita os relacionamentos a uma estrutura de árvore, ao contrário da estrutura aplicada pelo modelo de rede completo.
De acordo com a arquitetura ANSI / SPARC em três níveis, os bancos de dados relacionais possuem três camadas: um conjunto de visões compondo o nível externo; uma coleção de estruturas de dados, a saber relações, compondo o nível conceitual; um conjunto de índices ou métodos de acesso a dados armazenados, compondo o nível interno.
A teoria relacional de banco de dados define um conjunto de operações lógicas, a saber a álgebra e o cálculo relacionais. Essas operações são a base da linguagem SQL.
Um dos pontos fortes do modelo relacional de banco de dados é a possibilidade de definição de um conjunto de restrições de integridade. Estas definem os conjuntos de estados e mudanças de estado consistentes do banco de dados, determinando os valores que podem e os que não podem ser armazenados.
Diferentemente dos bancos de dados em rede, nos bancos de dados relacionais os relacionamentos entre as tabelas não são codificados explicitamente na sua definição. Em vez disso, se fazem implicitamente pela a presença de atributos chave. Como resultado, bancos de dados relacionais podem ser reorganizados e utilizados de maneira flexível e de formas não previstas pelos projetistas originais. Por causa dessa flexibilidade, muitos bancos de dados são baseados no modelo relacional, embora imperfeitamente.
Todos os tipos de bancos de dados podem ter seu desempenho melhorado pelo uso de índices. O tipo mais comum de índice é uma lista ordenada dos valores de uma coluna de uma tabela, contendo ponteiros para as linhas associadas a cada valor. Um índice permite que o conjunto das linhas de uma tabela que satisfazem determinado critério sejam localizadas rapidamente. Há vários métodos de indexação utilizados comumente, como árvores B, hashes e listas encadeadas.
Em anos recentes, o modelo baseado na orientação a objeto vem sendo aplicado também aos bancos de dados, criando um novo modelo de programação conhecido como bancos de dados orientados a objeto. Os objetos são valores definidos segundo classes, ou tipos de dados complexos, com seus próprios operadores (métodos). Com o passar do tempo, os sistemas gestores de bancos de dados orientados a objeto e os bancos de dados relacionais baseados na linguagem SQL se aproximaram. Muitos sistemas orientados a objeto são implementados sobre bancos de dados relacionais baseados em linguagem SQL.
Os bancos de dados são utilizados em muitas aplicações, abrangendo praticamente todo o campo dos programas de computador. Os bancos de dados são o método de armazenamento preferencial para aplicações multiusuário, nas quais é necessário haver coordenação entre vários usuários. Entretanto, são convenientes também para indivíduos, e muitos programas de correio eletrônico e organizadores pessoais baseiam-se em tecnologias padronizadas de bancos de dados.
Um banco de dados é um conjunto de informações com uma estrutura regular. Um banco de dados é normalmente, mas não necessariamente, armazenado em algum formato de máquina lido pelo computador. Há uma grande variedade de bancos de dados, desde simples tabelas armazenadas em um único arquivo até gigantescos bancos de dados com muitos milhões de registros, armazenados em salas cheias de discos rígidos.
Bancos de dados caracteristicamente modernos são desenvolvidos desde os anos da década de 1960. Um pioneiro nesse trabalho foi Charles Bachman.
A maneira mais prática de classificar bancos de dados é de acordo com o modelo de programação associado ao banco de dados. Diversos modelos foram utilizados ao longo da história, por determinados períodos. Historicamente, o modelo de bancos de dados hierárquico foi implementado primeiro; então surgiu o modelo de bancos de dados em rede; daí o modelo de bancos de dados relacional surgiu e ganhou destaque, acompanhado daquilo que é chamado modelo plano (tabular) para fins mais diretos e simples. Os dois primeiros e o último nunca foram descritos teoricamente, e são classificados como modelos de dados unicamente em contraste com o modelo relacional (que tem uma teoria de suporte). Esses três modelos sem teoria própria surgiram basicamente a partir de estruturas e modelos de programação, não modelos de dados.
[editar]

Modelos de base de dados
O modelo plano (ou tabular) consiste de matrizes simples, bidimensionais, compostas por elementos de dados: inteiros, números reais, etc. Este modelo plano é a base das planilhas eletrônicas.
O modelo em rede permite que várias tabelas sejam usadas simultaneamente através do uso de apontadores (ou referências). Algumas colunas contêm apontadores para outras tabelas ao invés de dados. Assim, as tabelas são ligadas por referências, o que pode ser visto como uma rede. Uma variação particular deste modelo em rede, o modelo hierárquico, limita as relações a uma estrutura semelhante a uma árvore (hierarquia - tronco, galhos), ao invés do modelo mais geral direcionado por grafos.
Bases de dados relacionais consistem não de tabelas, mas de três componentes: uma coleção de estruturas de dados, nomeadamente relações, por vezes incorrectamente identificadas como tabelas; uma coleção dos operadores, a álgebra e o cálculo relacionais; e uma coleção de restrições da integridade, definindo o conjunto consistente de estados de base de dados e de alterações de estados. As restrições de integridade podem ser de quatro tipos: domínio (também conhecidas como type), atributo, relvar e restrições de base de dados.
Diferentemente dos modelos hierárquico e de rede, não existem quaisquer apontadores, de acordo com o Princípio de Informação: toda informação tem de ser representada como dados; qualquer tipo de atributo representa relações entre conjuntos de dados. As bases de dados relacionais permitem aos utilizadores (incluindo programadores) escreverem consultas (queries) que não foram antecipadas por quem projetou a base de dados. Como resultado, bases de dados relacionais podem ser utilizadas por várias aplicações em formas que os projetistas originais não previram, o que é especialmente importante em bases de dados que podem ser utilizadas durante décadas. Isto tem tornado as bases de dados relacionais muito populares no meio empresarial.
O modelo relacional é uma teoria matemática desenvolvida por Ted Codd para descrever como as bases de dados devem funcionar. Embora esta teoria seja a base para o software de bases de dados relacionais, muito poucos sistemas de gestão de bases de dados seguem o modelo de forma restrita e todos têm funcionalidades que violam a teoria, desta forma aumentando a complexidade e diminuindo o poder. Portanto não deveriam ser chamados sistemas de gestão de bases de dados relacionais, mas sim sistemas de SQL (ou outra linguagem).
[editar]

Traçando objectos em bancos de dados
Em recentes anos, o paradigma orientado a objeto foi aplicado a bancos de dados, enquanto criando um modelo de programação novo conhecido como object de objeto. Estes bancos de dados tentam superar algumas das dificuldades de usar objectos com o SQL DBMSs. Um programa orientado a objecto permite para objetos do mesmo tipo ter implementações diferentes e se comportar diferentemente, tão longo como eles têm a mesma interface (polymorphism). Isto não ajusta bem com um banco de dados de SQL onde tipos usuário-definidos são difíceis de definir e usar, e onde as Duas Grandes Asneiras prevalecem: a identificação de classes com mesas (a identificação correta é de classes com tipos, e de objetos com valores), e o uso de ponteiros.
Uma variedade de modos foi experimentada para armazenar objectos num banco de dados, mas há pequenos consensos em como isto deveria ser feito. Bancos de dados de objecto implementando desfazem os benefícios de modelo relacional introduzindo ponteiros e fazendo anúncio-hoc examina mais difícil. Isto é porque são essencialmente adaptações de rede obsoleta e bancos de dados de hiearchical a programação orientada a objeto. Como resultado, bancos de dados de objecto tendem ser usados para aplicações especializadas e bancos de dados de objecto de geral-propósito não foi muito popular. Em vez disso, são armazenados frequentemente objectos em bancos de dados de SQL que usam software de cartografia complicado. Ao mesmo tempo, SQL os vendedores de DBMS somaram características para permitir armazenar objectos mais convenientemente, enquanto vagueando até mesmo mais longe do modelo relacional.
[editar]

Aplicações de bancos de dados
Bancos de dados são usados em muitas aplicações, enquanto atravessando virtualmente a gama inteira de software de computador. Bancos de dados são o método preferido de armazenamento para aplicações multiusuárias grandes donde coordenação entre muitos usuários é necessária. Até mesmo usuários individuais os acham conveniente, entretanto, e muitos programas de correio eletrônico e os organizadores pessoais estão baseado em tecnologia de banco de dados standard.
[editar]

Aplicativo de Banco de Dados
Um Aplicativo de Banco de dados é um tipo de software exclusivo para gerenciar um banco de dados. Aplicativos de banco de dados abragem uma vasta variedade de necessidades e objectivos, de pequenas ferramentas como uma agenda, até complexos sistemas empresariais para desempenhar tarefas como a contabilidade.
O termo "Aplicativo de Banco de dados" usualmente se refere a softwares que oferecem uma interface para o banco de dados. O software que gerencia os dados é geralmente chamado de sistema de gerenciamento de banco de dados (SGBD) ou (se for embarcado) de "database engine".
Exemplos de aplicativos de banco de dados são Microsoft Visual FoxPro, Microsoft Access, dBASE, FileMaker , (em certa medida) HyperCard, MySQL e Oracle.
Em Março, 2004, AMR Research (como citado em um artigo da CNET News.com listado na secção de "Referências") previu que aplicações de banco de dados de código aberto seriam amplamente aceites em 2006.
[editar]

Transação
É um conjunto de procedimentos que é executado num banco de dados, que para o usuário é visto como uma única ação. A integridade de uma transação depende de 4 propriedades, conhecidas como ACID.
Atomicidade - Uma transação não pode ser executada pela metade, isto é, ou se executa ela por inteiro, ou se retorna para o estado anterior a transação, onde nada foi executado. Também chamado de Princípio do "Tudo ou Nada".
Consistência - Uma transação só executa se o estado do Banco de Dados permanecer consistente após seu fim.
Isolamento - Sua necessidade surge em execuções concorrentes, a intercalação das diversas transações que ocorrem simultaneamente, não podem ser intercaladas de forma a gerar um estado inconsistente.
Durabilidade - Quando ocorre falha no banco de dados, apos a execução com sucesso de uma transação, a durabilidade garante por algum mecanismo a recuperação das informações perdidas.
Na prática, alguns SGBDs relaxam na implementação destas propriedades buscando desempenho.
Controle de concorrência é um método usado para garantir que as transacções são executadas de uma forma segura e segue as regras ACID. Os SGBD devem ser capazes de assegurar que nenhuma ação de transações completadas com sucesso (committed transactions) seja perdida ao desfazer transações abortadas (rollback). Uma transação é uma unidade que preserva consistência. Requeremos, portanto, que qualquer escalonamento produzido ao se processar um conjunto de transações concorrentemente seja computacionalmente equivalente a um escalonamento produzindo executando essas transações serialmente em alguma ordem. Diz-se que que um sistema que garante esta propriedade assegura a [seriabilidade].

Nenhum comentário: