Bancos de Dados e Computação

Os homens mais primitivos utilizavam as pinturas rupestres, ao passo que os egípcios utilizavam hieróglifos. Mas anotações relacionadas às atividades diárias, de vendas, tábuas de maré, variações de clima  e  temperatura, fatos  do  cotidiano e também  fatos históricos, sempre existiram, a  partir do

 


momento que o homem criou a escrita, ou os desenhos que a substituiriam. Exemplos como esses, evidenciam que, desde sempre, o armazenamento de dados acompanha a humanidade em todas as suas fases de evolução.


 O termo foi criado na década de 1960 e utilizado oficialmente em 1968 na NATO Science Committee. Sua criação surgiu numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático, controlado e de qualidade mensurável) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de algoritmos, funções, módulos, objetos ou agentes interconectados, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.

 


“Dado”, pode ser definido como a matéria-prima ou o elemento básico para a geração de informações. É um elemento básico para um banco de dados. No passado, os dados eram armazenados em grandes salas, com grandes armários cheios de pastas que, por sua vez, continham fichas referentes aos procedimentos realizados e a diversas outras informações pertinentes ao uso das instituições. Esse tipo de organização pode ser entendido como um “banco de dados”.

Banco de dados seria então uma coleção de informações persistentes referentes a um tema específico. A função dessa coleção de informações, é atender às necessidades dos seus usuários, sejam elas uma simples consulta ou a geração de novas informações ou conhecimento.

O mesmo estilo de armazenamento representado por meio de armários, gavetas, pastas e fichas pode ser transportado para o mundo computacional. Assim surgiu o primeiro modelo de estrutura de banco de dados. O modelo baseado no gerenciamento de arquivos se utilizava da estrutura básica do sistema operacional, composta de diretórios e arquivos.

Na década de 1960, foi desenvolvido pela IBM o IMS (Information Management System), que tinha como base o modelo hierárquico. Esse modelo representou um grande avanço nas técnicas de armazenamento de dados, utilizando como referência uma estrutura em  árvore. Essa estrutura possibilita a organização dos registros através de ligações, nas quais cada registro possui vários campos e cada campo possui somente um valor.

Cada um dos registros possui dois segmentos: o superior e o subordinado. Eles são utilizados para a ligação com um outro registro, em um relacionamento pai-filho. O registro pai pode possuir vários filhos, mas os registros filhos só podem possuir um registro pai.

O primeiro computador eletro-mecânico foi construído por Konrad Zuse (1910–1995). Em 1936, esse engenheiro alemão construiu, a partir de relês que executavam os cálculos e dados lidos em fitas perfuradas, o Z1. Zuse tentou vender o computador ao governo alemão, que desprezou a oferta, já que

 

ele não poderia auxiliar no esforço de guerra. Os pr ojetos de Zuse ficariam parados durante a guerra, dando a chance aos americanos de desenvolver os seus próprios computadores. E foi na Segunda Guerra Mundial que realmente nasceram os computadores atuais. A Marinha americana, em conjunto com a Universidade de Harvard, desenvolveu o computador Harvard Mark I, projetado pelo professor Howard Aiken, com base no calculador analítico de Babbage. O Mark I ocupava 120m³ aproximadamente, conseguindo multiplicar dois números de dez dígitos em três segundos.

                                                                     O Ábaco chinês
Simultaneamente, e em segredo, o Exército Americano desenvolvia um projeto semelhante, chefiado pelos engenheiros J. Presper Eckert e John M auchy, cujo resultado foi o primeiro computador a válvulas, o Eletronic Numeric Integrator AndCalculator (ENIAC), capaz de fazer quinhentas multiplicações por segundo. Tendo sido projetado para calcular trajetórias balísticas, o ENIAC foi mantido em segredo pelo governo americano até o final da guerra, quando foi anunciado ao mundo.

Até ao final dos anos 70, reinavam absolutos os mainframes, computadores bolinha, Marigato, trancados em salas refrigeradas e operados apenas por poucos. Apenas grandes empresas e bancos podiam investir alguns milhões de dólares para tornar mais eficientes alguns processos internos e o fluxo de informações. A maioria dos escritórios funcionava mais ou menos da mesma maneira que no começo do século. Arquivos de metal, máquinas de escrever, papel carbono e memorandos faziam parte do dia a dia.

 

                Univac 1101, modelo de sucesso com transistores, ocupava uma ala (Foto: Reprodução/Creative Commons)




Em 1965, foi desenvolvida a primeira série de computadores pessoais, I2, 6 anos antes dos primeiros computadores pessoais ocidentais. Entretanto, segundo o Computer History Museum, o primeiro "computador pessoal" dito PC, foi o Kenbak-1, lançado em 1971. Tinha 256 bytes de memória e foi anunciado na revista Scientific American por US$ 888; todavia, não possuía CPU e era, como outros sistemas desta época, projetado para uso educativo (ou seja, demonstrar como um "computador de verdade" funcionava). Em 1975, surge o Altair 8800, um computador pessoal baseado na CPU Intel 8080. Vendido originalmente como um kit de montar através da revista norte-americana Popular Electronics, os projetistas pretendiam vender apenas algumas centenas de unidades, tendo ficado surpresos quando venderam 10 vezes mais que o previsto para o primeiro mês. Custava cerca de 400 dólares e se comunicava com o usuário através de luzes que piscavam. Entre os primeiros usuários estavam o calouro da Universidade de Harvard, Bill Gates, e o jovem programador, Paul Allen, que juntos desenvolveram uma versão da linguagem "Basic" para o Altair. Pouco tempo depois, a dupla resolveu mudar o rumo de suas carreiras e criar uma empresa chamada Microsoft.

