Prof. Me.

Edson Yanaga

BANCO DE DADOS

grADuAçãO ANáliSE E DESENvOlvimENtO DE SiStEmAS SiStEmAS pArA iNtErNEt
mAriNgá-pr 2012

reitor: Wilson de Matos Silva vice-reitor: Wilson de Matos Silva Filho pró-reitor de Administração: Wilson de Matos Silva Filho presidente da mantenedora: Cláudio Ferdinandi

NEAD - Núcleo de Educação a Distância
Diretoria do NEAD: Willian Victor Kendrick de Matos Silva Coordenação pedagógica: Gislene Miotto Catolino Raymundo Coordenação de marketing: Bruno Jorge Coordenação Comercial: Helder Machado Coordenação de tecnologia: Fabrício Ricardo Lazilha Coordenação de Curso: Danillo Xavier Saes Supervisora do Núcleo de produção de materiais: Nalva Aparecida da Rosa Moura Capa e Editoração: Daniel Fuverki Hey, Fernando Henrique Mendes, Jaime de Marchi Junior, José Jhonny Coelho, Luiz Fernando Rokubuiti e Thayla Daiany Guimarães Cripaldi Supervisão de materiais: Nádila de Almeida Toledo revisão textual e Normas: Cristiane de Oliveira Alves, Gabriela Fonseca Tofanelo, Janaína Bicudo Kikuchi, Jaquelina Kutsunugi, Karla Regina dos Santos Morelli e Maria Fernanda Canova Vasconcelos.

Ficha catalográfica elaborada pela Biblioteca Central - CESUMAR

C397

CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a distância: Banco de dados / Edson Yanaga. Maringá - PR, 2012. 143 p. “Graduação em Análise e Desenvolvimento de Sistemas e Sistemas para Internet - EaD”. 1. Banco de dados. 2. Arquitetura de sistemas. 3.EaD. I. Título. CDD - 22 ed. 005.74 CIP - NBR 12899 - AACR/2

“As imagens utilizadas neste livro foram obtidas a partir dos sites pHOtOS.COm e SHuttErStOCK.COm”.

Av. Guedner, 1610 - Jd. Aclimação - (44) 3027-6360 - CEP 87050-390 - Maringá - Paraná - www.cesumar.br NEAD - Núcleo de Educação a Distância - bl. 4 sl. 1 e 2 - (44) 3027-6363 - ead@cesumar.br - www.ead.cesumar.br

BANCO DE DADOS
Prof. Me. Edson Yanaga

.

Cada um de nós tem uma grande responsabilidade: as escolhas que fizermos por nós e pelos nossos fará grande diferença no futuro. incentivando a educação continuada. a realização de uma prática acadêmica que contribua para o desenvolvimento da consciência social e política e. consolidação da extensão universitária. o Cesumar – Centro Universitário de Maringá – assume o compromisso de democratizar o conhecimento por meio de alta tecnologia e contribuir para o futuro dos brasileiros. formando profissionais cidadãos que contribuam para o desenvolvimento de uma sociedade justa e solidária” –. Diante disso. o Cesumar almeja ser reconhecido como uma instituição universitária de referência regional e nacional pela qualidade e compromisso do corpo docente. a democratização do conhecimento acadêmico com a articulação e a integração com a sociedade. novas habilidades para liderança e solução de problemas com eficiência tornou-se uma questão de sobrevivência no mundo do trabalho. conhecimento de qualidade. processos de cooperação e parceria com o mundo do trabalho. A busca por tecnologia. informação. bem-estar e satisfação da comunidade interna. qualidade da oferta dos ensinos presencial e a distância. compromisso social de inclusão. o Cesumar busca a integração do ensino-pesquisa-extensão com as demandas institucionais e sociais. qualidade da gestão acadêmica e administrativa. Com essa visão. Professor Wilson de Matos Silva Reitor BANCO DE DADOS | Educação a Distância 5 .AprESENtAçãO DO rEitOr Viver e trabalhar em uma sociedade global é um grande desafio para todos os cidadãos. por fim. como também pelo compromisso e relacionamento permanente com os egressos. No cumprimento de sua missão – “promover a educação de qualidade nas diferentes áreas do conhecimento. aquisição de competências institucionais para o desenvolvimento de linhas de pesquisa.

1996. possibilitamos que. mas criar as possibilidades para a sua produção ou a sua construção” (FREIRE.CESUMAR 6 BANCO DE DADOS | Educação a Distância . enfim.Caro(a) aluno(a). responder às atividades de autoestudo. Assim sendo. aulas sobre os conteúdos abordados. ver as indicações de leitura e realizar novas pesquisas sobre os assuntos tratados. assim. têm por intuito possibilitar o desenvolvimento de novas competências necessárias para que você se aproprie do conhecimento de forma colaborativa. Todas as atividades de estudo presentes neste material foram desenvolvidas para atender o seu processo de formação e contemplam as diretrizes curriculares dos cursos de graduação. p. recomendo que durante a realização de seu curso. um mundo de linguagens diferenciadas e ricas de possibilidades efetivas para a sua aprendizagem. dispomos de uma equipe de profissionais multidisciplinares para que. você construa e amplie a sua rede de conhecimentos. fazer anotações. independente da distância geográfica que você esteja. por meio de um modelo pedagógico interativo. “ensinar não é transferir conhecimento. disponibilizadas para o seu processo de formação. atividades de estudo. assim. buscando atender essas necessidades. pois tais atividades lhe possibilitarão organizar o seu processo educativo e. participar ativamente dos fóruns. Desta forma. Neste sentido. Um grande abraço e ótimos momentos de construção de aprendizagem! Professora Gislene Miotto Catolino Raymundo Coordenadora Pedagógica do NEAD. Essa interatividade será vivenciada especialmente no ambiente virtual de aprendizagem – AVA – no qual disponibilizamos. além do material produzido em linguagem dialógica. colaborar efetivamente para o desenvolvimento da realidade social em que está inserido. superar os desafios na construção de conhecimentos. você terá à sua disposição todas as condições para se fazer um competente profissional e. Tenho a certeza de que no Núcleo de Educação a Distância do Cesumar. você procure interagir com os textos. possamos interagir e. todas as atividades de ensino. fazer-se presentes no seu processo de ensino-aprendizagem-conhecimento. efetivamente. 25). Para finalizar essa mensagem de boas-vindas. Portanto. lhe estendo o convite para que caminhe conosco na Comunidade do Conhecimento e vivencie a oportunidade de constituir-se sujeito do seu processo de aprendizagem e membro de uma comunidade mais universal e igualitária. assim. determinadas pelo Ministério da Educação (MEC).

AprESENtAçãO livro: BANCO DE DADOS Professor Me. Tive o prazer de ser membro do comitê técnico do JavaOne Latin America nas edições de 2010 e 2011. Tenho um enorme prazer em apresentar-lhe o livro de Banco de Dados. Certified ScrumMaster. Apresento palestras em diversos eventos em nível nacional e internacional. UEM. como Cesumar.4. Até certo ponto é uma repetição cansativa dizer que o ritmo das mudanças e inovações cada vez mais se acelera. e desde 2008 já era adepto e entusiasta da computação em nuvem (cloud computing). caríssimo(a) leitor(a). Sun Certified Web Component Developer for J2EE 1. Sun Certified Specialist for NetBeans IDE.4. Possuo as seguintes certificações: Oracle Certified Professional. a disciplina de banco de dados passou por profundas transformações que chacoalharam os alicerces de fundamentos criados e utilizados desde a década de 1970. Espero que você tenha um bom proveito do material. e sou coordenador do curso de Especialização em Desenvolvimento Orientado a Objetos em Java do Cesumar desde 2004. Java Platform. Sun Certified Developer for Java Web Services 5. Como líder do Redfoot JUG (Java Users Group) – Grupo de Usuário Java do Norte do Paraná – atuo desde 2004. Nos últimos cinco anos. Sou empresário (consultor e desenvolvedor) na área de software e trabalho com a plataforma Java desde 1997 – completando 15 anos de experiência neste ano de 2012. Ledo engano. Participo de vários cursos em nível de especialização em diversas instituições. elaborado especificamente para contribuir na sua formação de futuro(a) desenvolvedor(a) de software. autor deste livro. mas a princípio o tema “banco de dados” aparentaria ser algo tranquilo pelo fato de ser uma área do conhecimento bastante consolidada. Enterprise Edition 6 Enterprise JavaBeans Developer. Trabalho também como administrador de sistemas Unix (Solaris. Sou o Professor Edson Yanaga. e Sun Certified Programmer for Java 2 Platform 1. Confesso que foi um tremendo desafio escrever este material. Os desafios dos sistemas de BANCO DE DADOS | Educação a Distância 7 . UNIPAR e Faculdade Integrado. Edson Yanaga Salve. HP-UX e Linux) desde 2000. Permita-me apresentar-me adequadamente: sou Bacharel em Ciência da Computação pela Universidade Estadual de Maringá (UEM) e Mestre em Engenharia Elétrica e Informática Industrial pela Universidade Tecnológica Federal do Paraná (UTFPR) na área de Telemática. e ultimamente sou um grande entusiasta do Artesanato de Software e do código bem-feito.

possa explorar melhor os recursos do seu sistema de banco de dados – além de auxiliá-lo(a) na escolha dos diferentes tipos de produtos existentes e também dos produtos concorrentes em cada tipo ofertado. Este material aborda os conceitos que até recentemente eram considerados como as “regras sagradas” de banco de dados: os bancos de dados relacionais. A 8 BANCO DE DADOS | Educação a Distância . Diante destes cenários surgiram os conceitos de Big Data e NoSQl. Teremos também uma breve explanação sobre o conceito de transações. Sistemas de informação das gerações anteriores tinham como objetivo gerar informações que pudessem agregar valor aos processos de negócios. Afinal. e sim petabytes. como desenvolvedor(a) de software. Conceitos antigos já não são soberanos nesses ambientes inóspitos atuais. O modelo relacional de banco de dados propriamente dito será abordado na Unidade III. é importante darmos um passo no presente – mas sempre com um olho no futuro. esse objetivo foi alcançado. Conhecer a arquitetura permitirá que você. smartphones. Como leitura complementar. temos um texto de Cezar Taurion (Evangelista Técnico da IBM) falando sobre Big Data. Mas para irmos longe e chegarmos a este ponto. Na Unidade I teremos a apresentação de tópicos conceituais e definições sobre bancos de dados.informação atuais exigem que manipulemos não gigabytes ou terabytes de informações. a magnitude destas informações geradas cresceu. caro(a) leitor(a). tais como a diferenciação entre schemas e instâncias de dados. Pois bem. bem como a arquitetura de sistemas de banco de dados. E não se engane. Com a tão aguardada e estimulada onipresença de software. sensores de automação e vários outros dispositivos geram inúmeros bits de informação a todo momento. estes fundamentos de bancos de dados relacionais são imprescindíveis para que se possa dar o “próximo passo” rumo ao conhecimento de Big Data e NoSQL. exabytes e zetabytes. que é uma ferramenta essencial no desenvolvimento de aplicações mais tradicionais como aquelas que envolvem dados financeiros. Redes sociais. A Unidade II descreverá a terminologia e outros conceitos básicos que serão utilizados no restante deste material. Essa será a tônica das nossas leituras complementares e sugestões de vídeos: apresentar-lhe sempre os conceitos de vanguarda que já são aplicados em muitos casos de uso em aplicações modernas. devemos dar o primeiro passo. tablets. sistemas gerenciadores de bancos de dados e os tipos de usuários que interagem com esses sistemas.

pense primeiro no seu modelo de negócios e postergue até o último momento a sua visão sobre o banco de dados. espero).partir deste ponto você estará apto a identificar as características de modelos relacionais e passar a construir seus próprios modelos de dados baseado nos fundamentos apresentados. Aliás. Pense nisso. O coração da sua aplicação é o código bem feito que você elaborará para atender ao seu negócio. O banco de dados é só um detalhe. Para mim e também para muitos autores renomados do mundo do software. Na modelagem relacional. que é diferente das linguagens imperativas como Java. acredito piamente que não será um problema para você. Prof. Um detalhe importante. e a cada batida desse coração você poderá usufruir de muito retorno (e muito dinheiro. Nas Unidades IV e V aprenderemos a linguagem SQL (Structured Query Language). permita-me apresentar meu ponto de vista para reflexão: em muitas empresas o sistema de banco de dados tornou-se o repositório “sagrado” das informações. suas restrições e os relacionamentos entre as diversas entidades modeladas. E antes que você possa apreciar o conteúdo do material. Isso diminui sua importância? Certamente que não! Mas quando modelar seu sistema de informação. remoção e consulta de instâncias de dados. é bastante comum que os alunos aprendam ou venham a concluir que o banco de dados é o coração de um sistema de informação – baseados nessas falsas impressões transmitidas até certo ponto em grande quantidade. Me. E como toda e qualquer ferramenta. que é uma ferramenta dominada por 10 em cada 10 desenvolvedores de software que utilizam sistemas de banco de dados. futuro(a) desenvolvedor(a) de software bem feito. trancado a sete chaves e reservado ao guardião denominado de DBA (DataBase Administrator). a SQL tornou-se um padrão de facto para manipular informações em sistemas de banco de dados por meio de seus comandos para inserção. não pode ficar acima do próprio código que atende ao processo de negócios da empresa. atualização. você identificará entidades do seu domínio de negócios. Edson Yanaga BANCO DE DADOS | Educação a Distância 9 . Mas convém ressaltar que SQL possui uma natureza declarativa. C ou Pascal com as quais você provavelmente está acostumado(a). Após sua criação. o banco de dados é apenas uma ferramenta utilizada na construção de nossos sistemas de informação. Um bom proveito e uma ótima leitura. Tenho certeza de que isso tornará a sua aplicação muito melhor projetada e permitirá que ela ofereça um retorno muito melhor ao seu negócio. mas o considere um detalhe. De conceito simples.

.

...................................................................................................................................................................................................................................................................................................... INSTÂNCIAS E ABSTRAÇÕES ................................................................42 INTERFACES DOS SGBDS .........................................................................................43 ARQUITETURAS DE SISTEMAS DE BANCO DE DADOS ................................................................................71 uNiDADE iv SQL BáSICO DEFINIÇÕES DE DADOS E TIPOS EM SQL ....93 .......................................31 uNiDADE ii OS BANCOS DE DADOS E O SOFTWARE SCHEMAS................20 TRANSAÇÕES.........................27 VANTAGENS DE SE UTILIZAR UM SGBD ...46 MODELO CENTRALIZADO ..............................................................................................56 uNiDADE iii O MODELO RELACIONAL CONCEITUAÇÃO ....................................................................................47 CLASSIFICAÇÃO DOS SISTEMAS DE BANCO DE DADOS ..................................................SumáriO uNiDADE i CONCEITOS DE BANCOS DE DADOS CARACTERÍSTICAS DE SISTEMAS DE BANCOS DE DADOS.......................68 RESTRIÇÕES DO MODELO RELACIONAL .............

.......................................................RESTRIÇÕES ...........................................................................104 uNiDADE v MAIS SQL CONSULTAS ENVOLVENDO NULL .................................................................124 CONSULTAS COM FUNÇÕES DE AGREGAÇÃO ........................................................................................................................ 118 CONSULTAS UTILIZANDO JOINS ..................................................................................................................143 ..........................................................................................................................................................................................97 CONSULTAS BáSICAS EM SQL ..................................................................................126 COMANDOS DE ALTERAÇÃO DE SCHEMA ................................................128 CONCluSãO...........................99 COMANDOS DE MODIFICAÇÃO DE DADOS EM SQL........ 141 rEFErÊNCiAS ...............................

Edson Yanaga Objetivos de Aprendizagem • Apresentar os conceitos fundamentais envolvendo dados e bancos de dados em sistemas computacionais. • Descrever as formas interação dos usuários com os bancos de dados. apresentam-se os tópicos que você estudará nesta unidade: • Conceituar bancos de dados. • Comparar as vantagens desta abordagem em relação a outras similares. sistemas gerenciadores de banco de dados e sistemas de banco de dados • Apresentar as principais características de sistemas de banco de dados • Enumerar alguns papéis de usuários envolvidos na interação com sistemas de bancos de dados • Descrever algumas vantagens na utilização de sistemas de bancos de dados comparados a outras abordagens . plano de Estudo A seguir.uNiDADE i CONCEitOS DE BANCOS DE DADOS Professor Me.

.

boa parte do software desenvolvido envolve além do processamento de informações: as informações de entrada e de saída do software (além de outras metainformações intermediárias) devem ser armazenadas em um mecanismo confiável. escrever sobre o tema “banco de dados” seria uma tarefa relativamente tranquila. Fonte: SHUTTERSTOCK. chamamos estas informações armazenadas em sistemas computacionais de dados. Informação é poder. Mas o nosso mundo está em constante mudança e os modelos de negócios que surgiram recentemente provocaram uma ruptura na forma de se pensar no armazenamento de informações em bancos de dados. Na sociedade do século XXI.iNtrODuçãO “Scientia potentia est”: “Conhecimento é poder”. Sim. caro(a) leitor(a). pois muitos acreditavam tratar-se de um assunto absolutamente consolidado. conhecimento é poder.COM BANCO DE DADOS | Educação a Distância 15 . E temos informação em abundância. Nas últimas décadas. Há alguns anos. riqueza. consequentemente. O desafio crescente dos próximos anos é encontrar formas eficientes de processar os dados que já temos e ainda criar para gerar conhecimento e. e que possibilite o acesso simples e rápido à leitura e escrita destas informações.

sobre o termo: Um sistema gerenciador de banco de dados (SGBD) é uma coleção de programas que permite aos usuários criar e manter um banco de dados. p. construção. p. o termo refere-se a databases. Nossos bancos de dados podem ser coleções de dados relacionados dos mais diversos tamanhos.3): Um banco de dados é uma coleção de dados relacionados. números telefônicos e endereços de pessoas que você conhece. na sigla original em inglês). Os dados são fatos que podem ser gravados e que possuem um significado implícito. consequentemente. Esses dados podem ter sido escritos em uma agenda de telefones ou armazenados em um computador. por meio de programas como o Microsoft Access ou Excel. há uma categoria de software especializado que é desenvolvido especificamente com o propósito de se gerenciar estas coleções de dados: os sistemas gerenciadores de banco de dados – popularmente reconhecidos pela sigla SGBD (ou DBMS – DataBase Management Systems. manipulação e compartilhamento de bancos de dados entre vários usuários e aplicações. 16 BANCO DE DADOS | Educação a Distância . que numa tradução literal definiríamos como “base de dados”. Os “bancos de dados” seriam então ferramentas que guardariam nossas informações (dados) de modo também supostamente seguro e confiável.3). um banco de dados. A definição de um banco de dados implica especificar os tipos de dados. Outra confusão bastante comum e plenamente justificada refere-se à diferença entre os termos “banco de dados” e os sistemas que o gerenciam. Um bom palpite remete a uma visão generalizada de que as instituições denominadas de “bancos” guardam de modo bastante seguro o nosso dinheiro. um sistema de software de propósito geral que facilita os processos de definição. Em termos computacionais. Segue uma definição segundo Navathe (2011.Mas de onde vem este termo que conhecemos como “banco de dados”? Pois em inglês. Segue mais uma definição de Navathe (2011. portanto. O SGBD é. Por exemplo. considere nomes. Essas informações são uma coleção de dados com um significado implícito. Desde uma pequena agenda contendo números e contatos de pessoas até um índice gigantesco de páginas de Internet e buscas relacionadas ou todas as mensagens e informações trocadas entre bilhões de usuários de uma rede social.

tal opção não se mostra viável. Embora não seja necessário utilizar um SGBD para se desenvolver quaisquer sistemas de software. volta e meia surge uma pergunta sobre bancos de dados Open Source. Redis. de sistema de banco de dados. MySQL.. o SGBD.COM 17 . BANCO DE DADOS | Educação a Distância Fonte: SHUTTERSTOCK. finalizaremos denominando o conjunto formado pelo banco de dados e o sistema que o gerencia.. Vamos ver se vai gerar muita discordância. Já exemplos de SGBDs não relacionais (também conhecidos como NoSQL) incluem MongoDB. SQL Server. Derby e H2. Exemplos de SGBDs relacionais (mais tradicionais e consolidados) incluem Oracle. Neo4j e Riak. Relembrando o nosso conceito de que a importância do software consiste em sua capacidade de se gerar valor com as informações que manipula. Access. tenho minha opinião pessoal e quero compartilhar com vocês.as estruturas e as restrições para os dados a serem armazenados em um banco de dados. Bancos de dados Open Source: presente ou futuro? Cezar Taurion Nos eventos sobre Open Source. tem-se que implementar nosso próprio mecanismo de manipulação de dados em nossas aplicações não gera valor: somente custo. Bem. É por este motivo que atualmente definimos os SGBDs numa categoria de software que consideramos como commodity. Para propósitos de definição. PostgreSQL. DB2.

por exemplo. Tivoli e Lotus. com diversas empresas independentes oferecendo ferramentas de software complementares (geradores de relatórios. Uma pergunta: o MySQL pode ser considerado realmente Open Source. Seu código é desenvolvido pelos funcionários da empresa e com isso ela garante a propriedade intelectual sobre o produto. principalmente as relacionadas com administração de ambientes complexos.Os softwares de banco de dados são um dos mais importantes componentes de software de uma organização. Já o ecossistema empresarial criado em torno dos bancos de dados Open Source (onde se gera dinheiro) ainda é incipiente.ingres. e assim por diante. os sistemas de banco de dados proprietários buscam competir com funcionalidades diferenciadoras. uma vez que não adota o modelo de desenvolvimento colaborativo? O MySQL é ofertado tanto em GPL como sob licença comercial. mas ainda é um traço (cerca de 0. Ano passado.03%) no gráfico que mostra o mercado global de bancos de dados relacionais.+plans+IPO/2100-7344_3-6179290. Por sua vez. escalabilidade. o utiliza embutido em diversos softwares das famílias WebSphere. analisadores estatísticos e outros). Nas minhas andanças pelo mercado tenho visto que na prática os bancos de dados Open Source só aparecem como competidores dos produtos mais avançados nas aplicações pouco sofisticadas ou bem especificas. com o maior mindshare do setor. o que também cria uma barreira de entrada difícil de transpor por qualquer novo entrante. Indiscutivelmente é o banco de dados Open Source mais popular. As duas versões são funcionalmente equivalentes. A IBM. O MySQL é um produto de uma empresa privada. Como comparativo. Neste ambiente as alternativas de software livre já são bastante conhecidas e freqüentemente são mencionadas na mídia.org/derby/) é um banco de dados em Java. que tem suas origens no Postgres desenvolvido pela Universidade de Berkeley. o IDC estima que neste mesmo ano. mas submissões de código são restritas apenas à correção de bugs. onde agora é o projeto Derby.com/MySQL+hits+50+million+revenue.apache. Ingres e Derby. serviços de suporte técnico especializado e formação de recursos humanos.html). com. e recursos de data warehousing. 18 BANCO DE DADOS | Educação a Distância . Além disso. originalmente o Cloudscape da IBM e recentemente doado para a Apache Software Foundation. que foi um banco de dados da Computer Associates e agora pertence a uma organização independente. Outro software é o PostgreSQL. a Ingres Corporation (www. foi criado um ecossistema de negócios em torno dos principais software de banco de dados proprietários. sendo formado por pequenas empresas com abrangência de atuação bastante limitada. PostgreSQL. Podemos citar também o Ingres.com) e o Derby. estimado pelo IDC em 16 bilhões de dólares. alta disponibilidade e capacidade de recuperação rápida. geralmente embarcado em outros softwares. a MySQL AB. sendo diferenciadas pelo nível de suporte e certificação. desempenho com grande volume de transações. a MySQL gerou cerca de 50 milhões de dólares em receita (http://news. O Derby (http://db. como MySQL. Existe uma comunidade envolvida.

independência de plataforma e recursos de segurança. Alguns dos principais fatores a serem considerados são: a) b) c) Recursos de gerenciamento e administração. se houver desconfianças que o atual fornecedor esteja saindo do mercado. Modalidade de licenciamento. Visão. Disponibilidade de aplicativos. backup/recovery.. Recursos de desenvolvimento de aplicações. Abrangência do ecossistema em termos de serviços de suporte e qualificação de recursos humanos. capacidade de replicação. Recursos técnicos. subqueries. falta de funcionalidade do software (não é mais adequado às BANCO DE DADOS | Educação a Distância 19 . São as ferramentas de apoio às tarefas do administrador do banco de dados. Minha empresa deve adotar um banco de dados Open Source? Para mim. stored procedures. recursos de indexação. nos volumes de transações que serão demandados. Como avaliar a qualidade de um banco de dados Open Source? Existem diversos critérios que podem e devem ser considerados em uma análise para seleção de um banco de dados. Qual o papel que os bancos de dados Open Source desempenharão? Na minha opinião estarão atuando (pelo menos nos próximos 3 a 4 anos) na chamada faixa de produtos com funcionalidades comoditizadas. Custos de Propriedade. para mudar um software de banco de dados deve haver uma estratégia impulsionada por razões fortes e consistentes.a receita da IBM com a família de produtos DB2 foi de aproximadamente 3. Os níveis de importância das variáveis da análise estão diretamente relacionadas com os objetivos do negócio e das necessidades a serem impostas aos softwares de bancos de dados. onde as características de preço são as de maior importância. cursors. Bem e quanto a uma pergunta que muitos me fazem.5 bilhões de dólares. estratégia e road map do produto. Desempenho e escalabilidade. Os recursos que o software oferece para garantir desempenho adequado. Os usuários típicos serão organizações e aplicações que não precisam de recursos mais sofisticados. particionamento. suporte a dados não estruturados. Modelo de governança adotado pela comunidade. Tamanho e participação/envolvimento da comunidade. Disponibilidade de recursos como triggers. aderência a padrões (ANSI SQL). Recursos de data warehousing e BI. Suporte técnico e disponibilidade de recursos humanos. d) e) f) g) h) i) j) k) l) m) Base instalada e adoção pelo mercado. Por exemplo..

A maioria das empresas é extremamente cautelosa em trocar de fornecedor de softwares críticos. sempre considerando que dificilmente conseguiremos fazer uma migração estilo big bang. carência de consultorias e serviços de suporte externos. pois banco de dados é muito sério para ser tratado de forma simplista. Também os custos de suporte técnicos aos dois ambientes implicam muitas vezes. e o que chamamos reconciliação entre as aplicações no novo e no antigo ambiente. que só deve ser efetuada quando os benefícios forem claramente demonstráveis. custos da codificação. qual seria a outra solução alternativa? Pense em algumas aplicações que você utiliza e que não fazem uso de SGBDs. que esteja disponível no mercado.ibm. principalmente quando o novo banco de dados não for de completo domínio da equipe técnica da empresa. mais custosa será a migração. falta de pessoal gabaritado. planilhas. número de tabelas relacionais. Existem custos indiretos como a construção de interfaces entre as aplicações já convertidas e as que ainda estão no banco de dados antigo. Mudar para um banco de dados Open Source simplesmente por questões ideológicas deve estar fora de cogitação. OK. são alguns exemplos 20 BANCO DE DADOS | Educação a Distância . Quanto mais complexas forem as aplicações a serem convertidas.com/developerworks/mydeveloperworks/blogs/ctaurion/entry/bancos_de_dados_open_source?lang=pt_br>.necessidades das novas aplicações da empresa).. ferramentas de desenho etc. O perigo de uma interrupção nos seus negócios decorrente de uma troca mal planejada ou inadequada faz com que os custos de troca possam ser extremamente elevados e desestimuladores. Temos os custos da conversão de dados. Em resumo. restrições de integridade referencial e tamanho do banco de dados. Processadores de texto. testes.. relacionamento com o fornecedor cada vez mais deteriorado. Fonte: <https://www. e quais seriam então os custos e riscos da migração? Existem custos de migração que não podem ser subestimados. 2012. Esta complexidade pode ser medida pelo número de programas. em gastos adicionais elevados. falta de visão estratégica por parte do fornecedor do software atual.. Acesso em: 14 ago. Migrar de um banco de dados para outro é sempre uma tarefa complexa e de alto risco. CArACtErÍStiCAS DE SiStEmAS DE BANCOS DE DADOS Se utilizar um sistema de banco de dados parece uma solução natural. custos de manutenção e operação muito elevados para o resultado obtido. os custos da migração afetam os cálculos de custos totais de propriedade. mas que esta será gradual.

dessas aplicações. O que todas têm em comum? A necessidade de se armazenar a informação manipulada por meio de arquivos. Em qualquer aplicação que necessite do armazenamento de dados, faz-se necessário dispor de algum mecanismo que permita que estes sejam gravados de modo persistente. A abordagem de arquivos tem suas vantagens, como por exemplo, a portabilidade dos dados. Você pode carregá-los eletronicamente ou fisicamente para locais diferentes de modo bastante simples. Mas entre as desvantagens desta abordagem há todo o trabalho necessário para se criar um formato e processar a sua gravação e recuperação – e acredite, não é pouco trabalho! Um SGBD, por outro lado, já dispõe de uma série de funcionalidades prontas para serem utilizadas pelo desenvolvedor da aplicação. Deste modo, uma série de preocupações passa a ser delegada a um software de terceiros (o SGBD). A seguir, apresentaremos uma série de características que diferenciam a abordagem de sistemas de banco de dados da manipulação manual das informações (como em arquivos, por exemplo). Natureza autodescritiva Uma característica fundamental que distingue os sistemas de bancos de dados de outras abordagens é o fato de que nos SGBDs, o banco de dados e as metainformações sobre o banco de dados são armazenados conjuntamente. Essas metainformações armazenadas contêm informações como o tipo, tamanho e restrições do banco de dados. Em termos técnicos, as metainformações são chamadas de esquema (ou schema, em seu termo original em inglês). isolamento entre programa e Dados Numa aplicação que utilize arquivos para o armazenamento de dados, quaisquer alterações na estrutura do arquivo também implicarão em alterações no programa. Nesse caso, dizemos que o programa é altamente acoplado à sua estrutura de armazenamento de dados. Em contraste, SBGDs permitem que o programa somente informe quais dados são armazenados, sem se

BANCO DE DADOS | Educação a Distância

21

importar em como esses dados serão manipulados internamente. Esta característica aumenta bastante o nível de manutenibilidade do sistema, quando bem aplicada. múltiplas visões dos dados Esta não é uma característica fundamental, mas muitos SGBDs fornecem a possibilidade de que diferentes usuários com diferentes permissões possam acessar diferentes “visões” dos dados. Essas visões (views) correspondem a estruturas virtuais criadas a partir dos dados armazenados e podem conter, além dos próprios dados, também informações derivadas (calculadas) a partir desses dados. A criação de diferentes usuários com diferentes permissões a visões específicas é uma abordagem muito utilizada em sistemas cliente/servidor; ou na integração de aplicações mediante banco de dados. O auge do uso destas abordagens deu-se no final da década de 1990, embora ainda hoje seja possível testemunhar aplicações sendo executadas sob este modelo. Recomenda-se fortemente que no desenvolvimento de novas aplicações, a abordagem de múltiplas visões e de integração mediante banco de dados seja substituída por uma abordagem orientada a serviços como SOA (Service Oriented Architecture) ou como REST (REpresentational State Transfer). Visões não são uma má prática. São um recurso bastante útil, mas não imprescindível. Como toda ferramenta, bem utilizada e de modo adequada, é um recurso valioso. Acesso concorrente de múltiplos usuários Um SGBD multiusuário, como o próprio nome já define, deve permitir o acesso de múltiplos usuários. Além disso, o acesso deve ser concorrente, permitindo que todos os usuários conectados executem operações “ao mesmo tempo”. Vale a pena refletir sobre dois termos muitas vezes utilizados de forma errônea na área de Tecnologia da Informação: “paralelo” e “concorrente”. Paralelismo puro é algo raro em

22

BANCO DE DADOS | Educação a Distância

computação, embora seja perfeitamente possível. Ao lidarmos com sistemas de banco de dados, utilizamos o termo “concorrente”, pois vários usuários têm a impressão de que estão executando instruções ao mesmo tempo – quando na verdade, por se tratar de informações acessadas em disco ou com um único barramento de acesso, torna-se necessário algum mecanismo de contenção que serialize (coloque em fila) cada uma dessas instruções. Como idealmente a execução dessas instruções é bastante curta, tem-se a impressão do pseudoparalelismo. Um conceito fundamental para que o acesso destes múltiplos usuários mantenha o banco de dados num estado consistente é o mecanismo de transações, que será descrito na próxima seção.

A revolução do Big Data está prestes a acontecer Cezar Taurion

O termo Big Data começa a despertar muita atenção, mas ainda é um conceito mal definido e com preendido. Com uma rápida pesquisa ao Google, identifiquei, pelo menos, uma dúzia de definições. Neste artigo, vou falar um pouco sobre o assunto e debater alguns desafios que temos para conseguir colocar projetos de Big Data em ação.

Fonte: SHUTTERSTOCK.COM

BANCO DE DADOS | Educação a Distância

23

E. Este volume tende a crescer geométricamente. e os gerados nas mídias sociais. pesquisador da IBM em um artigo escrito nos idos de 1958.e deverão . mas em dados concretos.Sem entrar em definições e nos atendo apenas a conceitos. quanto dos não estruturados. O importante é a tecnologia e o conhecimento que cria produtos manufaturados. na sociedade da informação é crucial saber tratar os dados na velocidade adequada. velocidade porque. Ou seja. estamos falando em zetabytes. os números são gigantescos. é claro. onde 24 BANCO DE DADOS | Educação a Distância . Quando falamos em volume. temos a imensidão de dados gerados pelos objetos na Internet das Coisa. para um setor de marketing faz todo sentido ter uma visão 360° de um cliente. além dos dados gerados pelos sistemas transacionais. Grandes corporações armazenam multiplos petabytes e mesmo as pequenas e médias empresas trabalham com dezenas de terabytes de dados. já é consenso que dados são os recursos naturais da nova Revolução Industrial. Afinal. Em mundo cada vez mais competitivo e rápido.importando em troca produtos manufaturados. Aliás. precisamos responder aos eventos quase que em tempo real. e exportá-los de forma bruta . Hoje. muitas vezes. que este imenso volume não seja transmitido repetidamente via Internet. mas saber o que ele pensa e diz sobre a empresa e como os faz . os modelos de cobrança pelo uso de nuvens públicas tendem a gerar processamentos muito baratos. estamos falando de criação e tratamento de dados em volumes massivos. Variedade porque estamos tratando tanto de dados textuais estruturados. pois não geram informação. como os veteranos Data Warehouse e as tecnologias de BI (Business Intelligence) começam a se mostrar lentos demais para a velocidade com que os negócios precisam tomar decisões. o termo BI já tem mais de 50 anos. Assim. Outro desafio: criar e tratar apenas de dados históricos. desde. por fim. por exemplo. Na atual sociedade industrial. como sensores e câmeras. pois demanda atenção à infraestrutura e tecnologias analíticas. Dados passam a ser ativos corporativos importantes e como tal. podem . ou 10²¹ bytes. A principal base tecnológica para Big Data Analytics é o Hadoop e os bancos de dados NoSQL. ter apenas recursos naturais. como registrado no ERP. como fotos. via PCs. emails e tuítes. Dados não tratados e analisados em tempo hábil são dados inúteis. um quilo de satélite vale imensamente mais do que um quilo de minério de ferro. Ele foi cunhado por Hans Peter Luhn. mas tornam caro a transmissão de muitos dados. videos. como minério. Se olharmos globalmente. Volume porque.ser quantificados econômicamente. Fazendo um paralelo. olhando não apenas o que ele comprou da empresa. Só para lembrar. smartphones e tablets. podemos resumir com uma fórmula simples o que é Big Data: volume + variedade + velocidade de dados. as empresas precisam tomar decisões baseadas não apenas em palpites.pelo Facebook e Twitter. O processamento de volumes massivos de dados pode ser facilitado pelo modelo de computação em nuvem. Big Data representa um desafio tecnológico. não garante a competitividade de um país no longo prazo.

sobre como os negócios poderão usufruir da montanha de dados que está agora à sua disposição. uma empresa filtra dados dos seus vários sistemas e. mas sim o contexto de horas. desde bancos de dados SQL. portanto. Já o Data Architect deve lidar com tecnologias SQL e NoSQL. A complexidade do Big Data vem à tona quando lembramos que não estamos falando apenas de armazenamento e tratamento analítico de volumes massivos de dados. Pelo viés dos negócios. um artigo interessante que foi publicado há poucos meses pelo Wall Street Journal. ou Data Architect. Aí emerge a questão da integração: como integrar bases de dados estruturadas e não estruturadas com diversos softwares envolvidos? O Big Data abre oportunidades profissionais bem amplas. ou seja. Também não foi desenhado para escala massiva. de processos que garantam a qualidade destes dados e de processos de negócios que usufruam dos resultados obtidos. quase que em tempo real. também conhecida como inteligência empresarial. mas. categorizar e normalizar dados era bem mais fácil do que hoje. que lidem melhor com documentos. estruturadas. Big Data não é apenas um debate sobre tecnologias. como a Faculdade de Pós-Graduação em Administração da Universidade Fordham e a Faculdade de Administração Kelley. tornam-se necessárias varias tecnologias. A idéia de stream processing. O resultado foi que várias faculdades americanas. ou para um processamento muito rápido. existe espaço para dois perfis profissionais: um mais voltado para os negócios e qualificados para tratar analiticamente as informações geradas por estas imensas bases de dados e outro com viés mais técnico. No modelo de data mining tradicional. é fantástica. é um novo paradigma. Na minha opinião. Para soluções Big Data. Ele fala que muitas empresas americanas começaram a procurar profissionais que saibam interpretar os números usando a análise de dados. da Universidade de Indiana. cursos de extensão e mestrados em análise de dados. Portanto. dispara “queries”. acessar. esta garimpagem é efetuada em tempo real. na edição brasileira. ou stream computing. Seu objetivo básico era possibilitar a criação de queries que acessacem bases de dados corporativas e. ou criação. após criar um data warehouse. Praticamente não existiam dados não estruturados circulando pelos computadores da época. processamento paralelo. que não refletem o momento. ter capacidade de desenhar estratégias para manusear e analisar grandes volumes de dados de formatos diferentes. mas de revisão.“No” significa Not Only SQL. A importância do “Not Only” SQL explica-se pelo fato do modelo relacional ser baseado na época de sua criação. a softwares que utilizem outros modelos. faz-se uma garimpagem em cima de dados estáticos. usa-se bases de dados SQL e não SQL. portanto. Nessa época. Com o stream computing. aponta como problema a escassez de talentos. Em vez de disparar queries em cima de uma BANCO DE DADOS | Educação a Distância 25 . principalmente. dias ou mesmo semanas atrás. etc. Na prática. conhecer profundamente conceitos como stream processing e Event Driven Architecture (EDA) e. no início dos anos 70. começaram a oferecer disciplinas eletivas. grafos. Mas encontrar profissionais qualificados tem se mostrado difícil.

já aparece no canto da tela de um ou outro CIO. Fonte: <http://imasters. Acesso em 15 jul. mais importante ainda. sejam estas em finanças. em alguns anos já será um dos temas mais prioritários das tradicionais listas de “tecnologias do ano”. pode-se começar a estudar o assunto acessando seu verbete na Wikipedia.com.br/artigo/23437/banco-de-dados/a-revolucao-do-big-data-esta-prestes-a-acontecer>. O maior evento da comunidade brasileira de NoSQL: <http://nosqlbr. 26 BANCO DE DADOS | Educação a Distância . pode-se fazer ajustes em tempo real nos próprios processos de fabricação. Quanto ao EDA.com/>. saúde e mesmo manufatura. provavelmente. coloca-se uma corrente contínua de dados (streaming data) atravessando um conjunto de queries. 2012. Aliás. e. Com o stream computing. Podemos pensar em inúmeras aplicações. Portanto. é bom estar atento à sua evolução e começar a colocar em prática algumas provas de conceito. Vamos ver este último exemplo: um projeto em desenvolvimento com uma empresa de fabricação de semicondutores monitora em tempo real o processo de deteção e classificação de falhas.base de dados estática. Os wafers defeituosos podem ser reprocessados e. O termo Big Data vai aparecer na tela do radar dos CIOs em breve. as falhas nos chips que estão sendo fabricados são detetadas em minutos e não em horas ou semanas.

Consideramos como transação uma determinada “unidade de trabalho”. ou que nenhuma seja realizada.trANSAçÕES O conceito de transação é fundamental em muitas áreas da computação.COM BANCO DE DADOS | Educação a Distância 27 . Essa indivisibilidade pressupõe que as operações realizadas numa transação sejam todas realizadas por completo. Consistência. possamos agrupar vários comandos relacionados com Fonte: SHUTTERSTOCK. Estas transações devem permitir que o sistema esteja num estado coerente antes e depois de sua execução. Isolamento e Durabilidade. Atomicidade A propriedade atomicidade de banco de dados advém do conceito de átomo da física – o qual até recentemente supunha-se indivisível. Isto permite que durante a nossa interação com um banco de dados. que é realizada em qualquer sistema computacional de um modo coerente e independente de outras transações. Devem permitir também que vários clientes diferentes acessem concorrentemente o sistema sem que isso possa corromper ou levar a estados que não sejam considerados coerentes. Uma definição clássica do conceito de transações envolve o acrônimo ACID. e particularmente fundamental em sistemas de banco de dados. oriundo das propriedades de Atomicidade. Popularmente seria o conceito do “tudo ou nada”. independente de falhas ou outros problemas que possam ocorrer.

referências entre informações etc. Durabilidade é essencial: imagine qualquer empresa perdendo todos os seus dados.a garantia de que todos sejam executados – de modo que as informações armazenadas permaneçam num estado consistente após a execução da transação. A continuidade do próprio negócio está em risco. os dados terão a garantia de terem sido armazenados corretamente – independentemente da eventualidade de falhas. Na opinião deste autor. Novamente. não há menosprezo algum em dizer que o mais importante é o código que atende aos processos de negócios. isolamento A propriedade de isolamento determina que o resultado da execução concorrente de um conjunto de transações terá o mesmo resultado de sua execução em série (uma após a outra). erros de aplicação etc. Mas mais importante do que os dados em si está o uso que se faz deles. valor. Durabilidade A propriedade de durabilidade garante que uma vez que uma transação tenha sido finalizada com sucesso. é justamente a propriedade de durabilidade que faz com que os bancos de dados sejam posicionados como “ferramentas sagradas” em muitas empresas. No caso. Consistência A propriedade de consistência assegura que a execução de qualquer transação trará o banco de dados de um estado consistente para outro estado também consistente. falta de energia. O isolamento transacional é o que garante e permite o acesso concorrente de múltiplos usuários ao mesmo SGBD. a “consistência” implica que todos os dados de um banco de dados devem ser válidos de acordo com um conjunto de regras que podem incluir restrições de tipo. 28 BANCO DE DADOS | Educação a Distância .