Os computadores se tornam parte efetiva do trabalho das empresas juntamente com o crescimento da capacidade de armazenamento. Foram desenvolvidos dois principais modelos de dados: modelo em rede (CODASYL - Comitee for Data Systems Language) e o modelo hierárquico (IMS – Information Management System).

Os primeiros trabalhos foram realizados em 1964 por Charles Bachman; em que Dados são representados por uma coleção de registros e os relacionamentos por meio de links; É representado por um diagrama constituído por caixas e linhas;

 

Em 1970, Edgar Frank Codd propõe o modelo de dados relacional, que se tornou um marco em como pensar em banco de dados. Ele desconectou a estrutura lógica do banco de dados do método de armazenamento físico. Este sistema se tornou padrão desde então. Muitas discussões a respeito do valor da competição entre os sistemas enquanto a teoria de banco de dados conduz ao objetivo final de projeto de pesquisa. Dois principais protótipos de sistema relacional foram desenvolvidos entre 1974 e 1977 e demonstram um ótimo exemplo de como a teoria conduz a boas práticas.

Mas em 1976, o Dr. Peter Chen propõe o modelo Entidade-Relacionamento (ER) para projetos de banco de dados dando uma nova e importante percepção dos conceitos de modelos de dados. Assim como as linguagens de alto nível, a modelagem ER possibilita ao projetista concentrar-se apenas na utilização dos dados, sem se preocupar com estrutura lógica de tabelas.

Nos anos 80, a Linguagem Estruturada de Consulta – SQL (Structured Query Language) se torna um padrão mundial. A IBM transforma o DB2 como carro chefe da empresa em produtos para BD. Os modelos em rede e hierárquico passam a ficar em segundo plano praticamente sem desenvolvimentos utilizando seus conceitos, porém vários sistemas legados continuam em uso. O desenvolvimento do IBM PC desperta muitas empresas e produtos de BD como: RIM, RBASE 5000, PARADOX, OS/2 Database Manager, Dbase III e IV (mais tarde transformado em FoxBase e mais tarde ainda como Visual FoxPro), Watcom SQL, entre outros.

 

Sistemas Gerenciadores de Bancos de dados são usados em muitas aplicações, atravessando virtualmente a gama inteira de software de computador. Os Sistemas Gerenciadores de Bancos de dados são o método preferido de armazenamento/recuperação de dados/informações para aplicações multiusuárias grandes onde a coordenação entre muitos usuários é necessária. Até mesmo usuários individuais os acham conveniente, entretanto, muitos programas de correio eletrônico e organizadores pessoais estão baseados em tecnologia de banco de dados standard.


Banco de dados no início dos anos 90 

Tem início uma leve crise econômica nas indústrias e algumas empresas sobrevivem oferecendo alguns produtos a custos muito elevados. Muito desenvolvimento acontece em ferramentas de desenvolvimento para o desktop no desenvolvimento de aplicações (client tolls), tais como: PowerBuilder (Sybase), Oracle Developer, Visual Basic (Microsoft), entre outros.

O modelo cliente-servidor (client-server) passa a ser uma regra para futuras decisões de negócio e vemos o desenvolvimento de ferramentas de produtividade como Excel/Access (Microsoft) e ODBC, também é marcado como o início dos protótipos de Object Database Management Systems (ODBMS).

Metade dos anos 90

É quando se verifica a explosão da Internet./WWW e uma louca corrida para prover acesso remoto a sistemas de computadores com dados legados. Percebe-se um crescimento exponencial na tecnologia Web/BD.

Aumentam o uso de soluções de código aberto (open source) através de gcc, cgi, Apache, MySQL, etc.

Processos de transação em tempo real (OLTP - On-Line Transaction Process) e processos analíticos em tempo real (OLAP – On-Line Analitical Process) atingem maturidade através de muitos negócios utilizando os PDVs (Ponto de Venda).

 Final dos anos 90

O grande investimento em empresas de Internet impulsiona as vendas de ferramentas para conexão Web/Internet/BD. Active Server Pages, Front Page, Java Servlets, JDBC, Enterprise Java Beans, ColdFusion, Dream Weaver, Oracle Developer 2000, são um exemplo dessas ferramentas.

 Banco de dados no século 21

Vemos a decadência da indústria da Internet de uma maneira geral, mas sólidos crescimentos em aplicações para BD continuam. Aparecem mais aplicações que interagem com PDAs (Personal Digital Assistant), transações em PDVs, consolidação de vendas, etc. Três companhias predominam no amplo mercado de BD: IBM (que comprou a Informix), Microsoft e Oracle.

Banco de dados: 2003

Em 18 de abril, morre o pai do modelo relacional, o Dr. Edgar Frank “Ted” Codd. Aos 76 anos de idade, em sua casa na Flórida. Nascido em 1923 em Portland, na Inglaterra. O caçula de 07 irmãos, filho de pai fabricante de artigos de couro e mãe professora.

Quais as tendências?

Sistemas gigantescos (Terabytes) estão surgindo e necessitarão cada vez mais de novos recursos para manipulação e análise dos dados.

Estamos presenciando grandes projetos envolvendo BD como o projeto Genoma, geologia, segurança nacional e dados de exploração espacial. Data mining, data warehousing, data marts são técnicas utilizadas atualmente e no futuro serão utilizados cada vez mais, sem dúvida alguma. Sistemas de compras personalizadas e inteligentes serão fato e utilizarão histórico de vendas.

Sucessores do SQL (e quem sabe dos Sistemas de Gerenciamento de Banco de Dados Relacionais – RDBMS, em inglês) surgirão no futuro.

Hoje, existem diversos tipos de SGBDs, e cada um é adequado para uma necessidade dos clientes. São os mais comuns: Oracle, DB2, MySQL, SQL Server, PostgreSQL e outros.

 


Existem vários Modelos de Base de Dados: Modelo Plano (ou tabular), Modelo em Rede, Modelo Hierárquico, Modelo Relacional, Orientado a objetos e Objeto-Relacional.

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 por meio 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;

O modelo hierárquico é uma variação particular do modelo em rede, limita as relações a uma estrutura semelhante à de uma árvore (hierarquia - tronco, galhos), ao invés do modelo mais geral direcionado por grafos;

Bases de dados relacionais consistem, principalmente de três componentes:

Uma coleção de estruturas de dados, conhecidas como relações, ou informalmente tabelas;

Uma coleção dos operadores, a álgebra e o cálculo relacionais;

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: de domínio (também conhecidas como type), de atributo, relvar (variável relacional) e restrições de base de dados.

A tecnologia de banco de dados tem sido um tópico de pesquisa ativo desde 1960, tanto na academia como nos grupos de pesquisa e desenvolvimento de empresas (por exemplo IBM Research). A atividade de pesquisa inclui teoria e desenvolvimento de protótipos. Tópicos de pesquisa notáveis incluem modelos, o conceito de transação atômica e técnicas relacionadas: controle de concorrência, linguagens de consulta e métodos otimização de consulta, RAID e muito mais.

 

A área de pesquisa de banco de dados tem vários periódicos acadêmicos dedicados (ACM Transactions on Database Systems - TODS, Data and Knowledge Engineering - DKE) e conferências anuais como, (ACM SIGMOD, ACM PODS, VLDB , IEEE ICDE).

Atualmente, a Engenharia de software desenvolve tecnologias e práticas que englobam linguagens de programação, banco de dados, ferramentas, plataformas, bibliotecas, padrões de projeto de software, processo de software e qualidade de software. Além disso, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema computacional de qualidade e que atenda às necessidades de um requisitante de software.

Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. A área que estuda e avalia os processos de engenharia de software, propondo a evolução dos processos, ferramentas e métodos de suporte a engenharia de software é a Engenharia de Software Experimental.

Considerando que os princípios desta ciência incluem o Rigor e Formalidade, deve-se considerar que a engenharia de software é uma atividade criativa, mas que deve ser realizada de maneira sistemática; o Rigor é um complemento necessário à criatividade que visa aumentar a confiança dos desenvolvimentos de software. A Formalidade é o Rigor no seu nível mais elevado. Exemplos: Análise matemática (formal) da corretude do Programa, Análises sistemáticas de dados de testes, Documentação rigorosa dos passos de desenvolvimento e os passos de gerenciamento bem como a avaliação dos prazos de entrega.

A Incrementação é relacionada a evolução de um software através de incrementos estruturados. Pode ser realizado através da entrega de subconjuntos de um sistema desde cedo, visando coletar o feedback dos usuários e adicionar funcionalidades de forma incremental. O processo incremental deve focar inicialmente na funcionalidade, para então, pensarmos na performance da solução, naturalmente o protótipo amadurecerá e se tornará um produto.

Atualmente existe um destaque especial para a Engenharia de Software na Web. É o processo usado para criar WebApps (aplicações baseadas na Web) de alta qualidade. Embora os princípios básicos da WebE sejam muito próximos da Engenharia de Software clássica, existem peculiaridades específicas e próprias.Com o advento do B2B (e-business) e do B2C (e-commerce), e ainda mais com aplicações para a Web 2.0, maior importância ficou sendo esse tipo de engenharia. Normalmente adotam no desenvolvimento a arquitetura MVC (Model-View-Controller).

Outra área de tendência em Engenharia de Software trata da aplicação de técnicas otimização matemática para a resolução de diversos problemas da área. A área, denominada Search-based software engineering, ou Otimização em engenharia de software em Português, apresenta vários resultados interessantes]

Comentários

Postagens mais visitadas deste blog