enfrentarão. Estado flexível e Eventualmente consistente. o fator disponibilidade passou em alguns casos a ser mais importante do que a própria consistência das informações. Acesso em 15 jul.acm. BANCO DE DADOS | Educação a Distância 29 . Soft state. Uma reflexão que vale a pena ser feita é: para os novos desafios e empreitadas que vocês. Com o aumento da quantidade de informações e usuários nas aplicações. O BASE tornou-se uma sigla bastante comum ao lidar com bancos de dados não relacionais. surgiu o acrônimo BASE (Basically Available. em quais situações o ACID é recomendado e em quais outras situações o BASE mostra-se mais adequado? Referência: <http://queue. futuros profissionais. Eventually consistent) – traduzido literalmente como Basicamente Disponível. 2012.Sistemas tradicionais que vêm sendo desenvolvidos nas últimas décadas sempre tiveram como premissa em seus dados sua corretitude (grau em que o software executa suas funções de modo correto).cfm?id=1394128>.org/detail. Isso normalmente implicou na utilização de um banco de dados que pudesse satisfazer as propriedades ACID. Além do ACID.

Os segundos projetam os bancos de dados e os mantém. e sim com as aplicações criadas pelos desenvolvedores de software que armazenam suas informações em SGBDs. Desenvolvedores de aplicações e Administradores de Bancos de Dados (DBAs – DataBase Administrators) Usuários finais 30 BANCO DE DADOS | Educação a Distância . Mas voluntários de projetos de software livre também podem contribuir em outras atividades como documentação. Os primeiros desenvolvem o software que acessa o SGBD. pois quanto maior a distância entre os membros da equipe envolvidos no projeto de software. Em abordagens de desenvolvimento mais modernas tende-se a eliminar esta distinção entre os papéis. Exemplos de pessoas nestes papéis incluem os funcionários de empresas como Oracle. Tradicionalmente. em abordagens mais tradicionais e conservadoras. São pessoas que desenvolvem software que armazena as informações num SGBD. raramente possuem ciência do fato. as equipes de desenvolvimento são separadas em desenvolvedores e DBAs. A maioria das pessoas enquadra-se nesta categoria. São pessoas que não interagem diretamente com os bancos de dados.Papéis assumidos pelos usuários de SGBDs Desenvolvedores de SGBDs São pessoas que projetam e codificam os SGBDs. IBM e Microsoft que atuam diretamente na programação do software SGBD. Normalmente são programadores altamente qualificados que trabalham no código-fonte do SBGD. menor tende a ser a qualidade do software entregue. e embora sejam os grandes beneficiados pela tecnologia dos sistemas de bancos de dados. por exemplo. No caso de SBGDs livres. podem ser também voluntários ou pessoas e empresas interessadas na evolução do software.

alguns dos sistemas de transações mais rápidos do mundo utilizam este conceito. Desse modo. diminui-se a redundância: há somente uma cópia dos dados BANCO DE DADOS | Educação a Distância 31 . e provavelmente exigirá muito trabalho manual para se chegar à versão final do documento. Klaus Wuestfeld – Prevayler Neste vídeo Klaus Wuestfeld. mostra uma abordagem inovadora e de alto desempenho para manipulação e persistência de objetos. já citamos algumas vantagens de se utilizar um SGBD para armazenar as informações de nossas aplicações. Cada pessoa realiza as suas modificações em suas próprias cópias dos documentos e depois repassa novamente por e-mail. A seguir. Quem tem a última versão do documento? Quais são os dados corretos? Estas são perguntas difíceis de serem respondidas nesta abordagem. vANtAgENS DE SE utiliZAr um SgBD Durante as seções anteriores. fazendo com que todos os usuários acessem os mesmos dados. as enumeraremos de um modo mais detalhado. de forma a justificar seu uso numa diversidade de situações. Atualmente. Diminuir a redundância e fornecer consistência Imagine uma situação bastante comum: você resolve elaborar um documento e necessita da colaboração de várias pessoas para fazê-lo.<http://youtu. Você então cria o esboço deste documento e o envia por e-mail a todos os interessados.be/Car5V9l8BiQ>. um dos pioneiros do XP (eXtreme Programming) no Brasil e criador do conceito de prevalência de objetos. Um SGBD centraliza todas estas informações.

Isto permite também que o banco de dados sempre permaneça num estado consistente. Como o acesso é centralizado. Por múltiplos motivos. Ao mesmo tempo. Controle de acesso Muitas informações armazenadas em sistemas são confidenciais. Cada SGBD possui sua estratégia interna para transformar estas informações em bytes gravados no dispositivo de armazenamento. No mínimo um SGBD oferece uma combinação de login/senha para acesso a um determinado banco de dados. não há uma grande diferença de desempenho entre diferentes produtos em uma quantidade razoável de aplicações. Outras restrições relativas a qual usuário pode acessar quais dados também costumam ser implementadas pela maioria dos SBGDs. é muito mais importante a eficiência em consultas do que a eficiência em armazenamento de informações. é necessário que uma cópia seja enviada aos interessados. Assim. os SBGDs utilizam dispositivos como índices (que são estruturas criadas para otimizar consultas baseadas em certos critérios) e 32 BANCO DE DADOS | Educação a Distância . ou a mesma pode ser deixada num dispositivo de armazenamento removível esquecido em alguma mesa de reunião.a serem manipulados. Em casos de usos típicos. Ao utilizar arquivos. essas cópias podem acabar sendo enviadas por e-mail a pessoas cujo acesso é indevido. também tem-se uma única cópia para proteção. mas de um modo geral. e para permitir formas de consulta eficientes aos mesmos dados. Consultas eficientes Como são aplicações de software de propósito específico. os SGBDs são especialmente projetados para armazenar eficientemente os dados a eles delegados. Não há a possibilidade de alguém permanecer com um “pedaço” dos dados antigos e outro “pedaço” com a informação atual. é necessário que esta informação seja compartilhada com as pessoas para que sejam trabalhadas. pois todos os usuários terão sempre a “última versão” dos dados.

Estes dispositivos permitem que as consultas possam ser executadas de modo mais rápido. Cópias costumam ser utilizadas para permitir o teste de aplicações em desenvolvimento. adequar estes dispositivos de modo otimizado chega a quase ser uma arte. criou-se uma categoria de software específico denominada de sistemas gerenciadores de bancos de dados (SGBDs). é comum os próprios SGBDs fornecerem ferramentas que permitem a exportação dos dados para um formato intermediário (texto ou binário) para backup. As rotinas de backup/restore também são uma ferramenta bastante útil na migração ou cópia de servidores onde o mesmo SGBD esteja instalado. Ao invés de cópias físicas dos arquivos do SGBD. Situações de migração costumam ocorrer em caso de falhas ou upgrade de equipamento. Certamente que determinados casos de uso ainda exigem a utilização de arquivos como meio de armazenamento das informações. O banco de dados (os dados) e o sistema que o gerencia são denominados conjuntamente de sistemas de bancos de dados. e em muitos SGBDs. Backup e Restore Para garantir a continuidade dos negócios. CONSiDErAçÕES FiNAiS Nesta unidade. esperamos que você. e principalmente. Para manipular estes bancos de dados.cachês (caches) para armazenar em memória os dados mais frequentemente acessados. o armazenamento dos dados – estes muitas vezes em enormes quantidades. tamanha a quantidade de opções disponíveis. como desenvolvedor(a) possa ter argumentos suficientes para decidir BANCO DE DADOS | Educação a Distância 33 . Boa parte das aplicações de software desenvolvidas na atualidade envolve a manipulação. Durante esta unidade também descrevemos as características que identificam as propriedades de sistemas de bancos de dados quando comparados a abordagens tradicionais de processamento de arquivos. por meio de um nível determinado de abstração. Estas mesmas ferramentas suportam a restauração destes dados em caso de necessidade. é essencial executar periodicamente o backup das informações armazenadas no servidor. pudemos perceber que os bancos de dados são uma coleção de dados relacionados que representam. o modelo do mundo real de nossas aplicações de software. Mas com as informações que detalhamos como características destes sistemas de banco de dados.

é assim que ele deve ser tratado). fizemos uma comparação com a utilização de arquivos para armazenamento dos dados. Olhe sempre para o software que você desenvolve por meio dos olhos de quem usa. Ao enumerar as vantagens de se utilizar um SBGD. Uma máxima que devemos sempre utilizar é a “técnica do espelho”. tendenciosamente. Quais seriam as situações em que os arquivos seriam uma solução mais adequada? Você consegue exemplificar alguma outra situação em que uma terceira alternativa seria mais viável? 3.adequadamente entre uma abordagem e outra. Claro que. Como existem muitos tipos de usuários diferentes que podem interagir com os sistemas de bancos de dados. O papel de um desenvolvedor experiente é distanciar-se destes apegos a uma determinada tecnologia ou outra e decidir sobriamente qual a solução mais adequada para a sua aplicação. podemos nos dedicar a estudar melhor alguns dos detalhes internos dos modelos utilizados pelos sistemas de bancos de dados e das arquiteturas de software existentes que utilizam estes sistemas. Transações tradicionalmente são melhor entendidas por meio do conjunto de suas propriedades ACID (Atomicidade. Quais os benefícios deste isolamento? Em que outras partes do sistema esta característica também pode trazer benefícios? 34 BANCO DE DADOS | Educação a Distância . também apresentamos uma lista não exaustiva dos papéis que estes usuários podem assumir nestas interações. Compreender as situações em que cada tipo de usuário interage com um sistema de banco de dados permite que tenhamos uma consciência melhor das dificuldades e das necessidades que os usuários possuem em cada caso de uso cotidiano da nossa vida profissional. um estudioso de sistemas de bancos de dados observaria argumentos bastante positivos em relação à abordagem dos SGBDs. Tais tópicos serão abordados em nossa próxima unidade. Consistência. o SGBD apareceu como o vencedor nas comparações. AtiviDADE DE AutOEStuDO 1. Tendenciosamente. Isolamento e Durabilidade). Em quais situações da vida real você consegue enxergar a necessidade de se executar operações com estas propriedades? 2. Por fim. Uma vez entendidos estes conceitos. Pense no SBGD como um módulo do sistema ou como uma outra aplicação a ser integrada (pois em muitas concepções modernas. tentamos discutir algumas vantagens da abordagem de sistemas de bancos de dados em relação à implementação de aplicações sem a facilidade e funcionalidade de um SGBD. Uma das características dos SGBDs é o isolamento entre o programa e os dados.

“Leva semanas para configurar um novo banco de dados. se você for um profissional de dados em uma grande empresa. Os departamentos de TI dos dias de hoje são afetados por uma lista não processada de demandas de administração de dados.COM 35 . em que usuários podem simplesmente “acessar uma nuvem” e capturar um banco de dados conforme necessário. nunca há uma falta de muito trabalho para manter DBAs na correria. Quando eles estão na toada. Para tornar essa visão uma realidade. Diretor de Programas da IBM Profissionais de dados estão adotando conceitos de computação em nuvem para oferecer bancos de dados como um serviço – facilitando as dificuldades de gerenciamento e enviando usuários para a nuvem nove. Desenvolvedores de sistemas e de software adoram o controle que eles obtêm com recursos de autoatendimento de DBaaS. os profissionais de dados nos bastidores devem realizar uma quantia considerável de trabalho no backend. É uma ideia provocante — principalmente para usuários finais.algumas organizações estão tomando emprestado conceitos de autoatendimento do domínio de computação em nuvem e indo em direção a um modelo de banco de dados como serviço ou DBaaS.Banco de Dados na Nuvem Jin Zhang. Em uma tentativa de minimizar o tempo que os profissionais de dados gastam no modo reativo - res pondendo a solicitações de usuários com tarefas sem parada de “banco de dados. banco de dados. De solicitações por novos bancos de dados de desenvolvimento e teste de aplicativos até o backup e a restauração de volumes de dados cada vez mais crescentes. Desenvolver uma nuvem de dados privada BANCO DE DADOS | Educação a Distância Fonte: SHUTTERSTOCK. Por que eles nunca são limpos?” Qualquer uma dessas reclamações soa familiar? Provavelmente sim. clone” . no entanto. eles podem solicitar e provisionar recursos imediatamente — mantendo seu ímpeto ativo e suas ideias frescas. clone. em vez de esperando que o departamento de TI volte uma semana mais tarde com um banco de dados de desenvolvimento/teste. Preciso dele agora!” “Nossos dados de desenvolvimento/teste estão uma bagunça.

as “boas práticas” de dados abrangentes a serem implementadas e replicadas pela nuvem e. os usuários podem simplesmente ir para a nuvem. sejam os recursos físicos ou virtuais.e lançar com sucesso DBaaS para usuários finais requer que DBAs considerem diversos fatores. dedicados ou compartilhados e independentemente de como são acessados (por meio de uma conexão direta. Por que eles nunca são limpos?” penetrando as nuvens Computação em nuvem refere-se a uma categoria de soluções de tecnologia que permite que usuários acessem recursos de computação (neste caso. esquemas de banco de dados e mais — e disponibilizar essa nuvem a usuários por meio de uma interface de serviços. a interface de serviços que trará todos esses itens de forma transparente aos usuários finais para concluir a imagem. os departamentos de TI corporativos devem construir e gerenciar uma nuvem de dados corporativa privada — uma plataforma que consiste em hardware de armazenamento. recursos de dados) on demand. 36 Figura 1. em vez de serem deixados desperdiçados e inativos. BANCO DE DADOS | Educação a Distância . conforme necessário. à medida que necessidades de banco de dados surgem. por fim. rede de longa distância [WAN] ou a Internet). os ativos são reciclados de volta na nuvem para redesignação. imagens virtuais. Quando eles não precisarem mais dos ativos de dados. “Nossos dados de desenvolvimento/teste estão uma bagunça. Para oferecer DBaaS na nuvem. Quando esta infraestrutura estiver instaurada. entre eles a infraestrutura de hardware subjacente da nuvem. uma infraestrutura otimizada para entrega em nuvem do banco de dados enfatiza simplicidade e eficiência por meio de automação e normatização de hardware. solicitar os recursos que requerem e obter acesso instantâneo a seu próprio banco de dados pessoal on demand. rede local [LAN].

Etapa um: Desenvolver a base da nuvem Sua primeira parada no caminho para construir um ambiente de computação em nuvem e entregar DBaaS será considerar sua infraestrutura de hardware subjacente e assegurar que seja alinhada aos objetivos de DBaaS (consulte a Figura 1). Devido à maneira como a maioria dos departamentos de TI está estruturada, essas decisões de hardware provavelmente não ocorrerão em um vácuo. Na verdade, a maioria do DBAs precisará colaborar com administradores de sistemas e contrapartes da arquitetura corporativa para chegarem a um consenso sobre qual deve ser a infraestrutura de hardware. Esse processo pode requerer concessões de todos os lados, portanto, tente entrar na conversa com um entendimento claro de suas principais prioridades de hardware e as “boas de ter”. Não tem certeza de quais devem ser essas prioridades? Leia adiante. Como em qualquer decisão de compra de hardware, muitos atributos afetarão a discussão — plataforma, tamanho de armazenamento, velocidade, custo e mais. Para suportar DBaaS na nuvem, acima de tudo você irá querer assegurar que seu hardware seja o mais padronizado possível. Como é muito mais fácil automatizar um script em execução em um sistema aberto homogêneo do que muitos scripts diferentes em um heterogêneo, a normatização é a chave para automação. DBaaS em seu âmago é nada mais que automação — a automação do processo de configuração e fornecimento de um banco de dados — de forma que quanto mais uniforme for sua plataforma de hardware, mais simples será configurar DbaaS. Em seguida, dê uma olhada nas opções de armazenamento disponíveis para suportar seu banco de dados. Certifique-se de que você tenha um entendimento claro dos tipos de recursos que receberá prontos para uso - inclusive atributos como alta disponibilidade, recuperação de desastre e autonomia - assim como a capacidade geral de armazenamento e recursos de sua infraestrutura de hardware. Como essa plataforma formará por fim a base de sua oferta DBaaS, é crítico entender exatamente do que é capaz - e o que é possível passar a seus usuários finais. Se você usar uma base de armazenamento que tenha recursos excepcionais de confiabilidade, disponibilidade e capacidade de manutenção (RAS), por exemplo, estará mais bem equipado a fornecer bancos de dados na nuvem que são resilientes e altamente disponíveis também. Etapa dois: Identificar cargas de trabalho comuns e melhores práticas O próximo estágio de planejamento de DBaaS fornece a você, como um profissional de dados experiente com conhecimento íntimo dos funcionamentos internos de sua organização e suas estruturas de dados, a chance de brilhar. A etapa mais crítica para a entrega de DBaaS que realmente traz valor a seus usuários finais é decidir antecipadamente o tipo de modelos e imagens de banco de dados que devem ser disponibilizados na nuvem. Para tomar tais decisões, você deve identificar as cargas de trabalho comuns e os processos chaves que ocorrem em seu ambiente de negócios e coletar melhores práticas. Esses são os principais candidatos para automação e entrega por meio de DBaaS e a chave para seu lançamento bem-sucedido. Por exemplo, os DBAs podem trabalhar juntamente com os gerentes de linha de negócios para identificarem os conjuntos de dados que “precisam ter” e usarem essas informações para criarem modelos de bancos de dados que conectem de forma eficiente a sistemas front-end, funcionem bem com ferramentas de consulta e possam ser facilmente clonados para fornecimento futuro por meio de DBaaS. Em seguida, a equipe e os sistemas podem acessar a nuvem e ter acesso a todos os modelos que contêm os dados mais recentes, informações atualizadas no minuto e estruturas de dados - sem criaBANCO DE DADOS | Educação a Distância

37

rem as dificuldades de administração de dados de mudanças de esquema, mapeamento, migração de dados e mais. Em outros ambientes corporativos, DBAs podem escolher imagens de bancos de dados - frequentemente incorporando metadados específicos do segmento de mercado e dados de referência - como candidatos para automação. Um DBA familiarizado com os requisitos de negócios pode isolar uma instância de um banco de dados de produção que contenha um conjunto crítico de tabelas, visualizações, acionadores e procedimentos armazenados - assim como dados de referência chave - para criar uma imagem de banco de dados para ser automatizada por meio de DBaaS. Quando os negócios solicitam um banco de dados para suportar uma nova filial ou para testar um aplicativo, não haverá nenhuma necessidade de esperar semanas enquanto DBAs o constroem. Em vez disso, ele estará disponível instantaneamente por meio de DBaaS na nuvem. Etapa três: Estabelecer um modelo de entrega Agora que você decidiu sobre a sua infraestrutura de hardware e identificou os processos e procedi mentos a serem automatizados por meio de DBaaS, sua etapa final será trabalhar com usuários finais para educar e ajudar os mesmos a selecionarem a interface por meio da qual esses serviços de dados serão disponibilizados. Há três métodos principais de acesso a DBaaS: por meio de uma interface gráfica com o usuário (GUI), uma interface da linha de comandos (CLI) ou diretamente por meio de uma interface representational state transfer (REST) padrão. Qual interface será empregada por fim dependerá muito da preferência do usuário final. Por exemplo, enquanto a GUI é a abordagem mais fácil e simples das três, se os usuários finais já utilizarem aplicativos que empregam CLI, pode ser que não queiram alternar. Como alternativa, os usuários podem querer eliminar a necessidade de intervenção humana inteiramente e promover uma integração mais forte com seu ambiente, programando aplicativos para se comunicarem diretamente com DBaaS por meio de REST. Quando se sabe as opções, é possível trabalhar com seus usuários e ajudar a guiá-los para a interface de DBaaS mais adequada para seus desejos e necessidades específicos e juntos selecionar o wrapper que unirá todo o pacote DBaaS. uma nuvem com um raio de esperança Não é nenhum segredo que gerenciar os valores de dados em rápida expansão e as necessidades de administração de banco de dados das grandes empresas dos dias de hoje é uma grande proeza. DBAs têm uma tarefa dura e não há outra maneira de descrever isso. A boa notícia é que com DBaaS, os profissionais de dados estão em uma posição exclusiva não somente de darem aos usuários finais novos níveis de liberdade e serviço, mas também para saírem do ciclo vicioso de tarefas de dados rotineiras e irem para as coisas boas. E apesar de isso poder exigir algum fundamento para chegar lá, no que se refere a uma nuvem com um raio de esperança, isso é praticamente o melhor que se pode obter. Fonte: <http://www.ibm.com/developerworks/br/data/library/dmmag/DMMag_2011_Issue2/cloudDBaaS/>. Acesso em: 14 ago. 2012.

38

BANCO DE DADOS | Educação a Distância

uNiDADE ii

OS BANCOS DE DADOS E O SOFtWArE
Professor Me. Edson Yanaga Objetivos de Aprendizagem • Apresentar as definições fundamentais de sistemas de bancos de dados. • Descrever as arquiteturas de bancos de dados e suas características. plano de Estudo A seguir, apresentam-se os tópicos que você estudará nesta unidade: • Conceituar schemas, instâncias, abstrações e as interfaces de interação com o SgBD • Estudo do histórico das arquiteturas de computação em geral e de sistemas de banco de dados • Classificação dos diferentes tipos de banco de dados de acordo com suas características

.

Apresentaremos algumas delas para que você. que evoluíram do monolítico até o distribuído em camadas. Entender como podem ser construídos sistemas com SGBDs implica em conhecer também a história da arquitetura de sistemas de computação. possa avaliar subjetivamente e objetivamente diferentes alternativas do mercado. Diferentes tipos de interface de usuário são disponibilizadas para diferentes tipos de usuários em vários produtos diferentes comercializados no mercado. Apresentaremos também alguns critérios de classificação de SGBDs para que você.iNtrODuçãO Nesta unidade. é necessário diferenciar adequadamente os modelos das instâncias dos modelos – pois possuem ciclos de vida e finalidades bastante distintas. possa explorá-las posteriormente. Fonte: SHUTTERSTOCK. Cada geração possui suas particularidades.COM BANCO DE DADOS | Educação a Distância 41 . Para compreender adequadamente os sistemas de banco de dados. que também são refletidas na construção dos diferentes SGBDs. como desenvolvedor(a) de software incumbido(a) da árdua tarefa de escolher um produto. apresentaremos alguns conceitos fundamentais que serão utilizados nas demais unidades. desenvolvedor(a).

Ao manipularmos este banco de dados com operações de inserção. No conjunto de contatos da minha agenda pessoal. O conjunto de dados de um banco de dados num determinado instante do tempo é denominado de snapshot. alteração e remoção. Por meio desses conceitos. decidimos adequadamente escolher somente os aspectos mais relevantes para resolver um determinado problema. nós modificamos o snapshot.SCHEMAS. Uma instância é um item dentro do banco de dados que segue as definições de seu schema correspondente. conseguimos alcançar a abstração necessária para construir o nosso modelo de software. esse banco de dados muda toda vez que eu adiciono um novo contato ou altero um telefone ou e-mail deste contato. quando definimos um novo banco de dados. primeiro definimos o seu schema – que após criado representa um snapshot inicial vazio. mas praticamente não é utilizado. é importante distinguir aquilo que representa a descrição do banco de dados com o banco de dados em si. O SGBD é responsável por garantir a consistência do snapshot em 1 O plural correto de schema é schemata. mesmo sendo errado. É impossível conseguir modelar todos os aspectos do mundo real numa aplicação. Os dados realmente armazenados num banco de dados podem mudar com uma alta frequência. Também é definido como o estado atual de todas as instâncias no banco de dados. e representamos estes aspectos por meio de um modelo – que é uma abstração dos dados do mundo real. A distinção entre o schema do banco de dados e o estado do banco de dados é muito importante. No processo de desenvolvimento de software. que é especificado durante o projeto do sistema de software. A descrição do banco de dados é denominada de schema1. costuma-se utilizar o plural schemas. Um modelo de dados é uma coleção de conceitos que pode ser utilizada para descrever a estrutura de um banco de dados. INSTÂNCIAS E ABSTRAÇÕES Uma característica fundamental de qualquer modelo de software (o que inclui o banco de dados) é o seu nível de abstração. Assim. Na área de tecnologia da informação. 42 BANCO DE DADOS | Educação a Distância . Em qualquer modelo de dados.

iNtErFACES DOS SgBDS Algumas das interfaces do SGBD com o usuário são: Linha de Comando Sem dúvida nenhuma a linha de comando é a interface mais poderosa e flexível para a interação do usuário com o SGBD. Não é uma operação usual ter que realizar modificações no schema. BANCO DE DADOS | Educação a Distância 43 . Mas desenvolvedores devem sem dúvida nenhuma dominá-la para poder explorar os recursos do mesmo.qualquer momento do tempo. Este conjunto de alterações para acomodar mudanças no software é denominado de schema evolution. mas elas são realizadas toda vez que uma mudança nos requisitos do negócio demanda uma alteração no modelo de dados. Por este mesmo motivo. normalmente não é uma opção que a maioria considere como amigável.

Interfaces Web Muitos SGBDs fornecem interfaces Web que podem ser acessadas por meio de qualquer navegador para a administração e manipulação dos bancos de dados. são bastante amigáveis e possuem ainda a vantagem da disponibilização do acesso. mas não se importam em liberar o acesso por meio de HTTP (Web). 44 BANCO DE DADOS | Educação a Distância . Muitos administradores de rede não se sentem confortáveis em permitir o acesso direto ao banco de dados. Embora não sejam tão poderosas ou produtivas.

mas costumam fornecer capacidades de manipulação gráfica de diagramas. Isso auxilia os desenvolvedores a “enxergar” os relacionamentos entre as entidades do banco de dados. BANCO DE DADOS | Educação a Distância 45 .Interfaces Desktop São tão amigáveis quanto as Interfaces Web.

Dentre os fatores que influenciaram estas evoluções estão o aumento da capacidade de processamento. da centralizada até o modelo em camadas. 46 BANCO DE DADOS | Educação a Distância . Nas próximas seções. preenchendo formulários e interagindo com a interface de controle. ao mesmo tempo em que as aplicações e os modelos de arquitetura de aplicações evoluíram. típica de sistemas implementados utilizando-se triggers e stored procedures. apresentaremos e descreveremos concomitantemente estas diferentes arquiteturas. também evoluíram os sistemas de banco de dados. Os usuários finais conseguem executar seus processos de negócios por meio da própria interface do SGBD. o aumento do número de usuários. Não há como explicar adequadamente as arquiteturas de sistemas de banco de dados sem descrever conjuntamente as arquiteturas de sistemas de computação em geral. ArQuitEturAS DE SiStEmAS DE BANCO DE DADOS A arquitetura de sistemas de banco de dados confunde-se com a própria história da arquitetura de sistemas de computação em geral. De fato.Interfaces baseadas em formulários O Oracle Forms é um exemplo clássico desta interface. o aumento da quantidade e capacidade das redes de comunicação. o aumento da quantidade de informações e a universalização do acesso. a redução de custo dos equipamentos. o aumento da capacidade de armazenamento.

mODElO CENtrAliZADO Os primeiros modelos computacionais eram centralizados. A interação dos usuários com as aplicações era realizada por meio de terminais burros. que não possuíam poder de processamento: somente teclado. baseados num único mainframe fornecendo processamento. Mainframe Terminal Burro Figura 1 Fonte: o autor Terminal Burro Terminal Burro BANCO DE DADOS | Educação a Distância 47 . Raros eram os mainframes (devido ao seu alto custo) e por consequência também poucos eram os usuários que tinham acesso a aplicações baseadas em mainframe. armazenamento e interface de interação com o usuário no mesmo equipamento/aplicação. A Figura 1 retrata um típico sistema centralizado baseado em mainframe. e exibiam telas geradas no próprio mainframe e transmitidas até o monitor (usualmente de fósforo verde ou amarelo) por meio de um cabo de comunicação.

arquivos. Naturalmente. Os clientes. podem acessar os recursos disponibilizados por estes servidores por meio de rede. que serão apresentados adiante. pois qualquer alteração numa pequena parte do sistema costuma levar a várias outras alterações em cascata para diversas outras partes do sistema. que também são PCs. dependendo da conveniência).) interligados por meio de uma rede de comunicação. Modelo cliente/servidor Com a popularização dos PCs e o declínio de seus preços. Os bancos de dados eram então extensões da própria aplicação e eram baseados nos modelos hierárquicos e em rede. Cada servidor tornou-se um serviço especializado (embora não seja incomum agrupar vários serviços num único equipamento. as aplicações desenvolvidas para este tipo de equipamento também foram concebidas e implementadas de modo monolítico. Isso significa que não havia uma distinção clara entre o que era interface com o usuário ou o que era código de negócios ou código responsável pelo armazenamento de dados.Costumamos retratar este modelo de computação como monolítico. Esta situação é denominada de sistema altamente acoplado. e-mail. A ideia é que ao invés de termos um grande equipamento monolítico (mainframe). A Figura 2 mostra um esquema simplificado da arquitetura cliente/servidor. 48 BANCO DE DADOS | Educação a Distância . passamos a ter vários equipamentos menores (e de custo e capacidade inferior) com propósito específico (banco de dados. pois todas as atividades eram baseadas no mainframe. iniciaram-se as primeiras implantações da arquitetura cliente/servidor. impressão etc.

e com ele também popularizou-se a prática do desenvolvimento de aplicações utilizando-se triggers e stored procedures dentro do próprio SGBD.Servidor Servidor Servidor PC Figura 2 Fonte: o autor PC PC PC Em termos de arquitetura das aplicações. Cada cliente estabelece uma conexão remota ao SGBD. que passa a executar a lógica de negócios. armazenar os dados e controlar as transações. Este modelo tornou-se extremamente popular no final da década de 1980 e início da década de 1990. denominamos o modelo cliente/servidor como modelo de 2 camadas. O modelo cliente/servidor é bastante adequado quanto às aplicações que possuem um número limitado de usuários concorrentes (de 100 a até 300 ou 400 usuários). No lado cliente costumase implantar os recursos da aplicação relacionados à interface com o usuário. A partir deste número. enquanto no lado servidor implanta-se a lógica de negócios. BANCO DE DADOS | Educação a Distância 49 . armazenamento e controle transacional. respectivamente camada cliente e camada servidor.

Naturalmente.o desempenho desta arquitetura degrada-se consideravelmente. como ilustrado na Figura 3. há um limite também para a troca do equipamento por um maior (escalabilidade vertical). PC PC PC PC Servidor de aplicação Servidor de aplicação Servidor de Banco de Dados Figura 3 Fonte: o autor 50 BANCO DE DADOS | Educação a Distância . modelo de 3 Camadas ou N-Camadas Aplicações baseadas na Internet (web) costumam adicionar uma camada de software adicional entre o cliente e o SGBD. Surgiram então os modelos de 3 camadas para tentar resolver este problema. e o particionamento e distribuição dos sistemas de banco de dados (escalabilidade horizontal) costuma ser bastante dispendioso.

Como idealmente a camada de aplicações é projetada de modo stateless (sem estado). A quantidade de camadas fica a gosto do arquiteto que projeta a arquitetura. a replicação horizontal torna-se bem mais simples do que no modelo cliente/servidor. e a camada do SGBD é responsável pelo armazenamento dos dados. Podemos adicionar camadas de validação. Este modelo de camadas é o modelo utilizado atualmente para suportar a imensidão de dados e usuários das aplicações de Internet contemporâneas. comunicação distribuída etc. a camada intermediária é responsável pela lógica de negócios. auditoria. NoSQL e Cloud Computing: <http://www.com.thedevelopersconference. A quantidade de conexões de rede com o SGBD também diminui.Esta camada intermediária é denominada de camada de aplicação. pois agora os usuários não o acessam diretamente – esta tarefa passa a ser responsabilidade da camada de aplicação. mas a filosofia de todo este processo de divisão de camadas segue os princípios já apresentados. Separa-se então em 3 papéis distintos cada camada: a camada mais próxima do usuário é responsável pela interface e interação com o usuário. O maior evento da comunidade de desenvolvedores do Brasil e referência para profissionais iniciantes ou experientes nos mais variados assuntos. e é responsável pela execução da lógica de negócios. criando aplicações de 4. Banco de Dados.br/>. Toda a lógica de negócios que anteriormente era codificada utilizando-se triggers e stored procedures passa a ser executada na camada intermediária utilizando-se uma linguagem de propósito geral. BANCO DE DADOS | Educação a Distância 51 . 5 ou N camadas. Outras arquiteturas costumam subdividir a camada intermediária em outras 2 ou 3. incluindo Arquitetura de Software.

eu fui à Inglaterra. E por quase 50 anos. O único modo de tolerar o sabor era bebê-lo bem gelado. Em 1984. Em 1933. algumas gigantes empresas de grãos começaram a produzir cerveja. eu nunca entendi a atração.COM . Desde aqueles dias a situação da cerveja nos Estados Unidos melhorou dramaticamente. quando a proibição foi encerrada. e as escamas caíram dos meus olhos. Como um adolescente nos anos 60. e eu gostei.Sem Banco de Dados Nos Estados Unidos. Novas 52 BANCO DE DADOS | Educação a Distância Foto: SHUTTERSTOCK. a indústria de cerveja morreu. venda e importação de bebidas alcoólicas foram proibidas por emenda constitucional. Finalmente pude entender. Esta emenda foi revogada treze anos depois. em 1920. Durante aquele período de proibição. nós nos Estados Unidos bebemos este líquido encorpado efervescente e o chamado de “cerveja”. Pela primeira vez eu pude provar cerveja. amarelo e desagradável derivado da urina de javalis doentes. a manufatura. Por que cerveja? Era um fluido páli do. Eles monopolizaram completamente o mercado. e não possuía nenhuma qualidade que eu pudesse observar.

um engenheiro de hardware que tinha a capacidade de escrever algumas linhas de código foi alocado na equipe de software. Ao fim dos anos 90. Nós não precisávamos de relatórios com análises massivas. Ainda não temos nada tão bom quanto a cerveja inglesa. e eventualmente foi nomeado meu cogerente. Como líder de equipe. porque era a solução técnica errada. Mas nosso responsável pelo marketing continuou insistindo que precisávamos utilizar um banco de dados relacional. A palavra “relacional” tornou-se sinônimo de “bom”. Durante um período de vários meses. e quaisquer outros mecanismos de armazenamento de dados foram proibidos. e em muitos casos a cerveja é realmente boa. indigesto. Mas o cara do marketing foi taxativo. Ele e eu iríamos “dividir” a responsabilidade de liderar a equipe de software. Ele disse que os clientes iriam demandar um banco de dados relacional. estávamos na década de 80). Nos anos 80 algumas poucas gigantes empresas de banco de dados monopolizaram o mercado. Uh huh. Foi a melhor mudança que fiz na minha carreira profissional. e responsável pela qualidade do software. e nenhum cliente havia sequer questionado a nossa tecnologia de armazenamento de dados. Eu achei tudo aquilo um pedido estranho pois nós não tínhamos vendido nenhum sistema até aquele momento. Elas o fizeram ao promover o medo. sobraram somente os BANCO DE DADOS | Educação a Distância 53 . e banco de dados B-tree morrendo. E eu também acredito que eles nunca faturaram um centavo sequer. Esta não foi uma jogada politicamente acertada para mim. Com certeza. E funcionava bem.cervejarias estão sendo criadas por todo o país. assim como as cervejarias nos anos 20. Arquivos texto estavam proibidos. mas estamos chegando lá. e nós mantínhamos os dados em arquivos texto. Nosso produto media a qualidade de linhas de comunicação T1. incerteza e dúvida entre gerentes e profissionais de marketing. como banco de dados de objetos. Eu era o líder de equipe de uma startup naquele tempo. Gradualmente ele foi recebendo mais e mais responsabilidade. Nós não tínhamos consultas complexas. Um cara de hardware com nenhuma experiência real em software iria me “ajudar” a liderar a equipe. Claro. Eu assisti ao crescimento do mercado de banco de dados relacionais durante os anos 90. A empresa que eu deixei não existe mais. Certamente não precisávamos de um processo com múltiplos megabytes consumindo memória e desperdiçando ciclos de processamento (lembrem-se. Nosso modelo de dados era relativamente simples. lento e caro. E qual você acha que foi o primeiro problema? Foi o de inserir um banco de dados relacional no nosso sistema! Eu saí um mês depois e iniciei minha carreira de consultor. Eu assisti às outras tecnologias de armazenamento de dados. Nós teríamos que utilizar um banco de dados relacional. minha visão de um banco de dados relacional era que ele seria um trambolho grande. Portanto eu lutei contra esta idéia com todos os recursos que eu tinha.

uma proibição foi revogada. Durante este período eu assisti com horror a como uma equipe após a outra colocava o banco de dados no centro do seu sistema. Isto me lembrou de um comercial de cerveja dos anos 80 “Ya gotta grab for all the gusto in life ya can”. da empresa. encapsulados em reluzentes novos frameworks. Eles eram soberanos. simples e saborosos banco de dados não relacionais estavam sendo projetados ao redor dos bancos de dados. Eu avisei que o schema havia se tornado o “Blob”. consumindo tudo à sua vista. do mundo e do universo. Estes gigantes estavam criando uma tempestade. um deles chegou a ter a audácia de comprar anúncios de televisão que diziam que seu produto era “o poder que movia a Internet”. tremi. lento e caro porco devorador de memória chamado banco de dados relacional! Eu assisti com alegria ao nascimento de BigTable. na primeira década no século 21. CouchDB. Eu testemunhei a criação de um novo tipo de emprego. E então. alguém percebeu que pode haver alguns sistemas no mundo que não necessitam de um grande. e o movimento NoSQL nasceu. Eu ataquei e ataquei à medida que vi tabelas e linhas invadindo o código-fonte sistema após sistema. tão facilmente corrompíveis por estes palhaços indisciplinados. Nós precisamos de pessoas especiais para gerenciar os dados. Eu o considerei um milagre. Ao centro do sistema. Finalmente. MUAHAHAHAHAHAHAHA! Eu assisti ao SQL ser enfiado em cada buraco e fenda do sistema. Durante a bolha ponto com. Eu fraquejei. Eu blasfemei incansavelmente contra a prática de se mover toda a lógica de negócios em stored procedures. Eu fugi correndo de sistemas em que o SQL havia contaminado a Interface do Usuário. e a todos os outros pequenos sistemas de armazenamento de dados florescendo. Eles eram deuses. e que o banco de dados era a alma e o coração do seu projeto. Mas então eu percebi algo. assim como as pequenas microcervejarias nos anos 80. Mongo. Mas eu sabia que meus ataques eram como jogar pedrinhas num behemoth. uma luz brilhando no deserto. ainda estavam no centro da concepção do projeto! O veneno das campanhas publicitárias das empresas de banco de dados relacionais ainda estava ecoando na mente dos arquitetos. Os bancos de dados. Eu avisei sobre o perigo. Eles ainda estavam cometendo o erro fatal. Os dados são tão preciosos. Pessoas que iriam garantir e divulgar a mensagem de marketing das grandes empresas de banco de dados: que o banco de dados pertence ao centro. gordo. A cerveja estava de volta! E estava começando a ter um gosto bom. Alguns dos sistemas utilizando estes bons. 54 BANCO DE DADOS | Educação a Distância . Eles foram convencidos por um monte de propaganda que o modelo de dados era o aspecto mais importante da arquitetura.gigantes. Meu deus. resmunguei e rugi enquanto observava programas de mala direta sendo escritos em SQL. O DBA! Meros programadores não eram confiáveis o suficiente para guardar os dados – assim diziam as propagandas. Pessoas treinadas pelos fornecedores de banco de dados. tão frágeis.

Os casos de uso estão no centro. Eles afirmavam que eram o senhor e mestre dos banco de dados. Vocês não entendem. Se você envolve o banco de dados muito cedo. todos os elementos de dados. como elas se relacionam. e como são utilizadas. até que todos seus casos de uso e regras de negócios tenham sido elaborados. Os casos de uso devem estar no nível mais alto e mais visível das entidades arquiteturais. Estes frameworks encapsularam os bancos de dados e brigaram com unhas e dentes para manter o centro de nossas aplicações. O centro da sua aplicação não é o banco de dados.“Pare!”. Você pode postergar esta decisão. Isso muda alguma coisa se você estiver utilizando um banco de dados NoSQL? Claro que não! Você ainda focará em conseguir os casos de uso funcionando e testados antes de pensar no banco de dados.” Mas a inércia era muito grande. Quando você sabe isso? Quando você já tem todos os casos de uso e regras de negócios escritas e testadas. Quando é a melhor hora de se determinar o seu modelo de dados? Quando você já conhece quais são as entidades de dados. não importa qual banco de dados você acabe escolhendo. Eles até alegavam serem capazes de transformar um banco de dados num banco de dados NoSQL. Nem é um ou outro framework que você possa estar utilizando. Uma enorme onda de frameworks cresceu e esmagou a nossa própria indústria. “Pare! Vocês não entendem. Você deve BANCO DE DADOS | Educação a Distância 55 . O centro da sua aplicação são os casos de uso da sua aplicação. Ele lutará para ganhar o controle do centro da aplicação. e uma vez lá ele guardará o centro como um cachorro bravo. eu gritei. e eu os libertarei!” ---------O nome deste artigo é “Sem Banco de Dados”. Você tem que trabalhar duro para manter o banco de dados fora do centro de seus sistemas. codificados e testados. Sempre! Banco de dados e frameworks são detalhes! Você não tem que decidir utilizá-los prematuramente. E os frameworks gritaram com uma poderosa voz ecoada por toda a a terra: “Dependa de mim. Com o que você acha que a arquitetura desse sistema se parece? Você acredita que os casos de uso são o centro do projeto? Ou você acha que encontrará o código-fonte adaptado para encaixar nos padrões dos frameworks? Você suspeitaria de objetos de negócios que parecem linhas de banco de dados? Será que o schema e os frameworks poluiriam tudo? Isso é como uma aplicação deve parecer. levando tudo pelo caminho. Eu enlouqueço quando ouço um desenvolvedor de software descrever o seu sistema como “Um sistema no Tomcat utilizando Spring e Hibernate com Oracle.” As próprias palavras colocam os frameworks e o banco de dados no centro. Talvez após ler todas estas lamentações você possa entender o porquê do título. todos os relacionamentos. Neste momento você já terá identificado todas as consultas. e estará capaz de construir um modelo de dados que encaixe perfeitamente no seu banco de dados. ele deturpará o seu projeto.

com/uncle-bob/2012/05/15/NODB. Uncle Bob Martin é o Mestre Artesão de Software da 8th Light. número de usuários. Estamos nos aproximando de uma época interessante. número de instalações e custo. 2012. Acesso em: 12 ago. Fonte: <http://blog.8thlight. Nas próximas seções exploraremos como utilizar esses critérios para classificação. Mas à medida que brincamos com nossos CouchDBs. Mongos e BigTables. modelo de dados Não tenha dúvidas: muitas pessoas relacionam o modelo relacional a banco de dados devido à sua absoluta onipresença. Uma época em que a proibição contra diferentes mecanismos de armazenamento foi revogada e em que estamos livres para experimentar muitas abordagens novas e inovadoras. renomado palestrante e super geek de software desde 1970. Um argumento costumeiro na escolha do modelo relacional é 56 BANCO DE DADOS | Educação a Distância Foto: SHUTTERSTOCK. ClASSiFiCAçãO DOS SiStEmAS DE BANCO DE DADOS Assim como na natureza.html>. lembrem-se: o banco de dados é só um detalhe e você não deve envolvê-lo logo no início. podemos utilizar vários critérios diferentes para classificar os sistemas de banco de dados.COM . Alguns desses critérios bastante comuns são modelos de dados. Ele é um autor premiado.continuamente dizer “Não” à tentação de envolver o banco de dados logo no início.

praticamente não havia outras opções a considerar. Durante anos houve muita pesquisa e discussão sobre banco de dados orientado a objetos. por exemplo. baseados em grafos. Esses modelos mais recentes não serão abordados neste material. Robustos e confiáveis. já eram utilizados em grandes aplicações por empresas dos mais variados segmentos. há anos já havia obtido sua maturidade. Primeiramente. Sistemas de bancos de dados mais antigos (particularmente os baseados em mainframe) utilizam o modelo hierárquico ou o modelo em rede. O pensamento da época era que o desenvolvimento de aplicações seria muito mais simples se pudéssemos utilizar linguagens e banco de dados orientados a objetos juntos. antes do advento do termo NoSQL. Mas não se engane ao considerar que aplicações baseadas nestes modelos desapareceram. BANCO DE DADOS | Educação a Distância 57 . graças à grande popularização das linguagens orientadas a objetos. o modelo relacional já era algo absolutamente consolidado e otimizado. É o caso. e as aplicações baseadas nestes modelos garantem a longevidade do mainframe. do Banco do Brasil. como os baseados em chave-valor. baseados em documentos etc. Mas dois fatores foram decisivos para que isso não acontecesse. Atualmente. Há uma cumplicidade: mainframes garantem a sobrevida do modelo hierárquico e em rede. Há outros modelos de dados bastante recentes (os oriundos do NoSQl). É fato que boa parte deles ainda roda seus mais importantes sistemas em mainframes com sistemas de banco de dados hierárquicos ou em rede. De fato. Grandes bancos são um segmento tradicionalmente conservador em relação a tecnologias adotadas. O outro motivo foi que realmente os bancos de dados orientados a objetos nunca se popularizaram comercialmente o suficiente para criar um ecossistema rentável ao redor de si. são raros os exemplos de sistemas de banco de dados deste tipo e não possuem uma fatia que possa ser considerada significativa do mercado.que “ninguém será demitido por tê-lo escolhido”. Baseado em fundamentos matemáticos extremamente simples.

Outros tipos de distribuições de banco de dados podem envolver particionamento (dividir os dados em instalações diferentes) e/ou replicação (duplicar os dados) para aumentar o desempenho e/ou disponibilidade. Em sistemas de banco de dados mais tradicionais. costuma-se utilizar uma distribuição master-slave. que são projetados para serem pequenos e rápidos o suficiente para serem embarcados dentro de uma aplicação. o desempenho pode aumentar de modo significativo. Sistemas distribuídos são aqueles em que há mais de uma instância (com a possibilidade de várias) sendo executada. Sistemas centralizados são aqueles em que há uma única instância do sistema de banco de dados sendo executada. em que as atualizações de dados são efetuadas no master e as leituras são efetuadas em um ou mais slaves. a grande maioria dos sistemas de banco de dados modernos suporta múltiplos usuários concorrentes com acesso mediante algum protocolo de rede. podemos classificar os sistemas de banco de dados em centralizados ou distribuídos. 58 BANCO DE DADOS | Educação a Distância . São apropriados para quantidades pequenas de dados ou em situações em que a disponibilidade do sistema não é crucial ao negócio. dependendo do seu tipo de instalação. Mas mesmo estes dois SBGDs podem se comportar como monousuário ou multiusuário. Naturalmente. Como a maioria das aplicações executa mais leituras do que atualizações. sistemas de banco de dados podem ser monousuários ou multiusuários.Número de usuários Em relação ao número de usuários. Número de instalações Quanto à quantidade de instalações. Alguns raros exemplos atuais de banco de dados monousuários são os banco de dados embarcados. Alguns exemplos que poderíamos considerar são o Apache Derby e o H2.

No caso dos gratuitos. mas quando for necessário o suporte. vale a pena distinguir entre os sistemas livres (software livre) e os que representam versões reduzidas de produtos mais caros. Nosso mercado consolidou-se a um ponto em que optar entre uma solução e outra passou a ser uma questão de gosto ao invés de uma questão puramente técnica. e permitir que empresas avaliem e usem seus produtos de modo gratuito pode ajudar na tarefa de “aprisionar” o cliente. uma startup que inicie seus negócios com uma versão gratuita poderá passar a pagar pelo uso dos produtos mais “completos” quando a capacidade da versão gratuita for atingida. É o caso de Oracle. Provavelmente em mais de 90% dos casos de uso de aplicações tradicionais. DB2 e SQL Server. no caso do MySQL. quantidade de dados. instâncias etc. não haveria diferença no uso entre um sistema de banco de dados livre e outro pago. estabilidade e funcionalidade bastante elevados e não devem nada a desejar em relação aos produtos pagos.). Dois produtos livres bastante populares são o MySQL (bem mais popular) e o PostgreSQL. Nesse ponto espera-se que a empresa já esteja com um faturamento considerável e provavelmente não se importará com o investimento. O modelo de negócios de ambos permite o livre uso e redistribuição. Temos desde o gratuito até exemplares que podem custar alguns milhões de dólares. BANCO DE DADOS | Educação a Distância 59 .Custo É no critério custo em que amplitude de diferença entre os sistemas de banco de dados é maior. pode-se optar por contratá-lo de uma empresa terceirizada ou do próprio fornecedor (Oracle). produtos comerciais que tradicionalmente eram bastante custosos passaram a oferecer versões gratuitas (limitadas em número de processadores. pois migrar de um SGBD para outro não é uma tarefa simples. Ambos possuem graus de maturidade. Assim. Devido ao sucesso dos sistemas de banco de dados livres. Trata-se de uma estratégia comercialmente interessante.

O artigo apresentado no saiba mais promove uma reflexão importantíssima para que você possa ponderar sabiamente durante o processo de desenvolvimento de suas aplicações. que é um metamodelo do banco de dados. Existem diversos tipos de interfaces de interação dos usuários com o sistema de banco de dados. metamodelo e instâncias do modelo é algo bastante frequente na área de software.<http://youtu. A boa assimilação da distinção entre schema e instâncias é um conceito fundamental para o uso efetivo de um sistema de banco de dados – aliás. noutros. esta diferenciação entre modelo. de suas instâncias. Também é um dos pioneiros em NoSQL e especialista em MongoDB. até porque vivemos um período em que muitos conceitos estabelecidos estão sendo BANCO DE DADOS | Educação a Distância 60 . Muitas vezes você necessitará do poder da linha de comando. e a escolha de qual interface utilizar depende muito do propósito e do papel do usuário ao acessá-lo.be/piSbDWeu3pM>. Este autor concorda com a proposta do Uncle Bob Martin. CONSiDErAçÕES FiNAiS Nesta unidade nós aprendemos a distinguir o schema. Luciano apresenta as vantagens e as aplicações deste banco de dados. Luciano Ramalho – MongoDB Luciano Ramalho é um dos grandes experts em linguagens de programação dinâmica no Brasil. A prática faz-se necessária para que um bom desenvolvedor possa escolher o meio de interação mais adequado de acordo com a situação. Alterações no schema não costumam ser muito frequentes. alguns cliques numa interface desktop serão mais cômodos. um banco de dados de documentos. Sempre há a avaliação entre os quesitos poder versus facilidade de uso. remoção ou atualização. particularmente Python. Neste vídeo. A apresentação das arquiteturas de computação em geral e das arquiteturas de sistemas de bancos de dados pôde esclarecer a forma com que historicamente se desenvolve estas arquiteturas de aplicações. O seu conhecimento permitirá que você tome a decisão acertada. enquanto que as instâncias são manipuladas por meio de operações de inserção.

snapshot e schema evolution. e como os sistemas de banco de dados interagem com estes sistemas de computação? 3. pudemos listar alguns critérios diferentes para a classificação de diferentes produtos de sistemas de bancos de dados. instância. Veremos o porquê de suas qualidades o tornarem tão bem conceituado. Escolha um caso de uso da vida real para avaliar a implementação de um software.questionados. Finalizando esta unidade. Defina os seguintes termos: schema. mas a lista que assimilamos nesta unidade poderá lhe nortear com alguns argumentos importantes. Diferentes fornecedores com diferentes produtos apresentarão uma infinidade de argumentos para que você decida entre um e outro. Qual a diferença entre sistemas de computação de duas e de três ou N camadas. 2. AtiviDADES DE AutOEStuDO 1. Concentre-se naquilo que é realmente importante para sua aplicação e deixe o banco de dados como aquilo que ele realmente é: um detalhe. Poder desenvolver o seu software objetivando o valor de negócios e os seus usuários é muito mais importante do que quaisquer abstrações de armazenamento de dados – inclusive o banco de dados. Nossa escalada para o domínio dos sistemas de bancos de dados passará na próxima unidade para um novo degrau: o modelo relacional – que em muitos casos já foi (ou ainda é) sinônimo de banco de dados. Um detalhe importante. Claro que os critérios comerciais influenciarão bastante sua decisão. quais seriam suas considerações para decidir entre um SGBD e outro? BANCO DE DADOS | Educação a Distância 61 . é verdade – mas continua sendo um detalhe. Baseado(a) nos critérios descritos nesta unidade.

Com a revolução da internet. Vencer a linha do tempo é um desafio. afir ma Fadel. ele conta com uma trajetória profissional ímpar. é difícil encontrar profissionais que tenham passado a casa dos 50. continua com o mesmo gás e energia de quando começou a carreira. o Instituto Tecnológico da Aeronáutica (ITA). Fadel é um deles. Agora. O engenheiro eletrônico paulistano Luiz A.que vive um momento de retomada no Brasil . Fôlego de causar inveja a qualquer um que tenha se formado já na era digital. “Nem mesmo para nós da geração baby boomer”. conta sua experiência de 40 anos como profissional especializado na tecnologia.e ao sobe e desce de uma tecnologia que depois de altos e baixos continua forte no Brasil – o mainframe. BANCO DE DADOS | Educação a Distância 62 Fonte: SHUTTERSTOCK. Neste cenário. cada vez mais. Formado em um dos mais renomados celeiros de profissionais de engenharia do País. A falta de gente qualificada para atuar com a tecnologia . “Desemprego não é uma palavra que faz parte do vocabulário dos especialistas em mainframe”. e 40 de experiência em sistemas de grande porte.que protegeu a indústria nacional de informática . em meio às constantes transformações provocadas pela era digital. pela intrigante geração Y – formada por jovens entre 18 e 30 anos. São os chamados “dinossauros” da indústria de tecnologia no Brasil. Assistiu aos efeitos da reserva de mercado . Uma dura realidade que atinge quase todos os que tentam o mercado de trabalho. TI passou a ser uma área invadida e dominada.COM . No bom sentido. aos 63 anos.tem trazido de volta ao mercado muitos profissionais que já haviam pendurado as chuteiras. Reconhece que ainda tem muitos anos de estrada pela frente. claro. mas uma leva de execu tivos resiste bravamente. primeiro distinguished engineer da IBM no Brasil. principalmente porque as empresas vêm privilegiando o “san gue novo”.vida longa ao mainframe: a trajetória de um baby boomer Luiz Fadel. Poucos são os profissionais de tecnologia que conseguem sobreviver por tantos anos no mundo corporativo.

Além de abrir as portas para que os funcionários possam ter experiência profissional fora do Brasil.Sua carreira foi construída em uma das tecnologias mais antigas e que ainda continua forte no mercado. Na década de 90.fora ela.a atuar com sistemas de grande porte. em 1969. mas do que é adicionado a ela. os conhecidos mainframes. Eu mesmo estive por duas vezes trabalhando nos Estados Unidos. que reúne os melhores especialistas da companhia do mundo. poucos profissionais para desenvolvê-los. só três profissionais têm esse título. Em todos os meus 40 anos de carreira. Todo dia há coisas novas. Pelo contrário. quanto ao aspecto técnico. Apesar dos percalços. Não há gente BANCO DE DADOS | Educação a Distância 63 . a empresa era umas das poucas . tornavam-se os maiores consumidores da tecnologia. onde está o centro de pesquisa da IBM. No mundo. na época. o executivo conta um pouco de sua experiência ao longo de duas décadas. A falta de pessoal especializado em sistemas de grande porte é enorme. que a IBM chama de distinguished engineer. inclusive os mais seniores? Fadel – Sim. somando um total de seis anos – a primeira fase entre 1977 e 1980. E engana-se quem pensa que o mainframe morreu. Também estive envolvido na primeira instalação do Mainframe Operating Systems (Mainframe OS) no País. Não falo da base dela. Confira trechos da entrevista que Fadel concedeu à Computerworld: Computerworld . em 2003. é um sistema que completa o parque de muitas empresas por atender a necessidade de transações mais robustas. no exterior. Ou seja. CW – Hoje acabou o tempo em que os profissionais “vestiam a camisa” da empresa. Quadro que anos depois teve recuperação. Prova disso é que ainda existe uma forte demanda. a segunda de 1988 a 1991. ao norte do estado de Nova York. com o auge dos PCs. a demanda por sistemas de grande porte sofreu retração. Fadel . por um lado. Como o senhor enxerga a opção de ter feito carreira em uma única companhia? Fadel . assim que saí da faculdade. Na subsidiária brasileira. Esse quadro valoriza o profissional de mainframe.Comecei como trainee em vendas. Nos dois casos. que momentos o senhor elenca como os mais marcantes? Fadel – Quando entrei. Nunca precisei mudar de rumo para dar saltos. Eu fui o primeiro a conquistá-lo aqui. em Poughkeepsie. É o posto mais alto da empresa na área técnica. uma grande realização na carreira que não posso ignorar. há muitas oportunidades interessantes que o mercado de mainframe oferece. existiam só outras duas . Tanto que hoje cheguei a um cargo equivalente ao de um diretor com carreira em negócios. existe uma forte demanda de projetos e por outro. toda construída na gigante IBM. a plataforma evoluiu bastante de 1964 (quando comecei) para cá. Logo de cara tive o privilégio de participar de projetos envolvendo grandes bancos brasileiros que. Que razão o levou apostar nessa área? Luiz A. Isso quando éramos (os brasileiros) pouco respeitados.Sem planos de sair de cena. assim que fui promovido à analista de sistemas. existem cerca de 200 pessoas com o posto. CW – Desde que ingressou na IBM. e estou na empresa até hoje porque sempre vi grandes oportunidades de ascensão profissional dentro da carreira técnica. só lembro um momento crítico para os profissionais dessa tecnologia. CW – É fato que. sobretudo o brasileiro.Sem dúvida. exigindo do profissional estar sempre se atualizando. Também não podemos esquecer que a IBM sempre foi uma multinacional sólida e de peso. que permanece a mesma.

com.uol. 2012. Na empresa. 64 BANCO DE DADOS | Educação a Distância .no meio da pirâmide e quem possui experiência está empregado.br/carreira/2009/09/03/vida-longa-ao-mainframe-a-trajetoria-de-um-baby-boomer/>. Detalhe: há espaço para quem se aposentou e quer voltar e para quem não pretende pendurar as chuteiras. Fonte: <http://computerworld. Por isso a própria IBM firmou par ceria com as universidades do País para formar gente. por exemplo. Acesso em: 1 ago. Posso garantir que oportunidade é o que não falta para especialistas em mainframe. somos extremamente valorizados.

• Descrever as operações de manipulação de instâncias do modelo relacional. tuplas e relações • Conceituar os diferentes tipos de restrições do modelo relacional e de banco de dados • Descrever as operações de INSERT. UPDATE e DELETE do modelo relacional e como elas interagem com as restrições do banco de dados . • Conceituar as restrições do modelo relacional. apresentam-se os tópicos que você estudará nesta unidade: • Conceituar domínio. plano de Estudo A seguir.uNiDADE iii O mODElO rElACiONAl Professor Me. Edson Yanaga Objetivos de Aprendizagem • Conceituar o modelo relacional. atributos.

.

Nesta unidade.COM BANCO DE DADOS | Educação a Distância 67 .iNtrODuçãO A partir desta unidade. Oracle e MySQL (Oracle). sucedendo os bancos de dados hierárquicos e em rede predominantes em mainframes. Dada a relevância do assunto. abordaremos o modelo de dados relacional. sua expansão foi enorme. Exemplos de produtos populares são DB2 (IBM). Fonte: SHUTTERSTOCK. tanto esta quanto as próximas duas unidades focarão no modelo relacional de dados. que é o modelo utilizado nos bancos de dados relacionais. e imediatamente se popularizou devido à sua simplicidade e sólidos fundamentos matemáticos: é baseado na teoria geral dos conjuntos e em lógica matemática. SQLServer (Microsoft) e PostgreSQL (software livre). introduziremos alguns conceitos fundamentais do modelo relacional tentando nos distanciar um pouco da teoria geral dos conjuntos e nos aproximando mais do nosso mundo cotidiano. O advento do modelo relacional é atribuído a Ted Codd da IBM em 1970. Desde então. Os primeiros SGBDs relacionais apareceram na década de 1980. e acabou tornando-se sinônimo de “banco de dados”.

Os nomes das colunas (Nome. Dentro de uma determinada coluna. Podemos tentar entender uma relação como uma tabela ou uma planilha de cálculo. De fato. Sobrenome. Características de uma Relação A seguir analisaremos as características atribuídas a uma relação (tabela) no modelo relacional: 68 BANCO DE DADOS | Educação a Distância . o nome de uma coluna é denominado de atributo e a tabela é denominada de relação. uma linha é denominada de tupla. Contato Nome Ademir Carlos Justino Marcela Sobrenome Santos Silva Carvalho Moreno Nascimento 20/12/1984 26/04/1970 11/07/1981 03/06/1999 Figura 4 Fonte: o autor Observando a Figura 4. o banco de dados é representado como um conjunto de relações. inteiro.). todos os dados possuem o mesmo tipo (String. O tipo de dado que pode ser inserido em cada coluna é denominado de domínio. cada linha de uma tabela no modelo relacional costuma representar uma entidade do mundo real ou um relacionamento entre duas entidades. e representa os valores possíveis de cada atributo. Cada linha da tabela representa uma instância de um contato real. data. Definido de modo formal. Nascimento) representam informações sobre um Contato. Observando como uma tabela. cada linha representa uma coleção de valores relacionados.CONCEituAçãO No modelo relacional. real etc. verificamos que a tabela se chama Contato. pois representa um conjunto de contatos numa agenda pessoal.

1. Atômico no mesmo sentido de átomo e em transações: estes valores não podem ser divididos em outros componentes. Semântica de uma relação. ao menos no modelo relacional puro. No caso da tabela Contato. o valor não possui valor definido. não são possíveis valores compostos ou múltiplos valores dentro de um mesmo atributo. Durante o desenvolvimento de aplicações. Isso significa que não há uma ordem natural particular imposta dentro da relação. possui um Contato verdadeiro que pode ser abstraído com os dados daquela tupla. Outras relações podem representar relacionamentos (como seriam os e-mails ou os telefones de cada Contato). No modelo relacional. Como uma relação (tabela) representa a noção matemática de conjunto. 3. podemos definir como NULL o atributo Nascimento quando desconhecemos o dia em que nosso Contato nasceu. Relações podem representar situações factuais. Atomicidade dos valores e o valor Null. Algumas relações representam dados sobre entidades (como é o caso de Contato). Assim. Isto simplifica muito o modelo e sua utilização. Um conceito essencial e bastante utilizado em atributos é o valor definido como NULL. Podemos considerar que cada tupla da relação Contato seja um fato: você. no mundo real. pois não precisamos de notações nem de ferramentas para fazer distinção entre as entidades e os relacionamentos entre elas. cada valor de cada atributo dentro de uma tupla é atômico. não se deve assumir nenhuma premissa sobre a ordem dos elementos dentro de uma relação. Como estes dados serão gravados em algum dispositivo de armazenamento. é natural que sequencialmente eles estejam dispostos em alguma ordem – mas para efeitos do modelo relacional. deve-se assumir que a ordem dos elementos é caótica. BANCO DE DADOS | Educação a Distância 69 . relações não possuem ordem. NULL é um valor utilizado em colunas para definir casos especiais em que: o valor pode não se aplicar àquela tupla. tanto entidades quanto relacionamentos entre entidades podem ser igualmente representados por relações (tabelas). No modelo relacional. ou o valor é desconhecido. 2. Ordem das tuplas.

net. pois pode utilizar qualquer ferramenta de desenvolvimento para acesso aos dados”. mesmo sem ter qualquer espécie de retorno financeiro. Para Thiago José Macieira. Elephant Internet. principalmente depois que o governo federal decidiu estimular a adoção do produto em licitações públicas. revela estudo.uol. diz ele. 2012. “O banco de dados livre é hoje uma alternativa viável e de alta performance. realizado pelo IDG Brasil. Fonte: <http://computerworld. community manager da Java. para aplicações específicas ou embarcadas em equipamentos de co municação.2006-05-15. Essa é uma conclusão do consultor independente Fernando Lozano. o interesse pelo software livre no Brasil é cada vez maior. apresentada na quarta-feira (17/08) no Developer’s World 2005. Acesso em: 1 ago. uma das principais comunidades de open source do mundo. GENILSON CEZAR.br/tecnologia/2005/08/18/idgnoticia. iBest e Amsterdam Sauer. em São Paulo. no Hotel Jaraguá. com quase 20 colaboradores brasileiros.Bancos de dados livres crescem no Brasil Uma nova geração de bancos de dados livres começa a ganhar adesão de várias empresas do setor financeiro e industrial do país. no máximo um outro patrocínio para participar em congressos internacionais”. afirma Macieira. ESPECIAL PARA COMPUTERWORLD Uma nova geração de bancos de dados livres começa a ganhar adesão de várias empresas do setor financeiro e industrial do país. 70 BANCO DE DADOS | Educação a Distância Fonte: SHUTTERSTOCK. além de comercialmente atraente.COM . e já está criando um impacto positivo entre os desenvolvedores. desenvolvedor central do KDE.4431159825/>. “Muitos desenvolvedores estão decididos a contribuir para o avanço do open source.com. Lozano vem trabalhando na implementação de projetos de banco de dados livres em várias empresas como o Instituto Brasileiro de Petróleo e Gás.

Esta chave primária pode ser composta de um único atributo ou mesmo de um conjunto de atributos. de chave e de valores nulos. pois num conjunto. todos os elementos são distintos. Matematicamente. não há diferença entre uma chave primária simples (um único atributo) e BANCO DE DADOS | Educação a Distância 71 . Essas restrições podem ser derivadas dos próprios relacionamentos do modelo relacional ou de restrições de valores de negócios impostos pelo modelo de software sendo desenvolvido. Desse modo. Restrições de domínio As restrições de domínio impõem ao banco de dados quais valores podem ser permitidos em cada atributo dentro de cada tupla em cada tabela. havendo ou não a possibilidade de se haver registros com dados semelhantes dentro do modelo de negócios. mas no passado foi bastante comum a utilização de chaves primárias compostas para representar as tuplas de uma relação. restrições de chave e de valores nulos Como uma relação (tabela) representa um conjunto na definição formal da teoria dos conjuntos. Outras restrições possíveis podem restringir valores dentro de um tipo (somente os inteiros maiores que zero). utiliza-se uma restrição denominada de chave primária que define de modo único cada registro dentro da relação. e de integridade e integridade referencial.rEStriçÕES DO mODElO rElACiONAl Restrições no modelo relacional são uma forma de se restringir os valores que os atributos das tuplas podem possuir num determinado snapshot. Exploraremos melhor estas restrições de domínio quando tratarmos das restrições do SQL. não há a possibilidade de uma relação conter elementos repetidos. Algumas destas restrições podem ser de tipo (você não pode colocar um valor String num campo inteiro ou vice-versa). Não há verdades absolutas na área de Tecnologia da Informação. Estas são descritas nas seções seguintes. Os tipos de restrições do modelo relacional são de domínio.

Pense: o usuário deseja ou precisa saber a chave primária ou é a sua aplicação que foi projetada para obrigar o usuário a utilizá-la? Princípio da Navalha de Occam (ou Ockham) “Se em tudo o mais forem idênticas as várias explicações de um fenômeno. Popularmente costumamos citar este princípio como: “se há mais de uma explicação para um fenômeno. Baseando-se no princípio da Navalha de Occam. a mais simples é a melhor” . e todas parecem igualmente corretas. preferimos optar pela solução mais simples: chaves primárias simples. representam atributos dentro de uma tupla que não podem ter valores repetidos.uma chave primária composta (múltiplos atributos). 72 BANCO DE DADOS | Educação a Distância . Em que outras partes da sua vida profissional poderíamos aplicar com sucesso este princípio? Outro tipo de restrição são as chaves ou chaves únicas: como o próprio nome já implica. então a mais simples é a mais correta”. Outra prática atual diz respeito à visibilidade por parte do usuário do valor da chave primária. é bastante comum visualizar este atributo em formulários cadastrais e em listagens. Não exibi-lo também permite que a chave primária seja trocada numa eventualidade em que o particionamento ou a replicação de banco de dados seja necessária e implique numa troca da chave primária. Uma corrente de pensamento pondera que este número não faz sentido ao usuário e não deve ser exibido.William de Occam. Atributos de uma tupla com esta restrição obrigatoriamente devem possuir um valor válido que não seja nulo. Valores nulos (NULL) podem ser restringidos com uma restrição de non-NULL. Em aplicações legadas.

A restrição de integridade referencial é especificada entre duas relações (tabelas) distintas. Restrições de integridade referencial são criadas entre duas tabelas diferentes (ou excepcionalmente na mesma tabela). Integridade referencial e chaves estrangeiras A restrição de integridade estabelece que nenhuma tupla pode possuir uma chave primária com valor NULL. o atributo BANCO DE DADOS | Educação a Distância 73 . Isto implica que uma restrição de integridade referencial obriga uma tupla numa relação a referenciar a uma tupla existente em outra relação – para as quais a integridade referencial foi definida. Na tabela Telefone. Veja o relacionamento entre as tabelas Contato e Telefone. e é utilizada para manter a consistência entre tuplas pertencentes às duas relações.Integridade. Como a chave primária é utilizada para identificar de modo único cada tupla da relação. analisemos a Figura 5. permitir o valor NULL faria com que fosse possível ter duas tuplas com a mesma chave primária nula – sendo impossível distinguir uma da outra. Contato iD 1 2 3 4 Nome Ademir Carlos Justino Marcela telefone iD 1 2 Figura 5 Fonte: o autor Sobrenome Santos Silva Carvalho Moreno Nascimento 20/12/1984 26/04/1970 11/07/1981 03/06/1999 Número 443032020 4420201010 contato_id 1 3 Para compreender melhor este conceito.

7 milhão com banco de dados livre Tomada há cerca de dois anos pelo governo do Ceará. definimos que o atributo contato_id é uma chave estrangeira da tabela Contato que referencia o relacionamento entre as duas tabelas. Como trabalhava há cerca de 8 anos com o PostgreSQL.COM . Era nesta situação que as 1. realizado semana passada em Natal (RN). ele explicou o projeto.contato_id referencia o contato ao qual o Telefone pertence. Como o Detran chegou ao seu nome? O Detran tinha a seguinte arquitetura: um servidor de aplicação ligado a um servidor Oracle. Neste caso. que já era o banco de dados oficial do Governo do Ceará. Em 2008. Pensou-se em utilizar o MySQL. Gastava-se muito dinheiro com o pagamento de licenças e o governador queria que o Detran utilizasse o Software Livre. minha empresa foi chamada para 74 BANCO DE DADOS | Educação a Distância Fonte: SHUTTERSTOCK. a decisão de substituir a solução de banco de dados da Oracle pelo PostgreSQL fez com que o Detran economizasse gastos com pagamento de licenças e serviço de suporte técnico. o administrador de banco de dados Nabucodonosor Coutinho foi convidado pelo Detran do Ceará para cuidar do processo de migração do banco de dados. Em apresentação no IV Encontro Nordestino de Software Livre.287 tabelas e 426 views do banco se encontravam. mas optou-se pelo PostgreSQL. Estudo de caso: Detran do Ceará economizou R$ 1.

Fonte: <http://www. 2012. depois da migração. Acesso em: 1 ago. Em cada uma dessas operações. quais outros resultados positivos a nova arquitetura trouxe? As consultas ficaram mais rápidas. Caso alguma das restrições seja violada. e a operação Delete é utilizada para remover uma tupla existente de uma relação. Como é a arquitetura do banco hoje? Agora o servidor de aplicação é ligado diretamente a um balanceador de carga. a base de dados era muito complexa e utilizava muitos recursos que até então estavam disponíveis apenas no Oracle. a operação Update é utilizada para atualizar valores de uma tupla já existente dentro de uma relação. As operações são: Insert (Inserção). Tem uma que levava 2 horas e. A operação de Insert é utilizada para inserir novas tuplas numa relação. Vamos nos referir a estas operações em seu termo em inglês. BANCO DE DADOS | Educação a Distância 75 .br/noticias/detran-do-ceara-economizou-r-1-7-milhao-com-banco-de-dados-livre/>. Outro fator negativo foi que poucos técnicos tinham conhecimento em PostgreSQL. pois eles também correspondem aos comandos em SQL que veremos nas próximas duas unidades. Operações de atualização do modelo relacional Existem três operações básicas de atualização que podem alterar o snapshot do banco de dados. Update (Modificação) e Delete (Remoção). Além da economia com as licenças. que é ligado a dois servidores do banco de dados.participar do projeto. Além disso. passou a ser realizada em 6 minutos. o SGBD reportará um erro e a operação não será completada com sucesso. Quais foram as principais dificuldades encontradas? A principal dificuldade era que a equipe estava ocupada com as tarefas diárias de manutenção e de senvolvimento de novas ferramentas para o órgão. o responsável do Detran não acreditou e acabamos gastando as 2 horas tentando convencer que a consulta tinha sido mesmo realizada em 6 minutos.softwarelivre. são verificadas as restrições descritas nas seções anteriores. Na primeira vez.gov.

Alexandre Porcelli – SQL. <http://youtu. Restrições de chave podem ser violadas se alguma outra tupla possuir a mesma chave repetida. NoSQL ou NewSQL: Onde armazenar meus dados? .DevInVale 2011 76 BANCO DE DADOS | Educação a Distância . Delete A operação de Delete remove uma tupla da relação. A única restrição que pode ser violada pela operação Delete é a restrição de integridade referencial. a tupla sendo removida é referenciada por uma outra tupla num relacionamento entre duas relações. Update A operação de Update modifica os valores de um ou mais atributos em uma ou mais tuplas numa relação.Insert A operação de Insert fornece os atributos de uma nova tupla para ser adicionada na relação. Restrições semelhantes à operação de Insert podem ser violadas na execução desta operação. Neste caso. Restrições de domínio podem ser violadas se algum dos valores atribuídos não for do tipo apropriado do atributo. Restrições de integridade referencial podem ser violadas se o valor de qualquer chave estrangeira atribuída não existir no relacionamento referenciado. Restrições de integridade podem ser violadas se a chave primária atribuída for NULL.be/gx1xT_GzH_g>.

Estas tabelas possuem restrições. então é um sinal de que o outrora todo poderoso banco de dados relacional perdeu seu trono? Seria este um sinal de que os bancos de dados relacionais estão com os dias contados e irão declinar com o passar do tempo? Neste artigo nós analisaremos a tendência atual de se migrar de bancos de dados relacionais em certas situações e o que isso significa para o futuro dos bancos de dados relacionais. Durante este tempo. e os conjuntos de Fonte: SHUTTERSTOCK. Bancos de dados relacionais já estão presentes no mercado há mais de 30 anos. Uma das principais mensagens que este cenário nos traz é “se você precisa de uma grande escalabilidade sob demanda. Tabelas são compostas de colunas e linhas (tuplas). e nenhuma chegou a fazer sequer um arranhão na dominância dos bancos de dados relacionais. um pouco de histórico Um banco de dados relacional é essencialmente um grupo de tabelas (entidades).COM BANCO DE DADOS | Educação a Distância 77 . muitas pseudo-revoluções surgiram e se foram. Todas estas revoluções fracassaram. Se isto for verdade. você precisa de um banco de dados não relacional”. Bancos de dados relacionais são consultados através da SQL.Os bancos de dados relacionais estão condenados? Recentemente uma grande leva de bancos de dados não relacionais surgiram tanto na nuvem quanto fora dela. e relacionamentos são defi nidos entre elas. claro. Primeiro. e todas elas supostamente deveriam acabar com os bancos de dados relacionais.

desempenho. Múltiplas tabelas sendo acessadas numa única consulta são “unidas”. flexibilidade. DB2. Sybase. pois a dominância universal dos SGBDRs tem 78 BANCO DE DADOS | Educação a Distância . MySQL. Tudo isto é escondido dos usuários. os quais o otimizador deve avaliar em tempo de execução. Os motivos para a dominância do modelo relacional não são triviais. Isto não foi um grande problema até agora. SQL Server. Entretanto. Por exemplo. robustez. para oferecer tudo isto.resultados são produzidos pelas consultas que acessam os dados de uma ou mais tabelas. um relativamente simples comando SELECT pode ter centenas de possíveis caminhos de execução de consulta. mas sob o capô os SGBDRs determinam o “plano de execução” que melhor atende nossas requisições utilizando recursos como algoritmos baseados em custo. TeraData etc. Normalização é um modelo de estruturação de dados utilizado em bancos de dados relacionais que garante a consistência dos dados e remove sua duplicação. escalabilidade e compatibilidade no gerenciamento de dados genéricos. seu desempenho em cada uma destas áreas não é necessariamente melhor que o de uma solução alternativa buscando um destes benefícios isolado. flexibilidade. desempenho. robustez. incluindo Oracle. escalabilidade e compatibilidade. O problema com bancos de dados relacionais Mesmo que os SGBDRs forneçam aos usuários o melhor conjunto de simplicidade. Eles têm continuamente oferecido o melhor conjunto de simplicidade. Praticamente todos os sistemas de bancos de dados em uso atualmente são SGBDRs. tipicamente por um critério definido nas colunas de relacionamento das tabelas. os bancos de dados tornaram-se incrivelmente complexos internamente. Car Carkey 1 2 3 Markekey Colorkey Colorkey Year 1 2 2 1 1 1 2 3 2 2003 2005 2005 Color Colorkey 1 2 3 Color Red Green Blue makemodel Modelkey Makekey 1 1 1 2 2 1 Model Pathfinder Bluebird Civic make Makekey 1 2 Make Nissan Honda Example of a Typical Data Model Bancos de dados relacionais são facilitados através de Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDR).

tanto que para muitos usuários de bancos de dados estes requisitos estão começando a sobrepor os outros em importância. e as características que tornam os SGBDRs tão atraentes drasticamente reduzem sua viabilidade como plataforma para grandes sistemas distribuídos. ao custo de outros benefícios dos bancos de dados relacionais. os fornecedores tiveram uma única solução. Atualmente vivemos uma situação um pouco diferente. arrays particionados. pois uma plataforma na nuvem sem uma base de dados escalável não chega a ser uma plataforma viável. Estes fornecedores tiveram que implementar um novo tipo de sistema de banco de dados que focasse em escalabilidade. este “novo” tipo de banco de dados já está no mercado há algum BANCO DE DADOS | Educação a Distância 79 . Bancos de dados relacionais escalam bem. para fornecer aos clientes uma plataforma escalável para armazenar seus dados. Não importa como você chame. Assim. tabelas hash distribuídas.compensado a necessidade de se quebrar essas barreiras. e embora ainda sejam considerados um nicho. Quando a capacidade daquele único servidor é alcançada. De fato. levaram à criação de uma nova geração de sistemas gerenciadores de banco de dados. e as complexidades tornam-se avassaladoras. ao invés de apenas alguns. orientado a atributos. Por exemplo. À medida que mais e mais aplicações são implantadas em ambientes que possuem cargas de trabalho massivas. se você realmente tem uma necessidade que não pode ser atendida por um banco de dados relacional genérico. quão rapidamente você pode ampliar o seu hardware? O segundo cenário pode ser complicado demais para ser gerenciado por um banco de dados relacional de um modo geral. combinados com aqueles de fornecedores de nichos de mercado. Para um grande número de aplicações. Estes esforços. se sua carga triplica de um dia para o outro. não há ainda um nome oficial. Os fornecedores de serviços na nuvem tiveram que tratar esta limitação. Tente escalar para centenas ou milhares de servidores. Embora cada um destes nomes aponte para peculiaridades específicas desta nova abordagem. são todas variações do mesmo tema. seus requisitos de escalabilidade podem mudar rapidamente e crescer a níveis muito elevados. você precisa realizar uma escalabilidade horizontal e distribuir a carga entre múltiplos servidores. estes benefícios estão se tornando mais e mais críticos. mas isto somente quando a escalada acontece num único servidor. que chamaremos de bancos de dados de chave-valor. O primeiro cenário pode ser difícil de gerenciar se você possui um banco de dados relacional implantado em um único servidor. banco de dados distribuído (embora bancos de dados distribuídos também possam ser relacionais). e bancos de dados de chave-valor. sempre houve alternativas para atender estes nichos. Este é o momento em que a complexidade dos bancos de dados relacionais limita o seu potencial de escalabilidade. Este benefício é escalabilidade. No entanto. estão se tornando populares. A nova geração Este novo tipo de sistema gerenciador de banco de dados é comumente chamado de chave-valor. tais como serviços web. então é possível encontrar nomes como orientado a documentos.

O modelo de dados é conhecido a priori. Estes relacionamentos associam os dados entre as tabelas. • • • • • • Sem Join de Entidades Bancos de dados de chave-valor são orientados a itens. Itens são identificados por chaves. Isto significa que comumente os dados são duplicados entre itens num mesmo domínio. Em outras implementações. e não nas funcionalidades da aplicação. atributos são do tipo String. Por exemplo. Um domínio (que você pode visualizar como uma tabela) pode conter itens muito diferentes um do outro. atributos possuem tipos simples que refletem os tipos do código tais como ints. Itens dentro de um mesmo domínio podem ter diferentes schemas. O modelo de dados é normalizado para remover duplicações de dados. arrays de String e listas. Uma comparação lado-a-lado permite comparar superficialmente estas diferenças e apresentamos uma inicial abaixo: Definições de banco de dados Bancos de dados relacionais • Bancos de dados contêm tabelas. Não existem relacionamentos definidos de modo explícito entre domínios ou mesmo dentro de um mesmo domínio. Esta é uma prática aceitável porque espaço em disco é algo relativamente barato. tabelas contêm linhas e colunas e linhas são compostas dos valores das colunas. este novo tipo teria fica incógnito. o que significa que todos os dados relevantes são armazenados dentro do próprio item. O modelo de dados é baseado numa representação “natural” dos dados que contém. Mas este modelo permite que um único item contenha todos os itens relevantes. A normalização estabelece relacionamentos entre tabelas. Mas sem a escala que a web e a nuvem trouxeram. e um dado item pode ter um conjunto de atributos dinâmicos associado. Bancos de dados relacionais e bancos de dados de chave-valor são fundamentalmente diferentes e projetados para atender diferentes requisitos. Linhas dentro de uma mesma tabela possuem todas as mesmas definições de schema.tempo e tem sido utilizado em aplicações especializadas para as quais os bancos de dados relacionais não serviam. o que aumenta a escalabilida- 80 BANCO DE DADOS | Educação a Distância . Em algumas implementações. Um domínio é basicamente um “balde” em que você coloca itens. um domínio pode conter itens de clientes e itens de pedidos. Atualmente o desafio é identificar se este novo tipo de banco de dados ou um banco de dados relacional é o mais adequado para uma aplicação particular. Bancos de dados de chave-valor • Domínios podem ser visualizados inicialmente como uma tabela. mas diferentemente de uma tabela você não precisa definir um schema para um domínio. Um schema é fortemente tipado e possui restrições e relacionamentos que forçam a integridade dos dados.

A lógica de integridade da aplicação e seus dados está toda implementada no código da própria aplicação. requerendo pouca infraestrutura para suportá-lo. os dados teriam que ser unidos para poder reagrupar todos os atributos relevantes. Embora a necessidade de relacionamentos seja bastante reduzida com bancos de dados chave-valor. alguns ainda são inevitáveis. Ao invés disso. atualizados. Consultas SQL podem acessar os dados de uma única ou de múltiplas tabelas através de joins. Acesso a dados Bancos de dados relacional Dados são criados. pedidos precisam armazenar as chaves dos itens de cliente e produto. removidos e consultados através de SQL. Consultas SQL incluem funções de agregação e filtros complexos. Normalmente possuem meios de se embutir lógica próximo aos dados através de triggers e stored procedures. Os dados podem ser armazenados de modo mais eficiente em compatibilidade com o código da aplicação. estes relacionamentos não estão definidos no modelo de dados em si. Se você está desenvolvendo um sistema com uma equipe BANCO DE DADOS | Educação a Distância Banco de dados chave-valor Dados são criados. Adequado para a nuvem O primeiro benefício é que os bancos de dados chave-valor são simples e portanto escalam melhor que os bancos de dados relacionais atuais.de ao eliminar a necessidade de joins entre múltiplas tabelas. produtos e outros. removidos e consultados através de APIs. Isto significa que você pode excluir clientes e produtos que possuem pedidos feitos. 81 . atualizados. Estes relacionamentos costumam existir entre entidades chave do modelo. Somente predicados básicos de filtragem podem ser aplicados na maioria das vezes. Interface com a aplicação Bancos de dados relacional Tendem a oferecer uma API própria ou uma API genérica como o ODBC ou JDBC. quando um cliente cria um pedido você provavelmente não quer armazenar os atributos tanto do cliente quanto do produto no mesmo item do pedido. A responsabilidade por garantir a integridade dos dados cai toda sobre a aplicação. Com um banco de dados relacional. vantagens de bancos de dados chave-valor Existem duas claras vantagens dos bancos de dados chave-valor sobre os bancos de dados relacionais. Por exemplo. e portanto o sistema gerenciador de banco de dados não pode forçar a integridade dos relacionamentos. Embora isso seja perfeitamente possível em bancos de dados chave-valor. Banco de dados chave-valor Tendem a oferecer APIs SOAP e/ou REST para acesso aos dados. de modo que deve haver um mapeamento entre as estruturas do código da aplicação e a estrutura relacional. Os dados são armazenados num formato que representa sua estrutura natural. Algumas implementações fornecem uma sintaxe básica parecida com SQL para definir critérios de filtragem. Não importa se estes dados residam no mesmo domínio ou em domínios diferentes. um sistema de pedidos pode ter itens que contenham dados sobre clientes.

interna e pretende colocar dezenas ou centenas de servidores na sua base de dados para atender o que você acredita que seja uma quantidade massiva de dados, então considere seriamente um banco de dados chave-valor. Como bancos de dados chave-valor escalam facilmente e de modo dinâmico, também são os banco de dados preferidos de serviços de fornecedores de armazenamento através de web services com potencial de escalabilidade. Usuários tipicamente pagam somente pelo que usam, mas seu uso aumenta à medida em que a demanda aumenta. Enquanto isso o fornecedor pode escalar a plataforma dinamicamente baseado na carga total do usuário, com pouquíssimas limitações provocadas pelo tamanho da plataforma. melhor adaptado para o código Modelos de dados relacionais e modelos de código de aplicações são tipicamente construídos de modo diferente, o que leva a incompatibilidades. Desenvolvedores normalmente superam estas incompatibilidades com código que mapeiam os seus objetos ao modelo relacional, um processo comumente denominado de mapeamento objeto-relacional. Este processo, que essencialmente requer muito código de infraestrutura e não possui valor de negócios imediato, pode demandar uma parcela considerável do tempo e do esforço do desenvolvimento da aplicação. Outros argumentos a favor deste tipo de banco de dados, tais como “bancos de dados relacionais podem se tornar pesados ou desajeitados” não são convincentes. Mas antes de entrar de cabeça no mundo dos bancos de dados chave-valor, considere algumas limitações existentes. Desvantagens de bancos de dados chave-valor As restrições inerentes de um banco de dados relacional garantem que os dados em seu nível mais baixo possuem integridade. Dados que violam as restrições de integridade não podem ser inseridos fisicamente no banco de dados. Estas restrições não existem em bancos de dados de chave-valor, então a responsabilidade de garantir a integridade dos dados é da aplicação. Mas o código da aplicação pode conter bugs. Bugs num banco de dados relacional devidamente projetado normalmente não levam a problemas de integridade de dados; bugs num banco de dados chave-valor, entretanto, facilmente levam a problemas de integridade de dados. Um dos principais benefícios de um banco de dados relacional é que ele te força a um processo de modelagem de dados. Se bem feito, o processo de modelagem cria uma estrutura lógica no banco de dados que reflete os dados contidos, ao invés de refletir a estrutura da aplicação. Dados, então, tornam-se quase que independentes de aplicação, o que reflete que outras aplicações podem utilizar o mesmo conjunto de dados e a lógica da aplicação pode ser alterada sem modificar o modelo de dados. Não se esqueça também da compatibilidade. Diferentemente de bancos de dados relacionais, bancos de dados na nuvem não costumam seguir padrões definidos. Embora todos tenham conceitos similares, cada um possui sua própria API, interfaces de consulta específicas e peculiaridades. Desse

82

BANCO DE DADOS | Educação a Distância

modo, você terá que confiar em seu fornecedor, pois você não poderá simplesmente trocá-lo depois se estiver descontente. Limitações de análise Na nuvem, bancos de dados chave-valor são compartilhados, o que significa que muitos usuários e aplicações utilizam o mesmo sistema. Para prevenir que um único processo sobrecarregue o ambiente compartilhado, muitos fornecedores na nuvem limitam o impacto total que uma consulta simples pode causar. Por exemplo, no SimpleDB, você não pode executar uma consulta que leve mais que 5 segundos. Com o Google AppEngine, você não pode retornar mais que 1000 itens por consulta. Estas limitações não são problemas para aplicações comuns com adição, atualização, remoção e consulta de poucos itens. Mas o que ocorre quando sua aplicação torna-se bem sucedida? Você atraiu muitos usuários e ganhou muitos dados, e agora você quer criar valor agregado para seus usuários ou utilizar os dados para gerar outras fontes de receita. Neste caso talvez os limites de consulta impostos pelos fornecedores de nuvem possam limitá-lo severamente. Situações como criação de padrões de uso e fornecimento de recomendações baseado no histórico do usuário podem tornar-se difíceis e talvez impossíveis em algumas plataformas. Neste caso, você provavelmente irá implementar um banco de dados analítico em separado, populado a partir de seu banco de dados chave-valor, para que estas análises sejam executadas. Planeje com antecedência onde e como você o fará. Você o hospedaria na nuvem ou on premise? A latência entre você e o provedor na nuvem seria um problema? Seu banco de dados chave-valor suporta isso? Se você possui 100 milhões de itens em seu banco de dados chave-valor, e você pode somente consultar 1000 de cada vez, quantas consultas isso levaria? Em último caso, embora escalabilidade seja um fator sério a considerar, mas se esqueça da sua necessidade de converter os dados em uma fonte de receita. Toda a escalab do mundo é inútil se os seus usuários migrarem para seu concorrente porque ele possui funcionalidades mais interessantes. Competidores de serviços baseados em nuvem Um bom número de fornecedores de serviços web agora oferece bancos de dados chave-valor compartilhados no estilo pague-pelo-uso. A maioria deles atende aos critérios definidos até agora, mas cada um possui funcionalidades únicas que variam dos padrões que descrevemos até agora. Descreveremos agora de um modo geral alguns bancos de dados particulares, como o SimpleDB, Google AppEngine Datastore e SQL Data Services. Amazon: SimpleDB

BANCO DE DADOS | Educação a Distância

83

O SimpleDB é um banco de dados de chave-valor orientado a atributos disponível na plataforma da Amazon Web Services. O SimpleDB possui diversas limitações. Primeiro, uma consulta pode ser executada por no máximo 5 segundos. Segundo, não há tipos de dados além de Strings. Tudo é armazenado, recuperado e comparado como uma String. Comparações de data não funcionarão a não ser que você converta todas as datas para o formato ISO8601. Terceiro, o tamanho máximo de uma String é limitado a 1024 bytes, o que limita quanto de texto (por exemplo, descrições de produtos) você pode armazenar num único atributo. Mas como o schema é dinâmico e flexível, você pode contornar este limite adicionado “descricao1”, “descricao2” etc. O problema é que cada item é limitado em 256 atributos. Uma característica chave do SimpleDB é o seu modelo de consistência eventual. Este modelo de consistência é bom para concorrência, mas significa que se você alterou o atributo de um item, estas mudanças não serão refletidas imediatamente nas operações de leitura. Embora as chances de algum problema ocorrer em função disso sejam pequenas, você deve se preparar para estas situações. Por exemplo, você não deseja vender o último ingresso de um show para cinco pessoas diferentes no seu sistema de eventos. google AppEngine Data Store

O Google AppEngine Datastore é construído sobre o BigTable, o sistema interno do Google para manipulação de dados estruturados. Em si, o AppEngine não é um mecanismo de acesso direto ao BigTable, mas pode ser considerado como uma interface simplificada sobre o BigTable. O AppEngine Datastore suporta muito mais tipos de dados que os itens do SimpleDB, incluindo tipos de lista, que contém coleções de elementos num único item. Você provavelmente utilizará este banco de dados se planeja construir aplicações no Google AppEngine. Entretanto, diferentemente do SimpleDB, você não consegue interfacear diretamente com o AppEngine Datastore (ou com o BigTable) utilizando uma aplicação foram da nuvem do Google. microsoft: SQl Data Services

84

BANCO DE DADOS | Educação a Distância

SDS é um banco de dados chave-valor. você não precisa acessá-los. adicionar funcionalidades que ajudarão a diminuir a diferença entre bancos de dados chave-valor e relacionais. Até o momento. entretanto. A Microsoft parece estar sozinha neste cenário ao concordar que embora bancos de dados chave-valor sejam ótimo para escalabilidade. o CouchDB não é realmente um banco de dados distribuído. está trabalhando disso. A comunidade do CouchDB. projeto voldemort BANCO DE DADOS | Educação a Distância 85 . Ele possui funções de replicação que permite que os dados sejam sincronizados entre servidores. Fornecedores on-premise Fora da nuvem. existem vários produtos de bancos de dados chave-valor que podem ser instalados on-premise. assim como as outras plataformas discutidas até agora.O SQL Data Services é parte da plataforma de serviços web Microsoft Azure. esta escalabilidade vem ao custo do gerenciamento de dados. O serviço do SDS é na verdade uma aplicação em si que roda sobre vários SQL Servers. Derivado de um banco de dados chave-valor. Embora os bancos de dados de infraestrutura sejam relacionais. A abordagem da Microsoft parece ser focar no fundamental para conseguir implementar os mecanismos de escalabilidade e distribuição direito. CouchDB CouchDB é um banco de dados orientado a documentos livre e open-source. Estas visões mapeiam os dados do documento numa estrutura parecida com tabelas que podem ser indexadas e consultadas. que formam o mecanismo de armazenamento da plataforma. tendo acesso ao código-fonte talvez você possa analisar e tornar-se melhor ciente de potenciais problemas e limitações – uma vantagem que você não teria em fornecedores de código fechado. A maioria é open source. quando comparado a SGBDRs. utiliza JSON para definir o schema de seus itens. O CouchDB tenta diminuir a distância entre bancos de dados orientados a documentos e relacionais ao permitir que “visões” sejam criadas dinamicamente com JavaScript. e com o passar do tempo. mas não é o tipo de distribuição suficiente para construir ambientes de alta escalabilidade.

3.readwriteweb. Seu ambiente de desenvolvimento é altamente orientado a objetos. 86 BANCO DE DADOS | Educação a Distância . 2. 2012. lembre-se das limitações e dos riscos que você corre ao sair da “zona de conforto” do modelo relacional. o MongoDB é um banco de dados orientado a documentos baseado em JSON. Pelo menos por enquanto. provavelmente você estará melhor servidor pelo bom e velho modelo relacional. e um banco de dados chave-valor pode diminuir a quantidade de código de infraestrutura. Sua principal preocupação é a alta escalabilidade sob demanda – ou seja. Assim como o CouchDB.O projeto Voldemort é um banco de dados distribuído chave-valor cujo objetivo é escalar horizontalmente num grande número de servidores. Fonte: <http://www. Portanto. excetuando-se o fato de que ele é um verdadeiro banco de dados de objetos ao invés de ser puramente chave-valor. estariam os bancos de dados relacionais condenados? Claramente não. Ele surgiu como um trabalho desenvolvido no LinkedIn e é utilizado no LinkedIn em alguns poucos sistemas que possuem requisitos elevados de escalabilidade. uma escalabilidade distribuída de larga escala que não pode ser obtida com escalabilidade vertical. mongoDB O MongoDB é um sistema de banco de dados desenvolvido pela 10gen por Geir Magnusson e Dwight Merriman. Ao tomar sua decisão. tornando-os uma escolha natural para o modelo de chave-valor ao invés do modelo relacional. 4. Acesso em: 14 ago. O banco de dados é barato e integra com sua plataforma de serviços web. O projeto Voldemort também utiliza um modelo de consistência eventual. Seus dados são orientados a documentos. Para todos os outros requisitos.php>.com/enterprise/2009/02/is-the-relational-database-doomed. tomando uma decisão Basicamente há quatro motivos para se escolher uma plataforma de banco de dados não relacional chave-valor para sua aplicação: 1.

Propositadamente deixamos de lado aspectos de álgebra relacional. As restrições discutidas foram de domínio. de chave. O assunto SQL é tão importante e será tão utilizado em sua vida profissional que dedicaremos as duas próximas unidades para tratá-lo. de integridade e de integridade referencial e chaves estrangeiras. claro. As operações de modificação do modelo relacional descritas no modelo relacional são as operações de Insert. De fato. No modelo relacional há uma série de restrições impostas para que se possa garantir a consistência dos dados presentes nos diferentes domínios. que podem ser aprofundados em excelentes livros como o de Silberschatz (1999) e Date (1988). DBAs. tuplas. com estas restrições (quando bem implementadas). A abordagem deste autor para explicar o modelo relacional é a de tentar fugir um pouco das definições formais matemáticas do modelo e focar nos conceitos fundamentais do modo mais próximo possível ao cotidiano de desenvolvimento de software. Update e Delete e todas podem provocar violações do modelo – sendo cada uma delas abordada em suas respectivas seções. Estas restrições são os atributos que tornam o modelo relacional tão interessante e tão conceituado perante alguns desenvolvedores e. Enxergar o sistema de banco de dados como uma aplicação terceira que deve ser integrada ao software que desenvolvemos é uma visão que nos permite entender o porquê de tamanha valorização das restrições. atributos e relações do modelo relacional. que é a linguagem SQL. podemos passar a interagir e executar operações com os sistemas de bancos de dados relacionais.CONSiDErAçÕES FiNAiS Nesta unidade. BANCO DE DADOS | Educação a Distância 87 . há um padrão bem estabelecido e sólido de interação com os SGBDs relacionais. de valores nulos. bem como a consistência do próprio modelo. Para nossa sorte. Agora que já temos toda a base conceitual do popular modelo de dados relacional. inicialmente descrevemos os conceitos de domínio. há a garantia da integridade e consistência das informações armazenadas.

Defina os conceitos de integridade e integridade referencial. 88 BANCO DE DADOS | Educação a Distância . Por que não existe uma ordem definida para as tuplas dentro de uma relação? 2. Quais são as situações em que é adequada a utilização de valores NULL? 3.AtiviDADES DE AutOEStuDO 1.

apresentam-se os tópicos que você estudará nesta unidade: • Definição e histórico da SQL • Descrição dos comandos de definição de dados e tipos em SQL • Descrição dos comandos de consulta básicos em SQL • Descrição dos comandos de modificação de dados em SQL . • Apresentar os comandos de definição e uso da SQL. Edson Yanaga Objetivos de Aprendizagem • Definir o que é SQL. plano de Estudo A seguir.uNiDADE iv SQl BáSiCO Professor Me.

.

mas originalmente seu nome era SEQUEL: Structured English QUEry Language (Linguagem de Consulta em Inglês Estruturado) – daí o motivo da pronúncia como “síquel”. “esse-quê-ele”. e sim com o nome original desta linguagem.iNtrODuçãO A primeira ideia que vem à cabeça de um desenvolvedor experiente quando se fala de banco de dados relacionais é SQL. O motivo é curioso e não tem a ver com a sigla SQL. com o som de cada uma das letras separadas. perceberá que em inglês SQL é pronunciado como “síquel”. talvez uma das boas razões pelas quais os SGBDs relacionais são tão difundidos deve-se ao fato de que a SQL é uma ferramenta bastante madura. costuma-se ensinar inicialmente linguagens de programação imperativas (como C. elaborada e bem projetada. nas conversas em projetos internacionais que você fará. Porém. SQL é uma linguagem diferente das linguagens de programação que você provavelmente aprendeu até agora. Atualmente. Realmente. a sigla SQL significa Structured Query Language (Linguagem de Consulta Estruturada). pronuncia-se SQL como uma sigla. em que você é responsável por escrever os comandos na ordem de execução esperada. ou em conferências que você participará em sua vida profissional.COM BANCO DE DADOS | Educação a Distância 91 . Java ou Python). Em português. Neste tipo de Fonte: SHUTTERSTOCK. Em qualquer curso de programação. Pascal.

Em alguns casos. as semelhanças se sobressaem e permitem que os desenvolvedores de software possam aprender facilmente a lidar com produtos concorrentes. A versão mais popular deste padrão é a SQL-92. A SQL possui comandos tanto para a criação de definições de dados (criação de schemas) quanto para a execução de comandos de manipulação de banco de dados (consultas e 92 BANCO DE DADOS | Educação a Distância . permitimos que o SGBD decida como é que ele deve executar as instruções. a diferença ainda possa ser relevante. Comercialmente. Na SQL. a ANSI (American National Standards Institute) e a ISO (International Standards Organization) uniram-se para criar um padrão para a SQL. Permita uma reflexão sobre a natureza declarativa da SQL. preocupamo-nos em instruir o computador no modo como ele deve executar as tarefas. pois nela define-se o quê deve ser retornado como resultado do processamento. embora haja uma versão mais recente: a SQL:1999. O resultado de seu processamento é uma consequência daquilo que comandamos. dependendo dos casos de uso de sua aplicação. o custo para migração (em tempo e esforço) torna-se elevado o suficiente para que o cliente desista da ideia.linguagem. o que torna a tarefa de migração de um produto para outro um pouco mais difícil. é uma estratégia interessante para os fabricantes. pois baseia-se no aprisionamento do cliente: uma vez comprometido com um produto. sem especificar o como isso será feito. A evolução dos produtos comerciais e livres fez com que esta diferença diminuísse de modo significativo – embora. os fabricantes de SGBDs não seguem 100% o padrão. Para tentar diminuir as diferenças entre as diversas implementações e variantes da SQL utilizadas em produtos distintos. centenas de parâmetros de configuração do produto permitem alterar a forma com que o SGBD executa o “como”: uma tarefa que muitas vezes chega a ser minuciosa – tudo isso para conseguir aumentar o desempenho do seu SGBD. Já para os usuários. Infelizmente. este é um fato infeliz. este seria um fator determinante para decidir entre um produto e outro. ao definirmos somente o que esperamos de resultado ao invés do como. De positivo do padrão SQL92 temos que mesmo com as sutis diferenças entre as implementações da SQL em diferentes produtos. Há 10 anos. Já a SQL é uma linguagem declarativa.

DEFiNiçÕES DE DADOS E tipOS Em SQl Na unidade anterior. A partir do SQL-92. Boa parte dos comandos SQL relacionados à criação e definição de dados utiliza o comando CREATE. tupla e atributo do modelo relacional. Você pode autorizar determinados usuários a acessar um schema e restringir o acesso a outros. o seguinte comando cria um schema denominado de “agenda”. Por exemplo.atualizações). que é simplesmente um conjunto de tabelas relacionadas. Esta primeira abordará a criação de schemas e os comandos básicos da linguagem. todas as tabelas no SGBD coexistiam dentro de um mesmo “ambiente”. a SQL não possuía um mecanismo para agrupar tabelas relacionadas. Do mesmo modo que em UML um pacote é um conjunto de classes relacionadas. linha e coluna. Todos os comandos em SQL são finalizados por um ponto-e-vírgula: create schema agenda. O comando CrEAtE tABlE O comando CREATE TABLE é utilizado para criar uma nova tabela. um schema também é convenientemente utilizado para autorizar/restringir o acesso pelos usuários. É uma linguagem bastante abrangente. Além de agrupar logicamente as tabelas. Em SQL. É por este motivo que trataremos da SQL em duas unidades distintas. O primeiro parâmetro do BANCO DE DADOS | Educação a Distância 93 . definimos os termos relação. enquanto que a próxima unidade abordará os comandos um pouco mais avançados. Como consequência. um schema é um conjunto de tabelas relacionadas. estes termos são denominados respectivamente de tabela. O conceito de schema Em sua versão inicial. criou-se o conceito de schema.

seguido dos atributos e seus respectivos tipos e eventuais restrições do atributo. contato id nome sobrenome nascimento peso email id email contato_fk telefone id telefone contato_fk grupo id nome aflição grupo_fk contato_fk Figura 6 Fonte: o autor Os seguintes comandos criam as tabelas definidas na Figura 6: 94 BANCO DE DADOS | Educação a Distância .comando é o nome da tabela sendo criada. Restrições de integridade referencial podem ser definidas ao final do comando.

2) ). FOREIGN KEY (contato_fk) REFERENCES contato(id) ). CREATE TABLE telefone ( id INT PRIMARY KEY. PRIMARY KEY (grupo_fk. contato_fk). CREATE TABLE email ( id INT PRIMARY KEY.CREATE TABLE contato ( id INT PRIMARY KEY. FOREIGN KEY (grupo_fk) REFERENCES grupo(id). BANCO DE DADOS | Educação a Distância 95 . contato_fk INT. email VARCHAR(60) NOT NULL. peso DECIMAL(10. FOREIGN KEY (contato_fk) REFERENCES contato(id) ). contato_fk INT. sobrenome VARCHAR(30) NOT NULL. telefone VARCHAR(20) NOT NULL. nome VARCHAR(30) NOT NULL ). FOREIGN KEY (contato_fk) REFERENCES contato(id) ). nome VARCHAR(30) NOT NULL. contato_fk INT NOT NULL. nascimento DATE. CREATE TABLE afiliacao ( grupo_fk INT NOT NULL. CREATE TABLE grupo ( id INT PRIMARY KEY.

há o desperdício de espaço de armazenamento. abordaremos como resolver este impasse. pois as tabelas referenciadas ainda não existem. Números com precisão decimal (normalmente utilizados em cálculos de moeda. utiliza-se o tipo VARCHAR(n).b) onde “a” é o número de dígitos inteiros e “b” é o número de dígitos decimais. tipos booleanos podem assumir os valores TRUE ou FALSE. é necessário entender como é a alocação de espaço destes tipos no arquivo físico. o SGBD aloca um ponteiro para determinar qual o tamanho do atributo: as buscas são mais lentas. Se o tamanho for fixo (CHAR). mas todos os produtos disponíveis no mercado suportam ao menos estes tipos básicos: Tipos numéricos Tipos de dados numéricos suportam dados inteiros (INT e SMALLINT) e de ponto flutuante (FLOAT e DOUBLE). Por outro lado. o SGBD já aloca este tamanho predefinido no arquivo: as buscas podem ser mais rápidas. Diferentes produtos adicionam tipos de dados diferentes ao conjunto suportado. não é possível definir as restrições de integridade referencial e chave estrangeira no próprio CREATE TABLE. Tipos de caractere podem ser de tamanho fixo ou variável. mas não há desperdício de espaço. Os atributos de tamanho fixo podem ser declarados como CHAR(n) onde “n” é o número máximo de caracteres suportado pelo atributo. pois o SGBD já sabe o tamanho do campo ao “pular bytes” na busca sequencial. Na próxima unidade. por exemplo) são DECIMAL ou NUMERIC. respectivamente.b) ou NUMERIC(a. Para se entender o critério de uso entre um e outro. utilizando-se VARCHAR. Tipos Caractere 96 BANCO DE DADOS | Educação a Distância . declarados como DECIMAL(a.Em algumas situações. Muitos SGBDs mapeiam estes valores em “1” e “0”. Para especificar um atributo de tamanho variável. se o conteúdo dos atributos não preencher todo o tamanho definido. Tipos booleanos Assim como em linguagens de programação. tipos de dados A SQL define um conjunto de tipos de dados básicos para os seus atributos. Entretanto.

Tipos temporais O tipo DATE suporta dados temporais no formato AAAA-MM-DD (ano. abordaremos agora as restrições que podem ser declaradas em SQL no comando CREATE TABLE. A própria SQL assegura representações temporais válidas. minuto e segundo). Se o seu modelo de negócios não permite que um atributo seja nulo. é necessário especificar uma restrição de NOT NULL na declaração do atributo. Restrições adicionais especificadas em outros comandos serão abordadas na próxima unidade. Como exemplo. assume-se o valor padrão. dia). e depois armazenar o próprio conteúdo. Por padrão na SQL. Uma outra consideração (pequena talvez) sobre o NOT NULL é que no mínimo o SGBD terá que gravar um bit (ou um byte) a mais em cada atributo em casos de campos NULL. Caso este atributo seja omitido durante a inserção de uma linha da tabela. Além de valores nulos. poderíamos definir ‘Silva’ como o sobrenome padrão dos nossos contatos no comando CREATE TABLE: BANCO DE DADOS | Educação a Distância 97 . rEStriçÕES Seguindo o nosso planejamento. caso nenhuma cláusula seja declarada. então o SGBD terá que primeiramente saber se o campo é nulo ou não. valores Null e valores padrão A linguagem SQL permite que todos os atributos (com exceção daqueles que compõem a chave primária) sejam nulos. também há possibilidade de se definir um valor padrão para os atributos utilizando-se a cláusula DEFAULT <valor>. os atributos permitirão valores nulos e o valor padrão também será nulo. Se um atributo permitir nulos. mês. enquanto que o tipo TIME utiliza o formato HH:MM:SS (hora.

Poderíamos alterar a definição da tabela email para garantir que não haja e-mails duplicados em nossa aplicação: CREATE TABLE email ( id INT PRIMARY KEY. nome VARCHAR(30) NOT NULL. email VARCHAR(60) NOT NULL uNiQuE. contato_fk) A cláusula UNIQUE especifica chaves únicas (não primárias) numa tabela. ela pode ser declarada no próprio atributo (como no exemplo da tabela contato): id INT primArY KEY Havendo mais de um atributo na chave primária. Já a integridade referencial e as chaves estrangeiras são definidas por meio da cláusula 98 BANCO DE DADOS | Educação a Distância . é necessário declará-la ao final (como no exemplo da tabela grupo): primArY KEY (grupo_fk. Chaves e integridade referencial Para especificar uma chave primária. peso DECIMAL(10. sobrenome VARCHAR(30) NOT NULL DEFAult ‘Silva’. nascimento DATE.CREATE TABLE contato ( id INT PRIMARY KEY. FOREIGN KEY (contato_fk) REFERENCES contato(id) ).2) ). contato_fk INT. Caso a chave primária possua um único atributo. utiliza-se a cláusula PRIMARY KEY.

FOrEigN KEY (contato_fk) rEFErENCES contato(id) ). CREATE TABLE telefone ( id INT PRIMARY KEY. BANCO DE DADOS | Educação a Distância 99 . A cláusula FROM lista as relações (tabelas) que devem ser examinadas na avaliação da expressão SQL. 3. A cláusula de SELECT é utilizada para listar os atributos desejados no resultado da consulta. FOrEigN KEY (contato_fk) rEFErENCES contato(id) ). De acordo com Silberschatz (1999). um comando de consulta SELECT assume a forma SELECT <atributos> FROM <tabelas> WHERE <condições>.FOREIGN KEY. Em sua forma fundamental. a expressão básica de consulta em SQL consiste de três cláusulas: SELECT. contato_fk INT. FROM e WHERE: 1. A cláusula WHERE corresponde ao predicado envolvendo os atributos das relações que aparecem na cláusula FROM. como utilizada já no nosso exemplo nas tabelas email e telefone: CREATE TABLE email ( id INT PRIMARY KEY. telefone VARCHAR(20) NOT NULL. contato_fk INT. e as consultas que podem ser elaboradas com este comando variam das mais simples até as bem complicadas. 2. CONSultAS BáSiCAS Em SQl O comando em SQL para a execução de operações de consulta é o SELECT. email VARCHAR(60) NOT NULL.

>= (maior ou igual) e <> (diferente).contato_fk é denominada de condição de join. todas estão relacionadas por meio de uma condição de combinação baseada em chaves estrangeiras. telefone WHERE contato. < (menor).id = telefone. telefone. SELECT nome.id = telefone. 100 BANCO DE DADOS | Educação a Distância . e novamente neste caso. apresentaremos exemplos de como realizá-las a seguir. email WHERE contato. o telefone e o e-mail de todos os contatos cujo nome seja ‘Edson’.nome = ‘Edson’. Provavelmente. telefone. pois combina duas tabelas diferentes baseadas.As condições do comando SQL podem utilizar comparadores lógicos similares aos de outras linguagens de programação já conhecidas. numa chave estrangeira de um relacionamento entre ambas. uma das melhores formas de se aprender é por meio de exemplos. neste caso.sobrenome = ‘Silva’ é um predicado que seleciona somente as linhas especificadas na tabela contato.id = telefone. <= (menor ou igual). Todos os exemplos de consulta serão realizados tendo-se como base a definição de esquema proposta na Figura 6.contato_fk AND contato. > (maior). Exemplo 2: Selecione o nome. a condição contato.contato_fk AND contato. telefone FROM contato. SELECT nome.id = email.sobrenome = ‘Silva’. tais como = (igual). A condição contato. Neste exemplo.contato_fk AND contato. email FROM contato. Exemplo 1: Selecione o nome e o telefone de todos os contatos cujo sobrenome seja ‘Silva’. Neste exemplo pode-se notar que numa consulta é permitido realizar o join entre várias tabelas diferentes. Ao invés de nos atermos aos detalhes sintáticos e conceituais de cada tipo de consulta.

e torna-se possível então simplesmente escrevermos a condição final da consulta como sendo n = ‘Joaquim’. afiliacao WHERE contato. um alias pode também ser definido como um apelido para uma tabela na consulta SQL.Exemplo 3: Selecione o id do telefone de todos os contatos cujo peso seja maior que 70.peso > 70.nome possui um alias “g”. Neste caso.id = afiliacao. SELECT contato. Uma facilidade na construção de consultas que possuem termos repetidos sendo referenciados é a criação de um alias. demonstramos que a definição de um alias não está restrita aos atributos. grupo. definimos que o atributo contato.grupo_fk AND n = ‘Joaquim’. SELECT c.peso FROM contato c WHERE c. O exemplo 3 mostra como devemos definir os nomes dos atributos nas cláusulas quando há a possibilidade de ambiguidade na definição dos nomes. Tanto a tabela contato quanto a tabela telefone possuem um atributo denominado de “id”.id FROM contato. grupo. SELECT telefone. prefixando o atributo com o nome de sua respectiva tabela. telefone WHERE contato.nome as n. devemos informar à SQL qual é o atributo “id” que desejamos obter. eliminamos a ambiguidade descrevendo o atributo como “telefone. No exemplo 5. No Exemplo 4.contato_fk AND grupo. Um alias é um apelido definido para um determinado termo da consulta SQL. Exemplo 5: Selecione o peso de todos os contatos com peso < 100. Exemplo 4: Selecione o nome do grupo e o nome do contato de todos os contatos cujo nome seja ‘Joaquim’.nome as g FROM contato. BANCO DE DADOS | Educação a Distância 101 . não precisamos mais nos referenciar a estes atributos pela referência completa.nome possui um alias “n” e que o atributo grupo. Desse modo.id”.peso < 100.id = afiliacao. no restante desta consulta. No caso do exemplo.

Quando não se deseja limitar quais atributos devem ser retornados na consulta. Embora em muitos casos você. No Exemplo 6 demonstramos como obter todas as datas de nascimento por meio do processamento de todas as linhas da tabela contato. nos resultados das consultas estes elementos repetidos são exibidos. pode-se utilizar um asterisco (“*”) para determinar ao SQL que processe todos os atributos de todas as tabelas da cláusula FROM no resultado da consulta SQL. Nas situações em que se deseje eliminar as tuplas repetidas nos resultados das consultas. A cláusula WHERE de uma consulta SQL é opcional. já que potencialmente a quantidade de registros numa tabela pode chegar aos milhões ou bilhões. como programador(a). 102 BANCO DE DADOS | Educação a Distância . a consulta irá processar todos os registros das tabelas referenciadas. SELECT DISTINCT sobrenome FROM contato. SELECT * FROM contato WHERE peso = 75. pode-se utilizar a cláusula DISTINCT como no Exemplo 8. permite-se elementos repetidos em tabelas. Quando a cláusula WHERE é omitida. Exemplo 7: Selecione todos os atributos de contatos cujo peso = 75. Exemplo 8: Selecione todos os sobrenomes distintos de todos os contatos. deva se questionar se isto é oportuno ou não.Exemplo 6: Selecione a data de nascimento de todos os contatos. Embora o modelo relacional seja baseado na teoria geral dos conjuntos e matematicamente em conjuntos não haja elementos repetidos. SELECT nascimento FROM contato. e consequentemente.

o ‘44%’ determina que a String deve iniciar com ‘44’ e pode possuir zero ou mais caracteres posteriores. utilizamos o comparador LIKE para definir uma busca por padrões em Strings. No Exemplo 9. Um outro caractere especial que pode ser utilizado em condições LIKE é o ‘_’. SELECT * FROM contato WHERE nascimento LIKE ‘198_-__-__’. BANCO DE DADOS | Educação a Distância 103 . Como as datas em SQL podem ser representadas como uma String ‘AAAA-MM-DD’. Ele representa um único caractere arbitrário utilizado na busca.Exemplo 9: Selecione todos os telefones cujo número comece com ‘44’. A condição BETWEEN da SQL pode ser utilizada para determinar intervalos de valor em comparações. Neste exemplo. SELECT * FROM contato WHERE peso BETWEEN 90 AND 100. utilizamos o ‘_’ para preencher os campos da nossa busca. Exemplo 11: Selecione todos os contatos cujo peso esteja entre 90 e 100. Exemplo 10: Selecione todos os contatos que nasceram na década de 1980. SELECT * FROM telefone WHERE telefone LIKE ‘44%’. O caractere ‘%’ é utilizado em condições LIKE para definir zero ou mais caracteres.

Os critérios são avaliados pela ordem em que são declarados. 104 BANCO DE DADOS | Educação a Distância . A cláusula ORDER BY da SQL permite que o resultado da busca seja ordenado de acordo com os parâmetros informados.Exemplo 12: Selecione o nome de todos os contatos por ordem alfabética crescente. nome ASC. No exemplo 13 demonstramos como ordenar o resultado de uma consulta a partir de dois critérios diferentes. Exemplo 13: Selecione o nome e o sobrenome de todos os contatos cujo sobrenome inicie com ‘A’ e ordene por sobrenome em ordem decrescente e por nome em ordem crescente. SELECT nome FROM contato ORDER BY nome ASC. Abordaremos cada um deles nas próximas subseções. basta adicionar respectivamente o modificador ASC ou DESC na cláusula. COmANDOS DE mODiFiCAçãO DE DADOS Em SQl Até agora pudemos definir quais são os comandos básicos da SQL para a execução de consultas básicas em nossos bancos de dados. sobrenome FROM contato WHERE sobrenome LIKE ‘A%’ ORDER BY sobrenome DESC. que respectivamente correspondem ao INSERT. Para tanto. UPDATE e DELETE. Uma cláusula ORDER BY pode ordenar os resultados de modo ascendente ou descendente. Nesta seção abordaremos os comandos da SQL que permitem a adição. atualização e remoção de tuplas (linhas). SELECT nome. O valor ASC é o padrão e é o valor assumido caso o modificador seja omitido.

evita-se que este torne-se inválido quando o schema da tabela for modificado para adição ou alteração de ordem de alguma coluna. já que este tipo de bug não pode ser identificado pelo compilador. Nesta segunda forma do comando INSERT nós especificamos explicitamente qual a ordem desejada de inserção de cada um dos atributos da tabela contato. 95. ‘Edson’. Devido à definição formal do schema da tabela. O fato do comando tornar-se inválido provavelmente provocaria um erro da aplicação em tempo de execução. Esta ordem pode ser a própria ordem determinada pela definição do schema ou pode ser a ordem em que definimos os nomes das colunas da cláusula de INSERT. id) VALUES (‘Edson’. precisamos informar os valores de inserção na tabela dentro de uma ordem específica. Uma questão que surge para os desenvolvedores é: qual seria a forma mais adequada? Certamente não há uma resposta que possa ser considerada melhor ou pior. ‘Yanaga’. Note que durante a inserção os valores informados devem satisfazer as condições de restrições de domínio. sobrenome. como definido no início desta unidade. 95). nulo e integridade referencial. nascimento. ‘1978-04-12’. ‘1978-04-12’.O comando iNSErt O comando INSERT é utilizado para inserir linhas numa determinada tabela. INSERT INTO contato (nome. ‘Yanaga’. mas um argumento a favor da segunda forma estabelece que quando a ordem dos argumentos é especificada no próprio comando INSERT. O comando INSERT em sua forma mais simples pode ser exemplificado do seguinte modo: INSERT INTO contato VALUES (10. integridade. 10). Neste exemplo. determinamos que os valores da cláusula VALUES seguem a mesma ordem da definição do schema. peso. BANCO DE DADOS | Educação a Distância 105 .

Neste comando a cláusula WHERE determina quais são as linhas da tabela selecionadas para modificação. vários comandos UPDATE terão que ser executados – todos possivelmente agrupados dentro de uma única transação. Podemos criar uma tabela adicional no nosso schema para armazenar estes dados provenientes do comando SELECT: CREATE TABLE lista_de_nomes ( nome varchar(30).Uma terceira forma do comando INSERT permite que os valores informados para inserção sejam determinados por uma cláusula SELECT ao invés de serem argumentos literais na própria cláusula. a recém-criada tabela lista_de_nomes poderia ser populada com o seguinte comando INSERT: INSERT INTO lista_de_nomes (nome. O comando upDAtE O comando UPDATE modifica os valores de uma ou mais tuplas (linhas) das tabelas selecionadas. sobrenome varchar(30) ). Note que diferentemente do comando SELECT.sobrenome) SELECT nome. Caso seja necessário modificar os valores de atributos de mais de uma tabela. 106 BANCO DE DADOS | Educação a Distância . um comando UPDATE só pode ser aplicado numa única tabela. Em sua forma fundamental. um comando de modificação UPDATE assume a forma UPDATE <tabela> SET <atributos e valores> WHERE <condições>. Baseando-se nos dados já existentes na tabela contato.sobrenome FROM contato WHERE nascimento > ‘1980-01-01’.

No exemplo acima demonstramos que podemos executar operações aritméticas com os valores dos atributos das tabelas. desde que as restrições do schema do banco de dados assim o permita. todas as linhas da tabela informada serão selecionadas para a execução das modificações solicitadas.UPDATE contato SET peso = 99. Neste exemplo. a cláusula WHERE é opcional também no comando UPDATE. UPDATE contato SET peso = peso * 1. Assim como no comando SELECT. UPDATE contato SET nascimento = NULL. O valor nulo também pode ser utilizado como valor de atribuição em comandos UPDATE. BANCO DE DADOS | Educação a Distância 107 . se assim for o caso de uso desejado. estamos modificando o valor de dois atributos das tuplas cujo nome = ‘Carlos’. É uma prática bastante comum executarmos comandos UPDATE no banco de dados somente identificando a chave primária na cláusula WHERE. atualizamos para 10% acima o peso de todos os contatos (no caso de uma hipotética epidemia de obesidade). Assim como o comando INSERT – e de acordo com o já explanado na Unidade III – todas as restrições do schema que se aplicam ao comando INSERT também são válidas para o comando UPDATE. temos a garantia de que um único registro será modificado de cada vez (já que cada chave primária é única dentro de uma mesma tabela). Neste exemplo do comando UPDATE.1. nascimento = ‘1982-04-25’ WHERE nome = ‘Carlos’. Assim. Neste caso.

DELETE FROM telefone WHERE id = 5. assim como nos comandos INSERT e UPDATE. DELETE FROM contato. O exemplo acima é a forma mais comum de execução do comando DELETE. Novamente. a ausência da cláusula WHERE implica que todas as linhas de uma determinada tabela serão processadas – o que no caso do comando DELETE implica que o resultado será uma tabela vazia. este comando falharia com um erro caso alguma outra tabela (telefone. o comando DELETE só pode ser aplicado em uma única tabela de cada vez. como nas operações de DELETE. as restrições de integridade referencial são verificadas.O comando DElEtE O comando DELETE na SQL remove linhas de uma determinada tabela. por exemplo) tivesse alguma chave estrangeira apontando para uma linha da tabela contato. este exemplo resultaria numa tabela contato vazia. Assim como os comandos INSERT e UPDATE. um comando de modificação DELETE assume a forma DELETE FROM <tabela> WHERE <condições>. A exemplo do comando UPDATE. Em sua forma fundamental. 108 BANCO DE DADOS | Educação a Distância . Entretanto. possui uma cláusula WHERE para limitar as linhas que serão processadas pelo comando. Um caso extremo.

“cloud” ou bancos de dados “NoSQL” estão ganhando atenção como um modelo alternativo para gerenciamento de banco de dados. da IBM. Cinco vantagens do NoSQl 1.be/HJre77TPpSw>. as vantagens econômicas da escalabilidade horizontal em hardware comoditizado tornam-se irresistíveis. Cezar Taurion. não relacionais. Entretanto. Big data Assim como os níveis de transações cresceram absurdamente na última década. à medida que os requisitos de carga de transações e disponibilidade aumentam. abordaremos os 10 aspectos principais destes bancos de dados NoSQL não relacionais: as cinco principais vantagens e os cinco desafios. Escalabilidade elástica Por anos. Mas hoje. Neste artigo.Sugestão de Vídeo: <http://youtu. os Sistemas Gerenciadores de Banco de Dados Relacionais (SGBDRs) têm sido o modelo dominante para gerenciamento de banco de dados. SGBDRs podem não escalar tão facilmente em clusters comoditizados. administradores de banco de dados apoiaram-se na escalabilidade vertical – que consiste na compra de servidores maiores à medida que a carga aumenta – ao invés da escalabilidade horizontal – distribuição dos bancos de dados em múltiplos servidores à medida que a carga aumenta. o volume de dados BANCO DE DADOS | Educação a Distância 109 . 2. fala das vantagens da computação em nuvem. e os banco de dados movem para a nuvem ou para ambientes virtualizados. 10 coisas que você deve saber sobre banco de dados NoSQl Por um quarto de século. e normalmente são concebidos com hardware de baixo custo em mente. mas a nova geração de banco de dados NoSQL é projetada para expandir-se transparentemente de modo a tirar proveito de novos nós.

Atualmente. Mesmo um banco de dados NoSQL definido de modo mais rígido como aqueles baseados em BigTable (Cassandra e HBase) tipicamente permitem o acréscimo de novas colunas sem maiores problemas. instalação e otimização de sistemas baseados em SGBDRs. Alguém sempre será responsável pelo desempenho e disponibilidade de um repositório de dados de missão crítica. Na teoria. Bancos de dados NoSQL possuem restrições de modelos de dados muito mais flexíveis – ou inexistentes. 110 BANCO DE DADOS | Educação a Distância . O’Reilly chamou isto de “revolução industrial dos dados”. Adeus DBAs (ou até logo?) Apesar das muitas melhorias de gerenciamento alegadas pelos fornecedores de SGBDRs ao longo dos anos. os volumes de “big data” que podem ser manipulados por sistemas NoSQL como o Hadoop superam em muito o que pode ser manipulado pelos maiores SGBDRs disponíveis. permitindo que você armazene e processe os dados com um custo muito menor. Bancos de dados NoSQL do tipo chave-valor ou de documentos permitem que a aplicação virtualmente armazene qualquer estrutura num elemento de dado. 5. O resultado é que as mudanças na aplicação e as mudanças no schema do banco de dados não precisam mais ser gerenciadas como uma única e complicada mudança. é provável que os rumores da morte dos DBAs tenham sido um pouco exagerado. enquanto que SGBDRs tendem a depender de caros servidores e dispositivos de armazenamento proprietários. Cada pequena mudança no modelo de dados deve ser cuidadosamente gerenciada e pode necessitar de downtime ou níveis de serviço reduzidos. mas assim como os níveis de transações. Cinco desafios do NoSQL A promessa dos bancos de dados NoSQL gerou muito entusiasmo.que está sendo armazenado também cresceu massivamente. isto permite que as aplicações possuam ciclos de iteração mais rápidos. Modelos de dados flexíveis Gerência de mudança é uma grande dor de cabeça para grandes SGBDRs em produção. DBAs estão intimamente envolvidos no projeto. A seguir listamos alguns dos principais desafios. as restrições de volumes de dados que podem ser efetivamente gerenciados na prática por um único SGBDR tornaram-se intoleráveis para algumas empresas. SGBDRs de alto nível só podem ser mantidos com a assistência de caros e altamente treinados DBAs. embora claramente possa haver efeitos colaterais indesejáveis caso a aplicação falhe em gerenciar a integridade dos dados. distribuição de dados e modelos de dados mais simples tendem a requisitos de administração e otimização menores – na teoria. O resultado é que o custo por gigabyte ou transações/ segundo para o NoSQL pode ser muitas vezes menor que o custo de SGBDRs. 4. Bancos de dados NoSQL são normalmente concebidos para requerer menos gerenciamento: reparos automáticos. Economia Bancos de dados NoSQL tipicamente utilizam clusters de servidores baratos para gerenciar a explosão no volume de transações e dados. 3. mas ainda há obstáculos a serem superados antes que eles possam seduzir grandes empresas mais conservadoras. A capacidade dos SGBDRs tem crescido para se equiparar a estes aumentos. Na prática.

A Quest Software desenvolveu um produto – Toad for Cloud Databases – que pode fornecer a capacidade de consultas ad-hoc em uma boa variedade de bancos de dados NoSQL. e embora existam muitas empresas oferecendo suporte a banco de dados NoSQL. Microsoft ou IBM. Para a maioria. Conclusão Bancos de dados NoSQL estão se tornando uma crescente e importante parte do cenário de banBANCO DE DADOS | Educação a Distância 111 . O NoSQL hoje requer muita habilidade para instalar e muito esforço de manutenção. SGBDRs são estáveis e ricos em funcionalidades. que estão familiarizados com os conceitos e programação em SGBDRs. mas para a maioria dos CIOs. muitos sistemas NoSQL são projetos open-source. 4. estas empresas normalmente são pequenas startups sem o alcance global. 5. Suporte Empresas querem a garantia de que se um sistema chave falhar.1. os dados de uma aplicação têm um valor para o negócio que vai além do ciclo de insert-read-update-delete de uma típica aplicação Web. muitas alternativas NoSQL são versões de pré-produção em que muitas funcionalidades importantes ainda devem ser implementadas. Algum alívio é trazido pelo surgimento de solução como HIVE e PIG. maturidade SGBDRs já estão por aí há um longo tempo. terão um suporte competente com um tempo de resposta aceitável. 2. a maioria de suas funcionalidades está relacionada às demandas destas aplicações. Consequentemente. Em contraste. mas a realidade atual ainda não é esta. mas por enquanto. Business intelligence e Business Analytics Banco de bancos NoSQL evoluíram para atender a demanda de escala de modernas aplicações Web 2. Mesmo uma simples consulta exige um domínio significativo de programação. recursos de suporte ou credibilidade de empresas como Oracle. Administração Os objetivos de projeto do NoSQL podem ser o de fornecer uma solução com custo zero de administração. Defensores do NoSQL argumentarão que sua idade avançada é um sinal de sua obsolescência. é muito mais fácil encontrar programadores ou administradores SGBDR que um expert em NoSQL.0. 3. Entretanto. Empresas mineram informações em banco de dados corporativos para melhorar sua eficiência e competitividade. praticamente todo desenvolver NoSQL ainda está em processo de aprendizado. Em comparação. e business intelligence (BI) é um ativo valioso de TI para todas as médias e grandes empresas. e muitas ferramentas de BI populares não fornecem conectividade a NoSQL. Bancos de dados NoSQL oferecem poucas funcionalidades para consultas e análises ad-hoc. Em contraste. Expertise Existem literalmente milhões de desenvolvedores no mundo todo. em praticamente todo segmento de negócios. Todos os fornecedores de SGBDRs trabalham bastante para conseguirem fornecer um elevado nível de suporte corporativo. que podem fornecer um fácil acesso a dados em clusters Hadoop e eventualmente outros bancos de dados NoSQL. Esta situação será resolvida naturalmente com o passar do tempo. a maturidade dos SGBDRs é reconfortante.

Exercite-se e execute consultas e comandos de 112 BANCO DE DADOS | Educação a Distância . e quando utilizados de modo apropriado. Entretanto. Em seguida. alunos(as) e profissionais. tuning de desempenho e desenvolvimento de software. já temos a convicção de que você. falando “síquel” ao invés do famigerado “esse-quê-ele” quando se referir à linguagem SQL. na área de Tecnologia da Informação inglês é obrigatório e deveria ser o idioma principal). Um reconhecido expert em banco de dados com mais de 20 anos de experiência em aplicações.co de dados.techrepublic. Durante as seções desta unidade. UPDATE e DELETE e suas respectivas sintaxes e cláusulas individuais. Como toda tecnologia e assunto novo. podem oferecer benefícios reais. Acesso em: 12 ago. pudemos estudar a formação dos comandos INSERT. CONSiDErAçÕES FiNAiS Finalizada a leitura desta unidade. BigData e Cloud Computing: Evangelista da IBM no Brasil e especialista em <https://www. administração de banco de dados. empresas devem proceder com cautela com total consciência das limitações e problemas que estão associados com estes bancos de dados.com/developerworks/mydeveloperworks/blogs/ctaurion/?lang=pt_br>. bem como sua motivação. SQL exige prática para o domínio. já abordará seus colegas. como profissional comprometido(a) e fluente em inglês que é (sim. Guy é autor de vários livros e diversos artigos em tecnologias de banco de dados e um palestrante regular em conferências técnicas. praticamos uma série de diferentes definições de comandos e explicamos o que se esperava de cada um deles. 2012. Este autor acredita piamente na educação por meio de exemplos como a melhor forma de se formar profissionais que consigam utilizar os conhecimentos assimilados na execução prática das tarefas. por meio de exemplos.com/blog/10things/10-things-you-should-know-about-nosql-databases/1772>. Blog do Cezar Taurion. Guy Harrison é o diretor de pesquisa e desenvolvimento da Quest Software. Fonte: <http://www. Crie seus próprios schemas baseado(a) nas abstrações reais do mundo que o cerca.ibm.

modificação SQL nestes seus schemas. a. aluno id nome sobrenome ra email professor id nome sobrenome titulação curso id nome ano matricula disciplina_fk aluno_fk disciplina id nome curso_fk professor_fk 1. Na próxima unidade. O nome de todos os alunos matriculados no curso com nome = ‘Banco de Dados’. BANCO DE DADOS | Educação a Distância 113 . A titulação do professor da disciplina com nome = ‘SQL’. Até agora fomos capazes de abordar as estruturas básicas da linguagem SQL. AtiviDADE DE AutOEStuDO Todas as atividades de autoestudo desta unidade baseiam-se na Figura abaixo. Elabore consultas SQL para selecionar: b. c. Crie os comandos SQL para definição e criação das tabelas. Considere o exemplo de schema da figura apresentada. Com a prática cotidiana você perceberá que SQL também é bastante simples. poderemos nos dedicar a alguns casos mais elaborados de uso desta popular linguagem.

sobrenome e ra de todos os alunos matriculados nas disciplinas lecionadas pelo professor com nome ‘Edson’. 3. Elabore comandos de modificação de dados para incluir. 114 BANCO DE DADOS | Educação a Distância . Todos os atributos de todos os cursos com ano > 1990. e. modificar e remover linhas das diferentes tabelas deste schema.d. O nome.

plano de Estudo A seguir. apresentam-se os tópicos que você estudará nesta unidade: • Definição de consultas em SQL envolvendo NULL • Descrição de consultas em SQL com subqueries • Descrição de consultas em SQL com diferentes tipos de join • Descrição de consultas em SQL com funções de agregação • Descrição de comandos em SQL para alteração de schema .uNiDADE v mAiS SQl Professor Me. Edson Yanaga Objetivos de Aprendizagem • Definir consultas complexas em SQL. • Apresentar os comandos de alteração de definições em SQL.

.

ainda não foi possível perceber um dos bons diferenciais competitivos dos bancos de dados relacionais. Muito pelo contrário. Aprendemos com a Teoria Geral dos Sistemas que sempre que há um problema “complexo”.COM BANCO DE DADOS | Educação a Distância 117 . É com esta definição em mente que apresentaremos nesta unidade uma grande variedade de exemplos que podem ser solucionados com estas consultas mais elaboradas da SQL.iNtrODuçãO Agora que já aprendemos a sintaxe básica dos comandos SQL. Em praticamente todos os sistemas de bancos de dados disponíveis no mercado. Fonte: SHUTTERSTOCK. não o fazemos com o propósito de intimidá-lo(a). as funções de consulta e manipulação básicas se equivalem. podemos nos aventurar em consultas um pouco mais complexas. sejam eles relacionais ou NoSQL. é possível dividi-lo em problemas menores até que estes sejam de fácil resolução. Isso significa que com o material estudado até a unidade anterior. que é justamente a capacidade de se executar estas consultas um pouco mais complexas e sofisticadas. Quando citamos estas consultas “um pouco mais complexas” do SQL.

Todos os fundamentos de computação baseiam-se na lógica booleana. Algumas possibilidades de uso para o valor NULL são: • • O valor é desconhecido. certamente não faz sentido armazenar esta informação. • A avaliação de comandos de consulta SQL com valores NULL merece uma atenção especial. Caso algum contato não tenha telefone. falso (FALSE) ou um terceiro valor que é representado por NULL. Ademais. mas não gostaria que ele fosse exibido ou armazenado. o que implica que as expressões possuem sempre somente dois valores possíveis: verdadeiro (TRUE) ou falso (FALSE). setando o valor NULL para representá-lo. Nesse caso. O valor não é aplicável. consultas com joins e consultas com funções de agregação. agora as expressões que envolvem os atributos podem resultar em valores verdadeiros (TRUE). como IS e IS NOT. todas as condições da cláusula WHERE de comandos SQL filtram as linhas baseando-se no valor verdadeiro (TRUE) das expressões. mas que pode ter diferentes interpretações. subqueries. CONSultAS ENvOlvENDO Null Nós já abordamos na Unidade III que o valor NULL representa um valor ausente. você conhece o número do telefone do contato.Nas próximas seções. linhas que sejam avaliadas pelas expressões da cláusula WHERE como falso (FALSE) ou como o valor representado por NULL simplesmente são descartadas (com exceção da operação de OUTER JOIN que veremos mais adiante nesta unidade). Como em SQL os atributos podem ter valor nulo. Este terceiro valor pode ser checado de um modo especial com os operadores SQL definidos. 118 BANCO DE DADOS | Educação a Distância . abordaremos consultas envolvendo valores nulos. além dos comandos de alteração de schema. um telefone pode ser NULL se você não sabe o valor do telefone do contato. Pensando na tabela telefone do exemplo da Unidade IV. No caso do telefone. O valor não está disponível.

Agora no exemplo abaixo a reescreveremos utilizando uma subquery. Estas consultas diferenciadas podem ser formuladas com uma certa conveniência por meio de consultas aninhadas (uma consulta dentro de outra) ou.Comecemos com alguns exemplos ainda baseados no schema apresentado na Unidade IV. contato WHERE contato. como popularmente denominadas. Exemplo 1: Selecione todos os contatos que não possuem data de nascimento definida.contato_fk and sobrenome = ‘Machado’. BANCO DE DADOS | Educação a Distância 119 . A consulta acima foi criada utilizando-se um join normal. Exemplo 2: Situação oposta a do Exemplo 1. selecionaremos todos os contatos que possuem uma data de nascimento definida. SELECT * FROM contato WHERE nascimento IS NULL. de subqueries.id = telefone. SELECT telefone FROM telefone. Exemplo 3: Selecione todos os telefones de contatos com sobrenome = ‘Machado’. Consultas aninhadas (Subqueries) Algumas consultas em SQL são mais facilmente construídas se pudermos buscar primeiramente alguns valores das tabelas e utilizá-los posteriormente em nossa consulta. SELECT * FROM contato WHERE nascimento IS NOT NULL.

otimize. esta diferença hoje é praticamente nula: todos os SGBDs modificam internamente as consultas fornecidas e automaticamente já escolhem o melhor plano de execução. devido à evolução dos interpretadores de SQL nos SGBDs modernos. Entretanto. Na hipótese de você ter certeza da sua subquery retornar um único valor ao invés de retornar um conjunto de valores. em algumas situações (talvez 5% ou 10% dos casos). Isto faz com que boa parte das supostas “otimizações” que muitos DBAs realizam em consultas SQL tornem-se inócuas. 120 BANCO DE DADOS | Educação a Distância . conveniência e legibilidade de código. p. Decidir entre uma forma e outra passa a ser uma questão de gosto. pois o SGBD na maioria das vezes reescreverá as consultas para a melhor forma possível2. num eventual gargalo. pode substituir o IN pelo operador de igual (‘=’).268). Toda consulta que utiliza um join pode ser reescrita na forma de uma consulta aninhada (com subqueries). a “otimização prematura é a raiz de todo o mal”. Mas mesmo nas situações de um único valor sendo retornado 2 Justiça seja feita.SELECT telefone FROM telefone WHERE contato_fk IN ( SELECT id FROM contato WHERE sobrenome = ‘Machado’ ). Mas como já citou Knuth (1974. Há alguns anos. Primeiro implemente os casos de uso de seu software e depois. de acordo com o modelo relacional. que deve ser compatível com o atributo sendo comparado pela cláusula IN. Uma dúvida comum a muitos desenvolvedores está relacionada à frequência de uso de cada opção. A cláusula IN espera um conjunto de valores sendo retornado pela subquery dentro dos parênteses. No exemplo acima. Matematicamente. não há diferença entre as duas consultas: são equivalentes. um bom conhecimento do funcionamento do interpretador SQL do SGBD pode fazer diferença. poderia ser argumentado que uma forma seria mais rápida que outra ou vice-versa. note o uso da cláusula IN (<subquery>).

É por este motivo que muitos programadores acabam adotando a convenção de se utilizar o operador IN em todas as consultas que envolvem subqueries. Considere nos exemplos a partir de agora o seguinte schema representado pela Figura 7: funcionário id nome sobrenome cargo subordinado id nome sobrenome superior_fk Figura 7 Fonte: o autor O schema da Figura 7 pode ser construído da seguinte forma: BANCO DE DADOS | Educação a Distância 121 . IN continua equivalente.o operador.

Exemplo 4 Selecione o nome e sobrenome de todos os funcionários que possuem subordinados com o mesmo nome. CREATE TABLE subordinado ( id int primary key.nome = s. f.nome = s. Este exemplo reescrito com uma subquery é um caso especial de consulta aninhada em 122 BANCO DE DADOS | Educação a Distância .nome.nome ). Reescrevendo o exemplo acima com uma subquery: SELECT f. cargo varchar(30) ). superior_fk int. nome varchar(30). nome varchar(30). f. subordinado AS s WHERE f.nome.sobrenome FROM funcionario AS f WHERE id IN( SELECT superior_fk FROM subordinado AS s WHERE f.nome.sobrenome FROM funcionario AS f.CREATE TABLE funcionario ( id int primary key. SELECT f. sobrenome varchar(30). FOREIGN KEY (superior_fk) REFERENCES funcionario(id) ).id = s. sobrenome varchar(30).superior_fk AND f.

A exemplo do operador EXISTS. f. pois como pode notar. Este operador retorna um resultado verdadeiro (TRUE) se a sua subquery retornar ao menos uma linha de resultado e falso (FALSE) se o resultado for vazio. o operador NOT EXISTS retorna o oposto do operador EXISTS. f.SQL.nome. BANCO DE DADOS | Educação a Distância 123 . sendo falso (FALSE) se o resultado possui ao menos uma linha e verdadeiro (TRUE) se o resultado for vazio. SELECT f. Apresentamos a mesma consulta do exemplo reescrita acima com um novo operador denominado de EXISTS. SELECT f.sobrenome FROM funcionario AS f WHERE EXISTS ( SELECT * FROM subordinado AS s WHERE f.nome ).superior_fk = f.nome = s. Exemplo 5: Selecione o nome e o sobrenome de todos os funcionários que não possuem subordinados. Chamamos este caso especial de consultas aninhadas correlacionadas.nome. a subquery utiliza atributos da consulta externa em sua cláusula WHERE.sobrenome FROM funcionario AS f WHERE NOT EXISTS ( SELECT * FROM subordinado AS s WHERE s.id ).

id = telefone.telefone LIKE ‘44%’. Agora vejamos esta mesma consulta reescrita com um JOIN: SELECT nome FROM (contato JOIN telefone ON contato. a cláusula FROM possui uma joined table que contém todos os atributos de ambas as tabelas unidas pelo JOIN e pela condição do JOIN. telefone WHERE contato. que é o predicado após o ON.contato_fk) WHERE telefone. que descarta todas as tuplas que não possuam um valor correspondente na segunda tabela do JOIN.id = telefone. é mais fácil compreender as consultas se estas forem escritas na forma com join ao invés de misturar as condições de join na cláusula WHERE. Em alguns casos. SELECT nome FROM contato. Exemplo 6: Selecione o nome de todos os contatos cujo telefone inicie com ‘44’.telefone LIKE ‘44%’. Neste caso do exemplo reescrito com JOIN. Voltemos a utilizar o schema definido na Unidade IV em nossos exemplos abaixo. Na SQL o tipo de JOIN padrão quando simplesmente declarado pela cláusula JOIN é o inner join.contato_fk and telefone.CONSultAS utiliZANDO JOINS Na Unidade IV nós vimos que o conceito de join permite que façamos consultas que utilizam duas ou mais tabelas. unidas por meio de uma ou mais condições que unem os elementos das duas ou mais tabelas. Os outros tipos de JOIN disponíveis são descritos na tabela a seguir: 124 BANCO DE DADOS | Educação a Distância .

Somente tuplas que satisfaçam a condição do JOIN são selecionadas. os valores são preenchidos com NULL. BANCO DE DADOS | Educação a Distância 125 . Todas as tuplas dos dois lados do JOIN são selecionadas. Caso não haja correspondência na condição do JOIN. SELECT nome. mostre somente o nome e NULL como o valor do telefone. Um caso típico de LEFT JOIN em que você deseja listar todos os contatos. tendo eles telefone ou não. Caso não haja uma tupla correspondente na tabela do lado direito do JOIN.Tipo de JOIN INNER JOIN Semântica É o tipo de JOIN padrão.nome LIKE ‘A%’. Todas as tuplas da tabela do lado esquerdo do ON são selecionadas. telefone FROM contato LEFT JOIN telefone ON contato. Caso não haja uma tupla correspondente na tabela do lado esquerdo do JOIN. Todas as tuplas da tabela do lado direito do ON são selecionadas. LEFT OUTER JOIN ou LEFT JOIN RIGHT OUTER JOIN ou RIGHT JOIN FULL OUTER JOIN ou FULL JOIN Exemplo 7: Selecione todos os nomes de contatos que iniciem com a letra ‘A’ e seus respectivos telefones. Se o contato não tiver um telefone. o lado vazio é preenchido com NULL. É a condição inversa do LEFT JOIN.id = telefone.contato_fk WHERE contato. os valores são preenchidos com NULL.

Neste exemplo contamos a quantidade de pesos distintos de nossos contatos. MAX. valor mínimo e média aritmética. o asterisco (“*”) representa o número de linhas do resultado da consulta. MIN(peso) FROM contato. valor máximo. SELECT COUNT(*) FROM contato WHERE peso > 80. SELECT MAX(peso). soma. SUM. SELECT COUNT(DISTINCT peso) FROM contato. Neste uso da função COUNT. MIN e AVG que executam as funções matemáticas respectivas de contagem. se comparados com outras alternativas não relacionais. Exemplo 10: Selecione a quantidade de pesos distintos de todos os contatos. é o caso do atributo peso. são as suas funções de agregação. e é bastante utilizado para se determinar a quantidade de resultados retornados. Neste exemplo. Caso a cláusula 126 BANCO DE DADOS | Educação a Distância . Funções de agregação populares da SQL incluem COUNT.CONSultAS COm FuNçÕES DE AgrEgAçãO Uma das grandes vantagens da SQL e dos bancos de dados relacionais. Exemplo 8: Selecione o peso mínimo e máximo de todos os contatos. As funções de agregação em SQL recebem como parâmetro o nome do atributo em que se deseja aplicá-las. Exemplo 9: Selecione o número total de contatos cujo peso > 80. Estas funções permitem uma análise resumida das informações armazenadas nas tabelas.

utilizamos a cláusula GROUP BY. COUNT(*) FROM contato GROUP by sobrenome. Na avaliação desta consulta. mas em determinados grupos de tuplas – separados dentro da tabela baseados em um determinado valor. COUNT(*) FROM contato GROUP by sobrenome HAVING COUNT(*) > 1. Exemplo 12: Selecione o sobrenome e quantidade de contatos que possuem o mesmo sobrenome. ao invés dela contar todas as tuplas da tabela. Em algumas situações. contaríamos somente a quantidade de pesos dos contatos. Exemplo 11: Selecione o sobrenome e quantidade de contatos que possuem o mesmo sobrenome. SELECT sobrenome. Ao utilizarmos o GROUP BY. mas queremos selecionar BANCO DE DADOS | Educação a Distância 127 . SELECT sobrenome. desejamos aplicar as funções de agregação não em todos os itens das tuplas selecionadas. ela conta somente as tuplas de cada grupo.DISTINCT não fosse aplicada. Para conseguir este objetivo em SQL. separamos as tuplas em grupos distintos em que todas tuplas dentro de um determinado grupo possuem o mesmo valor avaliado pelas condições do GROUP BY. Funções de agrupamento Em muitas situações. Ao aplicarmos a função COUNT(*). desejamos agrupar as tuplas em grupos. todas as tuplas da tabela contato são divididas em grupos cujo sobrenome seja igual. desde que haja pelo menos dois contatos com o mesmo sobrenome. O resultado é uma lista que contém os sobrenomes e as quantidades de contatos com cada sobrenome.

Há uma certa controvérsia neste comando. tabelas. Este comando remove o schema. Já a cláusula HAVING é avaliada somente depois que os grupos já foram formados. A cláusula que permite filtrar quais grupos serão exibidos no resultado é a HAVING. todas as tabelas dentro do schema. e serve então para filtrar estes grupos do resultado final. 128 BANCO DE DADOS | Educação a Distância . Vamos abordá-los nos exemplos seguintes. É importante salientar a diferença entre as cláusulas WHERE e HAVING. a cláusula WHERE é avaliada antes de qualquer função de agregação ou qualquer agrupamento ser avaliado. Os comandos em SQL que podem alterar as definições de schema são os comandos para adicionar. atributos e restrições. DROP SCHEMA agenda. COmANDOS DE AltErAçãO DE SCHEMA Nós definimos como schema evolution o processo de alterações da estrutura do schema. Normalmente.apenas alguns destes grupos no resultado – e não todos. pois aparentemente ambas filtram os resultados da consulta. Exemplo 13: Remova o schema agenda do banco de dados. Portanto. Outros só permitem a remoção do schema se ele não contiver nenhuma tabela. estas alterações de estrutura não são frequentes e são motivadas por alterações dos requisitos do negócio. modificar e remover schemas. Alguns SGBDs removem todas as tabelas do schema ao remover o próprio schema. sendo necessário remover todas as tabelas antecipadamente. A cláusula WHERE filtra as tuplas avaliadas primeiramente. e por consequência. e consequentemente também da aplicação. Somente grupos que satisfaçam a condição imposta pelo HAVING são selecionados no resultado.

A definição da coluna apelido da tabela contato foi modificada e o seu tipo de dados agora define a capacidade de 25 caracteres. se alguma outra tabela depender da tabela sendo removida. O Exemplo 16 é a mesma situação do Exemplo 15. a tabela telefone seria removida do schema. este comando irá falhar devido à restrição de integridade referencial do banco. Este exemplo adiciona uma coluna denominada ‘apelido’ no final da definição da tabela contato com o tipo definido de VARCHAR(15).Exemplo 14: Remova a tabela telefone do schema. Exemplo 16: Adicione uma coluna apelido na tabela contato contendo 15 caracteres e com valor padrão de ‘Senhor’. BANCO DE DADOS | Educação a Distância 129 . É importante notar que a tabela sendo removida do schema pode conter dependências de integridade referencial e chave estrangeira em outras tabelas. ALTER TABLE contato ADD COLUMN apelido VARCHAR(15). apenas definindo um valor padrão para a coluna sendo adicionada. sendo necessário primeiro remover a integridade referencial. ALTER TABLE contato ADD COLUMN apelido VARCHAR(15) DEFAULT ‘Senhor’. Nesse caso. todas as tuplas existentes na tabela recebem um valor NULL na coluna adicionada. Neste exemplo. ALTER TABLE contato ALTER COLUMN apelido VARCHAR(25). DROP TABLE telefone. Exemplo 17: Altere o tamanho da coluna apelido para 25 caracteres. Quando um valor DEFAULT não é especificado no ALTER TABLE. Exemplo 15: Adicione uma coluna apelido na tabela contato contendo 15 caracteres.

Este comando adiciona a restrição de integridade referecial entre a tabela telefone e a tabela contato.be/S2iQ2RKMw-w>. Exemplo 19: Supondo que ainda não houvesse uma integridade referencial entre a tabela telefone e a tabela contato. é necessário saber o nome da restrição no banco de dados. sócio-diretor da Concrete Solutions. Como os comandos para exibição das restrições das tabelas variam muito de um produto para outro. ALTER TABLE contato DROP COLUMN apelido. Também é possível remover as restrições de integridade referencial por meio do comando ALTER TABLE <tabela> DROP FOREIGN KEY <nome>. <http://youtu. falando das perspectivas para o mercado em 2012. incluindo Cloud Computing e NoSQL. deixaremos esta solução como uma sugestão de estudo para você.Exemplo 18: Remova a coluna apelido da tabela contato. 130 BANCO DE DADOS | Educação a Distância . mas para tanto. adicione-a. Entrevista com Fernando de la Riva. A coluna apelido é removida da tabela contato desde que não haja nenhuma restrição de integridade referencial nesta coluna. ALTER TABLE telefone ADD FOREIGN KEY (contato_fk) REFERENCES contato(id).

arquitetura de dados e prioridades. pois para alguns. há a difícil questão de qual das duas utilizar. Também parece provável que a maioria das soluções consistirá de um híbrido misto de tecnologias de armazenamento. é provável que o termo cresça até o momento em que perca o sentido e subdivisões tornem-se necessárias para clarificar o significado do termo. Para qualquer organização que tenha que escolher entre NoSQL e dados relacionais tradicionais. Ainda é muito cedo para fornecer uma resposta decisiva e definitiva. ele representa tanto um movimento quanto a uma escola de pensamento ou uma tecnologia particular. Líderes técnicos têm um papel importante na compreensão das opções disponíveis e na adaptação do software. Este artigo tenta dar uma introdução de alto nível ao NoSQL e fornece uma comparação das últimas tecnologias disponíveis desta área. produtos e serviços que mais se aplicam ao seu domínio de negócios. seu valor já foi provado. As ideias que baseiam a infinidade de solução que existe sob o termo “NoSQL” antes estavam somente disponíveis para aqueles cujas necessidades tornaram necessária uma implementação própria e específica. Mesmo o nome é confuso. O que é NoSQL? O movimento NoSQL é um pedaço de um marketing de guerrilha que traz um grande grupo de tecnólogos e tecnologias sob a mesma bandeira. mas está claro que muitas organizações podem se beneficiar de um modelo de dados que se encaixe melhor nos tipos de armazenamento e consulta que eles executam na prática do que na teoria. À medida que o tempo passe. introdução Desvendar o NoSQL e tentar explicar o que é e por que você deveria se interessar ou não é uma tarefa difícil. assim como um misto de estruturas de N-camadas e cliente-servidor tende a ser mais comum do que comprometimentos absolutos com uma única estratégia. Nas áreas em que estas soluções são uma necessidade. e agora o uso destas soluções passou a ser uma opção para outros com um custo de investimento muito menor. sem problemas Uma introdução a banco de dados NoSQL Desvendar o NoSQL e tentar explicar o que é e por que você deveria se interessar ou não é uma tarefa difícil. Possuir uma estratégia lógica e localizada para a adoção do que o NoSQL oferece de melhor será o fator que diferenciará BANCO DE DADOS | Educação a Distância 131 . isto representa qualquer mecanismo de armazenamento de dados que não utilize SQL. O termo cobre uma grande variedade de tecnologias. mas até agora a indústria parece ter estabelecido como “Not Only SQL” (não somente SQL).NoSQL.

Existem três principais motivações por trás do elevado interesse em NoSQL. Facilidade de uso em clusters com balanceamento de carga tradicionais. À medida que o mundo torna-se mais conectado. 3.o sucesso do fracasso em sua adoção. “Web Scale”. Sites como o Twitter recebem montanhas de tráfego em intervalos muito curtos de tempo (um gol validado ou invalidado. Sites como o Facebook tornaram fácil a escalada de popularidade de sites à medida que itens tornam-se virais e são distribuídos pelo mundo todo. Conteúdos criados pelo usuário causam dores de cabeça particulares. São ACID dentro de um nó no cluster e eventualmente consistentes dentro do cluster. 2. Nem todos os produtos deste artigo possuem todas estas propriedades. é o problema de capacidade de planejamento. A abordagem normal para 132 BANCO DE DADOS | Educação a Distância . Primeiro foi o surgimento de uma nova forma de perfil de tráfego provocada pelo que pode ser chamado de Web 2. e sua infraestrutura deve se adaptar rapidamente para não ficar indisponível na hora errada. Não possuem schemas fixos e permitem a migração de schemas sem indisponibilidade. assim como a Internet de varejo. como por exemplo. Dados persistentes (não somente cachês). 6. 5. Escalabilidade na memória disponível.0 ou de Web Social. é possível que sites recebam variações enormes de tráfego. NoSQL é uma área grande e em expansão. mas a maioria dos bancos de dados que discutiremos suporta boa parte destas características. Os principais benefícios virão da maior compreensão sobre os dados. 4. Conteúdos criados pelo usuário significam que os sites tornam-se mais equilibrados no quesito “leitura-escrita”. escala e provisionamento que tornou-se crítico para muitos negócios na Web nos últimos cinco anos. as características mais comuns de banco de dados NoSQL são: 1. Possui sistemas de consulta individuais ao invés de uma linguagem de consulta padrão. Para os propósitos deste artigo. o 11 de Setembro. Assim como o NoSQL apresenta novos desafios. ele também oferece recompensas significativas àqueles que o incorporam com sucesso no seu portfolio de solução. pois os problemas relacionados a websites com “leitura intensiva” já são solucionados com a utilização de conteúdo estático e CDNs (Content Distribution Networks – Redes de Distribuição de Conteúdo). outros são imprevisíveis e globais. O que está acontecendo agora? Movimentos em tecnologia ou em correntes de pensamento raramente acontecem de modo totalmente espontâneo. Algumas destas estão relacionadas a eventos previsíveis: a Copa do Mundo ou o Natal. A rica variedade de novos modelos de negócios possuem requisitos de armazenamento que são suportados pelo NoSQL e as décadas de coerção de dados em modelos relacionais ficaram para trás. a apuração de uma votação ou o final de um seriado ou novela de TV). escalonamento flexível e produtividade. como é comumente referido.

Está sendo realmente utilizado? Uma questão comum que se pergunta sobre o NoSQL é se ele realmente está sendo utilizado ou se é somente uma moda. Tais código colocam o NoSQL firmemente ao alcance de empresas menores. Yahoo ou Google então você teve os dados fornecidos através de uma solução NoSQL. mas que ficará quase que totalmente ocioso no dia a dia. Se você já utilizou o eBay ou o Twitter. A Web Scale invalida este modelo quando você tem que enfrentar o dilema de comprar um hardware caro para atender sua demanda de pico (Natal ou Copa do Mundo). é simplesmente impossível comprar o hardware e as licenças de software para atender a demanda de pico através de um único servidor. você indiretamente já utilizou bancos de dados que possuem muito pouco em comum com bancos de dados tradicionais. Com a evolução do modelo de negócios. (por exemplo. O custo de escrever tal solução impediu muitas empresas que não tinham estes problemas no coração de seus negócios de explorar esta nova tecnologia. O resultado normalmente é uma estrutura de dados repleta de linguagens arcaicas e remendadas com dados adaptados. A resposta então é comprar progressivamente um hardware cada vez mais poderoso até que o banco de dados possa servir todo o tráfego. Para alguns empreendimentos. Normalmente a questão realmente significa se pessoas como eu estão realmente utilizando NoSQL.escalabilidade tem sido adicionar novos servidores web. agora os bancos de dados NoSQL podem ser baixados e integrados à arquitetura corporativa em questão de semanas. Ao invés de ser um assunto esotérico. o eBay não utiliza transações e o Twitter utiliza um banco de dados de grafos para saber quem segue quem). sabe que o peso do histórico no modelo de dados pode ser um sério entrave na manutenção do sistema e na incorporação de novas ideias de negócios. A segunda motivação é o fato de que os dados mudam com o passar do tempo. BANCO DE DADOS | Educação a Distância 133 . A motivação final é que a tecnologia de NoSQL está começando a se tornar um commodity. Amazon e Google não tiveram escolha no passado a não ser desenvolver sua própria solução para resolver os problemas de escala. A resposta é que se você alguma vez já utilizou serviços da Amazon. Qualquer um que já teve que explicar que o valor de uma coluna possui um significado diferente dependendo se o valor for menor ou maior que 10 ou que “padaria” na verdade significa “armazém” devido a um erro anterior. que funciona até o ponto em que o banco de dados (que historicamente tem sido um único grande servidor) torna-se o gargalo. Estes empreendimentos têm procurado uma solução de dados escalável que possa espelhar a estrutura da própria Web. Recentemente uma série de doações de código para entidades como a Apache Foundation ou outros grupos de open source que fornecem desenvolvimento e suporte baseado em comunidades trouxe a possibilidade de se utilizar código extremamente sofisticado com um baixo custo de manutenção. os modelos de dados normalmente contorcem-se para evoluir e manter o ritmo das mudanças.

mesmo que estes bancos de dados relacionais causem vários problemas e tenham suas diversas limitações. Por exemplo. Informalmente. • • • • • maturidade da linguagem de consultas Uma das queridinhas que corre o risco de ser deixada de lado é a SQL. por que você utilizaria um banco de dados NoSQl? Uma das principais motivações é se você tiver problemas em seu negócio que são difíceis de se resolver utilizando a tecnologia de banco de dados relacional. Seus dados são fornecidos em pequenas mudanças ao longo do tempo. Você tem que executar consultas em seus dados que não envolvem simples relações hierárquicas. de modo que o número de tabelas necessárias para manter a forma normal cresceu desproporcionalmente em relação aos dados sendo mantidos. Seu banco de dados relacional está denormalizado por motivos de desempenho ou por conveniência ao manipular dados na aplicação. critérios de pesquisa salvos. mesmo que na realidade a SQL seja somente um padrão muitas 134 BANCO DE DADOS | Educação a Distância . Seu modelo de negócios gera muitos dados temporários que não pertencem ao banco de dados principal. A área é nova o suficiente para que muitos negócios sintam-se desconfortáveis executando trabalho crítico em qualquer outro software que não seja um maduro banco de dados relacional. Seus conjuntos de dados consistem em grandes quantidades de texto ou imagens e as definições de coluna são simples LOBs (CLOB ou BLOB). se você não consegue mais imprimir o seu DER num papel A3. Se você possui um excelente modelo relacional com um banco de dados maduro que fornece todas as funcionalidades que você precisa. A seguir estão alguns casos de uso em que é subótimo utilizar um banco de dados relacional: • • Seu banco de dados relacional não escalará seu tráfego a um custo aceitável. personalização do site e questionários de usuário incompletos. exemplos comuns são questões de recomendações ou de business intelligence que envolvem a ausência de dados. então há um diferencial competitivo em potencial ao se avaliar uma solução NoSQL.A resposta é que se você está enfrentando problemas lidando com certos tipos de dados. Exemplos comuns incluem carrinhos de compras. então há pouca necessidade de se alterar seu mecanismo de armazenamento de dados. O NoSQL escolheu a SQL como o monstro a ser derrotado. você deve ter alcançado este problema ou você está armazenando muita coisa num único banco de dados. Websites com muito AJAX tendem a ter muitos desses casos de uso. Você possui transações de dados que não precisam de muita durabilidade. o “curtir” de itens em websites: criar transações para este tipo de interação são um exagero. pois se a ação falhar o usuário provavelmente irá repetir a ação até que funcione.

então é provável que uma outra implementação torne-se popular e seus usuários migrarão para este outro produto. ela é madura. Existem algumas áreas óbvias em que o NoSQL pode ser aplicado imediatamente. Este poderia ser adaptado para bancos de dados de documentos e grafos. concordando que simplesmente jogar fora a SQL seria doloroso demais. Em alguns casos este fato se esconde por trás do slogan “Not Only SQL”. Conteúdo de websistes pode ser geralmente expresso em bancos de dados de documentos ou de chave-valor. Em alguns casos o desacoplamento dos dados é a primeira tarefa a ser executada ao invés da migração do armazenamento dos dados. Se eles não forem capazes de encontrar um conjunto comum de operações de manipulação de dados. Na situação em que o armazenamento de dados é monolítico e que os sistemas dependem de certas propriedades do modelo relacional – por exemplo. Mesmo os fornecedores reconhecem este problema. Primeiramente. Um exemplo particular é o uso de bancos de dados de grafos ao invés de uma estrutura complexa de tabelas relacionais. tipos de dados ou consistência transacional – então o problema é muito mais difícil. Também é importante revisar decisões históricas e verificar se estas foram feitas com restrições históricas em mente. refinada e geralmente atende às expectativas dos usuários. Nesta situação é mais fácil identificar áreas que se beneficiariam da solução NoSQL e implementar esta integração aos poucos. Ou todos os fornecedores terão que implementar o mesmo conjunto de comandos do líder de mercado para manterem-se competitivos. BANCO DE DADOS | Educação a Distância 135 . Do ponto de vista da solução. A SQL possui muitas vantagens que os produtos NoSQL terão que tratar ao longo do tempo. É perfeitamente possível criar conjuntos de relacionamentos N-N em dados relacionais e então consultar as intersecções destes relacionamentos. mas mesmo assim ainda não há nada que forneça um conjunto modular de comandos de consulta que possa ser comparado à SQL. mas expressar somente os relacionamentos num banco de dados de grafos é uma solução muito mais simples. o que significa que pessoas que produzem consultas SQL complexas certamente reclamarão se tiverem que replicar operadores como SUM. novos desafios Na tentativa de se incorporar o NoSQL em sistemas de larga escala existentes. vê-se que é obviamente mais fácil se a sua aplicação possui um baixo acoplamento entre os componentes. há a necessidade de se analisar claramente quais dados são relacionais e quais dados estão armazenados em bancos de dados relacionais por falta de outra alternativa. um padrão para fazer consultas em RDF ou dados em tuplas. Já há alguns padrões disponíveis como a SparQL. Possui uma sintaxe coerente e rica em funcionalidades. Novas tecnologias. ORDER BY e GROUP numa tarefa do tipo map-reduce em JavaScript. É uma ironia que os produtos NoSQL mais complexos que os bancos de dados de chave-valor terão que implementar algo muito similiar à SQL se quiserem ter o mesmo nível de utilização que os produtos de dados relacionais têm hoje.vezes deturpado por implementações customizadas.

sistemas que precisam evoluir e mudar seus dados com frequência possuem uma boa chance de utilizar um banco de dados sem schema. Aplicação de exemplo: Você está escrevendo um software de fórum em que a página do perfil fornece as estatísticas do usuário (mensagens postadas etc.) e as últimas dez mensagens escritas por ele. mas até conseguir confirmar. Mais tarde um conhecido pode reconhecer a criança e fornecer informações adicionais que você pode querer gravar. Dados de buscas são outro exemplo.Exemplos particulares destas situações são as metáforas de formulários e de wizards de formulários. Aplicações Típicas: Cachê de conteúdo. Aplicações Típicas: Aplicações Web. Qualquer formulário pode ser expresso diretamente na forma de um documento. Analisando de um modo mais estratégico. referências. uma criança pequena pode saber o seu primeiro nome e você pode tirar uma foto dela. Bancos de dados chave-valor Exemplos: Tokyo Cabinet/Tyrant. pois muitos dados de referência consistem em mapas. Um processo em background recalcula esta informação a cada 15 minutos e grava no banco de dados de modo independente. Aplicação de exemplo: Você está criando um software que cria perfis de crianças refugiadas com o propósito de reuni-las novamente com suas famílias. devem surgir novas oportunidades de uso do NoSQL. Se a migração de estruturas de dados sem indisponibilidade for um diferencial competitivo. Os detalhes que você precisa gravar de cada criança podem variar muito de acordo com as circunstâncias do evento e elas são construídas aos poucos. cidades etc. estados. Pontos Fortes: Tolerância com dados incompletos. Banco de dados de documentos Exemplos: CouchDB e MongoDB. Pontos Fortes: Acesso rápido. você terá que tratar estas informações com ceticismo. listas e conjuntos. Por exemplo. países. tipos de bancos de dados NoSQl As próximas seções descrevem os diferentes tipos de bancos de dados NoSQL. 136 BANCO DE DADOS | Educação a Distância . Redis. Pontos Fracos: Desempenho em consultas. A página lê estes dados baseada numa chave que é o id do usuário e recupera uma String JSON que representa todas estas informações. Analisando estes padrões nos dados. então este é um forte indicador de que o uso de uma solução NoSQL seria valioso. mas pode não saber os nomes de seus pais. Voldemort e Oracle BDB. não há uma sintaxe de consulta padrão. Pontos Fracos: Os dados armazenados não têm schema.

atualizações utilizando XQuery modificam todos os documentos XML para o novo formato. Os editores precisam fazer buscas rápidas tanto no texto quanto em seções semânticas do XML. impressa e eBook de seus artigos. Quando mudanças são necessárias.Banco de dados de grafos Exemplos: Neo4J. Este mesmo princípio pode ser estendido a qualquer aplicação em que você precisa saber o que as pessoas estão fazendo. Bancos de dados de Xml Exemplos: Exist. Aplicação de exemplo: Uma editora que utiliza formatos XML para produzir versões web. Pontos Fracos: Não é uma solução binária pura. comprando ou curtindo de modo a recomendar ações futuras. Não é simples de clusterizar. Pontos Fortes: Tecnologias de busca maduras e validação de schema XML. Pontos Fracos: API de baixo nível. Aplicação de exemplo: Qualquer aplicação que requeira conectividade social é uma candidata a um banco de dados de grafos. Pontos Fortes: Algoritmos de grafos. HBase e Riak. Eles armazenam o XML dos artigos finalizados no banco de dados XML e os encapsulam em web services para os sistemas de produção de documentos. MarkLogic.) pode ser votado e pode ter um comentário opcional no voto. comentários. InfoGrid e Infinite Graph. conectividade. perfis de autores etc. Aplicação de exemplo: Você possui um site de notícias em que qualquer tipo de conteúdo (artigos. Em qualquer momento você pode responder a questões como “Quais restaurantes receberam votos negativos das irmãs de pessoas com mais de 40 que gostam de esquiar e que visitaram o Quênia?”. é mais fácil reescrever um documento do que atualizá-lo. Aplicações Típicas: Publicação. por exemplo: caminho mais curto. Aplicações Típicas: Redes sociais. Pontos Fracos: Tem que percorrer todo o grafo de modo a encontrar uma resposta. graus de relacionamento etc. Pontos Fortes: Buscas rápidas e boa distribuição do armazenamento dos dados. Bancos de dados ponto-a-ponto distribuídos Exemplos: Cassandra. Aplicações Típicas: Sistemas de arquivo distribuídos. Oracle. Você pode criar uma base por usuário e uma base por tipo de conteúdo utilizando um UUID como chave BANCO DE DADOS | Educação a Distância 137 .

db4o. mas que os usuários ainda não votaram. Aplicações Típicas: Sistemas financeiros. O “bucket” do usuário mantém cada voto dele. Aplicação de exemplo: Uma empresa de comércio internacional quer fazer transações a partir do Japão e Nova York e verificá-las através de um processo de análise de risco em Londres. Acesso em: 13 ago. Durante a noite. O NoSQL oferece a chance de se pensar de um modo diferente sobre os dados e é uma possibilidade extremamente excitante. Robert Rees. Quando um objeto é replicado no datacenter europeu. SQL não vai morrer tão cedo.thoughtworks. enquanto que o “bucket” do conteúdo contém uma cópia de cada voto que já foi feito para aquele conteúdo. o analisador de riscos lê a transação e verifica o risco da mesma. O cliente está aguardando por mudanças nos objetos e recebe uma notificação de que a sua transação foi aprovada. até agora nós temos criado sistemas baseados nas restrições de um típico banco de dados relacional. Pontos Fracos: Consultas limitadas ou operações de múltiplas atualizações.com/articles/nosql-comparison>. um processo batch identifica em quais conteúdos os usuários votaram e você gera uma lista de conteúdo que possui muitos votos para cada usuário. Conclusão Dados tabulares permanecem tabulares e a planilha de cálculo ainda é a ferramenta de modelagem de dados favorita no mundo dos negócios. ObjectStore. Fonte: <http://www. GemStone e Polar. 2012. Entretanto.(gerado a partir de cada tipo de conteúdo e usuário). Esta lista é uma lista de artigos recomendados para o usuário e fica armazenada no “bucket” de recomendações. CONSiDErAçÕES FiNAiS Finalmente chegamos ao fim de nossa última unidade deste material. você 138 BANCO DE DADOS | Educação a Distância . Neste ponto. Banco de dados de objetos Exemplos: Oracle Coherence. baixa latência ACID e tecnologia madura. Um objeto representando a transação é gravado no banco de dados de objetos e o analisador de riscos está aguardando pelas notificações de objetos de transações. Pontos Fortes: Reflete o paradigma de desenvolvimento orientado a objetos. Ele então reescreve o objeto para informar que a transação foi autorizada e gera uma venda.

é bastante provável que você se depare em sua vida profissional com consultas um tanto quanto complexas. beneficiario id nome sobrenome altura plano_fk dependente id nome sobrenome beneficiario_fk plano id nome valor 1. Selecione todos os beneficiários que possuem dependentes com o mesmo nome utilizando uma condição de JOIN. Utilize esta técnica e aplique os conceitos assimilados com os exemplos apresentados nesta unidade para resolvê-los. Teoria é importantíssima. Considere o exemplo de schema da figura apresentada. Crie os comandos SQL para definição e criação das tabelas. Como descrevemos no início da unidade.provavelmente já terá assimilado conteúdo suficiente para poder já desenvolver algumas aplicações utilizando sistemas de bancos de dados. BANCO DE DADOS | Educação a Distância 139 . AtiviDADE DE AutOEStuDO Todas as atividades de autoestudo desta unidade baseiam-se na Figura abaixo. mas a prática é uma atividade fundamental para que você possa converter toda esta teoria aprendida em resultados – tanto pessoais quanto profissionais. 2. Analise-as com carinho e tenha um bom proveito. Lembre-se que todo problema pode ser decomposto em partes menores de fácil solução. Elabore consultas SQL para: a. A prática das atividades de autoestudo pode auxiliá-lo(a) na trabalhosa tarefa de assimilação dos conceitos apresentados nesta unidade.

b.75.b. d. Agrupe os beneficiários por nome e selecione o sobrenome e altura de cada um deles. elabore consultas para: a. c. 140 BANCO DE DADOS | Educação a Distância . Execute a mesma consulta anterior utilizando uma subquery. Selecione o beneficiário que contém dependente que possui a maior altura entre todos. Selecione todos os beneficiários que contêm mais de um dependente com o mesmo sobrenome. Utilizando a cláusula de GROUP BY. 3. c. Selecione todos os planos que contêm mais de um beneficiário com altura > 1. Execute a mesma consulta anterior utilizando uma cláusula EXISTS.

certamente as palavras organizadas neste material foram fruto de um enorme esforço. Sim. o banco de dados é apenas um detalhe. Já dizia um antigo ditado sobre a arte da escrita. privação de certas liberdades que me foram tomadas pelo tempo dedicado. desespero por querer mais tempo para poder esculpir melhor alguns parágrafos e a angústia de saber que na verdade o trabalho nunca termina – ele apenas possui uma data de término. Ao término deste material você provavelmente já terá todas as habilidades necessárias para integrar um sistema de banco de dados relacional ao software que você desenvolve. Saberá escolher as opções do mercado baseado(a) nos critérios de classificação que apresentamos BANCO DE DADOS | Educação a Distância 141 . você pôde perceber a grande inspiração que tenho ao falar de desenvolvimento de software. caríssimo(a) leitor(a). Sou partidário da corrente que acredita que o mais importante de todo e qualquer software é o problema que ele resolve e o quão satisfatório ele é para seus usuários. Este é um dos motivos pelos quais eu considero o banco de dados como apenas um detalhe diante de um projeto maior. Espero que eu possa ter cativado algo com este material e talvez alguém. entre outras emoções que certamente passam pela minha cabeça neste momento. o alívio de poder concluir este material se destaca. certamente não o terminaria antes do prazo final. Não posso me assegurar que você. Como já enfatizado nas unidades do material. Considero a utilidade do software como mecanismo fundamental para qualquer inovação do conhecimento humano atual. é verdade. E não me agrada observar alguns programadores valorizando uma ferramenta qualquer em detrimento da utilidade do software sendo desenvolvido. E não somente de esforço: também de dor. Certamente durante a leitura de alguns pontos do material. Mas apenas um detalhe dentro de um escopo muito maior que é a inovação que o software pode proporcionar. e que era direcionado àqueles que pretendiam produzir qualquer texto: “o que é escrito sem esforço é lido sem prazer”. pois esforço não faltou na elaboração do mesmo. Antoine de Saint-Exupéry escreveu que “tu te tornas eternamente responsável por aquilo que cativas”. Mas assim o é também em tudo aquilo que nos dedicamos. Um detalhe importante.CONCluSãO Se há uma palavra que possa descrever meu sentimento ao concluir este livro. esta talvez seja “alívio”. que é o uso do próprio software. Tivesse mais seis meses ou um ano. conseguirá ler este material com o prazer que eu gostaria que lhe proporcionasse – mas não duvide.

software inovador. muito sucesso. Se optar por manter-se no ambiente dos sistemas de bancos de dados relacionais.. incerteza e dúvida. Saiba decidir qual sistema de banco de dados deve escolher baseado nos requisitos e utilidade da sua aplicação. A lista deste material certamente não é exaustiva. É isto o que eu sinceramente desejo para sua frutífera jornada. mas é também um bom começo.– e terá com certeza uma pontinha de dúvida se deve mesmo utilizar um banco de dados relacional. as leituras complementares.. Edson Yanaga. Baseado(a) em tudo o que você pode aprender. boa sorte e acima de tudo. a jornada do conhecimento nunca acaba. ao invés de tomar decisões baseadas em medo. Bom proveito. Afinal. E que está apenas começando. Abra a sua mente e liberte-se de paradigmas preestabelecidos. Um grande abraço. já terá todos os meios para criar. os vídeos e os estudos de caso apresentados no material tinham como objetivo provocar o senso crítico para libertá-lo(a) da “prisão relacional”. Afinal. manipular. 142 BANCO DE DADOS | Educação a Distância . popular e consultar bancos de dados relacionais graças aos conhecimentos de SQL adquiridos. aproveite bem e utilize todo o conteúdo que tentamos transmitir para desenvolver um bom software.

J. Rio de Janeiro: Campus. Pearson . 1988. S. Structured Programming with go to Statements. Bancos de dados: tópicos avançados. Shamkant B. Sistema de banco de dados. SILBERSCHATZ. Henry F..Addison Wesley. Donald. 2011. Sistemas de Banco de Dados. BANCO DE DADOS | Educação a Distância 143 .. Ramez. C. KNUTH.rEFErÊNCiAS DATE. São Paulo: Makron Books do Brasil. ELMASRI. NAVATHE. KORTH. 6. SUDARSHAN. ACm Journal Computing Surveys. Abraham. ed. 6 (4): 268. 1999. Dezembro de 1974.

Sign up to vote on this title
UsefulNot useful