Вы находитесь на странице: 1из 200

CONHECIMENTOS DE

INFORMÁTICA
vezes o pró prio có digo fonte é desenvolvido visando uma
ú nica plataforma!
Linguagens de Esse có digo executá vel (biná rio) resultante será
executado pelo sistema operacional e, por esse motivo, ele
programação: Java (SE 8 e EE deve saber conversar com o sistema operacional em questã o.
7), Phyton 3.6,
JavaScript/EcmaScript 6, Scala
2.12 e Pig 0.16;

Uma breve história do Java1


A Sun criou um time (conhecido como Green Team) para
desenvolver inovaçõ es tecnoló gicas em 1992. Esse time foi
liderado por James Gosling, considerado o pai do Java. O time
voltou com a ideia de criar um interpretador (já era uma
má quina virtual, veremos o que é isso mais a frente) para
pequenos dispositivos, facilitando a reescrita de software
para aparelhos eletrô nicos, como vídeo cassete, televisã o e
aparelhos de TV a cabo. Isto é, temos um có digo executá vel para cada sistema
A ideia nã o deu certo. Tentaram fechar diversos operacional. É necessá rio compilar uma vez para Windows,
contratos com grandes fabricantes de eletrô nicos, como outra para o Linux, e assim por diante, caso a gente queira
Panasonic, mas nã o houve êxito devido ao conflito de que esse nosso software possa ser utilizado em vá rias
interesses e custos. Hoje, sabemos que o Java domina o plataformas. Esse é o caso de aplicativos como o OpenOffice,
mercado de aplicaçõ es para celulares com mais de 2.5 Firefox e outros.
bilhõ es de dispositivos compatíveis, porém em 1994 ainda Como foi dito anteriormente, na maioria das vezes, a sua
era muito cedo para isso. aplicaçã o se utiliza das bibliotecas do sistema operacional,
Com o advento da web, a Sun percebeu que poderia como, por exemplo, a de interface grá fica para desenhar as
utilizar a ideia criada em 1992 para rodar pequenas "telas". A biblioteca de interface grá fica do Windows é bem
aplicaçõ es dentro do browser. A semelhança era que na diferente das do Linux: como criar entã o uma aplicaçã o que
internet havia uma grande quantidade de sistemas rode de forma parecida nos dois sistemas operacionais?
operacionais e browsers, e com isso seria grande vantagem Precisamos reescrever um mesmo pedaço da aplicaçã o
poder programar numa ú nica linguagem, independente da para diferentes sistemas operacionais, já que eles nã o sã o
plataforma. Foi aí que o Java 1.0 foi lançado: focado em compatíveis.
transformar o browser de apenas um cliente magro (thin Já o Java utiliza do conceito de má quina virtual, onde
client ou terminal burro) em uma aplicaçã o que possa existe, entre o sistema operacional e a aplicaçã o, uma
também realizar operaçõ es avançadas, e nã o apenas camada extra responsá vel por "traduzir" - mas nã o apenas
renderizar html. isso - o que sua aplicaçã o deseja fazer para as respectivas
Os applets deixaram de ser o foco da Sun, e nem a Oracle chamadas do sistema operacional onde ela está rodando no
nunca teve interesse. É curioso notar que a tecnologia Java momento:
nasceu com um objetivo em mente, foi lançado com outro,
mas, no final, decolou mesmo no desenvolvimento de
aplicaçõ es do lado do servidor. Sorte? Há hoje o Java FX,
tentando dar força para o Java nã o só no desktop mas como
aplicaçõ es ricas na web, mas muitos nã o acreditam que haja
espaço para tal, considerando o destino de tecnologias como
Adobe Flex e Microsoft Silverlight.
Você pode ler a histó ria da linguagem Java em:
http://www.java.com/en/javahistory/
E um vídeo interessante: http://tinyurl.com/histjava
Em 2009 a Oracle comprou a Sun, fortalecendo a marca.
A Oracle sempre foi, junto com a IBM, uma das empresas que Dessa forma, a maneira com a qual você abre uma janela
mais investiram e fizeram negó cios através do uso da no Linux ou no Windows é a mesma: você ganha
plataforma Java. Em 2014 surge a versã o Java 8 com independência de sistema operacional. Ou, melhor ainda,
mudanças interessantes na linguagem. independência de plataforma em geral: nã o é preciso se
preocupar em qual sistema operacional sua aplicação está
Máquina Virtual rodando, nem em que tipo de má quina, configuraçõ es, etc.
Em uma linguagem de programaçã o como C e Pascal, Repare que uma má quina virtual é um conceito bem mais
temos a seguinte situaçã o quando vamos compilar um amplo que o de um interpretador. Como o pró prio nome diz,
programa: uma má quina virtual é como um "computador de mentira":
tem tudo que um computador tem. Em outras palavras, ela é
responsá vel por gerenciar memó ria, threads, a pilha de
execuçã o, etc.
Sua aplicaçã o roda sem nenhum envolvimento com o
O có digo fonte é compilado para có digo de má quina sistema operacional! Sempre conversando apenas com a Java
específico de uma plataforma e sistema operacional. Muitas Virtual Machine (JVM).
Essa característica é interessante: como tudo passa pela
1 Fonte: https://www.caelum.com.br/apostila-java-orientacao-objetos/
JVM, ela pode tirar métricas, decidir onde é melhor alocar a
memó ria, entre outros. Uma JVM isola totalmente a aplicaçã o para executar uma aplicaçã o Java. Mas nó s precisamos de
do sistema operacional. Se uma JVM termina abruptamente, só mais.
as aplicaçõ es que estavam rodando nela irã o terminar: isso JDK = Java Development Kit: Nó s, desenvolvedores,
nã o afetará outras JVMs que estejam rodando no mesmo faremos o download do JDK do Java SE (Standard Edition).
computador, nem afetará o sistema operacional. Ele é formado pela JRE somado a ferramentas, como o
Essa camada de isolamento também é interessante quando compilador.
pensamos em um servidor que nã o pode se sujeitar a rodar Tanto o JRE e o JDK podem ser baixados do site
có digo que possa interferir na boa execução de outras http://www.oracle.com/technetwork/java/. Para
aplicaçõ es. encontrá los, acesse o link Java SE dentro dos top downloads.
Essa camada, a má quina virtual, nã o entende có digo java, Consulte o apêndice de instalaçã o do JDK para maiores
ela entende um có digo de má quina específico. Esse có digo de detalhes.
má quina é gerado por um compilador java, como o javac, e é
conhecido por "bytecode", pois existem menos de 256 có digos Onde usar e os objetivos do Java
de operaçã o dessa linguagem, e cada "opcode" gasta um byte. É preciso ficar claro que a premissa do Java nã o é a de
O compilador Java gera esse bytecode que, diferente das criar sistemas pequenos, onde temos um ou dois
linguagens sem má quina virtual, vai servir para diferentes desenvolvedores, mais rapidamente que linguagens como
sistemas operacionais, já que ele vai ser "traduzido" pela JVM. php, perl, e outras.
Write once, run anywhere O foco da plataforma é outro: aplicaçõ es de médio a
Esse era um slogan que a Sun usava para o Java, já que grande porte, onde o time de desenvolvedores tem vá rias
você nã o precisa reescrever partes da sua aplicaçã o toda vez pessoas e sempre pode vir a mudare crescer. Nã o tenha
que quiser mudar de sistema operacional. dú vidas que criar a primeira versão de uma aplicaçã o usando
Java, mesmo utilizando IDEs e ferramentas poderosas, será
Java lento? Hotspot e JIT mais trabalhoso que muitas linguagens script ou de alta
Hotspot é a tecnologia que a JVM utiliza para detectar produtividade. Porém, com uma linguagem orientada a
pontos quentes da sua aplicaçã o: có digo que é executado objetos e madura como o Java, será extremamente mais fá cil
muito, provavelmente dentro de um ou mais loops. Quando a e rá pido fazer alteraçõ es no sistema, desde que você siga as
JVM julgar necessá rio, ela vai compilar estes có digos para boas prá ticas e recomendaçõ es sobre design orientado a
instruçõ es realmente nativas da plataforma, tendo em vista objetos.
que isso vai provavelmente melhorar a performance da sua Além disso, a quantidade enorme de bibliotecas gratuitas
aplicaçã o. Esse compilador é o JIT: Just inTime Compiler, o para realizar os mais diversos trabalhos (tais como
compilador que aparece "bem na hora" que você precisa. relató rios, grá ficos, sistemas de busca, geraçã o de có digo de
Você pode pensar entã o: porque a JVM nã o compila tudo barra, manipulaçã o de XML, tocadores de vídeo,
antes de executar a aplicaçã o? É que teoricamente compilar manipuladores de texto, persistência transparente,
dinamicamente, a medida do necessá rio, pode gerar uma impressã o, etc) é um ponto fortíssimo para adoçã o do Java:
performance melhor. O motivo é simples: imagine um .exe você pode criar uma aplicação sofisticada, usando diversos
gerado pelo VisualBasic, pelo gcc ou pelo Delphi; ele é está tico. recursos, sem precisar comprar um componente específico,
Ele já foi otimizado baseado em heurísticas, o compilador que costuma ser caro. O ecossistema do Java é enorme.
pode ter tomado uma decisã o nã o tã o boa. Cada linguagem tem seu espaço e seu melhor uso. O uso
Já a JVM, por estar compilando dinamicamente durante a do Java é interessante em aplicaçõ es que virã o a crescer, em
execução, pode perceber que um determinado có digo nã o está que a legibilidade do có digo é importante, onde temos muita
com performance adequada e otimizar mais um pouco aquele conectividade e se há muitas plataformas (ambientes e
trecho, ou ainda mudar a estratégia de otimizaçã o. É por esse sistemas operacionais) heterogêneas (Linux, Unix, OSX e
motivo que as JVMs mais recentes em alguns casos chegam a Windows misturados).
ganhar de có digos C compilados com o GCC 3.x. Você pode ver isso pela quantidade enorme de ofertas de
emprego procurando desenvolvedores Java para trabalhar
Versões do Java e a confusão do Java2 com sistemas web e aplicaçõ es de integraçã o no servidor.
Java 1.0 e 1.1 sã o as versõ es muito antigas do Java, mas já Apesar disto, a Sun empenhou-se em tentar popularizar o
traziam bibliotecas importantes como o JDBC e o java.io. uso do Java em aplicaçõ es desktop, mesmo com o fraco
Com o Java 1.2 houve um aumento grande no tamanho da marketshare do Swing/AWT/SWT em relaçã o às tecnologias
API, e foi nesse momento em que trocaram a nomenclatura de concorrentes (em especial Microsoft .NET). A atual tentativa
Java para Java2, com o objetivo de diminuir a confusã o que é o Java FX, onde a Oracle tem investido bastante.
havia entre Java e Javascript. Mas lembre-se, nã o há versã o
"Java 2.0", o 2 foi incorporado ao nome, tornando-se Java2 1.2. Especificação versus implementação
Depois vieram o Java2 1.3 e 1.4, e o Java 1.5 passou a se Outro ponto importante: quando falamos de Java Virtual
chamar Java 5, tanto por uma questã o de marketing e porque Machine, estamos falando de uma especificaçã o. Ela diz como
mudanças significativas na linguagem foram incluídas. É nesse o bytecode deve ser interpretado pela JVM. Quando fazemos
momento que o "2" do nome Java desaparece. Repare que o download no site da Oracle, o que vem junto é a Oracle
para fins de desenvolvimento, o Java 5 ainda é referido como JVM. Em outras palavras, existem outras JVMs disponíveis,
Java como a JRockit da BEA (também adquirida pela Oracle), a J9
1.5. da IBM, entre outras.
Hoje a ú ltima versã o disponível do Java é a 8. Esse é outro ponto interessante para as empresas. Caso
nã o estejam gostando de algum detalhe da JVM da Oracle ou
JVM? JRE? JDK? O que devo baixar? prefiram trabalhar com outra empresa, pagando por suporte,
O que gostaríamos de baixar no site da Oracle? elas podem trocar de JVM com a garantia absoluta de que
JVM = apenas a virtual machine, esse download nã o existe, todo o sistema continuará funcionando. Isso porque toda
ela sempre vem acompanhada. JVM deve ser certificada pela Oracle, provando a sua
JRE = Java Runtime Environment, ambiente de execução compatibilidade. Nã o há nem necessidade de recompilar
Java, formado pela JVM e bibliotecas, tudo que você precisa nenhuma de suas classes.
Além de independência de hardware e sistema O que aconteceu
operacional, você tem a independência de vendor (fabricante): class
graças a ideia da JVM ser uma especificaçã o e nã o um MeuPrograma {
software. public static void main(String[] args) {

Compilando o primeiro programa // miolo do programa começa aqui!


Para mostrar uma linha, podemos fazer: System.out.println("Minha primeira aplicaçã o Java!!");
System.out.println("Minha primeira aplicação Java!"); // fim do miolo do programa
Mas esse có digo nã o será aceito pelo compilador java.
O Java é uma linguagem bastante burocrá tica, e precisa de }
mais do que isso para iniciar uma execução. Veremos os }
detalhes e os porquês durante os pró ximos capítulos. O O miolo do programa é o que será executado quando
mínimo que precisaríamos escrever é algo como: chamamos a má quina virtual. Por enquanto, todas as linhas
class MeuPrograma { anteriores, onde há a declaraçã o de uma classe e a de um
public static void main(String[] args) método, nã o importam para nó s nesse momento. Mas
{ System.out.println("Minha primeira aplicaçã o Java!"); devemos saber que toda aplicaçã o Java começa por um ponto
} de entrada, e este ponto de entrada é o método main.
} Ainda nã o sabemos o que é método, mas veremos no
capítulo 4. Até lá , nã o se preocupe com essas declaraçõ es.
A numeraçã o das linhas nã o faz parte do có digo e nã o Sempre que um exercício for feito, o có digo que nos importa
deve ser digitada; é apenas um recurso didá tico. O Java é sempre estará nesse miolo.
case sensitive: tome cuidado com maiú sculas e No caso do nosso có digo, a linha do System.out.println faz
minú sculas. com que o conteú do entre aspas seja colocado na tela.
Apó s digitar o có digo acima, grave-o como
MeuPrograma.java em algum diretó rio. Para compilar, Para saber mais: como é o bytecode?
você deve pedir para que o compilador de Java da Oracle, O MeuPrograma.class gerado nã o é legível por seres
chamado javac, gere o bytecode correspondente ao seu humanos (nã o que seja impossível). Ele está escrito no
có digo Java. formato que a virtual machine sabe entender e que foi
especificado que ela entendesse.
É como um assembly, escrito para esta má quina em
específico. Podemos ler os mnemô nicos utilizando a
ferramenta javap que acompanha o JDK:
javap -c MeuPrograma
E a saída:
Depois de compilar, o bytecode foi gerado. Quando o MeuPrograma();
sistema operacional listar os arquivos contidos no Code:
diretó rio atual, você poderá ver que um arquivo .class foi 0: aload_0
gerado, com o mesmo nome da sua classe Java.
1: invokespecial
#1; //Method java/lang/Object."<init>":()V
Preciso sempre programar usando o Notepad ou similar? 4: return
Nã o é necessá rio digitar sempre seu programa em um
simples aplicativo como o Notepad. Você pode usar um
public static void main(java.lang.String[]);
editor que tenha syntax highlighting e outros benefícios.
Code:
Mas, no começo, é interessante você usar algo que nã o
0: getstatic #2; //Field
possua ferramentas, para que você possa se acostumar
java/lang/System.out:Ljava/io/PrintStream;
com os erros de compilaçã o, sintaxe e outros. É sugerida a
3: ldc #3; //String Minha primeira aplicaçã o Java!!
utilizaçã o do Eclipse (http://www.eclipse.org), a IDE líder
5: invokevirtual
no mercado, e gratuita.
#4; //Method java/io/PrintStream.println:
No Linux, recomendamos o uso do gedit, kate e vi. No
(Ljava/lang/String;)V
Windows, você pode usar o Notepad++ ou o TextPad. No
8: return
Mac, TextMate, Sublime ou mesmo o vi.
}
Executando seu primeiro programa
É o có digo acima, que a JVM sabe ler. É o "có digo de
Os procedimentos para executar seu programa sã o
má quina", da má quina virtual.
muito simples. O javac é o compilador Java, e o java é o
Um bytecode pode ser revertido para o .java original
responsá vel por invocar a má quina virtual para
(com perda de comentá rios e nomes de variá veis locais).
interpretar o seu programa.
Caso seu software vá virar um produto de prateleira, é
fundamental usar um ofuscador no seu có digo, que vai
embaralhar classes, métodos e um monte de outros recursos.

O que pode dar errado?


Muitos erros podem ocorrer no momento que você rodar
Ao executar, pode ser que a acentuaçã o resultante saia seu primeiro có digo. Vamos ver alguns deles: Có digo:
errada devido a algumas configuraçõ es que deixamos de fazer. class X { public static void main (String[]
Sem problemas. args) { System.out.println("Falta ponto e
vírgula")
}
} ate aqui */

Erro: // uma linha de comentá rio sobre a idade


X.java:4: ';' expected int idade;
} Além de atribuir, você pode utilizar esse valor. O có digo a
^ seguir declara novamente a variá vel idade com valor 15 e
1 error imprime seu valor na saída padrã o através da chamada a
Esse é o erro de compilaçã o mais comum: aquele onde System.out.println. // declara a idade int idade; idade = 15;
um ponto e vírgula fora esquecido. Repare que o compilador
é explícito em dizer que a linha 4 é a com problemas. Outros // imprime a idade
erros de compilaçã o podem ocorrer se você escreveu System.out.println(idade);
palavras chaves (as que colocamos em negrito) em Por fim, podemos utilizar o valor de uma variá vel para
maiú sculas, esqueceu de abrir e fechar as {}, etc. algum outro propó sito, como alterar ou definir uma segunda
Durante a execução, outros erros podem aparecer: variá vel. O có digo a seguir cria uma variá vel chamada
- Se você declarar a classe como X, compilá -la e depois idadeNoAnoQueVem com valor de idade mais um.
tentar usá-la como x minú sculo (java x), o Java te avisa: // calcula a idade no ano seguinte
Exception in thread "main" int idadeNoAnoQueVem;
java.lang.NoClassDefFoundError: idadeNoAnoQueVem = idade + 1;
X (wrong name: x) No mesmo momento que você declara uma variá vel,
- Se tentar acessar uma classe no diretó rio ou também é possível inicializá -la por praticidade: int idade =
classpath errado, ou se o nome estiver errado, ocorrerá o 15;
seguinte erro: Você pode usar os operadores +, -, / e * para operar com
Exception in thread "main" nú meros, sendo eles responsá veis pela adiçã o, subtraçã o,
java.lang.NoClassDefFoundError: X divisão e multiplicaçã o, respectivamente. Além desses
- Se esquecer de colocar static ou o argumento String[] operadores básicos, há o operador % (mó dulo) que nada
args no método main: mais é que o resto de uma divisã o inteira. Veja alguns
Exception in thread "main" java.lang.NoSuchMethodError: exemplos: int quatro = 2 + 2;
main Por exemplo: class X { int tres = 5 - 2;
public void main (String[] args) {
System.out.println("Faltou o static, tente executar!"); int oito = 4 * 2;
} int dezesseis = 64 / 4;
}
- Se nã o colocar o método main como public: int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1;
Main method not public. // o operador % pega o resto da divisão inteira
Por exemplo: class X { static void main
(String[] args) Como rodar esses códigos?
{ System.out.println("Faltou o Você deve colocar esses trechos de có digo dentro do
public"); bloco main que vimos no capítulo anterior. Isto é, isso deve
} ficar no miolo do programa. Use bastante System.out.println,
} dessa forma você pode ver algum resultado, caso contrá rio,
ao executar a aplicação, nada aparecerá .
Variáveis primitivas e Controle de fluxo Por exemplo, para imprimir a idade e a
Veremos agora os seguintes recursos da linguagem Java: idadeNoAnoQueVem podemos escrever o seguinte programa
- declaraçã o, atribuiçã o de valores, casting e de exemplo:
comparaçã o de variá veis; class TestaIdade {
- controle de fluxo através de if e else;
- instruçõ es de laço for e while, controle de fluxo com public static void main(String[] args) {
break e continue. // imprime a idade int
idade = 20;
Declarando e usando variáveis System.out.println(idade);
Dentro de um bloco, podemos declarar variá veis e usá -las.
Em Java, toda variá vel tem um tipo que nã o pode ser mudado, // gera uma idade no ano seguinte
uma vez que declarado: int idadeNoAnoQueVem;
tipoDaVariavel nomeDaVariavel; idadeNoAnoQueVem = idade + 1;
Por exemplo, é possível ter uma idade que guarda um
nú mero inteiro: int idade; // imprime a idade
Com isso, você declara a variá vel idade, que passa a existir System.out.println(idadeNoAnoQueVem);
a partir daquela linha. Ela é do tipo int, que guarda um nú mero }
inteiro. A partir daí, você pode usá -la, primeiramente }
atribuindo valores. Representar nú meros inteiros é fá cil, mas como guardar
A linha a seguir é a tradução de: "idade deve valer quinze". valores reais, tais como fraçõ es de nú meros inteiros e
idade = 15; outros? Outro tipo de variá vel muito utilizado é o double,
que armazena um nú mero com ponto flutuante (e que
Comentários em Java também pode armazenar um nú mero inteiro).
Para fazer um comentá rio em java, você pode usar o // double pi = 3.14;
para comentar até o final da linha, ou entã o usar o /* */ para double x = 5 * 10;
comentar o que estiver entre eles. /* comentá rio daqui,
O tipo boolean armazena um valor verdadeiro ou falso, e À s vezes, precisamos que um nú mero quebrado seja
só : nada de nú meros, palavras ou endereços, como em arredondado e armazenado num nú mero inteiro. Para fazer
algumas outras linguagens. boolean verdade = true; isso sem que haja o erro de compilaçã o, é preciso ordenar que
true e false sã o palavras reservadas do Java. É comum o nú mero quebrado seja moldado (casted) como um nú mero
que um booleanseja determinado através de uma expressão inteiro. Esse processo recebe o nome decasting. double d3 =
booleana, isto é, um trecho de có digo que retorna um 3.14; int i = (int) d3;
booleano, como o exemplo: O casting foi feito para moldar a variá vel d3 como um int.
int idade = 30; O valor de iagora é 3.
boolean menorDeIdade = idade < 18; O mesmo ocorre entre valores int e long. long
O tipo char guarda um, e apenas um, caractere. Esse x = 10000;
caractere deve estar entre aspas simples. Não se esqueça int i = x; // nã o compila, pois pode estar perdendo
dessas duas características de uma variá vel do tipo char! Por informação
exemplo, ela nã o pode guardar um có digo como '' pois o E, se quisermos realmente fazer isso, fazemos o
vazio nã o é um caractere! casting: long x = 10000; int i = (int) x;
char letra = 'a';
System.out.println(letra); Casos não tão comuns de casting e atribuição
Variá veis do tipo char sã o pouco usadas no dia a dia. Alguns castings aparecem também:
Veremos mais a frente o uso das Strings, que usamos float x = 0.0;
constantemente, porém estas nã o são definidas por um tipo O có digo acima nã o compila pois todos os literais com
primitivo. ponto flutuante sã o considerados double pelo Java. E float
nã o pode receber um double sem perda de informaçã o, para
Tipos primitivos e valores fazer isso funcionar podemos escrever o seguinte: float x =
Esses tipos de variá veis sã o tipos primitivos do Java: o 0.0f;
valor que elas guardam são o real conteú do da variá vel. A letra f, que pode ser maiú scula ou minú scula, indica que
Quando você utilizar o operador de atribuiçã o = o valor será aquele literal deve ser tratado como float.
copiado. int i = 5; // i recebe uma có pia do valor 5 int j = i; // j Outro caso, que é mais comum:
recebe uma có pia do valor de i double d = 5;
i = i + 1; // i vira 6, j continua 5 float f = 3;
Aqui, i fica com o valor de 6. Mas e j? Na segunda linha, j
está valendo 5. Quando i passa a valer 6, será que j também float x = f + (float) d;
muda de valor? Nã o, pois o valor de um tipo primitivo sempre Você precisa do casting porque o Java faz as contas e vai
é copiado. armazenando sempre no maior tipo que apareceu durante as
Apesar da linha 2 fazer j = i, a partir desse momento essas operaçõ es, no caso o double.
variá veis nã o tem relaçã o nenhuma: o que acontece com uma, E, uma observaçã o: no mínimo, o Java armazena o
nã o reflete em nada com a outra. resultado em um int, na hora de fazer as contas.
Até casting com variá veis do tipo char podem ocorrer. O
Outros tipos primitivos ú nico tipo primitivo que nã o pode ser atribuído a nenhum
Vimos aqui os tipos primitivos que mais aparecem. O Java outro tipo é oboolean.
tem outros, que sã o o byte, short, long e float.
Cada tipo possui características especiais que, para um Castings possíveis
programador avançado, podem fazer muita diferença. Abaixo estã o relacionados todos os casts possíveis na
linguagem Java, mostrando a conversã o de um valor para
Casting e promoção outro. A indicaçã oImpl. quer dizer que aquele cast é implícito
Alguns valores sã o incompatíveis se você tentar fazer uma e automá tico, ou seja, você nã o precisa indicar o cast
atribuiçã o direta. Enquanto um nú mero real costuma ser explicitamente (lembrando que o tipo boolean nã o pode ser
representado em uma variá vel do tipo double, tentar atribuir convertido para nenhum outro tipo).
ele a uma variá vel int nã o funciona porque é um có digo que
diz: "i deve valer d", mas nã o se sabe se d realmente é um
nú mero inteiro ou não. double d = 3.1415; int i = d; // não
compila O mesmo ocorre no seguinte trecho: int i = 3.14;
O mais interessante, é que nem mesmo o seguinte có digo
compila:
double d = 5; // ok, o double pode conter um nú mero
inteiro
int i = d; // nã o compila
Apesar de 5 ser um bom valor para um int, o compilador
nã o tem como saber que valor estará dentro desse double no Tamanho dos tipos
momento da execuçã o. Esse valor pode ter sido digitado pelo Na tabela abaixo, estã o os tamanhos de cada tipo primitivo
usuá rio, e ninguém vai garantir que essa conversã o ocorra do Java.
sem perda de valores.
Já no caso a seguir, é o contrá rio:
int i = 5;
double d2 = i;
O có digo acima compila sem problemas, já que um double
pode guardar um nú mero com ou sem ponto flutuante. Todos
os inteiros representados por uma variá vel do tipo int podem
ser guardados em uma variá vel double, entã o nã o existem
problemas no có digo acima.
enquanto uma determinada condiçã o
permanecer verdadeira.
int idade = 15; while (idade
< 18)
{ System.out.println(idade
);
idade = idade + 1;
}
O trecho dentro do bloco do while será executado até o
momento em que a condiçã o idade < 18 passe a ser falsa. E
isso ocorrerá exatamente no momento em que idade == 18, o
O if e o else que nã o o fará imprimir 18. int i = 0; while (i < 10)
A sintaxe do if no Java é a seguinte: { System.out.println(i); i = i + 1;
if (condicaoBooleana) }
{ codigo; Já o while acima imprime de 0 a 9.
}
Uma condiçã o booleana é qualquer expressã o que O For
retorne true oufalse. Para isso, você pode usar os operadores Outro comando de loop extremamente utilizado é o for. A
<, >, <=, >= e outros. Um exemplo: ideia é a mesma do while: fazer um trecho de có digo ser
int idade = 15; if repetido enquanto uma condiçã o continuar verdadeira. Mas
(idade < 18) { além disso, o for isola também um espaço para inicializaçã o
System.out.println("Nã o pode entrar"); de variá veis e o modificador dessas variá veis. Isso faz com
} que fiquem mais legíveis, as variá veis que sã o relacionadas
Além disso, você pode usar a cláusula else para indicar o ao loop: for (inicializacao; condicao; incremento) {
comportamento que deve ser executado no caso da expressã o codigo;
booleana ser falsa: int idade = 15; if (idade < 18) { }
System.out.println("Nã o pode entrar"); Um exemplo é o a seguir:
} else { for (int i = 0; i < 10; i = i + 1) {
System.out.println("Pode entrar"); System.out.println("olá !");
} }
Você pode concatenar expressõ es booleanas através dos Repare que esse for poderia ser trocado por:
operadores ló gicos "E" e "OU". O "E" é representado pelo && e int i = 0; while (i < 10)
o "OU" é representado pelo ||. { System.out.println("olá !
Um exemplo seria verificar se ele tem menos de 18 anos e ");
se ele nã o é amigo do dono: int idade = 15; boolean i = i + 1;
amigoDoDono = true; if (idade < 18 && amigoDoDono == }
false) { Porém, o có digo do for indica claramente que a variá vel i
System.out.println("Nã o pode entrar"); serve, em especial, para controlar a quantidade de laços
} executados. Quando usar ofor? Quando usar o while?
else { Depende do gosto e da ocasiã o.
System.out.println("Pode entrar");
} Pós incremento ++
Esse có digo poderia ficar ainda mais legível, utilizando-se i = i + 1 pode realmente ser substituído por i++ quando
o operador de negaçã o, o !. Esse operador transforma o isolado, porém, em alguns casos, temos essa instruçã o
resultado de uma expressã o booleana de false para true e vice envolvida em, por exemplo, uma atribuição: int i = 5; int x =
versa. int idade = 15; boolean amigoDoDono = true; if (idade i++;
< 18 && !amigoDoDono) { System.out.println("Nã o pode Qual é o valor de x? O de i, apó s essa linha, é 6.
entrar"); O operador ++, quando vem apó s a variá vel, retorna o
} valor antigo, e incrementa (pó s incremento), fazendo x valer 5.
else { Se você tivesse usado o ++ antes da variá vel (pré
System.out.println("Pode entrar"); incremento), o resultado seria 6: int i = 5;
} int x = ++i; // aqui x valera 6
Repare na linha 3 que o trecho amigoDoDono == false
virou!amigoDoDono. Eles têm o mesmo valor. Controlando loops
Para comparar se uma variá vel tem o mesmo valor que Apesar de termos condiçõ es booleanas nos nossos laços,
outra variá vel ou valor, utilizamos o operador ==. Repare que em algum momento, podemos decidir parar o loop por
utilizar o operador =dentro de um if vai retornar um erro de algum motivo especial sem que o resto do laço seja
compilação, já que o operador = é o de atribuiçã o. executado. for (int i = x; i < y; i++) {
int mes = 1; if if (i % 19 == 0) {
(mes == 1) { System.out.println("Achei um nú mero divisível por 19
System.out.println("Você deveria estar de férias"); entre x e y"); break;
} }
}
O While O có digo acima vai percorrer os nú meros de x a y e parar
O while é um comando usado para fazer um laço (loop), quando encontrar um nú mero divisível por 19, uma vez que
isto é, repetir um trecho de có digo algumas vezes. A ideia é foi utilizada a palavra chave break.
que esse trecho de có digo seja repetido Da mesma maneira, é possível obrigar o loop a executar o
pró ximo laço. Para isso usamos a palavra chave continue.
for (int i = 0; i < 100; i++) { for (i = 0; i < 10; i++)
if (i > 50 && i < 60) { { System.out.println("olá !");
continue; }
} System.out.println(i);
System.out.println(i);
} Um bloco dentro do outro
O có digo acima nã o vai imprimir alguns nú meros. (Quais Um bloco também pode ser declarado dentro de outro. Isto
exatamente?) é, um ifdentro de um for, ou um for dentro de um for, algo
como:
Escopo das variáveis while (condicao) {
No Java, podemos declarar variá veis a qualquer momento. for (int i = 0; i < 10; i++) {
Porém, dependendo de onde você as declarou, ela vai valer de // có digo
um determinado ponto a outro. }
// aqui a variá vel i nã o existe }
int i = 5;
// a partir daqui ela existe
O escopo da variá vel é o nome dado ao trecho de có digo Métodos2
em que aquela variá vel existe e onde é possível acessá -la. Em contraste com a está tica dos dados, os métodos
Quando abrimos um novo bloco com as chaves, as definem as açõ es a serem tomadas em diversos momentos
variá veis declaradas ali dentro só valem até o fim daquele da execução de um programa. Como em outras linguagens,
bloco. como C, C++, Pascal, Fortran, etc, os métodos correspondem
// aqui a variá vel i nã o existe int aos conceitos comuns de funçõ es, procedimentos ou
i = 5; subrotinas. Estes são apenas conjuntos ordenados de
// a partir daqui ela existe declaraçõ es de dados, comandos e expressõ es. Em termos
while (condicao) { // o i simples, sã o os métodos que realizam todas as tarefas para
ainda vale aqui int j = 7; as quais o programa foi escrito, por exemplo, realizar
// o j passa a existir cá lculos, resumir informaçõ es de um arquivo, produzir um
} relató rio, criar um grá fico, gerar um filme de animaçã o, etc.
// aqui o j nã o existe mais, mas o i continua dentro do
escopo Classes
No bloco acima, a variá vel j pá ra de existir quando termina Os métodos, assim como os dados, têm um local de
o bloco onde ela foi declarada. Se você tentar acessar uma residência, as classes. Mais adiante, vamos estudar as classes
variá vel fora de seu escopo, ocorrerá um erro de compilaçã o. em detalhes. Por hora, precisamos apenas de alguns poucos
conceitos para poder entender os métodos. Pensemos uma
classe como sendo um conjunto de dados (variá veis) e
métodos (funçõ es) da forma:
class [nome] {

[dados e métodos]
}
O mesmo vale para um if: if onde [nome] é um identificador que define o nome da
(algumBooleano) { classe, e o par de chaves delimita uma regiã o para declaraçã o
int i = 5; de variá veis e métodos. A declaraçã o de variá veis já foi vista
} anteriormente no capítulo sobre tipos de dados. Uma classe
else { int i pode ser privativa ou pú blica. Uma classe privativa é
= 10; declarada como no exemplo acima e é conhecida apenas no
} escopo delimitado pelo arquivo que a contém. Como um
System.out.println(i); // cuidado! programa Java pode ser quebrado em mú ltiplos arquivos de
Aqui a variá vel i nã o existe fora do if e do else! Se você có digo fonte distintos, pode ser necessá rio que as diversas
declarar a variá vel antes do if, vai haver outro erro de partes integrantes do programa interajam, trocando dados
compilação: dentro do if e do else a variá vel está sendo entre si e chamando métodos umas das outras. Isso torna-se
redeclarada! Entã o o có digo para compilar e fazer sentido fica: possível através das classes pú blicas, as quais são conhecidas
int i; por qualquer arquivo fonte que componha o programa. Para
if (algumBooleano) { tornar uma classe pú blica, basta preceder sua declaraçã o
i = 5; pela palavra-chave public como no seguinte exemplo:
} public class [nome da classe] {
else { i [dados e métodos]
= 10; }
} Há uma convençã o em Java que estabelece que deve
System.out.println(i); haver exatamente uma classe pú blica para cada arquivo-
Uma situação parecida pode ocorrer com o for: for fonte de que consiste um programa Java, e seu nome deve
(int i = 0; i < 10; i++) { System.out.println("olá !"); ser precisamente o nome do arquivo, sem o sufixo .java.
} Desse modo, existe uma correspondência biunívoca entre as
System.out.println(i); // cuidado! classes pú blicas e os arquivos-fonte que as contém.
Neste for, a variá vel i morre ao seu término, não podendo Podemos declarar uma classe a partir do chã o, com todos
ser acessada de fora do for, gerando um erro de compilaçã o. os seus dados e métodos, ou podemos declarar uma classe
Se você realmente quer acessar o contador depois do loop
terminar, precisa de algo como: int i; 2 Fonte: http://www.dm.ufscar.br/
derivando-a a partir de uma outra já existente. Este é um Em certo sentido as classes complementam os tipos de
recurso muito ú til, pois permite aproveitar um esforço de dados nativos da linguagem Java, com tipos de dados
elaboraçã o anterior, aumentando significativamente a complexos criados pelo programador. Esse fato, aliado à
produtividade da programaçã o, e diminuindo o tamanho do possibilidade de derivar classes, tornam as linguagens
có digo objeto. Suponhamos por exemplo, que tenhamos orientadas a objetos extremamente producentes.
declarado previamente a seguinte classe: class Polígono {
int cx, cy; // Coordenadas do centro do polígono Chamando métodos
} Um método entra em açã o no momento em que é
Esta classe define em linhas gerais o que é um polígono, chamado. Isto pode ocorrer explicitamente ou implicitamente.
guardando uma ú nica característica comum a qualquer A chamada explícita se dá por ordem do programador através
polígono, isto é, as coordenadas de seu centro. Agora, da execuçã o de um comando ou expressão contendo o nome
suponhamos que desejamos criar uma classe para guardar do método. Em nosso programa AloPessoal fizemos uma
informaçõ es sobre um quadrado. Neste caso, nã o precisamos chamada explícita do método System.out.println para mostrar
criar uma classe que dê as coordenadas do centro do um texto na tela do computador. As chamadas implícitas
quadrado assim como as suas dimensõ es. Basta fazer ocorrem quando o interpretador Java chama um método por
simplesmente: class Quadrado extends Polígono { sua pró pria deliberaçã o. A chamada do método main é um
int lado; // Comprimento de um lado do quadrado exemplo de chamada impícita. O interpretador Java chama
} esse método para dar início à execução do programa.
A classe quadrado declarada desse modo se diz uma classe Declarando métodos
derivada da classe Poligono, da qual herda os dados (e os A declaraçã o mais simples que podemos fazer de um
métodos) nela contidos. Esta declaraçã o é equivalente a class método (lembrando que isso deve ser feito dentro de uma
Quadrado { int cx, cy; // Coordenadas do centro do classe) é a seguinte: void [nome do método] () {
polígono [corpo do método]
int lado; // Comprimento de um lado do quadrado }
} onde o [nome do método] é um identificador que define o
Desejando fazer uma classe para representar um nome pelo qual o método é conhecido, e [corpo do método]
retâ ngulo, bastaria fazer entã o consiste de uma lista ordenada de eclaraçã o de variá veis, de
class Retâ ngulo extends Polígono { expressõ es e de comandos. A primeira palavrachave, void,
int base, alt; // Base e altura do retâ ngulo define o valor retornado pelo método, neste caso, nenhum.
} Podemos usar qualquer tipo de dado vá lido como valor de
retorno de um método. Nesse caso, ao terminar, o método
Objetos seria obrigado a devolver um dado do tipo
Uma particular instâ ncia de uma classe é chamada objeto. especificado. Por exemplo,
Para entender a diferença entre classes e objetos, fazemos class Numero {
alusã o à metá fora da fá brica de torradeiras. A fá brica de
torradeiras nã o é uma torradeira, mas define o tipo de double x = 1;
produto que sai dela, isto é, as torradeiras. Do mesmo modo a void print() {
torradeira nã o é a fá brica, mas o produto feito por ela. System.out.println("O valor e " + x);
Comparamos as classes à s fabricas e os objetos aos produtos }
feitos por elas. Grosso modo, podemos dizer que as classes
nã o ocupam espaço na memó ria, por serem abstraçõ es, }
enquanto que, os objetos ocupam espaço de memó ria por define uma classe chamada Numero, a qual contém uma
serem concretizaçõ es dessas abstraçõ es. variá vel x, inicializada com 1, e um método sem valor de
Nas declaraçõ es acima, introduzimos algumas classes que retorno, print, que apenas escreve um texto e o valor de x,
permitem representar polígonos. Porém, nã o instanciamos através da chamada do métodoSystem.out.println.
nenhuma das classes criando particulares objetos a partir O par de parênteses adiante do nome do método
dessas classes. Por exemplo, a partir da classe quadrado, introduz uma lista (vazia, neste caso) de argumentos. A
podemos fazer objetos representando quadrados de diversos chamada de um método pode ser acrescida de parâ metros,
comprimentos laterais, ou retâ ngulos de diferentes os quais sã o associados aos seus respectivos argumentos.
dimensõ es: Um exemplo de métodos que retornam valores é o
Quadrado A, B, C; seguinte:
Retâ ngulo D; class Calculador { int
A.lado = 1; // O quadrado A terá os lados de Soma(int a, int b) {
comprimento 1 return a + b;
B.lado = 2; // O quadrado B terá os lados de }
comprimento 2 double Produto(double a, double b)
C.lado = 7; // O quadrado C terá os lados de { return a * b;
comprimento }
7 }
D.base = 3; // O retangulo D terá base 3 e ... O primeiro método, Soma, realiza a adição de de dois
D.alt = 4; // altura 4, e centrado na origem nú meros inteiros fornecidos pelos argumentos a e b, devolve a
D.cx = 0; soma valor de retorno. O segundo método realiza a
D.cy = 0; multiplicaçã o de dois nú meros de
As declaraçõ es acima são semelhantes às que vimos no pontoflutuante a e b devolvendo seu produto.
capítulo anterior, com excessã o de que no lugar do nome que A sintaxe completa para a declaraçã o de um método é a
identifica o tipo de dado estamos usando o nome de uma seguinte:
classe. Neste exemplo, as classesQuadrado e Retâ ngulo foram [moderadores de acesso] [modificador] [tipo do valor de
empregadas para declarar os objetos (ou variá veis) A, B, C e D. retorno] [nome] ([argumentos])
throws [lista de excessõ es] Modificador do Método
{ [corpo] O modificador do método permite especificar algumas
} propriedades de um método, determinando como classes
onde os termos em itá lico são opcionais (ou acessó rios). derivadas podem ou nã o redefinir ou alterar o método, e de
Neste capítulo, vamos analisar detalhadamente cada um dos que forma esse método será visível. static: o método é
termos [moderadores de acesso], [modificador], [tipo do compartilhado por todos os objetos instanciados a partir da
valor de retorno], e [argumentos]. Vamos, porém, adiar um mesma classe. Um método static nã o pode acessar qualquer
pouco as explicaçõ es sobre [lista de excessõ es] até o capítulo variá vel declarada dentro de uma classe (salvo se a variá vel
sobre excessõ es. Uma excessão à esta sintaxe é a que se estiver declarada também como static, o que veremos mais
aplica aos métodos especiais, chamados construtores, que adiante), pois nã o é capaz de dicernir entre os diferentes
serã o vistos adiante no capítulo sobre classes. objetos que compartilham esse método.
Moderadores de Acesso abstract: Podemos declarar um método sem contudo
Os moderadores de acesso sã o empregados para especificar seu corpo, dizendo-o abstrato. Isto funciona como
restringir o acesso a um método. Entretanto, uma espécie de lembrete para que alguma classe derivada
independentemente do moderador escolhido, um método é complete a declaraçã o fornecendo um corpo. Assim sendo,
sempre acessível, isto é, pode ser chamado, a partir de uma classe que contenha um método abstrato, ou que seja
qualquer outro método contido na mesma classe. Os derivada de alguma classe que contenha um método abstrato
moderadores de acesso existentes em Java são os seguintes: mas nã o complete sua declaraçã o, nã o pode ser instanciada. O
public: O método declarado com este moderador é pú blico e uso da palavra-chave abstract é opcional, isto é, as duas
pode ser chamado a partir de métodos contidos em qualquer declaraçõ es seguintes sã o equivalentes: abstract void print();
outra classe. Esta é a condiçã o de menor restriçã o possível. void print();
protected: O método é protegido pode ser chamado por final: Especifica que nenhuma classe derivada pode
todas as classes que compõ e um conjunto maior chamado alterar ou redefinir este método. Um método declarado
package. Veremos adiante que as packages sã o um modo como final deve ser obrigatoriamente seguido de um corpo.
conveniente de organizar diversas classes que estã o em native: Declara apenas o cabeçalho sem corpo, como no
estreito relacionamento. caso deabstract. Porém, esta especificaçã o designa um
Obs: é importante avisar que você pode ter problemas em método que implementado em outra linguagem como C++,
identificar violaçõ es com respeito à chamada de métodos por exemplo. synchronized: Esta declaraçã o é usado para
protegidos. Isso se deve ao fato do compilador nã o sinalizar desenvolver o programa de processamento concorrente. Seu
esse fato precisamente, isto é, a tentativa de chamar um propó sito é impedir que dois métodos executando
método protegido a partir de uma classe que nã o faz parte do concorrentemente acessem os dados de uma classe ao
package. Ao invés disso a mensagem poderá se parecer com a mesmo tempo. synchromized especifica que se um método
seguinte: estiver acessando o dado, outros que também desejem
No method matching funcao() found in class Matematica acessá-lo têm que esperar.
friendly: Uso do método é permitido dentro da classe que o Tipo de Valor de Retorno:
contém, assim como dentro de qualquer classe que tenha sido O tipo de valor de retorno é especificado por uma palavra
derivada dessa classe, ainda que esteja fora do package. Este é chave ou nome de classe na declaraçã o do método,
o moderador default, isto é, aquele que é assumido se nenhum estabelecendo o valor que ele pode devolver. // Classe de
moderador for explicitamente especificado. nú meros complexos class Complexo {
private: O método é privativo da classe que o contém e seu double x, y; // parte real e complexo, respectivamnte
uso é vedado a qualquer outra classe. public double Re() { // retorna a parte real
private protected: o método é acessível pela classe que o return x;
contém, assim como por qualquer classe que tenha sido }
derivada dessa classe. Porém, isso somente é permitido public double Im() { /retorna a parte imaginaria
apenas dentro de um mesmo arquivo-fonte. return y;
Exemplo: // classe de numero class }
numero { double x=1; public void public Complexo Vezes(Complexo c)
print1() { System.out.println("O { Complexo resultado;
valor e "+x); resultado.x = x * c.x - y * c.y;
} resultado.y = x * c.y + y * c.x;
void print2() { return resultado;
System.out.println("O valor e "+x); }
} public void print() {
} System.out.println("(" + x + " + " + y + "i)");
// classe principal public class }
PrintNum { public static void }
main(String args[]) { numero num = public class Teste {
new numero(); num.print1(); // public static void main(String args[])
correto { Complexo z, w; z.x = 1; z.y = 2;
num.print2(); // ilegal
} System.out.print( "O valor de z é ");
} z.print();
O exemplo acima dará um erro, pois nã o pode acessar o System.out.println( "A parte real de z é = " + z.Re() );
print2. O métodoprint1 é definido como public e portanto, System.out.println( "A parte imaginá ria de z é = ",
está disponível a qualquer classe, mas o print2 nã o tem z.Im() );
especificaçã o (logo, é assumido como friendly) e portanto, a System.out.print("O valor de z ao quadrado é
classe principal PrintNum não pode acessa-lo. "); w = z.Vezes( z ); w.print();
}
} }
Ao executar esse programa teríamos a resposta: // main() do TestPar public static
O valor de z é (1 + 2i) void main(String args[]) {
A parte real de z é = 1 int i;
A parte imaginá ria de z é = 2 inteiro n = new inteiro();
O valor de z ao quardado é (-3 + 4i) i = 2;
Um método que retorna valor, isto é, nã o declarado como n.i = 3;
void, deve conter a linha return ...; a qual especifica o valor a System.out.println("Valores originais:");
ser retornado. Por exemplo, return x; especifica que o valor System.out.println("Valor de i e "+i);
da variá vel x será retornado. Lista de Argumentos: System.out.println("Valor de n e "+n.i);
A lista de argumentos é a lista de valores que o método vai MudaInt(i);
precisar, obdecendo a sintaxe [tipo 1] [nome 1], [tipo 2] MudaInteiro(n);
[nome 2], ... onde [tipo ?] é a especificaçã o do tipo de dado e System.out.println("Valores apos a chamada dos
[nome ?] é metodos:"):
um identificador pelo qual o parâ metro é conhecido. System.out.println("Valor de i e "+i);
Exemplo: System.out.println("Valor de n e "+n.i);
// Classe de numeros complexos class Complexo { double }
x=1, y=1; /* parte real e complexo, respectivamnte public }
double Re() { // retorna a parte real A especificaçã o public de uma variá vel dentro da classe,
return x; faz com que este variá vel seja acessado de qualquer lugar.
} Para especificar a variá vel i do objeto k, basta escrever k.i.
public double Im() { /retorna a parte imaginaria Em geral, a variá vel [var] dentro do objeto[obj] do tipo classe
return y; e referenciado por [obj].[var]. Note o uso de especificaçã o
} static para os métodos MudaInt() e MudaInteiro(). Esta
public set(double a, b){ especificaçã o é necessaria, pois o método principal é static, e
x = a; métodostatic nã o pode chamar outros métodos da mesma
y = b; classe que não sejastatic.
} O exemplo acima fornece a saída:
Valores originais:
} Valor de i e 2
public class Teste { Valor de n e 3
Valores apos a chamada dos métodos:
public static void main(String args[]) Valor de i e 2
{ Complexo c = new Complexo(); Valor de n e 5
c.set(3,2);
System.out.println("z = (" + c.Re() + " + " + c.Im() + "i)"); Classes3
} Usamos as classes para construir objetos, o que é
} chamado deinstanciaçã o. E os objetos consistem a essência
uma observaçã o importante é que Java trata o objeto por da programaçã o orientada a objetos (ou OOP, do inglês
referência e por isso, se o método modificar o objeto recebido ObjectOriented Programming). Falando intuitivamente, as
como parâ metro, o objeto será modificado externamente. No classes consistem de uma maneira de organizar um conjunto
entanto, se o parâ metro recebido for tipo simples (int, double, de dados, e designar todos os métodos necessá rios para usar
char, float, etc), visto no tipo de dados, o método pode alterar ou alterar esses dados.
o parâ metro a vontade que nã o influencia no valor externo. O conjunto de todos os dados contidos em uma classe
Para ilustrar, veja o exemplo a seguir: definem o estado de um objeto. Por exemplo, se tivéssemos
// classe de inteiro uma classe Semá foro contendo uma ú nica variá vel chamada
class inteiro VermelhoVerdeAmarelo, entã o o estado de Semaforo é
{ public int i; determinado pelo valor da de VermelhoVerdeAmarelo.
} public class Semaforo {
// classe principal public int VermelhoVerdeAmarelo = 0; //
class TestPar { 0=vermelho,1=verde,2=amarelo
// método que altera o valor do parametro int void Alternar() {
// este metodo deve ser static, pois sera chamado VermelhoVerdeAmarelo = ++VermelhoVerdeAmarelo
// pelo metodo main() que e static static void % 3;
MudaInt(int k) { }
System.out.println("MudaInt: valor de k e " + k); }
k += 2; Os métodos de uma classse, por sua vez, determinam a
System.out.println("MudaInt: valor de k utilidade que uma classe terá . No caso da classe Semaforo,
e apos incremento e " + k); seu ú nico método Alternar tem como função provocar a
} mudança da luz de vermelho a verde, de verde a amarelo e
// método que altera o valor do parametro inteiro de amarelo a vermelho, respectivamente, em cada nova
// este metodo deve ser static, pois sera chamado chamada. Assim, se o método Alternar for chamado em
// pelo metodo main() que e static static void intervalos de tempo regulares, poderemos utilizar o estado
MudaInteiro(inteiro k) { da classe Semaforo para controlar um semá foro com luzes
System.out.println("MudaInteiro: valor de k e " + k.i); reais.
k.i += 2;
System.out.println("MudaInteiro: valor de k e apos
incremento e " + k.i); 3 Fonte: http://www.dm.ufscar.br/
Para distinguir entre variá veis declaradas em classes }
daquelas declaradas localmente dentro de }
métodos,comumente nos referimos à quelas como campos.
Assim, dizemos que VermelhoVerdeAmareloé um campo da class Retâ ngulo extends Polígono {
classe Semaforo. Retâ ngulo(Vértice v[]) { this.v =
new Vértice[4]; numVértices =
Herança 4; for(int i=0; i<4; i++)
Contudo, uma das maiores vantagens da OOP reside na this.v[i] = v[i];
possiblidade de haver herança entre classes. Esta consiste na }
capacidade de construir novas classes a partir de outras }
existentes. Nesse processo, os dados e métodos de uma class Triâ ngulo extends Polígono
classe existente, chamada parente (ou superclass), são { Triâ ngulo(Vértice v[])
herdados pela nova classe, chamada subclasse, ou classe { this.v = new Vértice[3];
derivada. numVértices=3; for(int i=0;
i<3; i++) this.v[i] = v[i];
Encapsulamento }
Outro benefício importante da OOP reside no chamado }
encapsulamento. Este consiste na habilidade de efetivamente
isolar informaçõ es do restante do programa. Isto traz uma public class polimorfismo {
série de vantagens. Uma vez concluída uma classe intricada, // Coordenadas dos vértices de um
por exemplo, é virtualmente possível esquecermos suas retâ ngulo static Vértice v[] = { new
complicaçõ es internas, passando a tratá -la através de seus Vértice(0.0,0.0), new Vértice(2.0,0.0),
métodos. Ainda que mais tarde seja preciso realizar mudanças new Vértice(2.0,1.0), new Vértice(0.0,1.0)
significativas no interior de uma classe, nã o será necessá rio };
modificar o restante do programa. Outro benefício desta // Coordenadas dos vértices de um triâ ngulo
prá tica é garantir que a informaçã o nã o será corrompida static Vértice w[] = {
acidentalmente pelo resto do programa. Criamos, assim,
programas mais robustos e confiá veis. new Vértice(-1.0,0.0), new Vértice(1.0,0.0),
new Vértice(0.0,1.0)
Polimorfismo };
Finalmente, uma característica importante das classes
reside no fato de que as subclasses de uma dada classe são public static void main(String args[]) {
consideradas do mesmo tipo de seu parente. Isto é chamado Polígono r, t; Grá fico
polimorfismo. Este permite a realizaçã o de uma mesma g = new Grá fico();
operaçã o sobre diferentes tipos de classes, desde que r = new Retâ ngulo(v); // Isto é vá lido, pois Retâ ngulo
mantenham algo em comum. Por exemplo, considere a classe é um Polígono t = new Triâ ngulo(w); // Isto é vá lido,
Polígono e suas derivadas Retâ ngulo e Triâ ngulo declaradas pois Triâ ngulo
abaixo. Apesar de retâ ngulos e triâ ngulos serem diferentes, é um Polígono
eles ainda sã o considerados polígonos. Assim, qualquer coisa // Desenha o
que fosse permitido fazer com uma instâ ncia (i.é, um objeto) retâ ngulo g.Desenhar(
da classe Polígono, seria também permitida para a instâ ncias r ); // Desenha o
das classes Retâ ngulo e Triâ ngulo. O seguinte exemplo ilustra triâ ngulo
o polimorfismo entre essas classes permitindo que se desenhe g.Desenhar( t );
um polígono, independentemente do prévio conhecimento de }
que se trata de um retâ ngulo ou de um triâ ngulo. }
class Vértice { public double x, Algumas partes deste có digo são novidade, como por
y; Vértice( double x, double exemplo os métodos declarados nas classes Vértice,
y){ this.x = x; this.y = y; Retâ ngulo e Polígono, que parecem não obedecer às regras
} estabelecidas no capítulo sobre métodos.
}
Declarando uma classe
class Polígono { int numVértices; // Quantidade de A forma geral da declaração de uma classe é a seguinte
vértices do polígono [modificadores] class [nome classe] extends [nome super]
Vértice v[]; // Coordenadas de seus vértices implements [nome interface] onde as partes que aparecem
} em itá lico sã o opcionais. Como podemos notar, há quatro
class Grá fico { diferentes propriedades de uma classe definidas por essa
// Desenha o polígono no dispositivo grá fico declaraçã o:
void Desenhar(Polígono p) { Modificadores
SaídaGrá fica g; // saída grá fica com método Nome de classe
DesenhaLinha. Super classes
Vértice anterior; Interfaces
anterior = p.v[0]; Vamos ver em detalhes cada uma destas propriedades a
// Une os vértices do polígono desenhando uma linha seguir.
entre eles
for(int i=1; i<numVértices; i++) { Modificadores
g.DesenhaLinha( anterior, p.v[i] ); Os modificadores de uma classe determinam como uma
anterior = p.v[i]; classe será manipulada mais tarde no
} decorrer do desenvolvimento do programa.
Estes sã o muito parecidos com os moderadores de acesso objeto um estado inicial, apropriado ao processamento
introduzidos anteriormente no capítulo sobre métodos. subseqü ente.
Ao declarar uma nova classe, é possível especificar um Os contrutores são métodos facilmente identificá veis pois
dos seguintes modificadores: public, final, abstract. public: têm o mesmo nome da classe. Além disso, os construtores nã o
permite definir classes pú blicas. Estas classes sã o acessíveis especificam nenhum valor de retorno, mesmo que este seja
a partir de qualquer objeto, independentemente do package. void, uma vez que nã o sã o chamados como os outros métodos.
Uma classe pú blica deve ser a ú nica classe desse tipo no Os construtores somente podem ser chamados no momento
arquivo em que está declarada e o nome do arquivo deve ser da instanciaçã o. Por exemplo:
igual ao da classe. friendly: se nenhum modificador de classe Vértice v = new Vértice(1.0, 2.0);
for especificado, entã o a classe será considerada friendly. Temos neste trecho de có digo a instanciaçã o da classe
Apenas os objetos integrantes do mesmo package podem Vértice, que ocorre no momento em que reservamos espaço
utilizar uma classe friendly. para conter um novo objeto dessa classe. Nesse momento o
final: Uma classe final pode ser instanciada, mas nã o pode construtor Vértice é chamado com os argumentos 1.0 e 2.0.
ser derivada, isto é, nã o pode ser superclasse de nenhuma É usual declarar os construtores como pú blicos. Isto
subclasse. Algumas classes predefinidas no ambiente Java têm porque, se eles tiverem um nível de acesso inferior ao da
esta propriedade. Outras nã o, como as classes no java.awt, por classe propriamente dita, outra classe será capaz de declarar
exemplo. abstract: Classes abstratas são aquelas que contém uma instâ ncia dessa classe, mas nã o será capaz de realizar
ao menos um método incompleto. Desse modo uma classe ela mesma a instanciaçã o, isto é, nã o poderá usar o operador
abstrata nã o pode ser instanciada, mas pode ser derivada. new para essa classe. Há situaçõ es, porém, em que essa
Neste caso, a subclasse deve prover o corpo do método para característica é desejá vel. Deixando seus construtores como
que possa ser instanciada. Isto é muito ú til quando desejamos privativos, permite a outras classes usar métodos está ticos,
definir em uma classe regras gerais para o comportamento de sem permitir que elas criem instâ ncias dessa classe.
uma parte do programa, para que, mais tarde, as regras mais Uma classe pode mú ltiplos construtores declarados,
específicas sejam introduzidas por subclasses. desde que cada um tenha lista de argumentos distinta dos
Nome de Classe demais. Isto é muito ú til, pois em determinados contextos do
Como qualquer identificador em Java, o nome de uma programa um objeto deve ser inicializado de uma maneira
classe deve obedecer às seguintes regras: particular em relaçã o a outros contextos possíveis.
Iniciar com uma letra, ou um dos caracteres: '$', '_'. Quando nenhum construtor é declarado explicitamente,
Conter somente caracteres Unicode considerados letras, um construtor vazio é provido implicitamente. Por exemplo,
dígitos ou um dos dois caracteres acima. se nã o tivéssemos especificado um construtor na classe
Nã o pode ser igual a uma palavra-chave reservada pela Vértice, este sería o construtor default:
linguagem Java, tal como void, int, for, while, etc. Vértice() {
Lembre-se: as letras maiú sculas e as minú sculas são }
consideradas diferentes. Os construtores nã o podem ser declarados com os
modificadores: native,abstract, static, synchronized ou final.
Super Classes
Um dos aspectos mais importantes da OOP é a capacidade Sobreposição
de usar campos e métodos de uma classe previamente Nã o é permitido declarar em uma mesma classe dois
construída. Por meio da extensão de classes simples podemos métodos com o mesmo nome e mesma lista de argumentos.
construir classes maiores, acrescentando à quelas mais De fato, isto parece nã o fazer nenhum sentido, pois os
campos e métodos, obtendo com isto mais funcionalidades. métodos são unicamente identificados pelo nome e pela lista
Neste processo, há uma grande economia no esforço de de argumentos que os acompanha. Se isso fosse permitido
codificaçã o. Sem esse recurso, freqü entemente seria haveria uma grande confusão, pois como é que se poderia
necessá rio recodificar grande parte dos programas para determinar precisamente qual método chamar?
acrescentar-lhes funcionalidade ou fazer modificaçõ es Entretanto, uma das finalidades de permitir a derivaçã o
significativas. de classes é atribuir a elas novas funcionalidades. Isto é
Ao derivar uma classe, estamos primeiramente fazendo possível acrescentando-se novos métodos à s subclasses. Mas
uma có pia da classe parente. É exatamente isto que obtemos também é possível sobrepor qualquer dos métodos
se deixarmos vazio o corpo da subclasse. Tal classe se existentes na superclasse, declarando o novo método na
comportaria exatamente como sua superclasse. Entretanto, subclasse exatamente com o mesmo nome e lista de
podemos acrescentar novos campos e métodos à subclasse, argumentos, como consta na superclasse. Por exemplo,
além de sobrepor métodos existentes na superclasse, considere a classe Computador abaixo: class Computador
declarando-os exatamente como na superclasse, exceto por { private boolean ligado = true; public void Desligar() {
dar um corpo diferente. ligado = false;
Nã o existe herança mú ltipla em Java. E contraste com a }
linguagem C++, em Java somente é possível derivar uma classe }
a partir de uma outra, e nã o de vá rias. Esta classe permite que o computador seja desligado,
através da chamada do método Desligar. Porém, isto pode
Construtores nã o ser muito seguro, pois poderíamos desligar o
Os contrutores sã o métodos muito especiais, a começar computador mesmo quando ele estiver executando algum
pela sua sintaxe declarativa, e também por suas propriedades programa. Nesse caso, podemos evitar uma catá strofe
e finalidade ú nicas. Por exemplo, o construtor da classe derivando a classe computador do seguinte modo: class
Vértice vista acima é o seguinte: Vértice( double x, double y ) { ComputadorSeguro extends Computador { private boolean
this.x = x; this.y = y; executando = true; public void Desligar() {
} if ( executando )
Sua ú nica finalidade é inicializar o objeto com um par de System.out.println("Há programas rodando. Nã o
coordenadas fornecidas no momento da instanciaçã o. Aliá s, desligue!"); else ligado = false;
esta é a principal finalidade dos construtores: atribuir a um }
} Desligar. Para indicar a qual objeto o método se refere,
Agora, um objeto da classe ComputadorSeguro somente devemos precedê-lo do nome do objeto seguido de um
será desligado quando nã o tiver programas rodando (exceto operador ponto '.'. A notação geral é
quando alguém acidentalmente chutar o fio da tomada!). [nome da instâ ncia].[nome do método ou variá vel]
A sobreposiçã o somente acontece quando o novo método é Uma exceçã o a essa regra aplica-se à referência de
declarado com exatamente o mesmo nome e lista de campos ou métodos declarados como static. Tais declaraçõ es
argumentos que o método existente na superclasse. Além sã o compartilhadas por todas as instâ ncias de uma classe,
disso, a sobreposiçã o nã o permite que o novo método tenha desse modo nã o fornecemos o nome de uma particular
mais proteçõ es do que o método original. No exemplo acima, instâ ncia, mas o nome da pró pria classe ao referenciá -los.
como o método Desligar foi declarado como public na
superclasse, este nã o pode ser declarado private na subclasse. A especificação this
Vimos acima como fazer referências a partes de classes.
Instanciando uma classe Mas, e se desejá ssemos fazer referência a partes da pró pria
Uma classe define um tipo de dado. Ela nã o pode ser usada classe? Isso parece evidente, porém, à s vezes, o nome de um
a não ser que seja instanciada. A exemplo dos tipos de dados argumento ou variá vel declarada por um método pode
primitivos os quais somente podem ser usados quando uma coincidir com o nome de um campo da classe. Veja o exemplo
variá vel de um determinado tipo é declarada, devemos criar da classe Vértice. Nessa classe o método construtor declara
uma instâ ncia. Uma instâ ncia é um objeto do tipo definido pela dois argumentos x e y, os quais têm o mesmo nome dos
classe. Qualquer classe (desde que nã o seja abstract) pode ser campos x e y da classe. Esse método distingue os argumentos
instanciada como qualquer outro tipo de dado da linguagem dos campos pelo uso da especificaçã o this.
Java. O trecho de có digo abaixo exibe uma classe chamada Assim this.x e this.y referem-se aos campos x e ydeclarados
Geometria criando um a instâ ncia da classe Vértice: public na classe, enquando x e y propriamente ditos referem-se aos
class Geometria { Vértice v = new Vértice(1.2, 3.5); argumentos do construtor. A palavra this substitui uma
... referência à propria classe.
} Há basicamente duas situaçõ es em que devemos empregar
A diferença mais evidente entre a declaraçã o de um objeto a palavra this:
de uma classe e a declaraçã o de um dado primitivo reside na Quando houver duas variá veis com mesmo nome numa
necessidade de reservar memó ria para o objeto através do uso mesma classe - uma pertencendo à classe e outra
do operador new. Na verdade, esse operador realiza uma série pertencendo a algum dos métodos da classe. Nesse caso,
de tarefas: apenas esse método específico requer o uso do this se quiser
Reserva espaço para a instâ ncia da classe Vértice, o qual fazer referência ao campo da classe.
deve ser suficiente para conter seu estado, isto é, os valores Quando uma classe precisa passar uma referência de si
dos seus campos. propria a um método. Vamos ter a oportunidade de explorar
Realiza a chamada do método construtor. este aspecto quando estivermos estudando os applets.
Retorna uma referência para o novo objeto (o qual é A especificaçã o super
atribuído à variá vel v). A palavra super provê acesso a partes de uma
Outra importante diferença entre objetos e dados de tipo superclasse a partir de uma subclasse. Isto é muito ú til
primitvo é que estes sã o sempre referenciados por valor, quando estamos sobrepondo um método. Poderíamos
enquanto aqueles são sempre referenciados por meio de sua reescrever o método Desligar da classe ComputadorSeguro
referência. Isto tem impacto significativo na maneira como os do seguinte modo: class ComputadorSeguro extends
objetos sã o passados como parâ metros na chamada de Computador { private boolean executando = true; public
métodos. Se o método realizar internamente alguma void Desligar() {
modificaçã o no objeto que foi passado, essa modificaçã o if ( executando )
refletirá no objeto original. Isto nã o ocorre com a passagem de System.out.println("Há programas rodando. Nã o
dados de tipo primitivo. desligue!"); else super.Desligar();
Referindo-se à s partes de uma classe }
Apó s instanciar uma classe é desejá vel podermos acessar }
algum de seus campos ou entã o algum de seus métodos. Note a chamada super.Desligar(). Esta corresponde a
Dentro de uma classe os campos e métodos sã o acessíveis chamada do método Desligar declarado na superclasse
imediatamente pelo nome. Repare como na classeComputador Compudador, o qual vai efetivamente ajustar o campo ligado
acima o método Desligar acessa diretamente o campoligado, para o valor false. Imaginando que o método Desligar fosse
simplesmente por meio do seu nome. muito mais complicado, nã o precisaríamos recodificá -lo
Entretanto, considere a seguinte classe chamada CPD a completamente na subclasse para acrescentar a
qual contém vá rias instâ ncias da classe Computador: public funcionalidade que permite o desligamento apenas quando o
class CPD { computador estiver desocupado. Basta chamá -lo da maneira
Computador Gauss = new Computador(), prescrita.
Davinci = new Computador(), E se o método que desejamos chamar é um construtor?
Fermat = new Computador(); Bem, nesse caso a chamada usando a palavra super bem
... particular. Examinemos o seguinte exemplo de uma classe
public void Fechar() chamada VérticeNumerado que estende a classeVértice,
{ Gauss.Desligar(); acrescentando às coordenadas do vértice um ró tulo
Davinci.Desligar(); numérico que o identifica visualmente: class
Fermat.Desligar(); VérticeNumerado extends Vértice { int numero;
} VérticeNumerado( int numero, int x, int y )
... { this.numero = numero;
O método Fechar realiza o desligamento de cada particular super(x, y);
instâ ncia da classe Computador chamando seu método }
}
Note que a chamada super(x, y) se traduz na chamada do seguramente as mais importantes são as classes Object, Class
construtorVértice(x,y) da superclasse. Com isto, evitamos de e String.
ter que recodificar no novo construtor as tarefas contidas no
construtor da superclasse: basta chamá -lo. Vale observar que
esse tipo de chamada também só é permitida de dentro de A classe Object
um construtor. A classe Object é uma classe que serve de superclasse
para todas as classes existentes em Java. Isso significa que ao
Campos e Variáveis Locais criar uma classe, se nã o for especificada nenhuma
Chegou o momento de discutirmos sobre a forma como as superclasse apó s a palavra extends, entã o a classe Object
variá veis são declaradas dentro de um programa. Podemos será assumida automaticamente como superclasse. Portanto
declarar variá veis de classe, chamadas campos, e variá veis de toda classe é subclasse de Object, e com isso herda alguns
métodos, ditas locais. métodos automaticamente. Um método muito interessante
A esta altura, já devemos ter feito a seguinte indagaçã o: se presente na classe Objecté o equals. Suponha que haja duas
os campos sã o acessíveis por qualquer dos métodos instâ ncias de uma mesma classe e desejamos testar se elas
declarados em uma classe e eventualmente por métodos de contém a mesma informaçã o. O operador == nos daria o
classes derivadas, por que nã o declararmos todos os dados valor true apenas se seus operandos forem precisamente o
empregados por uma classe como campos? Uma resposta mesmo objeto. Porém, o operador equals nos diria quando os
imediata a essa pergunta seria: isso provocaria um objetos contém o mesmo estado, através da comparaçã o
significativo desperdício de memó ria, pois os campos existem campo-a-campo. Por exemplo, eu e você podemos ter carro
durante todo período de existência de um objeto. Entretanto, do mesmo modelo. Nesse caso meuCarro == seuCarro seria
os dados declarados localmente por um método existem false pois embora nossos carros sejam do mesmo modelo,
somente enquanto esse método estiver sendo executado, de sã o carros diferentes. Entretanto,
modo que o espaço de memó ria previamente ocupado por eles meuCarro.equals(seuCarro) poderia sertrue se os atributos
é reaproveitado quando o método termina sua execuçã o. de ambos os carros fossem idênticos, por exemplo, mesmo
A capacidade de acessar uma variá vel de uma classe ano, mesma cor, etc.
depende fundamentalmente de duas coisas: moderadores de Um outro método interessante da classe Object é o
acesso e localizaçã o da variá vel dentro da classe. As variá veis método getClass, que retorna uma referência a um objeto
locais somente sã o acessíveis pelo método que as declara, contendo informaçõ es sobre a classe a que é aplicado. Isto
enquanto que os campos dependem dos moderadores. Apesar será visto logo abaixo.
de ser possível deixar todos os campos de uma classe
publicamente acessíveis, isto nã o é recomendá vel. Do A classe Class
contrá rio estaríamos desperdiçando o sofisticado mecanismo A classe Class contém informaçõ es que descrevem uma
de proteçã o de dados fornecido pela OOP, o qual permite classe em Java. Toda classe em Java tem uma correspondente
escrever programas mais robustos e livres de erros instâ ncia da classe Class. É possível obter informaçõ es
(vulgarmente chamados bugs). contidas nessas instâ ncias por um dos seguintes meios:
Os possíveis moderadores empregados na declaraçã o de Usar o método getClass de um objeto para obter uma
campos são os seguintes: friendly: todos os campos sã o referência à respectiva instâ ncia da classe Class. Exemplo:
friendly por default. Isto significa que sã o acessíveis por Vértice v = new Vértice(1.0, 2.0);
outras classes integrantes do mesmo package e nã o sã o Class cv = v.getClass();
acessíveis por nenhuma classe ou subclasse exterior ao Usar o método está tico forName de Class para obter uma
package. public: idêntico ao moderador de acesso dos instâ ncia de Class usando o nome da classe. Por exemplo:
métodos. O campo é acessível a partir de qualquer outra Class cv = Class.forName("Vértice");
classe, independentemente do package. protected: os campos De posse de uma instâ ncia da classe Class, podemos
protected podem ser acessados a partir de qualquer classe obter informaçõ es interesantes sobre a classe da qual ela
derivada da classe atual, mas nã o sã o acessíveis de fora do provém. Por exemplo:
package. Obter o nome da classe. Isto é muito ú til quando lidamos
private: é o maior grau de proteçã o. Um campo private é com polimorfismo. Polígono p;
acessível unicamente pela classe atual. ...
private protected: a combinaçã o dos moderadores private p = new Retâ ngulo( ... );
eprotected estabelece que o campo seja acessível pela classe ...
atual e por suas subclasses. System.out.println("O polígono é um " +
static: Um campo static é compartilhado por todas as p.getClass().getName() );
instâ ncias de uma classe, isto é, há um ú nico valor para esse deverá exibir na tela a mensagem:
campo, independentemente da quantidade de instâ ncias O poligono é um Retâ ngulo
existentes, mesmo que nã o haja nenhuma. final: um Obter o nome da superclasse imediatamente adjacente.
modificador final precedendo um campo declara esse campo Retâ ngulo r;
como uma constante. Seu valor nã o pode mudar durante a ...
execução do programa. Por isso, é necessá rio que haja uma
System.out.println("A classe parente do objeto é "
inicializaçã o de campo. Por exemplo: final int MaxDimen = 10; + r.getClass().getSuperClass().getName() );
O uso de constantes dentro de um programa torna-o mais deverá exibir na tela a mensagem: A classe
facilmente legível e fá cil de seguir. Para economizar memó ria, parente do objeto é Polígono
é recomendá vel também declarar constantes como static. Outra possibilididade interessante do uso da classe Class
está na instanciaçã o dinâ mica de objetos:
Classes Especiais Polígono p;
A linguagem Java provê algumas classes bá sicas para String nome;
formar uma base só lida para todas as demais classes, inclusive System.out.print("Qual o poligono que deseja criar?");
aquelas criadas pelo programador. Dentre essas classes, System.out.flush();
nome = System.in.read();
p = (Polígono) Class.forName(nome).newInstance(); Podemos criar a mesma sensaçã o confortá vel para o cliente
em uma aplicaçã o web, também usando componentes ricos e
Java EE e frameworks4 reaproveitá veis.

A linguagem Java apresenta uma série de conhecidos Desenvolvimento desktop ou web?


frameworks, que auxiliam no desenvolvimento de sistemas. Existem algumas desvantagens no desenvolvimento
Dentre os mais conhecidos, estã o o Struts, Hibernate, JUnit, desktop. Como cada usuá rio tem uma có pia integral da
entre outros. aplicaçã o, qualquer alteraçã o precisaria ser propagada para
Há inú meras definiçõ es a respeito de framework. Podemos todas as outras má quinas. Estamos usando um cliente gordo,
considerar um framework como uma soluçã o para um isto é, com muita responsabilidade no lado do cliente.
conjunto de problemas em comum, com uso de classes e Note que, aqui, estamos chamando de cliente a aplicaçã o
interfaces, que disponibilizam objetos com capacidade de que está rodando na má quina do usuá rio.
capturar funcionalidades comuns a vá rias aplicaçõ es. Assim Para piorar, as regras de negó cio rodam no computador
sendo, um framework pode ser considerado sob certo ponto do usuá rio. Isso faz com que seja muito mais difícil depurar a
de vista como uma soluçã o quase completa. aplicaçã o, já que nã o costumamos ter acesso tã o fá cil à
É muito comum haver uma certa confusão entre o que é má quina onde a aplicaçã o está instalada. Em geral,
um framework e uma "simples" biblioteca de classes. Vale enfrentamos problemas de manutenção e gerenciabilidade.
ressaltar que em uma biblioteca de classes, cada classe é ú nica
e independente de outras classes. Já em um framework, existe O desenvolvimento Web e o protocolo HTTP
uma certa dependência entre as classes, conhecido como Para resolver problemas como esse, surgiram as
modelo de colaboraçã o. aplicaçõ es baseadas na web. Nessa abordagem há um
Também pode haver confusã o junto a definiçã o de Design servidor central onde a aplicaçã o é executada e processada e
Patterns. Apenas lembrando que em um framework todos os usuá rios podem acessá -la através de um cliente
possuímos có digo em si, enquanto nos design patterns temos simples e do protocolo HTTP.
apenas um "modelo" ou "exemplo" de uma soluçã o para um Um navegador web, como Firefox ou Chrome, que fará o
conhecido problema. papel da aplicaçã o cliente, interpretando HTML, CSS e
Assim sendo, um framework deve ser extensível, bem JavaScript -- que sã o as tecnologias que ele entende.
documentado e, principalmente, reusá vel. Vale lembrar que o Enquanto o usuá rio usa o sistema, o navegador envia
uso de frameworks tem benefícios claros quando tratamos de requisiçõ es (requests) para o lado do servidor (server side),
redução de custos. que responde para o computador do cliente (client side). Em
Também pode haver confusã o junto a definiçã o de Design nenhum momento a aplicaçã o está salva no cliente: todas as
Patterns. Apenas lembrando que em um framework regras da aplicaçã o estã o no lado do servidor. Por isso, essa
possuímos có digo em si, enquanto nos design patterns temos abordagem também foi chamada de cliente magro (thin
apenas um "modelo" ou "exemplo" de uma soluçã o para um client).
conhecido problema. Isso facilita bastante a manutençã o e a gerenciabilidade,
Assim sendo, um framework deve ser extensível, bem pois temos um lugar central e acessível onde a aplicaçã o é
documentado e, principalmente, reusá vel. Vale lembrar que o executada. Contudo, note que será preciso conhecer HTML,
uso de frameworks tem benefícios claros quando tratamos de CSS e JavaScript, para fazer a interface com o usuá rio, e o
redução de custos. protocolo HTTP para entender a comunicaçã o pela web. E,
mais importante ainda, nã o há mais eventos, mas sim um
Introdução ao JSF modelo bem diferente orientado a requisiçõ es e respostas.
Toda essa base precisará ser conhecida pelo desenvolvedor.
Durante muitos anos, os usuá rios se habituaram com Comparando as duas abordagens, podemos ver
aplicaçõ es Desktop. Este tipo de aplicaçã o é instalada no vantagens e desvantagens em ambas. No lado da aplicação
computador local e acessa diretamente um banco de dados ou puramente Desktop, temos um estilo de desenvolvimento
gerenciador de arquivos. As tecnologias típicas para criar uma orientado a eventos, usando componentes ricos, porém com
aplicaçã o Desktop sã o Delphi, VB (Visual Basic) ou, no mundo problemas de manutençã o e gerenciamento. Do outro lado,
Java, Swing. as aplicaçõ es web sã o mais fá ceis de gerenciar e manter, mas
Para o desenvolvedor, a aplicaçã o Desktop é construída precisamos lidar com HTML, conhecer o protocolo HTTP e
com uma série de componentes que a plataforma de seguir o modelo requisiçã o/resposta.
desenvolvimento oferece para cada sistema operacional. Esses
componentes ricos e muitas vezes sofisticados estã o Mesclando desenvolvimento Desktop e Web
associados a eventos ou procedimentos que executam ló gicas Em vez de desenvolver puramente para desktop, é uma
de negó cio. tendência mesclar os dois estilos, aproveitando as vantagens
Problemas de validaçã o de dados sã o indicados na pró pria de cada um. Seria um desenvolvimento Desktop para a web,
tela sem que qualquer informaçã o do formulá rio seja perdida. tanto central quanto com componentes ricos, aproveitando o
De uma forma natural, esses componentes lembram-se dos melhor dos dois mundos e abstraindo o protocolo de
dados do usuá rio, inclusive entre telas e açõ es diferentes. comunicaçã o. Essa é justamente a ideia dos frameworks web
Nesse tipo de desenvolvimento sã o utilizados diversos baseados em componentes.
componentes ricos, como por exemplo, calendá rios, menus No mundo Java há algumas opçõ es como JavaServer Faces
diversos ou componentes drag and drop (arrastar e soltar). (JSF), Apache Wicket, Vaadin, Tapestry ou GWT da Google.
Eles ficam associados a eventos, ou açõ es, e guardam Todos eles sã o frameworks web baseados em componentes.
automaticamente seu estado, já que mantêm os valores
digitados pelo usuá rio. Características do JSF
Esses componentes nã o estã o, contudo, associados JSF é uma tecnologia que nos permite criar aplicaçõ es Java
exclusivamente ao desenvolvimento de aplicaçõ es Desktop. para Web utilizando componentes visuais pré-prontos, de
forma que o desenvolvedor nã o se preocupe com Javascript e
4 Fonte: http://www.linhadecodigo.com.br/artigo/758/o-universo-
dosframeworks-java.aspx HTML. Basta adicionarmos os componentes (calendá rios,
tabelas, formulá rios) e eles serã o renderizados e exibidos em 30x no nú mero de requisiçõ es por segundo em uma pá gina
formato html. complexa.

Guarda o estado dos componentes Melhorias na Especificação


Além disso o estado dos componentes é sempre guardado Sã o muitos os pontos de melhoria, mas gostaremos de
automaticamente (como veremos mais à frente), criando a ressaltar alguns, principalmente no que concerne à
característica Stateful. Isso nos permite, por exemplo, criar evoluçã o/futuro da plataforma. Ficamos muito tempo
formulá rios de vá rias pá ginas e navegar nos vá rios passos parados no JSF1.2 e nã o vimos progresso na especificaçã o.
dele com o estado das telas sendo mantidos. Contudo, parece que o jogo mudou. Alguns itens que ficaram
em aberto no JSF2.0, como a falta de integraçã o do
Separa as camadas @ViewScope com a combinaçã o JSF + CDI, já estã o previstos
Outra característica marcante na arquitetura do JSF é a para serem resolvidos no JSF2.2, assim como melhorias no
separação que fazemos entre as camadas de apresentaçã o e de suporte ao HTML5, AJAX e navegaçã o com o Faces Flow e
aplicaçã o. Pensando no modelo MVC, o JSF possui uma camada outros itens resolvidos já no JSF2.1.
de visualizaçã o bem separada do conjunto de classes de
modelo. Mais componentes!
O nú mero de componentes tem crescido a cada dia
Especificação: várias implementações devido a facilidade de se implementar componentes no JSF2.
O JSF ainda tem a vantagem de ser uma especificaçã o do Os principais conjuntos de componentes (Primefaces,
Java EE, isto é, todo servidor de aplicaçõ es Java tem que vir Richfaces, Trinidad e Icefaces) já possuem um excelente
com uma implementaçã o dela e há diversas outras suporte a nova especificaçã o e cada um deles possui
disponíveis. diferentes sabores de componentes ricos para praticamente
A implementaçã o mais famosa do JSF e também a todos os tipos de aplicaçã o. Devido a features como Ajax
implementaçã o de referência, é a Oracle Mojarra disponível Nativo e Resource Loading estes mesmos conjuntos de
em http://javaserverfaces.java.net/. Outra implementaçã o componentes tornaramse compatíveis, o que tem
famosa é a MyFaces da Apache Software Foundation em possibilitado integrá -los sem muitas dificuldades em um
http://myfaces.apache.org/. mesmo projeto – o que era quase impossível com JSF1.2.
Outro ponto interessante é que com o sucesso do JSF2 as
empresas mantenedoras tem diminuído o suporte e a
implementaçã o de novos componentes JSF1.2, e,
provavelmente, em médio prazo será ainda mais raro obter
correçõ es e melhorias para esses componentes de forma
gratuita.
Adoção do Primefaces 2.x e 3.x
No tó pico anterior ressaltamos sobre a variedade de
componentes, nesse ousamos afirmar que o Primefaces
(2.x/3.x) está tã o interessante que seu uso por si só já é um
JSF 1.x e 2.x motivo para migrar. Eles sairam na frente do RichFaces
5 como implementaçã o de componentes compatível com JSF 2.
Desempenho Só esse aspecto já seria o suficiente para ter uma adoção
JSF sempre foi considerado um framework com problemas maior. Entretanto, o principal motivo foi a qualidade dos
graves de desempenho desde suas primeiras versõ es (RI componentes. Comparando as demos de ambos constate-se
1.0/1.1). No entanto, apó s o lançamento do JSF1.2 muitos dos que o primeiro possui uma variedade muito maior de
problemas de performance foram resolvidos graças ao elementos, além de suporte com componentes mobile. Ainda
talentoso time de desenvolvedores da Mojarra (RI). Mas ainda mais, ele usa o ThemeRoller, facilitando a customizaçã o de
assim, devido a limitaçõ es de design na especificaçã o do acordo com sua necessidade.
JSF1.2, o time de desenvolvedores sempre teve dificuldades Outro ponto que podemos citar é a evoluçã o. Enquanto o
para escrever có digo performá tico. Somente com a Primefaces já está na 3.X (segunda geraçã o compatível com
especificaçã o do JSF2 é que tornou-se possível escrever có digo JSF 2), o RichFaces ainda está na 4.X (primeira geraçã o
desde o ínicio com performance em mente. compatível com a tecnologia). Você pode conferir diversas
A extensibilidade e as novas features (como Partial State comparaçõ es que o pessoal no mercado fez, inclusive
Saving, Tree Visiting e Project Stage) do JSF2 tem permitido destacando alguns pontos de desempenho, para ajudar em
melhorias significantes de desempenho a cada release. suas conclusõ es.
Melhorias como o menor consumo de memó ria (até 4x menos)
e cpu, menor latência, melhor gerenciamento do estado de Maturidade
cada componente, otimizaçã o no algoritmo de busca de A adoçã o do JavaEE 6 pode ser considerada um sucesso,
fato esse pois discussõ es antigas sobre JavaEE vs Spring
voltaram, e antigamente a especificaçã o perdia fá cil (quem
5
Fonte: http://blog.caelum.com.br/10-razoes-para-migrar-sua-aplicacao-parajsf- nã o se lembra daquela MundoJ – EJB X Spring). Atualmente o
2/
Java EE tem uma boa relaçã o com outros frameworks, como
componentes e de serializaçã o da á rvore de componentes,
o
cache de EL expressions e outros.Indo mais além, é possível
Spring.
que o JSF2.2 (ou um futuro release) adote uma configuraçã o
Adoção do CDI
que vá em direçã o contrá ria à natureza Stateful do
CDI é a especificação para Injeçã o de Dependência
framework, o Stateless Mode. Com este modo stateless nã o
(JSR299). Surgiu também com o JavaEE 6 e foi prontamente
haverá a necessidade de criar a á rvore de componentes a
adotada pela comunidade, inclusive integrando com
cada request (teremos um cache de cada view), o que
linguagens como Ruby (projeto TorqueBox). Já teve inclusive
diminuirá o uso de memoria e cpu e trará um ganho de até
alguns estudos para identificar o desempenho de aplicaçõ es
que usam a API e concluem como a implementaçã o de Existem dois tipos de beans, são eles: os Session beans e
referência Weld evoluiu e ainda tem a evoluir. Com a Message-driven beans. Eles formam o coraçã o do EJB e serã o
especificaçã o conseguimos algumas manipulaçõ es bem mais detalhados no restante do artigo, assim como diversas
avançadas como, por exemplo, injeçã o de dependência para outras funcionalidade providas pelo EJB 3.2.
objetos genéricos. Entity beans foram marcados como “anulados” na versã o
anterior (EJB 3.1) da especificaçã o do EJB e agora está como
Envolvimento da comunidade opcional no EJB 3.2. Isso ocorre porque a Java Persistence
Há muito movimento ao redor do JSF2 e do CDI. API ganhou a sua pró pria especificação e pode ser executada
Recentemente foi lançada pelo Bauke Scholtz (talvez o fora de um container.
developer mais proeminente na plataforma) o OmniFaces, que
é uma biblioteca utilitá ria para consertar vá rios problemas Beans com Estado de Sessão (Stateful Session Beans)
que ainda nã o foram melhorados na especificaçã o. Temos Um bean com estado de sessã o (stateful session bean)
também outros projetos mainstream como o Seam3, tem como característica manter o estado conversacional
CDISource e Apache CODI. Há um claro sombreamento de para um cliente específico. O estado é armazenado nos
funcionalidades entre os projetos, porém a cooperaçã o dos valores das variá veis de instâ ncia do bean e nos
times está tã o grande que todos resolveram juntar forças em interceptadores associados.
um só projeto, o DeltaSpike. O projeto agora é o foco da Podemos definir um simples bean com estado de sessã o
comunidade, e para comprovar isso, Pete Muir recentemente usando a anotaçã o @Stateful. Segue na imagem abaixo um
enviou um email na lista do seam-dev explicando que o exemplo de como podemos definir um bean com estado de
projeto está a pleno vapor. sessão.

Suporte ao HTML5
Há muitas funcionalidades interessantes na especificaçã o e
ver o JSF tentar se alinhar mostra cada vez mais a
preocupaçã o da tecnologia em melhorar a User Experience.

Fim do suporte à versão antiga


Aqui entra uma questã o mais enterprise. Algumas
empresas contratam Oracle, JBoss, IBM, justamente pelo
suporte que elas oferecem aos seus produtos. Portanto, é
importante identificar a data de expiraçã o desses serviços.
Uma outra preocupaçã o é com relação a variedade de
implementaçõ es para a especificaçã o JavaEE. Alguns vendors
demoraram a soltar os seus releases compatíveis, mas temos
até alguns menos conhecidos que estã o certificados, como
Apache Geronimo e Caucho Resign. Há também melhorias
considerá veis de desempenho no JBoss 7 e GlassFish 3.1.

Enterprise Java Beans (EJB 3.x)


6

Enterprise JavaBeans são usados para o desenvolvimento


e implantaçã o de aplicaçõ es distribuídas baseadas em
componentes que sã o escalá veis, transacionais, e seguros. Um
EJB normalmente contém a ló gica de negó cio que atua sobre
os dados de negó cio. Essa afirmaçã o não era verdadeira até a
introduçã o dos POJOs que também estã o disponíveis nessa
nova versã o do EJB.
O EJB 3.2 também permite que toda parte envolvendo Exemplo de um bean com estado de sessã o utilizando
segurança e transação possa ser especificados na forma de anotaçõ es.
anotaçõ es de metadados, ou entã o separadamente no
Deployment Descriptor que é o arquivo web.xml. Acima temos um POJO marcado com a anotação
Uma instâ ncia de um bean é gerenciado em tempo de @Stateful. Apenas anotando o nosso POJO já é o suficiente
execução por um container. O bean é acessado no cliente e é para convertermos um POJO para um bean com estado de
intermediado pelo container que ele está implantado. O sessão. Lembrando que os POJOs (Plain Old Java Objects ou
cliente deste bean também pode estar no servidor na forma de Os Singelos Clá ssicos Objetos Java) sã o objetos Java que
um Manage Bean, bean CDI, ou um Servlet. Em qualquer um seguem um projeto simplificado, sem definiçõ es rígidas de
dos casos, o container EJB fornece toda infra-estrutura estrutura como, por exemplo, obrigar o programador a
necessá ria para essas aplicaçõ es empresariais. O container implementar construtores com ou sem argumentos, definir
permite que o desenvolvedor de aplicaçõ es foque na ló gica de métodos getters e setters para cada atributo, convençõ es
negó cio e nã o se preocupe com transaçõ es de baixo nível, para nomear métodos, etc.
detalhes de gerenciamento de status, comunicaçã o remota, Todos os métodos pú blicos do bean exemplificados acima
concorrência, podem ser invocados por um cliente.
No có digo acima também verificamos que o método
6
"remover" é anotado com a anotaçã o @Remove. Um cliente
Fonte: http://www.devmedia.com.br/ejb-introducao-ao-novo-
enterprisejavabeans-3-2/30807
pode remover um bean com estado de sessã o apenas
multithreading, pools de conexã o ou outras APIs complexas de invocando o método "remover". Chamando este método temos
baixo nível. como resultado uma chamado do container ao método com a
anotação @PreDestroy. Remover um bean com estado de
sessã o significa que o estado da instâ ncia específica para Neste có digo, se CarrinhoDeCompras e Pagamento nã o
aquele cliente nã o existe mais. possuem anotaçõ es explicitas indicando se é local ou remota,
Este estilo de declaração de bean é chamado de entã o eles estã o expostos como visualizaçã o local do bean.
visualização sem interface. Esse bean é apenas localmente Porém, os beans também podem ser explicitamente
acessível aos clientes empacotados no mesmo arquivo de marcados com @Local, conforme mostra o exemplo da
deploy (como um war). Se um bean precisa ser remotamente imagem abaixo.
acessível, ele deve definir uma interface de negó cio separada
anotada com @Remote. Segue na imagem abaixo um exemplo
de definiçã o de uma interface remota.

Definindo de forma explicita o bean como local.

Os dois fragmentos de có digo sã o semanticamente


equivalentes.
Também podemos marcar o bean como remoto através da
Criando uma interface remota para o bean com estado de anotação @Remote, conforme o exemplo a imagem abaixo.
sessão criado anteriormente.

Agora o bean pode ser injetado através da sua interface,


conforme mostra a imagem abaixo.

Definindo o bean como remoto através da anotaçã o


Injetando o bean através da interface. @Remote.

Um cliente deste bean com estado de sessã o pode acessar Dessa forma, CarrinhoDeCompras e Pagamento sã o
este bean da mesma forma que aparece na imagem abaixo visualizaçõ es remotas.
Se uma das interfaces é marcada como @Local ou
@Remote, entã o cada interface que precisar ser exposta
deve ser marcada explicitamente; caso contrá rio, ele será
ignorado. Segue na imagem abaixo um exemplo onde
definimos a anotaçã o em apenas uma das implementaçõ es.

Exemplo de como o cliente pode acessar o bean.

Podemos notar o quanto a injeção de dependência facilita


a vida dos programadores que utilizam o EJB 3.2. A injeção de
dependência é um padrã o de projeto que visa desacoplar os
componentes da aplicaçã o. Dessa forma, os componentes sã o
instanciados externamente à classe com um gerenciador
controlando essas instâ ncias. Esse gerenciador, através de
uma configuraçã o, liga os componentes de forma a montar a Exemplo definindo uma interface anotada.
aplicaçã o. Isso facilita muito a vida dos desenvolvedores que
nã o precisam instanciar e nem configurar esses beans, basta Neste có digo o Bean apenas expõ e uma interface remota
injetá -lo na classe. que é "CarrinhoDeCompras".
O EJB 3.2 tornou menos rígida as regras default para Os beans com estado de sessão também possuem acesso
designar a implementaçã o de interfaces como local ou remota. aos métodos de callback do ciclo de vida, são eles:
A classe do bean deve implementar a interface ou a interface "PostConstruct" e "PreDestroy". Além disso, um container
deve ser designada como uma interface de negó cio local ou EJB pode decidir por passivar um bean com estado de sessã o
remota por meio da anotaçã o @Local ou @Remote ou ainda para alguma forma de armazenamento secundá rio e entã o
podemos utilizar o deployment descriptor. ativa-lo novamente. O container se encarrega de salvar e
Se o bean está implementando duas interfaces que nã o restaurar o estado do bean. No entanto, se há objetos que
possuem anotaçõ es, entã o eles estarã o expostos como nã o são serializá veis como soquetes abertos ou conexõ es
visualização local do bean. Segue na imagem abaixo um JDBC, eles precisam ser explicitamente fechados e
exemplo. restaurados como parte desse processo. Assim,
@PrePassivate é invocado para limpar os recursos antes do
bean ser passivado, e @PostActivate que é invocado para
restaurar os recursos.
Porém, uma das novidades do EJB 3.2 é a capacidade de
optar por nã o passivaçã o o que pode evitar exceçõ es em
tempo de execução e a degradaçã o de desempenho do
Bean implementando duas interfaces sem anotaçõ es, aplicativo. Segue na Listagem 9 um exemplo de como
tornando-as assim como de acesso local. desabilitar essa funcionalidade.
Desabilitando a passivação num determinado bean.

Stateless Session Beans


Um bean sem estado de sessã o nã o contém qualquer
estado conversacional para um cliente específico.
Todas as instâ ncias de um bean sem estado de sessão sã o Criando uma interface remota para o bean sem estado de
equivalentes, portanto o container pode escolher delegar um sessão.
método invocado por um cliente para qualquer instâ ncia
disponível no pool do container. Visto que os beans sem
Por fim, o cliente injeta o bean através da interface,
estado de sessã o nã o possuem qualquer estado, eles nã o
conforme exemplificado na imagem abaixo.
precisam ser passivados.
Podemos definir um simples bean sem estado de sessã o
utilizando a anotaçã o @Stateless, conforme exemplificado no
có digo da imagem abaixo.
Injetando o bean Conta através da anotaçã o @EJB.

Os beans sem estado de sessão suportam dois métodos


de callback do ciclo de vida, sã o eles: "PostConstruct" e
"PreDestroy".
O método "PostConstruct" é invocado depois que o
construtor sem argumentos é invocado e todas as
dependências foram injetadas, e antes que o primeiro
método de negó cio é invocado no bean. Este método é
geralmente onde todos os recursos necessá rios para o bean
sã o inicializados.
O método de callback "PreDestroy" é chamado antes da
instâ ncia ser removida pelo container. Este método é
Exemplo de um bean sem estado de sessã o. geralmente onde todos os recursos adquiridos durante o
PostConstruct sã o liberados.
O có digo acima mostra um POJO anotado com @Stateless. Como os beans sem estado de sessã o nã o armazenam
Isto é tudo que precisamos para converter um POJO para um qualquer estado, o container pode fazer um pool de
bean sem estado de sessão. Todos os métodos pú blicos do instâ ncias, e todos eles sã o tratados da mesma forma a partir
bean podem ser invocados por um cliente. de uma perspectiva do cliente. Qualquer instâ ncia do bean
Podemos acessar este bean sem estado de sessã o usando a pode ser usada para atender a solicitaçã o do cliente. Com
anotaçã o @EJB, conforme podemos verificar no exemplo da essa simples afirmaçã o podemos verificar que os beans sem
imagem abaixo. estado de sessão sã o muito mais rá pidos que os beans com
estado de sessão.

Singleton Session Beans


Um bean de sessã o Singleton é um componente que é
instanciado uma ú nica vez por aplicação e fornece um acesso
Acessando um bean sem estado de sessã o utilizando bastante facilitado ao estado compartilhado. Se o container
@EJB. for distribuído em mú ltiplas JVM, cada aplicaçã o terá uma
instâ ncia do Singleton para cada JVM. Um bean de sessã o
Este estilo de declaração de bean também é chamado de Singleton é explicitamente projetado para ser compartilhado
uma visualizaçã o sem interface, conforme verificamos e suportar concorrência.
anteriormente também. Este bean é acessível apenas Podemos definir um simples bean de sessão Singleton
localmente para os clientes empacotados no mesmo arquivo usando a anotaçã o @Singleton, conforme podemos verificar
de deploy. Se o bean precisa ser acessível remotamente, no exemplo da Listagem imagem abaixo.
devemos definir uma interface de negó cio separado com a
anotaçã o @Remote, conforme verificamos na imagem abaixo.
@Lock(LockType.WRITE) sã o utilizadas para especificar o
Exemplo de um bean de sessã o Singleton utilizando a tipo de bloqueio. Mas, por padrã o, um bloqueio Write é
anotaçã o @Singleton associado com cada método do bean.
O Container é responsá vel por quando inicializar uma Essas anotaçõ es podem ser especificadas na classe, um
instâ ncia de um bean de sessã o Singleton. Contudo, podemos método de negó cio da classe, ou ambos. Um valor especificado
opcionalmente marcar o bean para inicializar antes através da no método sobrescreve um valor especificado na classe. A
anotaçã o @Startup, conforme exemplificado na imagem concorrência gerenciada por bean requer que o
abaixo. desenvolvedor gerencie a concorrência utilizando primitivas
de sincronização da linguagem Java como “synchronized” e
“volatile”.
Eventos do Ciclo de Vida
Métodos interceptadores do ciclo de vida podem ser
definidos tanto para beans de sessã o quanto para beans de
mensagens.
As anotaçõ es @AroundConstruct, @PostConstruct,
@PreDestroy, @PostActivate, e @PrePassivate sã o utilizados
para definir métodos interceptadores para eventos do ciclo
de vida dos beans.
Exemplo de como inicializar um Singleton antes da
A anotação @AroundConstruct pode ser definida apenas
aplicaçã o estar disponível.
numa classe interceptadora, enquanto que todas as outras
anotaçõ es podem ser definidos em uma classe
O Container agora inicializará todos esses Singletons em interceptadora e/ou diretamente numa classe bean.
tempo de inicialização, executando o có digo que estiver
Nas pró ximas seçõ es veremos melhor cada uma dessas
anotado com @PostConstruct, antes da aplicaçã o tornar-se
anotaçõ es.
disponível e antes que qualquer solicitaçã o do cliente seja
atendida.
Interceptador @AroundConstruct
Podemos especificar uma inicializaçã o explicita de beans
A anotação @AroundConstruct designa um método
de sessã o Singleton usando @DependsOn. O exemplo da
interceptor que recebe uma chamada de retorno quando o
imagem abaixo ilustra melhor como podemos utilizar essa
construtor da classe de destino é invocado.
funcionalidade:
Este método interceptor pode ser definido apenas em
classes de interceptoras e/ou superclasses de classes de
interceptores e nã o pode ser definido na classe alvo.
Um interceptador pode ser definido como o da figura
abaixo.

Definindo um AroundConstructor.
Exemplo de como utilizar a anotação @DependsOn para
criar dependências entre os beans. Um interceptador vinculado (Interceptor binding) pode
ser definido como a imagem abaixo.
O container assegura que o bean DesligaAlarme é
inicializado antes do bean AbrePortaoGaragem.
Um bean Singleton suporta os métodos de callback do ciclo
de vida "PostConstruct" e "PreDestroy". Além disso, o
Singleton também suporta acesso concorrente.
Por padrã o, um bean Singleton é marcado para ter
concorrência gerenciada pelo container, mas opcionalmente
pode ser marcado para ter concorrência gerenciada por bean.
Concorrência gerenciada por Container é baseada em
metadados com bloqueio a nível de método onde cada método Exemplo de como definir um interceptor vinculado.
é associado com um bloqueio do tipo Read (compartilhado) ou
Write (exclusivo). E finalmente, o interceptador pode ser especificado no
Um bloqueio de leitura (Read) permite chamadas bean como a imagem abaixo.
simultâ neas do método. Um bloqueio de leitura (Write)
aguarda o processamento de uma invocaçã o completar antes
de permitir que a pró xima invocaçã o prossiga.
As anotaçõ es @Lock(LockType.READ) e
Definindo um interceptor no bean.

O método validateConstructor é chamado toda vez que o


construtor do bean MeuBean é chamado.
Interceptador @PostConstruct
A anotação @PostConstruct é utilizada em um método que Anotando um método do bean com @PreDestroy.
precisa ser executado apó s a injeçã o de dependência ser
realizada. Assim podemos executar qualquer inicialização, Neste có digo, o método liberaRecursos() é chamado antes
visto que utilizando o PostConstruct temos certeza que o que a instâ ncia seja removida pelo container.
método será executado antes da primeira invocaçã o do Este método interceptador é utilizado em diferentes tipos
método de negó cio na instâ ncia do bean. de beans de sessã o e ocorre nos seguintes contextos de
O método anotado com PostConstruct é invocado mesmo transaçã o:
se a classe não solicitar quaisquer recursos a serem injetados. Para um bean sem estado de sessão, ele executa em um
Apenas um método pode ser anotado com @PostConstruct. contexto de transaçã o não especificado.
Segue na Listagem 20 um exemplo. Para um bean com estado de sessã o, ele executa em um
contexto de transaçã o determinado pelo atributo de
transaçã o do método de retorno de chamada.
Para um bean Singleton, ele executa em um contexto de
transaçã o determinado pelo tipo de gerenciamento de
transaçã o do bean e qualquer atributo de transaçã o
aplicá vel.

Interceptador @PrePassivate
A anotaçã o @PrePassivate pode ser usada apenas em um
bean com estado de sessã o. Esta anotaçã o designa um
método para receber uma chamada de retorno antes de um
bean com estado de sessã o ser passivado. Segue na imagem
abaixo um exemplo.
Anotando um método do bean com @PostConstruct.

Neste có digo o construtor default do bean é chamado


primeiro e apó s isso o método configuraRecursos() é chamado
antes que qualquer método de negó cio possa ser chamado.
Este método interceptador do ciclo de vida serve para
diferentes tipos de beans de sessã o e ocorre nos seguintes
contextos de transaçã o:
Para um bean sem estado de sessã o, ele executa em um
contexto de transaçã o nã o especificado.
Para um bean com estado de sessã o, ele executa em um Anotando um método do bean com @PrePassivate.
contexto de transaçã o determinado pelo atributo de transação
do método de retorno de chamada. Esses métodos sã o ignorados por beans sem estado de
Para um bean Singleton, ele executa em um contexto de sessão ou Singleton.
transaçã o determinado pelo tipo de gerenciamento de Este método interceptador executa em um contexto de
transaçã o do bean e qualquer atributo de transação aplicá vel. transaçã o determinado pelo atributo de transação do
método de retorno de chamada.
Interceptador @PreDestroy
A anotaçã o @PreDestroy é utilizada como uma forma de Interceptador @PostActivate
notificaçã o para sinalizar que a instâ ncia está no processo de A anotação @PostActivate pode apenas ser usada em um
ser removida do container. O método anotado com bean com estado de sessã o. Esta anotaçã o designa um
“PreDestroy” é normalmente utilizado para liberar recursos método para receber um retorno de chamada apó s um bean
que tem sido utilizados na aplicaçã o. Segue na imagem abaixo com estado de sessã o ser ativado. Segue na imagem abaixo
um exemplo de como utilizá -la. um exemplo.
Apesar de um Message-Driven Bean nã o poder ser
invocado diretamente por um bean de sessã o, ele ainda pode
Anotando um método do bean com @PostActivate. invocar outros beans de sessã o. Um Message-Driven Bean
também pode enviar mensagens JMS.
Esses métodos são ignorados por beans sem estado de A anotaçã o @MessageDriven também pode ter atributos
sessã o e Singleton. adicionais para configurar o bean. Por exemplo, a propriedade
Este método interceptador executa em um contexto de “activationConfig” pode ter um array de
transaçã o determinado pelo atributo de transação do ActivationConfigProperty que fornece informaçõ es para o
método de retorno de chamada do ciclo de vida. publicador sobre as configuraçõ es do bean neste ambiente
Métodos interceptadores do ciclo de vida podem lançar operacional.
exceçõ es em tempo de execução, mas nã o exceçõ es de A Tabela abaixo define o conjunto padrão de propriedades
aplicaçã o. de configuraçã o que sã o suportados pelo @MessageDriven.

Message-Driven Beans Nome da Propriedade Descrição


Um Message-Driven Bean (MDB) é um bean gerenciado acknowledgeMode Especifica o modo de
por container que é usado para processar mensagens de confirmaçã o do JMS para a
forma assíncrona. Um MDB pode implementar qualquer tipo mensagem entregue quando
de mensagem, mas é mais comum usá -lo para processar a demarcaçã o de transaçã o
mensagens Java Message Service (JMS). Esses beans são do bean gerenciado é usada.
caracterizados por serem sem estado de sessã o e sã o
invocados pelo container quando uma mensagem JMS chega 7
Fonte: http://www.devmedia.com.br/introducao-a-jpa-java-
ao destino. persistenceapi/28173
Um bean de sessã o pode receber uma mensagem JMS de Os valores suportados são
forma síncrona, mas um Message-Driven Bean pode receber Auto_acknowledge (default)
uma mensagem de forma assíncrona. ou Dups_ok_acknowledge.
Podemos converter um POJO para um Message-Driven
messageSelector Especifica o seletor de
Bean usando a anotaçã o @MessageDriven. Segue na imagem
mensagem JMS para ser
abaixo um exemplo.
usado na determinaçã o de
quais mensagens um MDB
recebe.
destinationType Especifica se o MDB é
para ser usado com um
Queue ou Topic. Os valores
suportados sã o
javax.jms.Queue ou
javax.jms.Topic.
subscriptionDurability Se MDB é usado com um
Topic, especifica se uma
inscriçã o durá vel ou nã o
durá vel é utilizada. Os
valores suportados sã o
Criando um MDB utilizando a anotaçã o @MessageDriven. Durable ou NonDurable.

Neste có digo, @MessageDriven define o bean como sendo Propriedades suportadas pelo @MessageDriven.
um Message-Driven Bean. O atributo mappedName especifica
o nome do JNDI do JMS de destino para o qual o bean Um Message-Driven Bean é capaz de processar mensagens
consumirá a mensagem. O bean deve implementar a interface de mú ltiplos clientes simultaneamente.
MessageListener, na qual fornece apenas um método, Assim como beans sem estado de sessã o, o container
"onMessage". Este método é chamado pelo Container sempre pode fazer um pool de instâ ncias e alocar instâ ncias de bean
que a mensagem é recebida pelo Message-Driven Bean. Este suficiente para lidar com o nú mero de mensagens em um
método conterá a ló gica de negó cio específica de aplicaçã o. determinado momento. Todas as instâ ncias do bean são
O có digo a imagem abaixo mostra como uma mensagem de tratadas igualmente.
texto é recebida pelo método onMessage e como o corpo da Como uma mensagem é entregue para um Message-
mensagem pode ser recuperada e exibida. Driven Bean dentro de um contexto transacional, todas as
operaçõ es do método "onMessage" fazem parte de uma ú nica
transaçã o. O contexto de transação é propagado para os
outros métodos invocados dentro do onMessage.
O MessageDrivenContext pode ser injetado em um
Message-Driven Bean. Esta funcionalidade fornece acesso ao
contexto do Message-Driven Bean em tempo de execuçã o
que está associado com a sua instâ ncia. Segue na imagem
abaixo um exemplo de como fazer uma reversã o (rollback)
na transaçã o usando o MessageDrivenContext.

Recebendo e recuperando uma mensagem de texto.


Persistence Query Language (JPQL), a API Criteria para
criaçã o de consultas dinâ micas, entre outras características.

Entre as principais inclusõ es na JPA destacam-se:


- POJOS Persistentes: Talvez o aspecto mais
importante da JPA seja o fato que os objetos sã o POJOs (Plain
Old Java Object ou Velho e Simples Objeto Java), significando
que os objetos possuem design simples que nã o dependem da
herança de interfaces ou classes de frameworks externos.
Qualquer objeto com um construtor default pode ser feito
Revertendo uma transação com MessageDrivenContext. persistente sem nenhuma alteraçã o numa linha de có digo.
Mapeamento Objeto-Relacional com JPA é inteiramente
Java Persistence API (JPA 2.x) dirigido a metadados. Isto pode ser feito através de anotaçõ es
7 no có digo ou através de um XML definido externamente.
JPA é um framework leve, baseado em POJOS (Plain Old - Consultas em Objetos: As consultas podem ser
Java Objects) para persistir objetos Java. A Java Persistence realizadas através da Java Persistence Query Language (JPQL),
API, diferente do que muitos imaginam, nã o é apenas um uma linguagem de consulta que é derivada do EJB QL e
framework para Mapeamento Objeto-Relacional (ORM - transformada depois para SQL. As consultas usam um
Object-Relational Mapping), ela também oferece diversas esquema abstraído que é baseado no modelo de entidade
funcionalidades essenciais em qualquer aplicação como oposto à s colunas na qual a entidade é armazenada.
corporativa. - Configurações simples: Existe um grande nú mero
Atualmente temos que praticamente todas as aplicaçõ es de características de persistência que a especificaçã o oferece,
de grande porte utilizam JPA para persistir objetos Java. JPA todas sã o configurá veis através de anotaçõ es, XML ou uma
provê diversas funcionalidades para os programadores, combinaçã o das duas. Anotaçõ es sã o simples de usar,
como será mais detalhadamente visto nas pró ximas seçõ es. convenientes para escrever e fá cil de ler. Além disso, JPA
Inicialmente será visto a histó ria por trá s da JPA, a qual
passou por algumas versõ es até chegar na sua versã o atual. 8
Fonte: http://www.infoq.com/br/news/2013/07/novidade-jax-rs-2.0
oferece diversos valores defaults, portanto para já sair usando
História da Especificação JPA é simples, bastando algumas anotaçõ es.
Apó s diversos anos de reclamaçõ es sobre a complexidade - Integração e Teste: Atualmente as aplicaçõ es
na construção de aplicaçõ es com Java, a especificaçã o Java EE normalmente rodam num Servidor de aplicaçã o, sendo um
5 teve como principal objetivo a facilidade para desenvolver padrã o do mercado hoje. Testes em servidores de aplicaçã o
aplicaçõ es JEE 5. O EJB 3 foi o grande percursor para essa sã o um grande desafio e normalmente impraticá veis. Efetuar
mudança fazendo os Enterprise JavaBeans mais fá ceis e mais teste de unidade e teste caixa branca em servidores de
produtivos de usar. aplicaçã o nã o é uma tarefa tã o trivial. Porém, isto é resolvido
No caso dos Session Beans e Message-Driven Beans, a com uma API que trabalha fora do servidor de aplicaçã o. Isto
soluçã o para questõ es de usabilidade foram alcançadas permite que a JPA possa ser utilizada sem a existência de um
simplesmente removendo alguns dos mais onerosos servidor de aplicaçã o. Dessa forma, testes unitá rios podem
requisitos de implementaçã o e permitindo que os ser executados mais facilmente.
componentes sejam como Plain Java Objects ou POJOS.
Já os Entity Beans eram um problema muito mais sério. A JAX-RS (2.x)
soluçã o foi começar do zero. Deixou-se os Entity Beans 8
sozinhos e introduziu-se um novo modelo de persistência. A Quando foi lançado em 2008 pelo JSR-311, o JAX-RS 1.0
versã o atual da JPA nasceu através das necessidades dos se tornou um dos primeiros frameworks Java baseados em
profissionais da á rea e das soluçõ es proprietá rias que já classes POJO e anotaçõ es, para criaçã o de aplicaçõ es web
existiam para resolver os problemas com persistência. Com a robustas.
ajuda dos desenvolvedores e de profissionais experientes que Agora, cinco anos depois da primeira versã o, o JAX-RS 2.0
criaram outras ferramentas de persistência, chegou a uma é lançado no Java EE 7. A nova versã o é baseada na JSR-339.
versã o muito melhor que é a que os desenvolvedores Java Apresentaremos aqui algumas das novas funcionalidades
conhecem atualmente. que fazem com que a mudança para a versão 2.0 valha a
Dessa forma os líderes das soluçõ es de mapeamento pena. Mas antes disso, relembramos um pouco a JAX-RS 1.0,
objetos-relacionais deram um passo adiante e padronizaram através de um exemplo:
também os seus produtos. Hibernate e TopLink foram os
primeiros a firmar com os fornecedores EJB.
O resultado final da especificação EJB finalizou com três
documentos separados, sendo que o terceiro era o Java
Persistence API. Essa especificaçã o descrevia o modelo de
persistência em ambos os ambientes Java SE e Java EE.

JPA 2.0
No momento em que a primeira versã o do JPA foi iniciada,
outros modelos de persistência ORM já haviam evoluído.
Mesmo assim muitas características foram adicionadas nesta
versã o e outras foram deixadas para uma pró xima versã o.
A versã o JPA 2.0 incluiu um grande nú mero de
características que nã o estavam na primeira versã o,
especialmente as mais requisitadas pelos usuá rios, entre elas
a capacidade adicional de mapeamento, expansõ es para a Java
No exemplo a seguir é realizada uma chamada POST fictícia
para venda de 100 açõ es da IBM:

Chamadas assíncronas
No JAX-RS 1.0 o cliente tinha que esperar o servidor
responder suas chamadas, pois a API suportava apenas
requisiçõ es síncronas. A versã o 2.0 introduz o suporte
assíncrono. Isso permite que um cliente faça uma chamada
RESTfull e, opcionalmente, obtenha uma referência de Future
ou um InvocationCallback, para ser notificada quando a
resposta estiver completa.
Nessa listagem, a linha 1 mapeia um recurso (portfó lios)
para o caminho relativo /portfolios. Na linha 4 é especificado
que uma requisição GET deve retornar todos os portfó lios HATEOAS (Hipermídia)
existentes. As linhas 9 e 10 indicam que, em uma requisiçã o De acordo com a ortodoxia do REST, se a aplicaçã o nã o
GET a uma URI como /portfolios/123, o valor que sucede a estiver usando HATEOAS, entã o ela nã o é REST! O HATEOAS
URI do recurso deve ser extraído como um parâ metro (no (Hypermedia as the Engine of Application State, ou
caso, 123) e atribuído à variá vel "id", para que o portfó lio Hipermídia como Motor de Estado da Aplicaçã o) requer que
associado a esse identificador seja entã o retornado pelo os produtores e consumidores RESTful concordem com um
serviço. conjunto de links a serem retornados em cada chamada e
A sintaxe usada no exemplo permanece idêntica no JAX-RS usados pelo cliente para navegaçã o. Se o REST for pensado
2.0. como a versã o "aplicaçã o" de uma pá gina web, entã o o
HATEOAS pode ser visto como os links contidos dentro dessa
De forma consistente com o tema principal do Java EE 7,
pá gina web.
o JAX-RS 2.0 adiciona algumas funcionalidades há muito
aguardadas, a maioria delas focada no que a Oracle chama de O JAX-RS 2.0 fornece as classes Link e Target para
"API simplificada". Essas novas funcionalidades podem ser introduzir hiperlinks dentro da resposta fornecida pelo
categorizadas como: servidor e reagir a elas no lado cliente.
- API cliente
- Suporte a chamadas assíncronas Anotações
- HATEOAS (hipermídia) Novas anotaçõ es foram introduzidas, como para fornecer
- Anotaçõ es suporte de novos tipos de injeção.
- Validaçã o
- Filtros e manipuladores Bean Validation
- Negociaçã o de conteú do O framework Bean Validation está integrado ao novo
JAXRS, agindo como facilitador para especificar metadados de
validaçã o de parâ metros. Por exemplo, a anotação @NotNull
Falaremos a seguir um pouco sobre cada uma dessas
indica que o parâ metro anotado nã o pode ser nulo. É possível
categorias:
também utilizar anotaçõ es customizadas para garantir
API Cliente
formatos de dados (CEP, telefone, etc).
A API do JAX-RS 1.0 era voltada estritamente para o lado
servidor. Algumas implementaçõ es forneceram vá rios graus
Filtros e Manipuladores (handlers)
de suporte para clientes, mas geralmente o desenvolvedor
teve que escolher entre algumas soluçõ es ad hoc, como o A API de filtros fornece a habilidade de encadear filtros
HttpClient do projeto Jakarta Commons da Apache, ou o REST de Servlets, de acordo ao padrã o Chain of Responsibility. Isso
Client da WizTools. é ú til para implementar funcionalidades ortogonais, como o
clássico exemplo de logging. Qualquer filtro pode decidir se
O JAX-RS 2.0 adiciona construtores ("builders") para
deve continuar ou terminar a cadeia ao invocar
invocar um web service REST a partir do cliente. Veja um
exemplo: FilterAction.NEXT ou FilterAction.STOP, respectivamente.
Os handlers (manipuladores) sã o similares aos filtros,
exceto pela capacidade de "embrulhar" (wrap) uma
invocaçã o de método em um ponto de extensã o especificado,
para manipular e enriquecer os dados do corpo da
mensagem.

Negociação de conteúdo
Anotaçõ es mais ricas agora aceitam construçõ es que
Note que esse método primeiramente obtém um cliente e
permitem priorizar os formatos de request/response.
entã o utiliza o pattern Builder para construir todos os
O JAX-RS ainda carece de um bom modelo de segurança, o
parâ metros da URL, permitindo que o desenvolvedor formule
que o torna difícil utilizar em aplicaçõ es empresariais, que sã o
a URL sem lidar com as particularidades de construçã o de
expostas a clientes externos. Esperamos que a pró xima versã o
URL. forneça suporte para autenticaçã o ponto-a-ponto.
Essa abordagem é especialmente ú til para invocaçõ es que O JAX-RS 2.0 ainda estã o em vias de ser suportado pelos
contenham um corpo HTTP, como em um POST ou PUT HTTP. principais servidores Java EE. Enquanto isso nã o acontece, é
possível aproveitá -lo imediatamente em sua aplicação,
utilizando a ú ltima versã o do Jersey. A Oracle publicou os feita nele. Por isso faremos nossa configuraçã o no XML. O
passos para fazer isso no WebLogic 12c. arquivo XML que o Hibernate procurará será o
hibernate.cfg.xml e ele deve estar no classpath.
Hibernate Para nosso caso, vamos seguir a convençã o e criar o
O Hibernate é um framework ORM - Object Relational arquivo hibernate.cfg.xml na pasta src, dentro do nosso
Mapping. É uma ferramenta que nos ajuda a persistir objetos projeto. O conteú do do arquivo será esse:
Java em um banco de dados relacional. O trabalho do
desenvolvedor é definir como os objetos sã o mapeados nas
tabelas do banco e o Hibernate faz todo o acesso ao banco,
gerando inclusive os comandos SQL necessá rios.
O Hibernate é um projeto opensource do grupo JBoss
com muitos anos de histó ria e liderança no mercado Java.
Recentemente, boa parte das idéias do Hibernate e outros
frameworks ORM foram padronizadas em uma especifiçã o
oficial do Java, a JPA - Java Persistence API. A JPA é uma
especificaçã o do JCP e possui vá rias implementaçõ es (o
Hibernate, o Oracle Toplink, EclipseLink, OpenJPA etc).

Preparando o Hibernate5
Para preparar o Hibernate, será necessá rio baixar dois
ZIPs do site do Hibernate. Cada ZIP representa um projeto
diferente.
O primeiro será o Hibernate Core, que se chama
hibernatedistribution-XXX.zip. O segundo ZIP será do projeto
Hibernate Annotations, já que queremos configurar nosso
projeto com as anotaçõ es da JPA. Esse ZIP chama-se
hibernate-annotationsXXX.zip. Faça os downloads As configuraçõ es que passamos nesse arquivo sã o
diretamente em: parecidas quando queremos nos conectar a um banco de
dados. Para conectar em um banco de dados, precisamos
http://www.hibernate.org informar qual é o usuá rio, a senha, algumas informaçõ es do
banco, como host, porta, etc.
Depois de fazer o download desses dois zips, basta Um detalhe importante da nossa configuraçã o é o banco de
descompactá -los e utilizar os JAR's que estã o dentro de cada dados que foi passado. Na configuraçã o
projeto. No exercício abaixo veremos quais JARs vamos hibernate.connection.url foi passado o nome do database que
precisar. A partir do Hibernate 3.5, esses jars todos vem utilizaremos. Para esse caso escolhemos o database fj28.
numa ú nica distribuiçã o, a core. Abaixo segue a descriçã o de todas as configuraçõ es que
usamos:
Configurando o mecanismo de logging - hibernate.connection.username - usuá rio do banco
O Hibernate utiliza o SL4J - Simple Logging Facade for de dados
Java - para o mecanismo de logging. Ele serve apenas como - hibernate.connection.password - senha do usuá rio
uma fachada para vá rios frameworks de logging, por - hibernate.connection.url - chamada de URL ou string
exemplo o Log4J e o java.util.logging. de conexã o, deve ser configurada de acordo com
No nosso projeto utilizaremos o Log4J, entã o precisamos documentaçã o do banco de dados
baixar mais dois zips. O primeiro é o Log4J, do grupo Apache. - hibernate.connection.driver_class - driver que deve
O segundo é o pró prio SL4J, que contêm o jar que faz o ser utilizado
binding do SL4J com o Log4J. - hibernate.hbm2ddl.auto - como o hibernate vai se
Configurando o driver do MySQL comportar em relaçã o à s tabelas do banco. Com o valor update
Apesar de toda facilidade que o Hibernate nos trará , por ele vai criar ou modificar tabelas sempre que necessá rio.
baixo dos panos ele faz chamadas ao JDBC. Portanto, para que - hibernate.dialect - dialeto a ser utilizado para a
nossa aplicaçã o se conecte no banco de dados, precisamos do comunicaçã o com o banco de dados
driver do MySQL no classpath. O driver é a implementaçã o - show_sql - flag que indica se os SQLs gerados devem
JDBC que será utilizada. Cada banco de dados possui a sua ser impressos
implementaçã o, e ela deve ser baixada do site do pró prio - format_sql - flag que indica se os SQLs devem ser
banco de dados. Faça o download do mysql jdbc driver. formatados

Configurando o Hibernate Existem muitas outras configuraçõ es possíveis. Para


Para configurar o Hibernate, podemos utilizar ou um maiores detalhes, acesse a documentaçã o do Hibernate.
arquivo .properties ou um arquivo XML.
O arquivo de properties é mais simples, mais fá cil de se Spring Framework (4.x) e Spring Security.6
criar, mas uma das desvantagens é que ele nã o consegue O Spring é uma tecnologia que surgiu para resolver o
configurar tudo que queremos, por exemplo as entidades. As problema da complexidade encontrada nos Enterprise Java
entidades têm que ser configuradas no có digo, e as outras Beans (EJBs), sendo um framework que implementa os
informaçõ es no arquivo de properties. padrõ es de Inversã o de Controle e Injeçã o de Dependência,
Já o XML, por mais que seja um pouco mais difícil em juntamente os Patterns de Setter Injection e Constructor
relaçã o ao properties, permite que toda a configuraçã o seja Injection, além de prover técnicas de boa programaçã o
fornecendo um modelo unificado e simples de programaçã o,
5 Fonte/; http://www.caelum.com.br/apostila-vraptor-hibernate/persistindo- 6 Fonte: http://www.matera.com/br/2015/04/08/trabalhando-com-jse-
osdados-com-o-hibernate/#4-3-preparando-o-hibernate espring-framework/
isto o tornou um sucesso em meio à comunidade de “commonslogging-1.1.1.jar” para nosso projeto, ver figura a
programadores, sucesso este, foi tã o grande que na versão seguir.
mais nova do JEE, diversas melhorias foram criadas baseadas
no Spring Framework. X-X trata-se da versão do framework que foi baixada.
O Spring Framework implementa dois padrõ es de grande
sucesso na comunidade de programadores que são de
Inversã o de Controle e Injeçã o de Dependência, provendo
sempre das boas técnicas de programaçã o, sendo estas,
baixo acoplamento e alta coesão. Com sua arquitetura
baseada em Plain Old Java Object (POJOs), o principal
objetivo do Spring Framework é tornar as tecnologias
existentes atualmente no mercado fá ceis de serem utilizadas.
Como visto, devido ao sucesso do Spring, hoje é possível
ter aplicaçõ es JEE com arquiteturas bastante simplificadas,
uma vez que a partir da mudança do J2EE para o JEE a
complexidade em se criar aplicaçõ es Java Web foi muito
reduzida fazendo com que muitas empresas que tinham suas
aplicaçõ es baseadas na plataforma J2SE migrassem para o
JEE. Essa mudança fez o mercado de software ser o que é
hoje, onde encontramos aplicaçõ es cada vez mais inovadoras
e altamente conectadas. Monstrando JAR’s do prejeto
O Spring foi criado com o intuito simplificar a Com posse da biblioteca do framework, agora vamos
programaçã o em Java, possibilitando construir aplicaçõ es criar uma pasta chamada “spring” dentro do diretó rio WEB-
que antes só era possível utilizando EJB’s. INF, e dentro da pasta criaremos um arquivo xml chamado
O Spring atualmente possui diversos mó dulos como “application-context.xml”, lembrando que o Spring é um
Spring Data (trata da persistência), Spring Security (trata da framework “container-based”, ou seja, ele vai conter e
segurança da aplicaçã o) entre outros mó dulos. Mas o carregar o que você informá -lo. A raiz do nosso xml é tag
principal (core) pode ser utilizado em qualquer aplicaçã o <beans></beans> e dentro conterá toda a configuraçã o do
Java, as principais funcionalidades sã o a injeçã o de Spring
dependência (CDI) e a programaçã o orientada a aspectos Observaçã o: nã o é obrigató ria a configuraçã o do Spring
(AOP), cabe ao desenvolvedor dizer ao Spring o que quer em apenas um “.xml”, é possível separar vá rios arquivos de
usar. O que faz dele uma poderosa ferramenta, pois nã o configuraçã o, exemplo: persistence-context.xml
existe a necessidade de se arrastar todas as ferramentas do mvccontext.xml etc... , porém nesse artigo isso nã o será
framework para criar uma aplicaçã o simples. abordado.
Arquivo de configuraçã o bem simples nã o? Claro, é uma
Configurando o Spring7 aplicaçã o simples, e a medida que sua aplicaçã o cresce, basta
Para esse artigo vamos utilizar o Eclipse e o Tomcat 7, ir acrescentando mó dulos de acordo com sua necessidade,
certifique-se de tê-los instalados antes de continuar. evitando assim um consumo gigantesco de memó ria com
Primeiramente criaremos um “Dynamic Web Project” com coisas que você nunca vai utilizar na sua aplicaçã o.
o nome de “hello-spring”, como mostra a figura a seguir. Agora vamos dizer a nossa aplicaçã o Web para carregar o
Spring, mas como? O bom e velho arquivo “web.xml”, será
necessá ria apenas a configuraçã o do Servlet do Spring, nada
sobrenatural.
Criando o projeto
Exibindo uma pagina
Agora vem a parte mais “complicada”, configura o Spring, a Entã o é só isso? Podemos rodar a aplicação? Calma, ainda
princípio algo bastante complexo para aqueles que ainda nã o nã o existe nenhuma pá gina, entã o criaremos uma dentro da
possuem muita pratica, lembrando que todo framework é um pasta “WEB-INF/view” com o nome de "helloworld.jsp”. Veja
bicho de sete cabeças a primeira vista. que é o mesmo nome o qual configuramos como pá gina
Para o Spring funcionar, vamos precisar de suas libs, inicial no “application-context.xml”.
acessando os links abaixo, vamos encontrar tudo o que
precisamos.

http://www.springsource.org/spring-framework Definindo a pá gina inicial


http://commons.apache.org/logging/download_logging.c
gi Nossa pá gina ficará assim.

No canto direito da tela teremos as ú ltimas versõ es


lançadas, usaremos a mais atual. Apó s baixar o zip do
framework, vamos descomprimi-lo, e acessar a pasta libs do
framework, nã o se assuste, nã o usaremos todos esses jar’s ,
vamos copiar “spring-webmvc-X-X.jar” , “spring-web- X-X.jar”,
“spring-expression-X-X.jar”, “spring-core- X-X.jar”,
“springcontext- X-X.jar”, “spring-beans- X-X.jar” e colar na
pasta “WEB-INF/lib”. Também é necessá ria a biblioteca

Pá gina helloword.jsp
7 Fonte: http://www.devmedia.com.br/introducao-ao-spring-framework/26212
Agora sim, você já pode rodar o projeto no tomcat, veja o
resultado na figura abaixo. Mapeamento do diretó rio das views

Agora que temos o @Controller que vai tratar uma


requisiçã o, precisamos também da pá gina que vai ser exibida,
no caso a “bemvindo.jsp”. Criaremos ela dentro de
“WEBINF/views”, e nessa pá gina exibiremos o atributo
passado pelo nosso @Controller, veja o có digo da JSP.

Controllers

Exibir uma pá gina é muito simples, mas qual a diferença


do Spring? Vamos falar sobre o controle de navegaçã o da
aplicaçã o. O Spring utiliza os chamados Controllers, que sã o
classes mapeadas através de annotations que servem para
dizer à aplicaçã o o que exibir quando for requisitada uma
pá gina, ou envio de informaçõ es, uma espécie de Servlet do
12
JSP, mas bem mais fá cil de se trabalhar.
http://www.telecom.uff.br/pet/petws/downloads/tutoriais/python/tut_python_
Vamos a um exemplo, criaremos uma classe chamada 2k100127.pdf
“HelloController” no pacote “br.com.devmedia.controllers”,
se o pacote nã o existir, crie-o. Vamos anotar essa classe com
o @Controller, que diz ao Spring que essa classe vai Có digo da pá gina jsp
funcionar como uma espécie de Servlet para a aplicaçã o, ou
seja, vai receber requisiçõ es tratá -las e responder ao usuá rio. Rode novamente a aplicaçã o e veja o resultado, como na
figura abaixo.

Anotaçã o @Controller

Espera ai, mas como minha aplicaçã o vai saber qual Apresentando pagina com atributo do @Controller
requisição deve ser tratada pelo meu @Controller? Simples,
através da anotaçã o @RequestMapping, ela vai verificar qual
PYTHON12.
url está sendo solicitada e enviar para o @Controller que
Python é uma linguagem de programaçã o poderosa e de
contém a anotação com a url específica, veja.
fá cil aprendizado. Possui estruturas de dados de alto nível
eficientes, bem como adota uma abordagem simples e efetiva
para a programação orientada a objetos. Sua sintaxe elegante
e tipagem dinâ mica, além de sua natureza interpretada,
tornam Python ideal para scripting e para o
desenvolvimento rá pido de aplicaçõ es em diversas á reas e
na maioria das plataformas.
O interpretador Python e sua extensa biblioteca padrã o
estã o disponíveis na forma de có digo fonte ou biná rio para a
maioria das plataformas a partir do site,
Método bemVindo http://www.python.org/, e podem ser distribuídos
livremente. No mesmo sítio estã o disponíveis distribuiçõ es e
Explicando o có digo, o @RequestMapping diz que quando referências para diversos mó dulos, programas, ferramentas
for requisitada a url /bemvindo, será executado o método e documentaçã o adicional, contribuídos por terceiros.
“bemVindo()” da classe “HelloController”. Mas o que é esse O interpretador Python é facilmente extensível
“Model” e de onde ele vem? Por que ele está ali? O Model nã o é incorporando novas funçõ es e tipos de dados
um parâ metro obrigató rio, e com um pouco mais de implementados em C ou C++ (ou qualquer outra linguagem
experiência verá que muita coisa nã o é. O “Model” vai servir acessível a partir de C). Python também se adequa como
para adicionar atributos para serem usados na tela, nã o se linguagem de extensã o para customizar aplicaçõ es.
preocupe com detalhes, o Spring vai fazer isso por você. Python é uma linguagem de programaçã o interpretada,
Devem ter notado também o “ModelAndView” que está sendo de có digo-fonte aberto e disponível para vá rios sistemas
retornado, ele na verdade vai dizer ao Spring que pá gina ele operacionais. Ser uma linguagem interpretada significa dizer
vai exibir, no caso a “bemvindo.jsp”, mas poderia ser qualquer que ao se escrever um programa, este nã o será compilado
pá gina que você tiver dentro da pasta “WEB-INF/views” que é (traduzido para uma linguagem de má quina), mas sim “lido”
o diretó rio que foi mapeado para conter nossas “views”. por um outro programa (chamado de interpretador) que
traduzirá para a má quina o que seu programa quer dizer. O
interpretador para Python é interativo, ou seja, é possível
executá -lo sem fornecer um script (programa) para ele. Ao Python é extremamente legível. Isso significa que é muito
invés disso, o interpretador disponibilizará uma interface fá cil compreender programas escritos há algum tempo. É
interativa onde é possível inserir os comandos desejados um muito comum que os programas em atividades científicas
por um e ver o efeito de cada um deles. sejam criados a partir da evoluçã o de algoritmos anteriores.
Os objetivos do projeto da linguagem eram: Portanto, é extremamente importante ser capaz de entender o
produtividade e legibilidade. Em outras palavras, Python é que foi feito antes. Uma vez que as palavras-chave da
uma linguagem que foi criada para produzir có digo bom e linguagem Python são voltadas para a estruturaçã o dos
fá cil de manter de maneira rá pida. Entre as características da programas (e nã o para indicar ao computador como compilar
linguagem que ressaltam esses objetivos estã o: ou interpretar trechos de có digo), nã o existem trechos de
- Baixo uso de caracteres especiais, o que torna a có digo que sã o inú teis para o raciocínio.
linguagem muito parecida com pseudo-có digo executá vel; Python tem uma comunidade ativa e vibrante, espalhada
- O uso de identaçã o para marcar blocos; por todo o mundo. E, sendo uma linguagem livre, todos os
- Quase nenhum uso de palavras-chave voltadas para a seus usuá rios estã o dispostos a contribuir. Isso faz com que a
compilação; documentaçã o seja abundante e existam mó dulos para
- Coletor de lixo para gerenciar automaticamente o executar virtualmente qualquer tarefa necessá ria. Isso é
uso da memó ria; importante: nã o há tempo para reinventar a roda, entã o poder
contar com mó dulos prontos é ó timo. Mas, mais que isso, uma
Além disso, Python suporta mú ltiplos paradigmas de vez que os programas em Python sã o distribuídos na forma de
programaçã o. A programaçã o procedimental pode ser usada có digo-fonte, qualquer pessoa pode alterar, corrigir e
para programas simples e rá pidos, mas estruturas de dados melhorar os algoritmos. Isso faz com que os mó dulos sejam
complexas, como tuplas, listas e dicioná rios, estã o disponíveis maduros e seguros, testados contra diversas situaçõ es e
para facilitar o desenvolvimento de algoritmos complexos. diversas vezes. A robustez alcançada é um fator importante.
Grandes projetos podem ser feitos usando técnicas de Python é, além disso, uma linguagem de propó sito geral.
orientaçã o a objetos, que é completamente suportada em Muitas vezes, é necessá rio lidar com tarefas laterais: buscar
Python (inclusive sobrecarga de operadores e herança dados em um banco de dados remoto, ler uma pá gina na
mú ltipla). Um suporte modesto para programação funcional internet, exibir graficamente os resultados, criar uma
existe, o que torna a linguagem extremamente expressiva: é planilha, etc. Linguagens de cunho especificamente científico
fá cil fazer muita coisa com poucas linhas de comando. E têm um sério problema aí, mas, uma vez que Python é
também possui inú meras capacidades de meta-programaçã o: utilizada em praticamente todo tipo de tarefa, encontram-se
técnicas simples para alterar o comportamento de mó dulos prontos para realizar essas tarefas que podem ser
comportamentos da linguagem, permitindo a criaçã o de tornar complicadas. Novamente, é uma preocupaçã o a
linguagens de domínio específico. menos para quem está desenvolvendo aplicaçõ es científicas.
Python tem uma biblioteca padrã o imensa, que contém Por esses e ainda outros motivos, Python tem
classes, métodos e funçõ es para realizar essencialmente conquistado uma grande popularidade entre a comunidade
qualquer tarefa, desde acesso a bancos de dados a interfaces científica. É uma linguagem simples que dá conta do recado e
grá ficas com o usuá rio. E, logicamente, já que esse é o objetivo nã o fica entre o cientista e a resolução do seu problema. Essa
deste grupo, existem muitas ferramentas para lidar com dados frase provavelmente resume todos os motivos necessá rios
científicos. Essa característica da linguagem é comumente para sua utilizaçã o.
chamado baterias inclusas, significando que tudo que você
precisa para rodar um programa está — na maior parte das Obtenção e instalação.
vezes — presente na instalaçã o bá sica. Caso o usuá rio esteja utilizando um sistema Linux ou OS
Por fim, e nã o menos importante, Python é uma linguagem X (Apple), o interpretador para Python já vem instalado por
livre e multiplataforma. Isso significa que os programas padrã o, sendo apenas necessá rio escrever o comando
escritos em uma plataforma serã o executados sem nenhum “python” 2 no seu programa de terminal favorito. Para
problema na maioria das plataformas existentes sem usuá rios do sistema operacional Windows, o interpretador
nenhuma modificaçã o. E, caso a plataforma objetivo nã o tenha para Python deve ser baixado através do site
uma versã o de Python, desenvolvedores têm a liberdade de http://www.python.org e instalado. Neste ú ltimo sistema o
estudar e modificar o có digo da linguagem para fazer com que usuá rio encontra um utilitá rio para fazer o papel de terminal
ela rode onde quer que seja. (e editor de python) no Windows, denominado IDLE.

Por que Python? Variá veis são formas de se armazenar dados para uso
posterior. Estas podem ser classificadas em 3 tipos bá sicos
É fá cil ver que a linguagem tem facilidades incríveis para (existem outros, que serã o abordados mais a frente):
uso geral. A pergunta é: por que Python é a linguagem ideal
para aplicaçõ es científicas? As respostas são muitas, mas - int - Um nú mero inteiro;
podemos resumir algumas aqui. A primeira razão, e - foat - Um ponto futuante; - string - Uma
provavelmente a principal, é: Python é uma linguagem sequência de caracteres.
expressiva, em que é fá cil traduzir o raciocínio em um
algoritmo. Em aplicaçõ es científicas, o raciocínio é Ao contrá rio da maioria das outras linguagens, em
essencialmente complicado — essa é a natureza das ciências. Python, nã o é necessá rio declarar as variá veis que serã o
É um problema adicional para o cientista ter que se preocupar usadas, tampouco definir seu tipo. A pró pria sintaxe do dado
com, além do assunto básico de sua pesquisa, a correçã o do a ser armazenado identifica o tipo da variá vel para
programa em detalhes pouco relevantes: alocação de armazená -lo. Por exemplo, caso desejasse atribuir o valor 3 à
memó ria, gerenciamento de recursos, etc. Python faz isso tudo variá vel A, basta digitar A=3. Python saberá que A é um
automaticamente de maneira muito eficiente, permitindo ao inteiro(tipo “int"). Por outro lado, se o valor a ser
cientista se concentrar exclusivamente no problema sendo armazenado fosse 3,2 que é um dado do tipo “ponto
estudado. flutuante”, este deveria ser expresso como A=3.2. Observe
que, para Python, A=3 e B=3.0 sã o variá veis de tipos
diferentes e isto deve ser levado em conta ao se realizar
certos tipos de manipulaçõ es de dados. Isso nos mostra que uma string segue uma determinada
indexaçã o onde cada caractere assume um endereço que, pode
Strings. ser acessado colocando o nome da variá vel, que contém a
string, e apó s, entre os colchetes, o endereço da célula que
String é um tipo de objeto formado por uma sequência contém o caractere desejado.
imutá vel de caracteres que nos permite trabalhar com textos. Existe também um recurso conhecido como operador %,
Exemplo: que serve para formatar as strings, basicamente são três os
tipos de formataçã o que temos:
>>> a = “Bom Dia”
>>> print a - %s - Serve para substituir string;
Bom Dia - %d - Serve para substituir nú meros inteiros em uma
frase destinada a um print;
Percebemos que elas sã o delimitadas por aspas, podemos - %f - Serve substituir floats (nú meros em aritmética
utilizar tanto aspas duplas como as simples. Se utilizarmos de ponto flutuante).
aspas duplas, como o mostrado no exemplo acima, podemos
usar as simples para aplicaçõ es dentro do texto que estamos
escrevendo, o contrá rio também é verdadeiro.
Exemplo:
Observaçã o:
>>> b = 'O lema do governo JK era:\n “Cinquenta anos em
cinco.” As três formataçõ es acima relacionadas sã o normalmente
>>> print b para aplicaçõ es em uma frase destinada a um print.
Exemplo:
O lema do governo JK era:
“Cinquenta anos em cinco.” >>> compra= 'maçã '
>>> tipo='verde'
No exemplo acima utilizamos um outro artifício para >>> quilos = 1,5
trabalharmos com strings, o \n. Este por sua vez, tem a funçã o >>> print 'Maria comprou %f quilos de %s %s .'
de pular uma linhae escrever o texto, que está depois do \n, %(quilos,compra,tipo)
nessa nova linha. Tanto isso é verdade que no mesmo
exemplo, quando usamos o comando print é mostrada a parte Maria comprou 1,5 quilos de maça verde.
do texto que diz: “Cinquenta anos em cinco.”, impresso na
linha seguinte. Observaçã o:
Outro artifício parecido com \n, é o \t que tem o objetivo
de acrescentar ao texto que vem apó s, um espaço de Com vimos acima o operador % pode ser utilizado para
tabulaçã o. formataçã o de nú meros também.
Há também outra aplicaçã o para as aspas, que consiste na Com ele é possível também determinar a quantidade de
delimitaçã o do texto por três aspas (duplas ou simples). nú meros, apó s a vírgula de um float.
Exemplo: Exemplo:

>>> a = “Quatro times do Rio de Janeiro: >>> num=245.47876749


Botafogo >>> print '%.2f' %(num)
Vasco
Fluminense 245.48
Flamengo”
>>> print a Percebemos que Python fez uma aproximaçã o do nú mero
real, possibilitando que o resultado de uma futura operaçã o
Quatro times do Rio de Janeiro: seja o mais preciso possível.
Botafogo
Vasco Operações matemáticas.
Fluminense Além de ser uma poderosa linguagem de programaçã o,
Flamengo Python sabe lidar bem com matemá tica. Suas capacidades
matemá ticas se extendem desde operaçõ es bá sicas até
Nessa aplicaçã o para as aspas, quando usamos o comando operaçõ es com nú meros complexos.
print, tudo o que estiver entre as três aspas será impresso Abaixo, vamos começar aprendendo as 4 operaçõ es
exatamente da mesma forma como foi escrito. matemá ticas bá sicas. Lembre-se que “>>>” significa a
digitaçã o de um comando no interpretador.
Manipulando Strings.

Pelo fato de uma string ser uma sequência imutá vel, isso Soma:
nos dá a possibilidade de manipularmos essa sequência,
consideremos o exemplo abaixo: >>>2+3
5
>>> a = 'matemà ¡tica'
>>> a[2]+a[-5]+a[-4:] Subtraçã o:
'tá tica'
>>>2-3 6- Utiliza uma linha em branco como definiçã o
-1 de blocos;
7- Fá cil entendimento quanto a projeçã o de:
Multiplicaçã o: construtores, loops, estruturas condicionais e arrays,
dentre outros recursos;
>>>2*3 8- Implementada em C e extensível as suas
6 bibliotecas.

Divisã o: JAVASCRIPT8

>>>2/3 É uma linguagem utilizada principalmente para auxílio de


0 desenvolvimento de pá ginas para a Internet.
JavaScript é a mesma coisa que Java?
Na divisã o, pode-se optar por resultados como nú meros Nã o, JavaScript é mais simples que Java. Aprender
inteiros (ou o inteiro mais pró ximo) ou resultado exato (um JavaScript é o melhor começo se você quer aprender Java, C,
ponto flutuante). Para isso, deve-se fornecer um inteiro C++, PHP, pois a sintaxe (forma de escrever a linguagem) é
(para se obter um inteiro como resultado) ou um ponto semelhante.
flutuante (para se obter o resultado exato). Divisã o: O que posso fazer com o JavaScript?
>>>2.0/3.0 Você pode tornar suas pá ginas mais "inteligentes", com
0.66666666666666663 recursos adicionais como: botõ es que mudam ao passar o
mouse em cima, exibir o horá rio atual, verificar se o
A operação aritmética de potenciaçã o também pode ser preenchimento de um formulá rio está correto, e muito mais! O
feita, assim como a sua inversa, a radiciaçã o. JavaScript pode lhe salvar nas horas em que você menos
Potenciaçã o: espera, pois as possibilidades de utilizaçã o sã o infinitas.

>>> 2**3 Código javascript


Nã o existe um comando específico para a radiciaçã o em Mostrar onde se digita o có digo JavaScript dentro de uma
Python (exceto para a raiz quadrada). Entretanto, para obter a pá gina HTML.
raiz n-ésima de um nú mero basta elevá -lo por 1/n onde “n” é O Có digo JavaScript fica Entre o <script> e o </script>.
o índice da raiz. As regras para a obtençã o de nú meros Ficaremos com a seguinte estrutura:
inteiros ou pontos flututante também se aplicam a este caso. <html>
Radiciação: <body>

>>>8**(1.0/3.0) <script>
2.0
8 alert("Minha primeira mensagem!")

Questã o: </script>

(TRE-CE - Técnico Judiciário - Programação de </body>


Sistemas – FCC). Sobre Python é correto afirmar: </html>
Eis nosso primeiro có digo. Vamos analisá -lo?
(A) É uma linguagem compilada, ou seja, o có digo-fonte Entendendo o có digo:
de um programa é lido pelo compilador, que cria um arquivo
biná rio, executá vel diretamente pelo hardware. alert("Minha primeira mensagem!")
(B) É uma linguagem fortemente tipada, ou seja, é Exibe uma janela com a frase Minha primeira mensagem!
preciso declarar variá veis e seus tipos. com apenas um botã o de OK. Teste você mesmo, crie um
(C) Suporta funcionalidades comuns na orientaçã o a arquivo com extensã o .htm e execute.
objetos: herança, herança mú ltipla, polimorfismo, reflexã o e
introspecçã o. Há mais três diferentes maneiras de colocar o có digo
(D) Uma lista em Python é um conjunto de valores JavaScript na pá gina, mas iremos utilizar o método acima em
acessados por um índice numérico, inteiro, começando em 1. nosso tutorial.
Assim como em outras linguagens, a lista pode armazenar
apenas valores de um mesmo tipo Exemplo básico, manipulação de variável
(E) Uma String Python á uma sequência imutá vel, Fazer aparecer na tela o resultado de um cá lculo.
alocada estaticamente, com restriçã o de tamanho.
<html>
Resposta: C. <body>

Quanto ao Phyton: <script>

1- Suporta manipulação de exceçõ es; a=2b


2 - Eficiente gerenciamento de memó ria; =9
3 - É uma linguagem interpretada; c=a+
4- Free; b
5- Traz consigo inú meras bibliotecas, além de
possibilitar integraçã o com outras; 8 Fonte: http://www.javascript-tutorial.com.br/
alert(c) Abre o bloco de có digo. Este é conjunto de operaçõ es que
se deseja realizar. Reforçando, só estaremos executando esta
</script> parte se a condicional for verdadeira.

</body> if (bananas == 6)
</html> {
Temos aqui manipulaçã o de variá veis, assim como na alert("É verdade. Temos meia dú zia de bananas")
matemá tica tradicional. Entendendo o có digo: }
a=2 Nos mostra uma janelinha de aviso o seguinte texto: É
Faz com que a variá vel a receba o nú mero 2. verdade. Temos meia dú zia de bananas

b=9 if (bananas == 6)
Faz com que a variá vel b receba o nú mero 9. {
c =a+b alert("É verdade. Temos meia dú zia de bananas")
Faz com que a variá vel c receba o resultado de a + b. }
Fecha o conjunto de operaçõ es.
alert(c) Você pode fazer experimentos, trocando o "bananas = 6"
Faz com que uma janela exiba o conteú do da variá vel c. por "bananas = 10" ou qualquer outro valor que nã o seja 6. Já
Note que nã o usamos aspas na frente e atrá s do c porque que a condicional nã o vai
estamos consultando o valor de uma variá vel. Se ser verdadeira, ele simplesmente nã o
colocá ssemos aspas, ele iria mostrar apenas a letra c, entra no bloco do có digo que faz o alert("É verdade. Temos
literalmente. meia dú zia de bananas").

Expressões condicionais if Expressões condicionais if else


Implementar o uso de expressõ es condicionais Utilizar o else, quando o if nã o for verdadeiro

<html> <html>
<body> <body>

<script> <script>
bananas = 22
bananas = 6
if (bananas == 6)
if (bananas == 6) {
{ alert("É verdade. Temos meia dú zia de bananas")
alert("É verdade. Temos meia dú zia de bananas") }
} else
{
</script> alert("Nã o é verdade. Temos outra quantidade de
bananas")
</body> }
</html>
O if é a mais bá sica das expressõ es condicionais no </script>
JavaScript. Com ele, você pode decidir se quer executar uma
açã o ou nã o. Entendendo o có digo: </body>
bananas = 6 </html>
Faz com que a variá vel "bananas" receba o nú mero 6. Neste exemplo estamos utilizando o if else.
Leia-se: Se (if) o nú mero de bananas for igual a 6, faça
if (bananas == 6) alert("É verdade. Temos meia dú zia de bananas"). Senã o
{ (else), faça alert("Nã o é verdade. Temos outra quantidade de
alert("É verdade. Temos meia dú zia de bananas") bananas").
}
O trecho acima é uma expressã o condicional if. Expressões condicionais if else encadeadas
Demonstrar o uso encadeado do if else
Vamos analisar: if
(bananas == 6) <html>
{ <body>
alert("É verdade. Temos meia dú zia de bananas")
} <script>
Esta é a expressã o condicional. Se ela for verdadeira (no
caso, se bananas for igual a seis), entraremos no bloco de bananas = 22
có digo. A seguir, temos a estrutura de um bloco de có digo.
if (bananas == 6)
if (bananas == 6) {
{ alert("Temos seis de bananas")
alert("É verdade. Temos meia dú zia de bananas") }
} else if (bananas == 10)
{ alert("Vogal")
alert("Temos dez bananas") break
} default:
else alert("Outro caracter")
{ }
alert("Temos outra quantidade de bananas")
}

</script> </script>

</body> </body>
</html> </html>
No exemplo acima, cairemos em "Temos outra Ilustramos acima o porquê do uso (ou desuso) do break.
quantidade de bananas". Experimente trocar o valor de
bananas (para seis ou para dez) para cair nas outras Expressões de loops for
condiçõ es. Usa-se o for quando se quer que um trecho de có digo se
repita n vezes.
Expressões seletoras switch
Usar o switch para condiçõ es de comparaçõ es simples, ao <html>
invés de utilizar o if <body>

<html> <script>
<body>
a=2
<script>
for (i = 0; i < 2; i++)
farol = "amarelo" {
a=i
switch (farol) { }
case
"vermelho": alert(a)
alert("Pare")
break </script>
case "amarelo":
alert("Atencao") </body>
break </html>
case "verde": A novidade é a linha de có digo acima mostrada em
alert("Prossiga") vermelho. Vamos analizá -la.
break
default: for (i = 0; i < 2; i++)
alert("Cor ilegal") Utilizamos uma variá vel temporá ria chamada i.
} Inicializamos ela com valor igual a zero.

</script> for (i = 0; i < 2; i++)


O bloco do meio funciona como um if. Se o valor de i for
</body> menor que 2, ele entra no loop.
</html>
Atençã o, nã o esqueça do break! for (i = 0; i < 2; i++)
Sempre inclua um default. Se todas as condiçõ es anteriores A ú ltima parte diz o que fazer com a variá vel i. Neste caso
forem falsas, o switch entrará nodefault. Ele é muito a cada repetiçã o, estamos incrementando o valor de i. Se nã o
importante. O sistema de telefonia dos Estados Unidos já foi fizéssemos isto, a condiçã o anterior (i < 2) sempre seria
uma vez paralisada por vá rias horas por causa da falta de um verdadeira, e entraríamos em um loop infinito, pois o valor
default! de i sempre seria menor que dois.
Agrupando condiçõ es:
<html> Expressões de loops while
<body> Usa-se o while quando se quer que um trecho de có digo se
repita n vezes, com condicional bem simples.
<script>
<html>
letra = "e" <body>

switch (letra) { <script>


case "a":
case "e": numero = 0
case "i":
case "o": while (numero < 10)
case "u":
{ ECMAScript 69.
numero++
} - O que é?

alert(numero) ES6, ECMAScript 6 ou ES2015, é simplesmente a mais nova


versã o do JavaScript.
</script> O nome mais utilizado atualmente é ES2015. A ideia do
comitê responsá vel (conhecido como TC39) pelas atualizaçõ es
</body> da linguagem é justamente fazer um release anual.
</html> O ECMAScript (ES) é a especificaçã o da linguagem de
Enquanto a condiçã o for verdadeira, o bloco será script que o JavaScript implementa, ou seja, é a descrição
executado. Note que dentro do bloco estamos executando formal e estruturada de uma linguagem de script, sendo
um có digo que fará a condiçã o ser falsa depois de algumas padronizada pela Ecma International – associaçã o criada em
repetiçõ es. Se não fizéssemos a condiçã o ficar falsa, ele 1961 dedicada à padronizaçã o de sistemas de informaçã o e
entraria no que chamamos de loop infinito, o que nã o é nada comunicaçã o – na especificaçã o ECMA-262. No dia 17 de junho
bom. de 2015, foi definida a sexta ediçã o da especificaçã o, a ES6
(também chamada de ECMAScript 2015).
Expressões de loops do while Diferentemente das ediçõ es anteriores, o ES6 trouxe a
Usa-se o do while quando se quer que um trecho de maior mudança para a linguagem JavaScript desde a sua
có digo se repita n vezes, mas executa o bloco de có digo antes criaçã o, há 20 anos.
da verificaçã o da condiçã o.
ECMAScript x JavaScript x ES.
<html>
<body> Uma dú vida bem comum é o porquê dessa mudança do
nome.
<script> Na verdade nã o houve nenhuma mudança: JavaScript é
como nó s chamamos a linguagem, só que esse nome é um
numero = 0 trademark da Oracle (que veio apó s a compra da Sun). O nome
oficial da linguagem é ECMAScript. E ES é simplesmente uma
do abreviaçã o do mesmo.
{
numero++ OBJETIVOS DO ES6.
}
while (numero < 10) O principal objetivo da nova versã o especificaçã o foi
tornar a linguagem mais flexível, enxuta e fá cil de se aprender
alert(numero) e trabalhar, tornando-a mais pró xima a outras linguagens
orientadas a objeto, como Java e Python.
</script> O TC39 focou em alguns objetivos no desenvolvimento do
ES6:
</body>
- Ser uma linguagem melhor para construir aplicaçõ es
</html>
complexas.
A diferença de ter um do na frente é que o có digo será
- Resolver problemas antigos do JavaScript.
executado antes da condição ser verificada. Execute exemplo e
verifique se o resultado é diferente do while normal. - Facilidade no desenvolvimento de libraries.
Esses objetivos ficarã o mais claros quando olharmos na
prá tica as features do ES6.

PRINCIPAIS MUDANÇAS10.

Dentre as principais mudanças, temos:

- Criaçã o de novos tipos de dados (Map, WeakMap,


Set, WeakSet).
- Novas maneiras de iterar objetos e coleçõ es.
- Declaraçã o de variá veis com let e const.
- Modularização e estrutura de classes.
- Geradores e símbolos.
- Operadores rest e spread.

A grande maioria dos browsers ainda nã o dã o suporte ao


ES6, entã o o que pode-se fazer para contornar essa limitaçã o é
usar um transpiler, como exemplo, o Babel.
O Babel transforma o có digo de ES6 para ES5 (versã o que
a maioria dos browsers dá suporte hoje).
9 Fonte: https://medium.com/@matheusml/o-guia-do-es6-tudo-quevoc
%C3%AA-precisa-saber-8c287876325f
10 Fonte: https://imasters.com.br/front-end/javascript/o-ecmascript-6-e-o-
futurodo-javascript/?trace=1519021197&source=single
aplicaçõ es reais, mas apenas uma forma rá pida de se
TRANSPILANDO ES6 PARA ES5. demonstrar a utilidade de transpilers.
- default parameters.
Vamos começar um projeto simples para demonstrar o uso
do Babel: Os parâ metros de funçõ es tem undefined como valor
default. Porém, em alguns casos, pode ser necessá rio utilizar
um outro valor. Com a versã o atual do JavaScript (ES5) nó s já
podemos fazer isso dessa forma:
bloco:

Inicie o npm com:

Aceite todas as opçõ es e agora entre com o comando: O ES6 introduziu uma nova forma, bem mais simples, de se
fazer isso. Basta adicionar o valor default na definiçã o do
parâ metro desejado:

Abra o index.js para escrever có digo em ES6:

Ou entã o, com apenas uma linha:

O Babel por si só nã o sabe como transpilar o có digo. Por


isso ele precisa de alguns plugins.
Alterando o .babelrc para informar ao Babel qual plugin
estamos utilizando para fazer a conversã o de que precisamos.
Como iremos usar o ES2015, o .babelrc deverá ficar assim:

- rest parameters.

Na versã o atual do JavaScript podemos utilizar o objeto


arguments para pegar todos os parâ metros de uma funçã o:
Insira o comando abaixo para que o transpile seja
concluído.

O comando pode ser traduzido da seguinte forma: Babel,


pegue o arquivo index.js e gere um output com o nome
script.js. Abrindo o novo arquivo (script.js) que foi gerado, O arguments, porém, apresenta alguns problemas:
ficará assim:
- O objeto parece com um array, mas nã o é exatamente
um.
- Todos os parâ metros da função sã o automaticamente
atribuídos ao arguments. Nã o temos uma forma clara de
diferenciar os parâ metros.

Portanto, foi gerado um arquivo ES5 a partir de um ES6. Com esses problemas em mente, os Rest Parameters foram
Obviamente o que foi feito acima nã o é recomendado para adicionados no ES6. O mesmo exemplo da soma poderia ser
reescrito dessa forma:

NOVIDADES DO ES6.

1. Declaração de Variáveis.
- var x let.
A diferença principal entre
o var e o let é que enquanto o
primeiro tem escopo de função, o segundo possui escopo de
Dessa
Um outro exemplo de coisas inesperadas que acontecem e um me
quando usamos o var: ainda ma
Ou dessa forma mais funcional:

Com f
Em resumo, let conserta o antigo problema causado pelo Imaginando o mesmo problema da soma, só que o primeiro return e a
hoisting fazendo com que
a declaração de variáveis funcione parâmetro seria de onde a soma começaria e os próximos Mas o
da forma esperada pela maioria dos desenvolvedores. parâmetros seriam os números a serem somados: na expres
da lingua
No ex
- let x const. utilizado

Const funciona de forma semelhante. A única diferença é


que as variáveis criadas não podem ser reatribuídas:

Uma
usando o
Com a
É comum achar que const deixa avel
variá
imutável, assim funcionar
como algumas libs como ImmutableJS. Isso não é verdade. As
propriedades de um objeto, por exemplo, podem ser alteradas: Ou então:

- dest

PROGRAMAÇÃO FUNCIONAL. Uma


objetos e
Deve-se declarar todas as variáveis com const e quando a
- arrow functions. forma:
variável precisa ser reatribuída, somente nessearcaso,
o let.us
Não usar o var (praticamente) nunca.
As arrow functions são excelentes syntax sugar na criação
2. Parâmetro de Funções. de funções. Uma função que seria escrita dessa forma em ES5:

Algumas pequenas alterações foram adicionadas em


relação a parametrização de funções. Apesar dessas mudanças
serem pequenas, elas trazem enormes benefícios.
E com

Pode ser escrita dessa forma em ES6 com o uso das arrow
functions:
Com objetos ela Vamos pensar em um
funciona desse jeito: caso em que além de
um nome, um
Animal também terá um
novo comportamento:
emitir um som.
Podemos utilizar o E para importar esse
conceito de herança com o mó dulo em outro arquivo
extends e implementar também é simples:
dessa forma:

Provavelmente, o uso
mais comum vai ser no
import de libs. Termos o
poder de transformar
Com mú ltiplas funçõ es
isso:
é bem semelhante:

O método constructor
tem como tarefa fazer a
inicializaçã o da instâ ncia.
Ele é chamado
automaticamente na
criaçã o da mesma e
Nisso:
garante que ela esteja em
um estado vá lido.

- getters/setters.
Como getters e setters
sã o muito comuns na E para importar:
utilização de classes, o ES6
veio com um syntax sugar
para lidar com os mesmos.
A funçã o destructuring Entã o podemos
é muito semelhante ao reescrever o exemplo MÓDULOS.
pattern matching, que é anterior dessa forma
uma das bases das melhorada: Um dos grandes
linguagens funcionais.
problemas do JavaScript Podemos também
era nã o ter um sistema importar o mó dulo
ORIENTAÇÃO A
built-in de mó dulos assim completo:
OBJETOS.
como a maioria das
Vamos falar agora
linguagens possui.
sobre a feature mais
Dessa ausência
polêmica do ES6: classes.
surgiram algumas
possíveis soluçõ es como
- Classes. CommonJS e AMD.
Classes nos dã o uma
- classes.
sintaxe amigá vel que
- ES6 Modules. Para importar e
definem o estado e o
exportar classes também
comportamento de
A importâ ncia dos nã o há muitas mudanças,
objetos que representam
mó dulos está em basta criar uma classe
as abstraçõ es que usamos
organizar o sistema, com o export na frente:
diariamente.
aumentar o reuso e
diminuir a complexidade
- constructor.
A principal funçã o dos de cada pequeno trecho
Por exemplo, se do seu code base.
getters/setters é proteger
necessitarmos de uma
os dados internos das
abstraçã o para animais
instâ ncias de um objeto. - export/import.
em que cada animal
O underscore aparece Exportar mó dulos é
possui um nome,
antes da propriedade bem simples. Apó s
poderíamos implementar
name porque isso é uma criarmos uma funçã o
dessa forma:
convençã o a qual indica podemos simplesmente
que essa variá vel deve ser adicionar a palavra export
mantida privada. antes da definiçã o da
- herança. mesma:
Agora podemos
importá -la assim:
Q verdadeiro caso os I
u operandos sejam n
e iguais e do mesmo c
st tipo. o
õ 4.Introduzido em r
e ECMAScript 6, objetos r
- default.
s Proxy permitem que e
se interceptem t
É comum termos a a
1. (ITAIPU determinadas
necessidade de exportar .
BINACIONAL - operaçõ es e
apenas uma funçã o/classe
Profissional de Nível personalize o
por arquivo. Nesse -
Superior Jr - comportamento da
cená rio podemos utilizar a
UFPR/2017). A respeito funçã o.
exportação default: V
do JavaScript, considere as 5.O uso da sintaxe
seguintes afirmativas: ${expressão} em a
literais string é r
1.As palavras denominada Template .
reservadas var, let, Strings. A interpolaçã o
const e globals sã o ocorre em textos
utilizadas para delimitados por aspas Até a versã o anterior
declaraçã o de duplas (“). do JavaScript, a ES5,
Uma das vantagens é
variá veis. declará vamos variá veis
que o cliente (quem faz o
2.É uma linguagem Assinale a alternativa através da palavra-chave
import) é que vai setar o
de script correta. var, que eram chamadas
nome do mó dulo como
multiparadigma, de variá veis de escopo de
bem quiser:
baseada em protó tipo, (A) Somente a funçõ es. O escopo do
e suporta estilos de afirmativa 1 é JavaScript é dado por
programaçã o verdadeira. funçõ es e não por blocos e
orientada a objetos, (B) Somente as a palavra-chave var
imperativo e afirmativas 1, 4 e 5 garantia a variá vel dentro
funcional. sã o verdadeiras. (C) de todo o escopo de onde
3.O operador === Somente as ela foi declarada, ou seja,
(três símbolos de afirmativas 2, 3 e 4 poderia ser acessada de
igual) retorna sã o verdadeiras. qualquer ponto dentro do
(D) Somente as nosso có digo. Agora que já
afirmativas 2, 3 e 5 sabemos como funciona a
sã o verdadeiras. declaraçã o de variá veis
(E) As afirmativas 1, 2, com var, vamos ver em
3, 4 e 5 são có digo:
verdadeiras. foi declarada dentro da
função e é acessada de
2. (UNIPAMPA - dentro do bloco if, mas
Programador Visual – tenha cuidado, isso só é
CESPE). Com referência a possível se o bloco estiver
Executando o código acima a saída undefined
é: ! O escopo
JavaScript, julgue os itens dentro da mesma função
de varnão é de função? Sim! Isso mesmo.
Undefinednão quer
seguintes. da qual foi a variá vel foi
dizer que a variável não existe,asmsim que ela não possui
declarada.
nenhum valor e como a atribuição de valor depende do
resultado de uma condição e esta, por sua vez, é falsa, a ECMAScript é
atribuição não chega a acontecer, mas a engine JavaScript sabe considerada uma - Const.
que em algum ponto do código foi definida uma variável
x. versã o anterior do
Vejamos um outro exemplo: JavaScript. Além de let a ES6
( ) Certo trouxe também a palavra-
( ) Errado chave const. Esta é usada
para declarar variá veis
R read-only, isto é, a
e variá vel nã o pode ter seu
s valor reatribuido, ou seja,
p seu estado é imutá vel.
o Assim como let variá veis
st do tipo const também são
a variá veis de escopo de
s: bloco. A const veio para
prover uma proteção
1. Resposta: C. nativa para constantes,
pois, antes disso era
utilizada a seguinte
1
convençã o var const_var =
.
123., mas isso nã o era

No código acima, podemos ver que a variável


c é acessível
a, declarada fora da função foi acessada dentro
bar().de

- Let.

Quando a ES6 foi lançada, trouxe consigo diversas features


e dentre elas a palavra -chavelet, que é usada para declarar
garantia
variáveisde
com que esse de
escopo valor
bloco. Seu comportamento é idêntico SCALA11. inclusive os tipos bá sicos,
nã o quando
a var seria mudado
declarada fora no de uma função, ou seja, ela fica como Integers e Floats, e
decorrer
acessível nodoescopo
programa.
global. Mas quando declarada
dentro de A Linguagem Scala até funçõ es.
Apó s a introduçã
qualquer bloco seja ele o umade função,if ou
umumloop, ela fica (Scalabel Language) é uma
const, podemos
acessível declarar
apenas dentro do bloco (e-blocos)
sub do qual foi linguagem de A linguagem Scala está
constantes const reescrever
declarada. Vamos variavel o mesmo exemplo anterior, só programaçã o de propó sito sendo usada em diversas
=que
“valor”;
agoraeusando
assimkeyatemos
let: a geral baseado em dois empresas, como por
certeza de que esse será paradigmas: o orientado a exemplo, o Twitter, o
seu ú nico e imutá vel valor. objetos e funcional. Ela é GitHub e o FourSquare, e
2. Resposta: Errado. fortemente baseada no em diversos projetos
2. Correta. Java, mas inclui uma série OpenSource famosos,
3. Correta. ECMAScript é uma de requisitos, como por exemplo, o
especificaçã o formal de principalmente retirados Apache Spark.
4. Correta. uma linguagem de script. de linguagens funcionais,
Javascript é a para deixar o Instalando e Rodando
5. Incorreta. implementaçã o mais desenvolvimento de o Scala.
popular do ECMAScript. aplicaçõ es mais simples
Template strings com Outro exemplos sã o do que em Java. Scala roda Para utilizar a
marcaçõ es (ou
No código tags)
acima, são a e b ActionScript
as variáveis e JScript.
tem seus valores na má quina virtual Java, e linguagem Scala, é
escritos
funçõ es naque
consolerecebem
corretamente,cmas não. Isso se dá pois isso traz a vantagem de necessá rio ter instalado a
estamos tentando
argumentos acessar uma váriavel fora do bloco do qual
de maneira permitir o uso de classes e JDK, se você utilizar uma
ela pertence.
especial. NasMesmo ifosendo
funçõ es declarado dentro da função métodos Java em um IDE Scala, nada precisa ser
bar()a variávelc só é estamos
normais acessível dentro dele mesmo. ntrário
O co programa Scala, e vice e feito, caso deseje
é permitido,aconforme
habituados uma sintaxe podemos observar com abvariável
que versa. desenvolver diretamente
minhaFn(a, b, c); e depois, Outras características em um editor de texto e
dentro da funçã o, da linguagem Scala compilar os programas
recebemos os argumentos sã o: em console, é necessá rio
que essas variá veis instalar e configurar
tinham no momento de - Inferência de corretamente o
invocar a funçã o. Ou seja: Tipos: Em Scala nã o compilador Scala, que
precisamos declarar pode ser baixado no site
explicitamente o tipo das oficial.
variá veis, pois o pró prio Exemplos da
compilador infere os tipos utilização de Scala.
no momento do uso delas,
o que traz grande Para mostrar as
flexibilidade na principais características
programaçã o; da linguagem Scala serã o
- Pattern exibidos diversos
Matching: Funciona mais exemplos de có digo. A
ou menos como um Listagem 1 mostra o Hello
Com tagged template Switch/Case, mas é muito World em Scala, onde é
string os argumentos são mais poderoso, possível perceber que o
distribuidos desta forma: permitindo a comparaçã o có digo é bastante
utilizando expressõ es parecido com o Java. Veja
O primeiro argumento regulares; que primeiro é definido
é uma array, com o texto - Traits: É um um object, e dentro deste
da template string, e o conceito de vá rias existe o método main, que
segundo argumento e linguagens de apenas chama a funçã o
seguintes sã o as programaçã o OO, que foi print, passando como
interpolaçõ es que a string adicionado em Scala parâ metro a String “Hello
recebeu. também, e é mais ou World!”. Uma diferença do
menos como uma Scala para o Java é que no
O que são interface Java, mas que Scala o ponto e vírgula ao
interpolaçõ es? permite que os métodos final da linha nã o é
sejam implementados, e obrigató rio.
No caso desta nã o apenas declarados;
template string `Olá $ - Funções de Alta Listagem 1.
{nome}! Como está s?`, a Ordem: Em Scala funçõ es HelloWorld em Scala.
variá vel nome faz uma sã o objetos, por isso
interpolaçã o à string, e podemos utilizá -las de package main
será passada ao muitas formas, como por
argumento 1 da funçã o, e exemplo, passá -las como
o resto do texto será object Main {
parâ metros para outras
passado em pedaços ao funçõ es.
argumento 0 da funçã o. def
- Objetos: Em main(args:Array[Strin
Scala tudo é um objeto, g]) {
Exemplo:
11 https://www.devmedia.com.br/
print("Hello { ( as variá veis declaradas
World!") n como final em Java.
} v u Sempre que possível, é
} a m melhor utilizar objetos
r 1 imutá veis, pois eles
A Listagem 2 mostra permitem utilizar ao
um exemplo de declaraçã o n + má ximo as capacidades de
de variá veis em Scala. u execução paralela do
Como podemos observar, m n Scala. A Listagem 3 mostra
é utilizada a palavra 1 u um exemplo da utilização
reservada “var” para isso, m dessas variá veis.
e nã o colocamos o tipo nas = 2
variá veis, pois os tipos ) Listagem 3. Declaraçã o
serã o definidos pelo 5 ) de objetos imutá veis.
compilador. Qualquer tipo
de variá vel é declarado v v package main
com o var, mesmo a a
r r
variá veis em que os object Main6 {
valores sã o passados
n s
diretamente, como por
u
exemplo, as variá veis d
m =
num1 e num2, que são do e
2
tipo inteiro, e a variá vel f
n
texto, que é do tipo String.
= e
Para as instâ ncias que são m
w
criadas com o construtor, 1 a
como por exemplo, a 0 S i
variá vel texto que é do t n
tipo StringBuffer também v r (
usamos o “var”. a i a
r n r
Listagem 2. Declaraçã o g g
de variá veis em Scala. t B s
e u :
package main x f A
t f r
object Main { o e r
r a
= y
s [
d
" . S
e
A a t
f
p r
s p i
m
o e n
a
m n g
i
a d ]
n
( )
(
a é "
: O {
r
g l
" á v
s
! a
:
p " l
A
r r )
i ; n
r
n u
a
t s.append("Vamos m
y
l aprender Scala?") 1
[
S n println(s);
( =
t
r t }
e 5
i }
n x
t v
g Em Scala existe
o a
] também a declaraçã o de l
) valores fixos, ou objetos
+ imutá veis, que sã o como n
u O que o método faz é def
m simplesmente executar a multiplicacao(x:Int, def
2 funçã o recebida como y:Int) : Int = { main(args:
parâ metro para os outros Array[String]
= dois parâ metros passados x )
para a funçã o. { println("
1 * Realiza as
0 Listagem 4. Passando operaçõ es
funçõ es como y matemá ticas:
v parâ metros. ")
a }
l package main fazConta(so
ma, 5, 3);
t fazConta(mu
object Main {
e d ltiplicacao,
x e 5,3);
def
t f fazConta(div
o fazConta(callback:
(Int,Int) => Int, x:Int, isao, 5,3);
y:Int) d fazConta(subtracao
= i , 5,3);
{ println(callback(
x, y)) v }
" i }
A }
s
a Note que a declaraçã o
s o
d de uma funçã o em Scala
o (
e tem algumas diferenças
m x
f relevantes em relaçã o ao
a : Java. Primeiro é utilizada a
I palavra reservada def e
é s
n depois é definido o nome
: o t da função, os parâ metros
m ,
" a e, por fim, o tipo do
( retorno da funçã o. Note
y também que em Scala,
println(texto + x :
(num1 + num2)) : apesar de permitido, não é
I preciso colocar o return,
} n
} I pois é assumido que o
t valor do ú ltimo comando
Veja que o uso é n )
parecido com o exemplo t da funçã o é utilizado para
anterior, mas a diferença é , retorno. Caso seja
:
que, ao invés de var, a desejado que a funçã o nã o
palavra reservada usada y retorne nada, é utilizado o
I
para essa declaraçã o é o : tipo Unit na declaraçã o do
n
val. Se o programador retorno da funçã o.
t
tentar alterar o valor de I O exemplo da
um objeto declarado como n Listagem 4 demonstrou
=
val, dará um erro de t uma grande vantagem da
compilação. { linguagem Scala, que é a
Uma das maiores ) passagem de funçõ es
diferenças do Scala em : x como parâ metro, mas a
relaçã o ao Java, é na forma quantidade de có digo
em que funçõ es podem ser I * necessá rio para escrever o
usadas, pois em Scala n programa nã o foi muito
funçõ es sã o objetos e, por t y diferente do que seria
isso, elas podem ser necessá rio em Java.
utilizadas de muitas = } Porém, em Scala, é
formas, como por possível utilizar as
exemplo, serem passadas { def subtracao(x:Int, funçõ es Anô nimas
como parâ metros em y:Int) : Int = { (atualmente o Java
outras funçõ es, x também permite isso com
permitindo uma grande x as expressõ es Lambda). A
flexibilidade no có digo. Na + Listagem 5 mostra o
Listagem 4 é mostrado um * mesmo exemplo, mas
exemplo onde é criada y agora as funçõ es soma e
uma funçã o chamada y mult, ao invés de serem
fazConta, que recebe como } funçõ es normais, sã o
parâ metro uma função e } funçõ es definidas
dois parâ metros inteiros. diretamente na chamada
do método fazConta e, depois o símbolo => são n }
com isso, nã o é necessá rio utilizados para as funçõ es i }
declarar as funçõ es. anô nimas. Caso a função t
tenha apenas uma linha, Depois, apenas para
Listagem 5. Funçõ es basta escrever o có digo = mostrar que existem já
Anô nimas. diretamente, caso alguns métodos
contrá rio, podem ser { implementados pela
package main utilizadas chaves para a pró pria API da linguagem
criação de um bloco de f Scala, foi utilizado o
object Main2 { có digo. Note que mesmo o método filter, que já existe
def utilizando funçõ es r no tipo list. Esse método
fazConta(callback: anô nimas, a declaraçã o do espera como parâ metro
(Int, Int) => Int, x: Int, parâ metro na funçã o ( uma funçã o (pode ser
y: Int) fazConta e a funçã o x anô nima ou nã o), e ele vai
{ println(callback(x passada como parâ metro retornar uma lista com
, y)) na chamada do método < apenas os valores que
} tem a mesma estrutura, - respeitem a condiçã o
nú mero de parâ metros e passada na funçã o como
d tipo de retorno. a parâ metro. Apenas como
ef Funçõ es anô nimas sã o L exemplo, nesse mesmo
con muito utilizadas para i có digo é utilizado o
taU trabalhar com coleçõ es de s método finterNot, que faz
mD dados e para realizar t exatamente o contrá rio do
ez(f diferentes operaçõ es ) método filter, pois ele
: nessas coleçõ es, como por filtra apenas os elementos
(Int exemplo, filtragem e { que nã o respeitam a
) => mapeamento dos dados. A condiçã o passada na
Unit Listagem 6 mostra funçõ es printFunction(x) funçã o.
) { anô nimas utilizadas com } Vejam que a funçã o
for coleçõ es de dados, onde } passada como parâ metro,
(i <- primeiro é definida a def main(args: tanto para o método filter
1 to funçã o printList, que Array[String]) { como para o método
10) recebe como parâ metro filterNot, deve ser na
f(i) uma funçã o e uma lista de val listaIdade = forma Int => Boolean.
} inteiros. No main, a List(5, 22, 15, 27, 7) O Scala também é uma
def main(args: primeira coisa é a println("Escreve as linguagem orientada a
Array[String]) { definiçã o da lista com idades") objetos, por isso, ela
algumas idades, depois há printList(x => permite a criaçã o de
duas chamadas para o println(x), listaIdade) classes, com todos os
println("Re método printList: uma que conceitos de orientaçã o a
aliza as apenas imprime as idades, println("Escreve o objetos, como herança,
operaçõ es e outra que imprime as dobro das idades") polimorfismo e associaçã o
matemá tica idades multiplicadas por printList(x => entre classes. Para
s") dois. println(x * 2), exemplificar o uso de
fazConta((x, listaIdade) classes em Scala, a
y) => x + y, Listagem 6. Funçõ es Listagem 7 apresenta a
5, 6) anô nimas com println("Fi classe Conta criada com os
fazConta((x, coleçõ es de dados ltra Idades atributos numAgencia,
y) => x * y, maiores que numConta e saldo, e os
5, 3); package main 10") val métodos saque, deposito e
fazConta((x, y) => x listaFiltrada = toString.
/ y, 5, 3); object Main8 { listaIdade.filt
fazConta((x, y) => x er(x => x > Listagem 7. Definindo
- y, 5, 3); def 10) uma classe em Scala
printList(printFunction: printList(x =>
println("Conta até (Int) => println(x), package classes
10") Unit, aList: listaFiltrada)
contaUmDez(i => List class
println(i)) [ println("Filtra Conta(nAgencia:String
} I Idades nã o sejam , nConta:String,
} n menores que 10") s:Float) {
A sintaxe para a t val listaFiltrada2 =
utilizaçã o de funçõ es ] listaIdade.filterNot (x va
anô nimas é bastante ) => x < 10) r
simples: inicialmente são printList(x => num
colocados os parâ metros : println(x), Agen
da função. Como no listaFiltrada2) cia:S
exemplo, o val1 e val2, e U tring
= = é equivalente ao void do [
nAge 0 Java, isto é, a funçã o que S
ncia ) retorna Unit nã o retorna t
var { nada. r
num s Utilizar uma classe i
Cont a para criar objetos é n
a:Str l bastante fá cil em Scala, g
ing = d nã o há nenhuma grande ]
nCo o diferença em relaçã o ao )
nta = Java. A Listagem 8 mostra
var saldo:Float = s s um exemplo da utilizaçã o {
a da classe Conta criada no
def l exemplo anterior. Nesse
depos d có digo apenas sã o criados val conta = new
ito(va o dois objetos do tipo Conta: Conta("12343",
lor:Fl - um na variá vel conta e o "234543", 1000)
oat): v outro na variá vel conta2. println("Saque de 500
Unit = a Verifique que conta e reais")
l conta2 sã o declaradas println(conta.saque(5
{ s
o como val, o que impede 00)) println("Deposito
aldo =
r que sejam instanciadas de 1000 reais")
saldo
return true novas contas nessas conta.deposito(100
+
valor variá veis. 0)
} println(conta)
}
Listagem 8. Criando
f val conta2 = new
objetos de uma Classe
a Conta("4567",
d Scala
l "1234432", 1000)
e
s
f package main
e println("Saque
s
a import classes.Conta de 1500 reais")
q } println(conta2.
u saque(1500))
e override def println("Depos
o
( toString(): String = ito de 1000
b
v "(Agencia:" + reais")
j
a numAgencia + ", conta2.deposit
e
l Conta: " + numConta + o(1000)
c
o ", println(conta2)
t
r: Saldo: " + saldo + ")";
F M
l } }
a
o }
i
a A definiçã o da classe n
t nã o é muito diferente da O conceito de Pattern
3
): forma que é feita em Java, Matching é uma forma de
B pois a principal diferença fazer comparaçõ es e
{
o é que a classe aceita decisõ es em Scala de
o parâ metros, como é forma muito mais
d
l possível verificar logo na poderosa e simples do que
e
e linha da declaração. Esses utilizando os comandos
a f
parâ metros devem ser Switch/Case. A Listagem 9
n passados no momento da apresenta um primeiro
= m
criação das instâ ncias da a exemplo de Pattern
{ classe, substituindo o i Matching ainda bastante
if construtor. Outra n simples. Nesse exemplo é
( diferença interessante ( passado um nú mero
s entre Java e Scala nesse a inteiro como parâ metro
a có digo é o método saque, r para a funçã o, e com a
l que retorna um tipo g palavra reservada case,
d Boolean, entã o no ú ltimo s sã o definidas as
o comando dele basta : possibilidades para o
-
colocar false como ú ltima nú mero passado como
v
instruçã o de um bloco, e A parâ metro. A ú ltima opçã o
a
isso automaticamente r utiliza um underline, que
l
será o retorno da funçã o. r seria o equivalente ao
o
A funçã o deposito retorna a default de um comando
r
um valor do tipo Unit, que y switch/case.
>
No exemplo anterior é " inclusive frameworks e
Listagem 9. Pattern possível observar que o jars de terceiros. Para
Matching com apenas có digo é mais simples que c demonstrar isso, a
um tipo o de um Switch/Case a Listagem 11 mostra alguns
tradicional, mas ainda nã o s exemplos do uso de
package main há nenhuma grande e classes Java em um
diferença, por isso a programa em Scala:
object Main4 { Listagem 10 mostra um " primeiro é criado um
exemplo de Pattern d ArrayList de Strings e sã o
def Matching mais o adicionados três valores
match interessante. O parâ metro i nesse ArrayList; depois é
Test(x: e o retorno do método sã o s criado uma instâ ncia da
Int): do tipo Any, o que quer " classe Date, e uma da
String dizer que pode ser classe SimpleDateFormat,
=x passado qualquer coisa = e ao utilizar esses dois
match como parâ metro para o > objetos é mostrada a data
{ ca método, e que ele pode atual no console. Por
se 1 => retornar qualquer coisa 2 ú ltimo é criado um objeto
"um" também. Nos cases é da classe ServcerSocket
case 2 possível observar que case "três" => 3 do Java.
=> existem condiçõ es que case "quatro" =>
"dois" comparam valores new Conta("12345", Listagem 11.
case 3 inteiros, Strings, e até "12345", 1000) Utilizando classes Java
=> verificam o tipo da case y: Int => "É um em um programa Scala
"três" variá vel passada como nú mero inteiro"
case 4 parâ metro, já como case x: Conta => "É package main
=> retorno também existem uma conta"
"quatr inteiros, String e até um case z: String => "É
o" objeto da classe conta que uma String" i
case 5 foi criada anteriormente } m
=> nesse artigo. def p
"cinco" main(args: o
case 6 Listagem 10. Pattern Array[String r
=> Matching como padrõ es ]) t
"seis" de diversos tipos { println( j
case 7 => "sete" matchTest(" a
case _ => "nú mero package main dois")) v
passado pode ser println(matc a
qualquer nú mero" import classes.Conta hTest(1)) .
} println(matc u
hTest(5)) t
obje
def println(matc i
ct
main(args: hTest("três") l
Main
Array[String] ) .
5
) println(matc A
{ d
{ println( hTest("quatr r
ef o"))
matchTest(3) r
matc }
) a
hTest
println(matc } y
(x:
hTest(2)) Uma consideraçã o L
Any):
println(matc importante sobre o i
Any
hTest(5)) Pattern Matching é que, se s
= x
println(matchTest( nenhum padrã o for t
matc
23)) encontrado para o i
h{
} parâ metro passado para o m
} método, será lançada uma p
c o
exceçã o. Por isso é
a r
Vejam que na importante ou ter um case
s t
definiçã o do método com o underline, ou fazer
e j
matchTest, já foi o tratamento de exceçã o
declarado que ele é uma sempre que for chamada a
1 v
funçã o match e que o uma funçã o desse tipo.
retorno dessa funçã o é do Uma grande vantagem a
= .
tipo String. Logo, os da linguagem Scala é que
> u
valores literais dos ela é executada também
nú meros ou o “qualquer na JVM, o que permite ao t
" i
nú mero” será também o programador usar
u l
retorno da funçã o. qualquer coisa que tenha
m .
sido criado em Java,
D j val dateFormatter divididos em diversos
a e = new fluxos, a fim de serem
t c SimpleDateFormat("dd processados por
e t /MM/yyyy") operadores diferentes.
println(dateFormatt Um programa de Pig
i M er format agora) Latin consiste de uma
m a série de operaçõ es ou
p i val socket = new transformaçõ es que é
o n ServerSocket(5000) aplicada aos dados de
r 7 socket.accept(); entrada a fim de produzir
t socket.close(); a saída. Consideradas
j { como um todo, as
a operaçõ es descrevem um
}
v d fluxo de dados que o
}
a e ambiente de execução Pig
Esse có digo nã o faz
. f traduz em uma
nada importante, mas com
t representaçã o que,
ele fica bem claro que é
e m depois, é executada. Em
possível utilizar qualquer
x a segundo plano, o Pig
t classe do Java em um
i programa Scala, para isso configura as
. n transformaçõ es em uma
S basta importar as classes.
( Isso é uma grande série de tarefas do
i a vantagem, pois grande MapReduce.
m
r parte do que é criado em Com o Pig, as
p
g Java, é possível de usar em estruturas de dados são
l
s Scala também. muito mais ricas,
e
: geralmente têm diversos
D
PIG12. valores e aninhamentos;
a
A além disso, o conjunto de
t
r O projeto Apache Pig é transformaçõ es que pode
e
r desenvolvido como um ser aplicado aos dados é
F
a mecanismo para executar muito mais eficiente. Em
o
r y os fluxos de dados de particular, o modelo de
m [ modo paralelo ao Hadoop. dados Pig Latin consiste
a S Ele usa uma linguagem dos quatro tipos a seguir:
t t chamada Pig Latin para
i r expressar esses fluxos de - Á tomo é um
m i dados. Com a Pig Latin, é valor atô mico simples,
p n possível descrever como como uma sequência ou
o g os dados de uma ou mais um nú mero; por exemplo,
r ] entradas devem ser lidos, “John”;
t ) processados e, depois, - Tupla é uma
j armazenados em uma ou sequência de campos;
a { mais saídas de modo cada um deles pode ser
v paralelo. A linguagem qualquer tipo de dado, por
a toma uma posiçã o exemplo (“John”,
. intermediá ria entre a “Melbourne”); - Pacote é
n val expressão de tarefas uma coleçã o de tuplas
e lista usando um modelo de com possíveis duplicados.
t = consultas declarativo de O esquema de tuplas
. new alto nível similar à SQL e a constituintes é flexível, no
S Arra qual nem todas as tuplas
programaçã o
e yList de um pacote precisam ter
procedural/de baixo nível
r [Stri o mesmo nú mero e tipo de
que usa o MapReduce. Os
v ng] campos. O Pacote da
fluxos de dados de Pig
e lista. Figura 1 lista duas tuplas:
Latin podem ser fluxos
r add( (“John”,”Melbourne”) e
lineares simples, mas
S "Edu “Alice”,(“UNSW”
também podem ser fluxos
o ardo “Sydney”);
de trabalho complexos
c ") - Mapear é uma
que incluem pontos nos
k lista. coleção de itens de dados,
add( quais há a junção de
e na qual cada um item tem
"Luiz diversas entradas e nos
t uma chave associada por
") quais os dados sã o
meio da qual ela pode ser
lista.add("Bruna") 12 procurada. Como ocorre
https://imasters.com.br/artigo/24
486/software-livre/utilize-
com os pacotes, o
o val agora = new esquema de itens de
linguagensparecidas-com-a-sql-
b Date para-a-estrutura-domapreduce/? dados constituintes é
trace=1519021197&source=single
flexível; no entanto, as ou verificar o có digo dos 100000; sortedList = no warehouse, muitas
chaves sã o necessá rias usuá rios. Por outro lado, o ORDER highSalary BY vezes, preferem o Pig. Os
para serem á tomos de Pig pode analisar um salary DESC; pesquisadores que
dados> O Mapa da Figura script de Pig Latin e STORE sortedList trabalham com grandes
2) lista os itens de dados: entender o fluxo de dados INTO ' highSalary conjuntos de dados,
K1–>(“John”,”Melbourne”) descrito pelo usuá rio. O _Emp'; muitas vezes, usam
e K2–>30. MapReduce nã o tem um DUMP sortedList; linguagens de script como
sistema de tipos. Isso é Perl ou Python para fazer
A Pig Latin inclui intencional e oferece aos Neste exemplo, em seu processamento. Os
operadores para muitas usuá rios a flexibilidade primeiro lugar, carregue o usuá rios com esses planos
operaçõ es de dados para usar seus pró prios arquivo de entrada em um de fundo preferem o
tradicionais (join, sort, tipos de dados e pacote chamado paradigma de fluxo de
filter, group by, union, estruturas de serializaçã o. employees. Depois, crie dados do Pig do que o
etc.), bem como a A desvantagem é que isso um novo pacote chamado paradigma de consulta
capacidade para que os limita ainda mais a highSalary, que contém declarativa da SQL.
usuá rios desenvolvam capacidade do sistema de apenas os registros cujo
suas pró prias funçõ es verificar o có digo do campo salary é superior a
para ler, processar e usuá rio em busca de erros 100000. O pacote
escrever dados. antes e durante o tempo sortedList classifica os
O MapReduce fornece de execuçã o. Todos esses registros filtrados com
diretamente a operaçã o pontos significam que a base no valor do salá rio,
group by (cujas fases de Pig Latin tem um custo em ordem descendente.
ordenaçã o aleató ria e muito menor para Finalmente, escreva o
redução sã o essenciais) e escrever e manter em conteú do do pacote
fornece a operaçã o order relaçã o ao có digo Java do sortedList no HDFS e
by indiretamente por MapReduce. imprima o seu conteú do
meio da maneira como na tela.
implementa o O exemplo a sguir
agrupamento. A filtragem mostra como descrever
e a projeçã o podem ser junçã o as operaçõ es
implementadas de modo facilmente usando a Pig
trivial na fase de Latin.
mapeamento. No entanto,
os outros operadores, As operações join
principalmente join, nã o podem ser descritas
sã o fornecidos e, em vez facilmente usando a Pig
disso, devem ser escritos Latin.
pelo usuá rio. O Pig employees = LOAD
fornece implementaçõ es 'employee.txt' AS (id,
complexas e nã o triviais name, salary,
dessas operaçõ es de dept);
dados padrã o. Por departments = LOAD
exemplo, devido ao fato de 'dept.txt' AS (deptID,
o nú mero de registros por deptName); joinList =
chave de um conjunto de JOIN employees BY dept,
dados ser raramente departments BY deptID;
distribuído de modo STORE joinList INTO '
uniforme, muitas vezes os Os principais joinFile';
dados enviados aos operadores da
Tradicionalmente, as
redutores sã o defasados. linguagem Pig
consultas ad hoc são
Ou seja, um redutor Latin
realizadas em idiomas
obterá 10 ou mais vezes a como SQL, que facilitam a
quantidade de dados que O exemplo a seguir rá pida formaçã o de uma
os outros. O Pig possui mostra um programa questã o a ser respondida
operadores join e order by simples de Pig Latin para pelos dados. Para a
que manipularã o este caso encontrar todos os pesquisa de dados brutos,
e (em alguns casos) funcioná rios com um alguns usuá rios preferem
rebalanceará os redutores. salá rio alto. a Pig Latin. O Pig pode
Tablela 1 descreve os operar em situaçõ es cujo
principais operadores da Encontrar todos os esquema é conhecido,
linguagem Pig Latin. funcionários com incompleto ou
No MapReduce, o salário alto. inconsistente e, já que ele
processamento de dados pode gerenciar facilmente
das fases de mapeamento employees = LOAD os dados aninhados, os
e reduçã o é opaco para o 'employee.txt' AS (id, pesquisadores que
sistema. Isso significa que name, salary); desejam trabalhar nos
o MapReduce nã o tem highSalary = FILTER dados antes de sua
oportunidade de otimizar employees BY salary > limpeza e carregamento
Estrutur as expressõ es humanas do ao receptor um
conhecimento. A ló gica foi Os algoritmos devem entendimento do assunto
as de criada por Aristó teles no seguir algumas mesmo nã o conhecendo
dados e século IV a.C. para estudar características bá sicas que algoritmos.
algoritm o pensamento humano e seguem abaixo: Vejamos alguns
distinguir interferências e • Um algoritmos exemplos:
os: busca argumentos deve ter inicio e fim;
sequenci certos e errados.13” • Resolver
al e qualquer problema Fluxograma ou
Entã o o que podemos proposto; diagrama de bloco
busca entender por Ló gica de • Nuca um
binária Programaçã o? algoritmos deve ser Sã o utilizados
sobre ambíguo (ter dupla símbolos grá ficos
Ló gica de interpretaçã o); universais que auxiliam
arrays,
programaçã o é necessá ria • Todo algoritmos para a compreensã o dos
ordenaç para que se possa deve ter fim; passos que os algoritmos
ão trabalhar com seguem para que o
desenvolvimentos de problema seja resolvido,
(método Em ló gica de
programas de programaçã o, os por se tratar de uma
s da computador, para estes algoritmos sã o simbologia mundial, sua
bolha, serem desenvolvidos sã o representados por vá rias interpretaçã o é simples,
ordenaç utilizados dois passos formas diferentes, mas as porém, se faz necessá rio
bá sicos, sequencias ló gica principais representaçõ es um conhecimento prévio.
ão por (os passos executados sã o:
seleção, desde para a resoluçã o de
ordenaç um problema) e Programas
instruçõ es (conjunto de Os programas de
ão por regras e açõ es para computadores ou
inserção, execução de instruçõ es software são algoritmos
lista ló gicas), tais passos sã o escritos com o suporte de Os símbolos mais
denominados algoritmos. uma linguagem de
encadea utilizados sã o:
progrmaçã o como Cobol,
da, pilha, Algoritmos Fortran, Visual Basic,
“Um conjunto finito de Símbolo
fila, Pascal, etc. entã o sã o
regras que provê uma transformados e
noções sequência de operaçõ es linguagem de má quina e
sobre para resolver um tipo de executados no Início/Fim
árvore problema específico.” computador.
Ao analisar a frase Terminal
binária), acima, podemos notar que Descrição Narrativa
noções fazemos o uso constante Calculo
de de algoritmos para a A descriçã o narrativa é
resolução de qualquer uma das formas mais
algoritm problema em nosso dia-a-
Processamento
simples de representar
os de dia, desde o simples fato um algoritmo, com essa
aprendiz de calçar um par de forma, o narrador
sapatos ou até os descreve o passo-a-passo Entrada
ado procedimentos utilizados da resoluçã o de um
supervis para enviar um e-mail. problema proporcionado
Entrada de Dados
ionados Problema 1: Problema 3:
e não Chupar uma bala. Somar dois nú meros. Saída
supervis
Algoritmo: Algoritmo:
ionados; Exibiçã o
Pegue a bala, Atribua o
Retire-a do papel, primeiro numero,
Coloque a bala na boca. Atribua o Decisão
segundo numero,
Programação de Obtenha a soma dos
Software nú meros. Estrutura de Decisã o
Lógica de
programação Problema 2: Problema 4: Exemplo:
Introduçã o à Ló gica de Enviar um e-mail Para resolução deste
Programaçã o exemplo será utilizado o
Ló gica Algoritmo: Algoritmo: Problema 3, do tó pico
“Ló gica é uma á rea da Abra o editor de e-mail, Descriçã o Narrativa:
filosofia que estuda o 13 Gabriela
CliqueCabral -
em redigir e-mail,
fundamento, a estrutura e http://www.brasilescola.com/filos
Selecione o
ofia/o-que-logica.htm
destinatá rio,
Escreva o e-mail
desejado,
Clique em Enviar.
(memó ria física) do nú meros, nã o poderá ser OR e
computador a fim de utilizada para operaçõ es NOT:
armazenar valores ou matemá ticas.
expressõ es e seus valores Valor 1 Operador Va
podem variar durante a
Verdadeiro AND Verd
execução do programa.
Verdadeiro AND F
Exemplo:
Variáveis Falso AND Verd
Operadores
Falso AND F
Lucro = Utilizados para a Verdadeiro OR Verd
Linguagem ValorVenda - resoluçã o de cá lculos Verdadeiro OR F
Algorítmica ValorVenda aritméticos, comparaçõ es Falso OR Verd
de valores (chamados de Falso OR F
Linguagem operadores relacionais) e
Algorítmica consiste em Verdadeiro NOT
testes ló gicos, estes sã o
uma pseudolinguagem de descritos da seguinte Falso NOT
Constantes – O valor
programaçã o, que tem forma:
sempre é fixo, nã o é
como funçã o facilitar o Imagine a seguinte
modificado durante a
entendimento de uma situaçã o, A = 6, B = 9, C
execução do programa.
linguagem de =2
Exemplo: Operadores
programaçã o qualquer,
Operadores Aritméticos
nesse caso os comandos Expressõe
de programaçã o sã o Relacionais
s
escritos na linguagem
nacional, em nosso caso, Sinal Sinal Função A=B AND B>C
Constante
em português: < + Adiçã o
Como A = 6, B = 9
Tipos de Variáveis > - Subtraçã o
e C = 2 a expressã o
Exemplo: <> * Multiplicaçã o assume os seguintes
Para resolução deste
As variá veis possuem <= / Divisã o valores e verificaçõ es:
exemplo será utilizado o
quatro tipos bá sicos: >= ** Exponenciaçã o 6 = 9 e 9 > 2
Problema 3, do tó pico
numérico, caractere, = Feita a
Descriçã o Narrativa:
alfanumérico e ló gico. verificação, o
Numérico – especial E resultado só será
para armazenar nú meros verdadeiro se
inteiros e reais, também OU ambas as
sã o utilizadas para condiçõ es forem
cá lculos matemá ticos; Not
verdadeiras, logo
Caracteres – 6 é diferente de 2,
Armazena um conjunto de Exemplos de portanto, o
caracteres nã o literais, operadores resultado é falso.
nã o é possível realizar aritméticos:
nenhum tipo de calculo A <> B AND B<C
com esse tipo de variá vel, subTotal := valoUn *
sua utilizaçã o ideal é Qtde
Nessa
voltada ao situaçã o, a
armazenamento de textos, 2+3*8
primeira
exemplo um nome, um expressão é
endereço, etc. Total := 4 *( 2 / valor )
verdadeira, pois, 6
Ló gico – utilizada para +3
é diferente de 9, já
testes e armazenamentos a segunda é falsa
Variáveis, constantes, ló gicos, assumem valores Exemplos de utilização porque, 9
operadores lógicos e verdadeiro e falso. de operadores
nã o é menor
tipos de dados Alfanumérico – relacionais:
que 2, portanto a
Voltada ao resposta é Falsa.
Variá vel – Em armazenamento de letras Se ( num1 < num2)
programaçã o de e/ou nú meros. Em entao
A>B NOT
computadores, variá veis determinados momentos
sã o espaços que ficam conter somente dados
numéricos ou somente
literais. Se enquan A primeira
utilizada to ( i vista a expressão
reservados normalmente para o armazenamento de <= 10) é falsa, pois, 6 é
na memó ria RAM faca menor que 9, mas
Variável Conteúdo Utilizaç
ã o dos A<B OR B>A Verdadeiro
Nome “Luis Boaygo dos operad como existe o
Alexandre ores operador de
Santos” AND, negaçã o NOT que
Idade 32

Peso 80,00
faz a inversã o da Linguagem de utilizadas para resolução realizar controle de fluxo
resposta, por tal Programaçã o de problemas de execuçã o.
motivo a resposta computacionais, ou seja,
é verdadeira. Em ambos os casos sã o utilizadas para a Quarta Geração:
acima, primeiro é criaçã o de programas de Linguagens Orientadas
calculada a média, a seguir computador (software). à Aplicações
Para essa é verificada se a média é Ao longo do tempo essas Seu objetivo é facilitar
expressão maior que 6, caso seja, linguagem estã o passando a programação de
retornar valor entã o caso seja é por transformaçõ es, computadores
verdadeiro, retornada a mensagem portanto, foram proporcionando a
apenas uma das afirmando que o aluno foi classificadas em 5 usuá rios finais a
expressõ es deve aprovado, caso nã o seja, a geraçõ es, sendo: resolvendo problemas que
ser verdadeira mensagem retornada é de antes só eram possíveis a
nesse caso 6 é reprova do aluno. Primeira Geração: programadores de
menor que 8, As estruturas de Linguagem de computador.
portanto repetiçã o servem para Máquina Exemplo: Geradores
retornou repetir comandos até que Esta é uma linguagem de relató rios,
verdadeiro. a condição proposta seja de Instruçã o, isso quer preenchimento de
satisfeita, as principais sã o dizer que, utiliza como formulá rios, Excel,
Estruturas de Decisão Enquanto (While) e Para suporte programaçã o Linguagens SQL.
e Repetiçã o (For), vejamos alguns biná ria operando
exemplos: diretamente endereço de Quinta Geração:
Sã o estruturas O algoritmo abaixo foi registradores ou memó ria, Linguagens de
utilizadas para tomadas desenvolvido em entã o existe comunicação Conhecimento
de decisã o de acordo com Linguagem de direta com o hardware. Sã o utilizadas
uma comparação feita na Programaçã o Pascal a fim principalmente na á rea de
estrutura do algoritmo, de exibir uma tabuada Segunda Geração: inteligência artificial, a
assumindo respostas escolhida pelo usuá rio, Linguagens Simbólicas partir desse geraçã o é
diferentes. A principal note que assim que o (Assembly) possível que os softwares
estruturas de comparação programa é executado a Desenvolvida com a autocriem bases de
das linguagens é a variá vel M recebe o valor finalidade de minimizar as conhecimento obtidas a
estrutura Se-Senã o (If – 1, essa é chamada de dificuldades encontradas partir de especialistas.
Else), vejamos um variá vel de controle, entã o na programaçã o em
exemplo em linguagem ao usuá rio digitar o valor notação biná ria. Compilação de
algorítmica e em da variá vel T solicitado A partir dessa geraçã o Programas
linguagem de pelo programa, é feita é possível que os usuá rios
programaçã o. uma verificaçã o através da operem utilizando Tradutores
estrutura While até que a mnemô nicos (palavras Sã o programas que
variá vel tenha o valor reservadas da linguagem traduzem o có digo fonte
igual a 10, esse valor é de programaçã o), criado em uma linguagem
alterado toda vez que a sistemas de grupos de de programaçã o para um
estrutura passa pelo có digos operacionais programa objeto
comando “M := M + 1”, ou semelhantes recebem equivalente escrito em
seja, inicialmente M nomes que lembram suas outra linguagem
possui valor 1, somando funçõ es. (denominada linguagem
mais 1 fica 2 e assim por objeto).
diante, até que ele tenha Terceira Geração: Compiladores –
valor 10. Linguagens Orientadas Convertem programas
ao Usuário (LOU) escritos em linguagem de
Sã o linguagens alto nível (linguagens de
procedimentais (utilizam programaçã o) para
Linguagem sequencias de comandos), programas equivalentes
Algorítmica tiveram início década de em linguagem simbó lica
60 como FORTRAN, ou de má quina,
ALGOL, COBOL, PL/I, ADA normalmente este é um
e algumas perduram até arquivo executá vel.
os dias de hoje, como é o Interpretadores – São
caso da Linguagem Pascal. programas de computador
Essas linguagens que fazem a leitura de um
revolucionaram o có digo fonte de uma
Linguagens de universo do linguagem de
Programação desenvolvimento de programaçã o interpretada
software, pois, através e o converte em có digo
As Linguagens de delas os softwares são executá vel. Em certos
programaçã o (LP) são os capazes de utilizar casos, o interpretador lê
meio de comunicaçã o instruçõ es de entrada e linha-por-linha e converte
entre usuá rio e saída efetuar cá lculos em có digo objeto (ou
computador e sã o aritméticos e/ou ló gicos e bytecode) à medida que
vai executando o Classe é algo (métodos) e variá veis Do ponto de vista
programa e, em outros generalizado, ou seja, uma possíveis (atributos). Um desta obra, problema é
casos, converte o có digo classe define o exemplo de herança: uma questã o que foge a
fonte por inteiro e depois comportamento dos Mamífero é super-classe uma determinada regra,
o executa. Uma objetos através de seus de Humano. Ou seja, um ou melhor, é o desvio de
particularidade do métodos (açõ es de uma Humano é um mamífero. um percurso, o qual
interpretador é que ele classe), Exemplo de classe: Há herança mú ltipla impede de atingir um
trabalha utilizando uma Cliente. quando uma sub-classe determinado objetivo com
má quina virtual(MV). Uma classe é dividida possui mais de uma super- eficiência e eficá cia.
um três partes, nome, classe. Essa relaçã o é Diferentes das
Estrutura de Dados atributos e métodos. normalmente chamada de diagramaçõ es clá ssicas,
Sã o utilizados para relaçã o "é um". que nã o fornecem grandes
manipulaçã o e Vejamos um exemplo Polimorfismo consiste subsídios para aná lise, os
organizaçã o de dados. A de ilustraçã o de uma em quatro propriedades diagramas de blocos são
organizaçã o e os métodos classe na UML: que a linguagem pode ter realmente o melhor
para manipular essa (atente para o fato de que instrumento para
estrutura possibilitam a nem toda linguagem avaliaçã o do problema do
diminuição do espaço orientada a objeto tem fluxo de informaçõ es de
ocupado pela memó ria implementado todos os um dado sistema. Por esse
RAM, além de tornar o tipos de polimorfismo): motivo deve- -se resolver
có digo-fonte do programa Universal:Inclusã o: um um problema de ló gica
mais simplificado. ponteiro para classe mã e (principalmente se for da
Uma pilha é uma das pode apontar para uma á rea de processamento
vá rias estruturas de dados instâ ncia de uma classe eletrô nico de dados)
que admitem remoçã o de filha (exemplo em Java: usando um procedimento
elementos e inserção de Subclasse é uma nova "List lista = new de desenvolvimento.
novos elementos estas classe que herda LinkedList();" (tipo de Para desenvolver um
organizaçõ es são feitas características (atributos polimorfismo mais bá sico diagrama correto, deve-se
através de pilhas e filas. e/ou métodos) de sua que existe) considerar como
As filas e pilhas sã o classe pai. Paramétrico: se procedimentos
estruturas usualmente Objeto – É algo do restringe ao uso de prioritá rios os itens
implementadas através de mundo real, que templates (C++, por seguintes:
listas, restringindo a proporciona vida a classe, exemplo) e generics - Os diagramas
política de manipulaçã o enquanto Aluno é uma (Java/C♯) devem ser feitos e
dos elementos da lista. Classe Luís Alexandre é Ad-Hoc: Sobrecarga: quebrados em vá rios
Uma fila estabelece um Objeto dessa classe. duas funçõ es/métodos níveis. Os primeiros
uma política chamada Método definem as com o mesmo nome mas devem conter apenas as
FIFO -- first in, first out habilidades dos objetos. assinaturas diferentes idéias gerais, deixando
(primeiro a entrar e Bidu é uma instâ ncia da Coerçã o: a linguagem para as etapas posteriores
primeiro a sair). Em classe Cachorro, portanto que faz as conversõ es os detalhamentos
outras palavras, a ordem tem habilidade para latir, implicitamente (como por necessá rios;
estabelecida na lista é a implementada através do exemplo atribuir um int a - Para o
ordem de inserçã o. No método de um latido. Um um float em C++, isto é desenvolvimento correto
momento de retirar um nó método em uma classe é aceito mesmo sendo tipos de um fluxograma, sempre
da lista, o nó mais antigo apenas uma definiçã o. A diferentes pois a que possível, deve ser
(o primeiro que entrou) é açã o só ocorre quando o conversã o é feita desenvolvido de cima para
o primeiro a ser retirado. método é invocado implicitamente) baixo e da esquerda para
através do objeto, no caso direita;
Orientação a Objetos Bidu. Dentro do programa, Princípios de - É incorreto e
a utilizaçã o de um método Resolução de "proibido" ocorrer
A orientaçã o a objetos deve afetar apenas um Problemas14 cruzamento das linhas de
(O.O.) é um padrã o de objeto em particular; Primeiramente, é fluxo de dados.
desenvolvimento de Todos os cachorros importante entender e Tome como exemplo
software utilizado em podem latir, mas você compreender a palavra uma escola qualquer, cujo
varias linguagens de quer que apenas Bidu dê o "problema". Pode-se dizer cá lculo da média é
programaçã o como por latido. Normalmente, uma que problema é uma realizado com as quatro
exemplo C, Java, PHP, etc. classe possui diversos proposta duvidosa, que notas bimestrais que
voltada a utiliza estes métodos, que no caso da pode ter numerosas determinam a aprovaçã o
métodos para diminuir a classe Cachorro poderiam soluçõ es, ou questã o nã o ou reprovaçã o dos seus
diferença semâ ntica entre ser sente, coma e morda. solvida e que é objeto de alunos. Considere ainda
a realidade e o modelo Herança (ou discussã o, segundo que o valor da média deve
Para entendermos o generalizaçã o) é o definição encontrada no ser maior ou igual a 7 para
funcionamento da O.O. é mecanismo pelo qual uma dicioná rio Aurélio. que haja aprovaçã o.
necessá rio conhecermos classe (sub-classe) pode
as bases que sustentam estender outra classe 14 Fonte: MANZANO, JA OLIVEIRA,
essas técnicas, a seguir (super-classe), and J. F. Algoritmos. "Lógica para
vejamos algumas aproveitando seus Desenvolvimento de Programação
característica: de Computadores." São Paulo:
comportamentos Érica (2000).
Estruturada sistemas, um sistema em
A técnica da ló gica programas e um
estruturada é a mais programa em mó dulos. A
usada pelos profissionais figura abaixo apresenta
de processamento um exemplo do tipo de
eletrô nico de dados. ló gica modular.
Possui características e
padrõ es particulares, os
quais diferem dos
modelos das linguagens
Diagrama de bloco para o cálculo da média escolar elaboradas por seus
fabricantes. Tem como
A segunda etapa apresenta um detalhamento no equse pontos fortes para
refere à entrada e saída, ou seja, deve
-se entrar com as quatro elaboraçã o futura de um
notas bimestrais para se obter, como resultado, o cálculo da programa, produzi-lo
média e assim definir a aprovação ou reprovação do aluno. A com alta qualidade e
figura abaixo apresenta o diagrama de blocos com mais baixo custo.
detalhes. A sequência, a
Exemplo
seleçãdaoutilização
e a iteraçãde ovariáveis
são
as três estruturas bá sicas
Particularidadespara
entreaLógicas
construçã o do
As representações gráficas de
diagrama de um diagrama
blocos. A de blocos
podem ser feitas defigura
várias maneiras e possuírem
abaixo seguinte estruturas
diferenciadas, porém isto não impede
apresenta um exemplo que a maneira de
solucionar o problema
do seja eficiente.
tipo de Segundo
ló gica Verzello nos diz
em uma de suas obras, assim como um arquiteto desenha e
estruturada. Português
escreve especificações para descrever como uma tarefa (por
Estruturado
exemplo, construção de um edifício) deverá ser efetuada e o
engenheiro do projeto senvolve
de um esquema detalhado das Como foi visto até
atividades de construção, um especialista em informaçãoagora, o diagrama de
desenvolve um plano, que será comunicado a outros, de blocos como é a primeira
o problema de processamento de dados deve ser resolvido. forma de notaçã o grá fica,
Para auxiliarmos na sua compreensão, mostraremos omocmas existe outra, que é
estes conceitos de estruturas, bem como as particularidades uma técnica narrativa
de conexões e dos procedimentos entre o método lógico,denominada
encaixam-se ou não para resolução dos problemas de pseudocó digo, também
Modular
processamento de dados. A seguir, são apresentados alguns conhecida como
A terceira etapa consiste em trabalhar o termo A técnica da ló gica
tipos de procedimentos indiv idualmente. português estruturado
"determinar a aprovação". Para ser possível determinar algo, modular deve ser ou chamada por alguns
é necessário estabelecer uma condição. Assim sendo, uma elaborada como uma
Linear de portugol.
condição envolve uma decisão a ser tomada segundo um estrutura de partes
A técnica lógica linear é conhecida como um modelo Esta técnica de
determinado resultado. No caso, a média. Desta forma, a independentes,
tradicional de desenvolvimento e resolução de um problema.algoritmizaçã o é baseada
condição de aprovação: média maior ou igual a 7 (sete), deve denominada
Não está ligada a regras de móou
de hierarquia dulos,
de estruturas de
em uma PDL - Program
ser considerada no algoritmo. Com isso, inclui
-se este bloco de cujode programação
linguagens específicas procedimento é
de computadores. Design Language
decisão, como mostra a figura abaixo. Devemos ente controlado
nder que este tipo depor um
procedimento está voltado
(Linguagem de Projeto
conjunto
à técnica matemática, de determinar
a qual permite regras. a atribuição
de Programaçã o). Nesta
Segundo
de recursos limitados, utilizandoJames
uma Martin,
coleção de elementosobra, estamos
suas metas
organizados ou ordenados por uma só sã opropriedade,
as de tal
apresentando-a em
forma que cada umseguintes:
deles seja cutado
exe passo a passo de cima português. A forma
para baixo, em que tenha - umDecompor
só "predecessor" um e um só original de escrita é
"sucessor". A figuradiagrama
abaixo apresenta em umpartesexemplo deste conhecida
tipo como inglês
de lógica. independentes; estruturado, muito
- Dividir um parecida com a notaçã o
problema complexo em da linguagem PASCAL. A
problemas menores e PDL (neste caso, o
mais simples; português estruturado) é
- Verificar a usada como referência
correçã o de um mó dulo de genérica para uma
blocos, linguagem de projeto de
independentemente de programaçã o, tendo
Muitas vezes é preferível construir o diagrama de blocos sua utilizaçã o como uma como finalidade mostrar
trabalhando ocm variáveis.
unidade em um processo uma notaçã o para
maior. elaboraçã o de
A modularizaçã o algoritmos, os quais
deve ser desenvolvida, se serã o utilizados na
possível, em diferentes definição, criação e
níveis. Poderá ser desenvolvimento de uma
utilizada para separar linguagem
um problema em computacional (Clipper,
C, Pascal, Delphi, Visual- D :
Objects) e sua O "
documentaçã o. Abaixo, é < , "
apresentado um exemplo — ,
deste tipo de algoritmo. " N
A 1 N
p p 4
r r e
o o s e
g v c s
r a r c
a d e r
m o v e
a " a v
s a
M e "
É n N "
D ã o S
I o t o
a m
A
a
2 :
v
a R
E : “
r
S ,
U "
RESULTADO :
, S
caractere L
O
N1, N2, N3, N4 : real T
N M
S A
2 A
O D
M O
e e
A <
s s
, -
c c
"
r r
M R e e
É e v v
D p a a
I r
A o " "
v N M
: a o é
d t d
r o a i
e " a
a fi 3
l m :
_ :
i s "
n e " ,
í ,
c M
i N É
o e 3 D
s I
leia N1, N2, N3, N4 c e A
SOMA <- N1 + N2 + r s
N3 + N4 e c e
v r s
MÉ DIA <- SOMA /
a e c
4
se (MÉ DIA >= 7) v r
" a e
entã o
N v
R
o " a
E
t N
S a o "
U
t R
L 1 a e
T
s
A : 4 u
l Este conjunto de fica preocupado quando A Figura a seguir é
t nú meros é usado quando sabe que sua conta uma representaçã o das
a queremos falar sobre o corrente no banco está relaçõ es de pertinência
d nú mero de amigos que com saldo de -300 reais. entre os conjuntos de
o temos ou quantos CDs Rapidamente iremos nú meros que analisamos
: musicais temos na nossa tentar transformar este até aqui.
coleçã o. Embora seja fácil nú mero negativo em
" imaginar que um pastor nú mero positivo, e o que
, de ovelhas há 3000 anos mais importante sabemos
atrá s pudesse usar este que precisamos de pelo
R conjunto com facilidade, é menos 300 reais para sair
E bom lembrar que o do vermelho.
S conceito do nú mero zero é O pró ximo conjunto na
U difícil de ser entendido. O nossa curta viagem pelos
L conjunto dos nú meros domínios dos nú meros é o
T naturais usado pelos conjunto dos nú meros
A primeiros seres humanos fracioná rios, que é
D nã o incluía o zero. Os representado por Q. Este
O pastores sabiam que se 20 conjunto é composto por
ovelhas tinham ido para todos os nú meros que Os dados numéricos
fim os campos, eles tinha de podem ser escritos como que os algoritmos que
esperar pelas mesma 20 uma fraçã o da forma p/q iremos criar e que a
A diferença entre uma ovelhas na volta à noite. onde p e q pertencem ao maioria dos
linguagem de Agora se não havia conjunto dos nú meros computadores manipulam
programaçã o de alto nível ovelhas para que inteiros. sã o de dois tipos:
utilizada em computaçã o e precisaríamos contar, Este conjunto pode ser
uma PDL é que esta (seja somar ou subtrair? A definido como: - Dados inteiros
escrita em português, natureza tem horror ao Q = {p/q | p, q - Dados reais
inglês ou qualquer outro vá cuo e o nada é um pertencem a Z} Neste ponto é
idioma) nã o pode ser conceito complicado para Continuando nesta importante assinalar dois
compilada em um os seres humanos. O excursã o vamos para o fatos importantes.
computador (por nú mero zero é uma conjunto dos nú meros Primeiro computadores
enquanto). Porém, invençã o dos matemá ticos reais (R) que é a uniã o do trabalham com uma base
existem "Processadores hindus e é recente, sendo conjunto dos nú meros diferente da base que
de PDL" que possibilitam introduzido em XXXX fracioná rios e o dos usamos todos dias que é a
traduzir essa linguagem aproximadamente. nú meros irracionais. base 10. Computadores
numa representaçã o O conjunto dos Nú meros irracionais não usam a base 2, e no
grá fica de projeto, nú meros naturais é sã o os nú meros que nã o processo de conversã o
fornecendo uma subconjunto dos conseguem pensar, mas entre bases podem
variedade de informaçõ es, conjunto dos nú meros sim aqueles que nã o ocorrer problemas de
como: tabelas de inteiros que é definido podem ser expressos por perda de dígitos
referência cruzada, mapas como uma fraçã o p/q. Um significativos. Por
de aninhamento, índice Z = {...,-3,-2,- exemplo muito conhecido exemplo, o nú mero real
operacional do projeto, 1,0,+1,+2,+3,...} de nú mero irracional é o 0.6 ao ser convertido para
entre tantas outras. Aqui estamos falando PI que é igual a 3.14159... a base dois gera uma
de conceitos mais O ú ltimo conjunto é o dízima perió dica.
Tipos de dados15 complicados que hoje em dos nú meros complexos. Outro fato importante
Existem três tipos dia já fazem parte do Neste conjunto os é que a largura das
bá sicos de dados que nosso dia a dia. Estamos nú meros são palavras de memó ria do
iremos manipular nos no domínio dos nú meros representados da seguinte computador é limitada e
algoritmos que iremos relativos, que incluem os maneira n = a + ib portanto o nú mero de
criar: nú meros positivos, o zero Os nú meros a e b são dígitos biná rios que
- Dados numéricos e os nú meros negativos. A nú meros reais e i podem ser armazenados é
- Dados literais ou mente humana teve de representa a raiz função deste tamanho.
alfanuméricos atingir graus de abstraçã o quadrada do nú mero Isto é similar ao que
- Dados ló gicos maiores para imaginar inteiro -1. Quando b é aconteceria se tivéssemos
operaçõ es que incluiam igual a 0 o nú mero é um que limitar o nú mero o
Dados Numéricos nú meros negativos. Hoje nú mero pertencente ao dígitos decimais que
O conjunto de dados em dia nã o é necessá rio conjunto dos reais. Como usamos para representar
mais comuns é o de ser um matemá tico pó s- podese ver, a medida que os nú meros de nossas
nú meros naturais, que é graduado para trabalhar fomos passando de um contas no banco. Por
representado por N. Este facilmente com este tipo conjunto para outro, exemplo, assuma que só
conjunto é definido como de nú meros. Todos nó s aumentou o nível de podemos armazenar
somos capazes de abstraçã o das quantidades quantias com 6 dígitos
N = {0,1,2,3,...} perceber que uma que os nú meros inteiros e dois decimais,
temperatura de -3 graus pertencentes aos deste modo se
15 Fonte: centígrados e mais fria do conjuntos representam. ganhá ssemos na loteria R$
http://equipe.nce.ufrj.br/adriano/ que +3 graus. Quem nã o 1.000.000,00 nã o seria
algoritmos/apostila/tipos.htm
possível representar este exemplos de nú meros a b) 0.333... Nã o é
valor no extrato do banco. inteiros: : possível usar
Portanto no processo de a) +3 representaçã o de
conversã o e desconversã o b) 3 [+,-]algarismo{algaris dízimas
entre bases pode haver c) -324 mo}.algarismo{algaris
perda de informaçã o. Como exemplos de mo}. Dados Literais
formas erradas de Ou seja um nú mero Dados literais servem
- Dados Numéricos representaçã o de real pode ou nã o ter sinal, para tratamento de textos.
Inteiros nú meros inteiros, temos: em seguida um conjunto Por exemplo, um
O conjunto dos dados a) +3.0 Nã o é de pelo menos um algoritmo pode necessitar
inteiros pode ser possível usar algarismo, um ponto imprimir um aviso para os
definido como ponto decimal decimal e depois um usuá rios, ou um
Z={...,-3,-2,0,1,2,...}. b) + 123 Espaços conjunto de pelo menos comentá rio junto com um
As linguagens usadas em branco nã o um algarismo. É resultado numérico. Outra
para programar sã o permitidos importante notar que o possibilidade é a
computadores são muito separador entre a parte necessidade de ler dados
exigentes com a maneira - inteira e a fracioná rio é o tais como nomes, letras,
com que os dados sã o D ponto e nã o a vírgula. etc.
representados. Por esta a S Este tipo de dados
razã o vamos passar a d ã pode ser composto por
definir como deveremos o o um ú nico caractere ou por
representar os dados nos s um conjunto de pelo
algoritmos. Os dados N e menos um destes
inteiros tem a seguinte u x elementos. Conjuntos sã o
forma: m e conhecidos como cadeias
Nú meroInteiro = é m de caracteres, traduçã o da
[+,-]algarismo{algaris r p expressão em inglês,
mo} i l "character string".
Neste texto iremos c o Um ponto importante
usar uma notaçã o especial o s que deve ser abordado
para definir como iremos s agora é o que se entende
representar os elementos R d por caractere. Caracteres
da linguagem. A medida e e sã o basicamente as letras
que formos apresentando a minú sculas, maiú sculas,
os elementos a notaçã o i n algarismos, sinais de
será também explicada. s ú pontuaçã o, etc. Em
No caso da definiçã o dos O m computaçã o caracteres
dados inteiros temos os s e sã o representados por
seguintes elementos. O d r có digos biná rios e o mais
elemento bá sico é o a o disseminado de todos é o
algarismo que é um dos d s có digo ASCII. Este padrã o
seguintes caracteres: o foi definido nos Estados
algarismo = 0 | 1 | 2 | 3 s r Unidos e é empregado
|4|5|6|7|8|9 r e pela quase totalidade dos
Os elementos entre e a fabricantes de
colchetes sã o opcionais. a i computadores e
Portanto, o sinal de + e - i s programas. O apêndice
entre colchetes significa s : mostra a tabela ASCII com
que um nú mero inteiro t estes có digos.
pode ou nã o ter sinal. Em e a Os caracteres que
seguida temos um m ) normalmente são
algarismo que é empregados nos
obrigató rio. Isto é dados a 0 algoritmos sã o os
inteiros tem de ter pelo . seguintes:
menos um algarismo. A s 5 Letras maiú sculas:
seguir temos a palavra e A|B|C|D|E|F|G|
algarismo entre chaves, o g a) +0.5 H|I|J|K|L|M|N|
que significa que um u a) -3.1415 O|P|Q|R|S
nú mero inteiro deve ter i Abaixo mostramos |T|
pelo menos um algarismo n exemplos de formas U
e pode ser seguido por t erradas de representaçã o
uma sequência de e de nú meros reais, temos: |
algarismos. Deste modo a) +3,0 Vírgula
elementos que aparecem f nã o pode ser V
entre chaves sã o o separador entre
elementos que podem ser r as |
repetidos. São portanto m partes real e inteira
W
- float: Nú mero específica do vetor pode
| Dados Lógicos em ponto flutuante de ser acessada diretamente
Este tipo de dados é precisã o simples. através do seu índice.
X intensamente aplicado Sã o conhecidos Matriz: Uma matriz é
durante o processo de normalmente como uma coleçã o de variá veis
| tomada de decisõ es que o nú meros reais. de um mesmo tipo que é
computador - double: Nú mero referenciada por um nome
Y frequentemente é em ponto flutuante de comum;
obrigado a fazer. Em precisã o dupla Vetores sã o matrizes
| muitos textos este tipo de - void: Este tipo unidimensionais;
dados também é chamado serve para indicar que um Matrizes
Z de dados booleanos, resultado nã o tem um tipo bidimensionais: Uma
devido a George Boole, definido. Uma das matriz bidimensional é
L matemá tico que deu ao aplicaçõ es deste tipo em C uma matriz de matrizes
e nome à á lgebra (á lgebra é criar um tipo vazio que unidimensionais;
t booleana) que manipula pode posteriormente ser
r este tipo de dados. Os modificado para um dos Matrizes de uma
a dados deste tipo somente tipos anteriores. Dimensão ou
s podem assumir dois Vetores17
valores: verdadeiro e ESTRUTURAS DE Este tipo de estrutura
m falso. DADOS: VETORES E em particular é também
i Computadores tomam MATRIZES16 denominado por alguns
n decisõ es, durante o Os tipos bá sicos profissionais de como
ú processamento de um (inteiros, reais, matrizes unidimensionais.
s algoritmo, baseados caracteres) nã o sã o Sua utilizaçã o mais
c nestes dois valores. Por suficientes para exprimir comum está vinculada à
u exemplo, considere a estruturas de dados criaçã o de tabelas.
l sentença a seguir que é complexas em algoritmos. Caracteriza-se por ser
a um caso típico de decisão Um Vetor é uma das defini da uma ú nica
s que o computador é capaz mais simples variá vel dimensionada
: de tomar sem intervençã o estruturas de dados. com um determinado
humana. Se está chovendo Vetores sã o, tamanho. A dimensã o de
a|b|c|d|e|f|g|h| entã o procurar guarda- essencialmente, listas de uma matriz é constituída
i|j|k|l|m|n|o|p| chuva. informaçõ es de um por
q|r|s|t| Nesta sentença temos mesmo tipo, armazenadas constantes inteiras e
u|v|w|x|y|z a questã o ló gica "Se está em posiçã o contígua da positivas. Os nomes dados
Algarismos: chovendo". Esta expressã o memó ria, em ordem às matrizes seguem as
0|1|2|3|4|5|6|7 somente pode ter como indexada. mesmas regras de nomes
|8|9 resultado um de dois Vetores sã o usados utilizados para indicar as
Caracteres de valores: verdade ou falso. nos casos em que um variá veis simples.
pontuaçã o: Nos nossos algoritmos conjunto de dados do Para ter uma idéia de
;|:|!|?|*|(|)|\|/ estes valores serã o mesmo tipo precisa ser como utilizar matrizes em
|+|-|=|<|> representados por armazenado em uma uma determinada
verdade e falso. mesma estrutura. situaçã o, considere o
- Constantes Caracter Um vetor é uma seguinte problema:
Caracteres podem Tomando como estrutura de dados "Calcular e apresentar a
aparecer sozinhos, e neste exemplo a linguagem C, os homogênea, isto é, agrupa média geral de uma turma
caso sã o chamados de dados podem assumir valores de um mesmo de 8 alunos. A média a ser
constante caracter e são cinco tipos bá sicos que tipo; obtida deve ser a média
representados entre o sã o: O tipo do vetor é o geral das médias de cada
caracter '. Abaixo mesmo tipo dos dados que aluno obtida durante o
mostramos exemplos de ele armazena. ano letivo". Desta forma
constantes caracter: Um vetor é uma será necessá rio somar
'a' estrutura de dados todas as médias e dividi-
- char: Caracter: O las por 8. A tabela
'A' indexada, ou seja:
valor armazenado é um seguintes apresenta o
';' - cada valor pode
caractere. Caracateres nú mero de alunos, suas
'+' ser acessado através de
geralmente são notas bimestrais e
um índice, o qual
armazenados em có digos respectivas médias anuais.
- Cadeias de Caracter corresponde a uma
(usualmente o có digo É da média década aluno
Cadeias de caracteres posiçã o no vetor;
ASCII). que será efetuado o
sã o conjuntos de um ou - os índices sã o
- int: Nú mero cá lculo da média da
mais caracteres e sã o valores ínteiros e
inteiro é o tipo padrão e o turma.
cercados pelo caracter ". positivos (0, 1, 2, 3,...);
tamanho do conjunto que
Por exemplo: - em outras
pode ser representado
"Linguagem de palavras, uma posiçã o 17 Fonte: MANZANO, JA OLIVEIRA,
normalmente depende da
programaçã o" má quina em que o and J. F. Algoritmos. "Lógica para
"Qual é o seu nome?" 16 Fonte: Desenvolvimento de Programação
programa está rodando. http://www.deinf.ufma.br/~vidal/ de Computadores." São Paulo:
"12345" algoritmos1/vetoresmatrizes Érica (2000).
8 elementos do conjunto ao diagrama de blocos e
Agora basta escrever mesmo tempo. codificação em português
um programa para efetuar e No caso do exemplo do estruturado da leitura das
o cá lculo das 8 médias de s cá lculo da média dos 8 notas dos 8 alunos, cá lculo
cada aluno. Para c alunos, terse-ia entã o uma da média e a sua
representar a média do r ú nica variá vel indexada (a apresentação.
primeiro aluno será e matriz) contendo todos os
utilizada a variá vel MD1, v valores das 8 notas. Isto Diagrama de Blocos
para o segundo MD2 e a seria representado da
assim por diante. Entã o seguinte forma:
tem-se: M MD[1] = 4.5 MD[2] =
MD1 =4.5 É 6.5 MD[3] = 8.0 MD [4]
MD2 =6.5 D =3.5 MD[5] = 6.0 MD[6] =
MD3 =8.0 I 7.0 MD[7] = 6.5 MD[8] =
MD 4 = 3.5 A 6.0
MD 5 = 6.0 Observe que o nome é
fim um só . O que muda é a
MD 6 = 7.0
MD 7 = 6.5 informação indicada
Perceba que para dentro dos colchetes. A
MD 8 = 6.0
receber a média foram esta informaçã o dá -se o
utilizadas oito variá veis. nome de índice, sendo
Com o conhecimento
Com a técnica de matrizes este o endereço em que o
adquirido até este
poderia ter sido utilizada elemento está
momento, seria entã o
apenas uma variá vel com armazenado. E necessá rio
elaborado um programa
a capacidade de que fique bem claro que
que efetuaria a leitura de
armazenar oito valores. elemento é o conteú do da
cada nota, a soma delas e
a divisã o do valor da soma matriz, neste caso os
Operações Básicas com valores das notas. No caso
por 8, obtendose desta
Matrizes do Tipo Vetor de MD[1 ] = 4.5, o nú mero
forma a média, conforme
Uma matriz de uma 1 é o índice; o endereço
exemplo abaixo em
dimensã o ou vetor será , cujo elemento é 4.5 está
português estruturado:
neste trabalho, armazenado.
representada por seu
programa
nome e seu tamanho Atribuição de uma
MÉ DIA_TURMA
(dimensão) entre Matriz
var
colchetes. Desta forma Anteriormente, foram Diagrama de blocos
MD1, MD2, MD3,
seria uma matriz utilizadas vá rias para leitura dos elementos
MD4, MD5, MD6,
MD[1 ..8], sendo seu nome instruçõ es em português de uma matriz tipo vetor.
MD7, MD8 : real
MD, possuindo um estruturado para poder
SOMA, MÉ DIA : real
tamanho de 1 a 8. Isto definir e montar um programa
início significa que poderã o ser programa. No caso da MÉ DIA_TURMA
SOMA <- 0 armazenados em MD até utilização de matrizes, var
leia <- MD1, MD2, oito elementos. Perceba será definida a instruçã o MD : conjunto[1..8]
MD3, MD4, MD5, que na utilizaçã o de conjunto que indicará em de real
MD6, MD7, MD8 variá veis simples existe português estruturado a SOMA, MÉ DIA : real
SOMA <- MD1 + MD2 um regra: uma variá vel utilização de uma matriz, I
+ MD3 + MD4 + MD5 somente pode conter um
+ MD6 + MD7 tendo como sintaxe:
valor por vez. No caso das VARIÁ VEL : :
+ matrizes, poderã o
M conjunto[<dimensã o>] de
armazenar mais de um ctipo de dado>, sendo que i
D valor por vez, pois são
8 <dimensã o> será a n
dimensionadas indicaçã o dos valores t
exatamente para este fim. inicial e final do tamanho e
M
Desta forma poder-se-á do vetor e <tipo de dado> i
É
manipular uma se o vetor em questã o irá r
D
quantidade maior de utilizar valores reais, o
I
informação com pouco inteiros, ló gicos ou
A
trabalho de caracteres. i
processamento. Deve-se n
<
apenas considerar que Leitura dos Dados de í
-
com relaçã o à uma Matriz c
S manipulação dos A leitura de uma i
O elementos de uma matriz, matriz é processada passo o
M eles ocorrerã o de forma a passo, um elemento por
A individualizada, pois nã o é vez. A instruçã o de leitura S
possível efetuar a é leia seguida da variá vel O
/ manipulação de todos os mais o índice. A seguir, M
sã o apresentados A
< M
r É
- D
I
0 A

p <
a r
r -
a
S
I O
M
A Tenha cuidado para
d nã o confundir o índice
e
/ com o elemento. índice é o
endereço de alocaçã o de
1
8 uma unidade da matriz,
enquanto elemento é o
a
e conteú do armaze¬nado
t em um determinado
é s
c endereço.
r Diagrama de bloco
8
e Escrita dos Dados de para escrita dos
v uma Matriz elementos de uma matriz
p
a O processo de escrita tipo vetor.
a
de uma matriz é bastante
s
M parecido com o processo programa
s
E de leitura de seus MÉ DIA_TURMA
o
D elementos. Para esta var
I ocorrência deverá ser MD : conjunto[1..8]
1 A utilizada a instruçã o de real
escreva seguida da SOMA, MÉ DIA : real
f fim indicaçã o da variá vel e seu I
a
índice. Supondo que apó s
ç
Veja que o programa a leitura das 8 notas, :
a
ficou mais compacto, além houvesse a necessidade de
de possibilitar uma apresentá -las antes da i
leia MD[I]
mobilidade maior, pois se apresentação do valor da n
S houver a necessidade de média. Abaixo são t
O
efetuar o cá lculo para um apresentados o diagrama e
M
nú mero maior de alunos, de blocos e a codificaçã o i
A
basta dimensionar a em português estruturado r
matriz e mudar o valor da escrita das notas dos 8 o
<
final da instruçã o para. alunos antes de ser
r
Observe que no exemplo apresentado o cá lculo da i
-
anterior, a leitura é média. n
processada uma por vez. í
S
O Desta forma, a matriz é Diagrama de Blocos c
M controlada pelo nú mero i
A do índice que faz com que o
cada entrada aconteça em
+ uma posiçã o diferente da S
outra. Assim sendo, a O
M matriz passa a ter todas as M
D notas. A tabela seguinte, A
[ mostra como ficarã o os
I valores armazenados na <
] matriz: -

f 0
i
m p
_ a
p r
a a
r
a I
A fim deste processo de
d trabalho. O método mais
e < AS SUB-ROTINAS adequado para a
- No geral, problemas programaçã o estruturada
1 complexos exigem é o Top-Down (De cima
S algoritmos complexos. para baixo) o qual se
a O Mas sempre é possível caracteriza basicamente
t M dividir um problema por:
é A grande em problemas Antes de iniciar a
menores. Desta forma, construçã o do programa,
8 / cada parte menor tem um o programador deverá ter
algoritmo mais simples, e em mente as tarefas
p 8 é esse trecho menor que é principais que este deverá
a chamado de sub-rotina. executar. Nã o é necessá rio
s p Uma sub-rotina é na saber como funcionarã o,
s a verdade um programa, e somente saber quantas
o r sendo um programa sã o.
a poderá efetuar diversas Conhecidas todas as
1 tarefas a serem
operaçõ es computacionais
I executadas, tem-se em
(entrada, processamento e
f
saída) e deverá ser tratada mente como deverá ser o
a d
como foram os programas programa principal, o qual
ç e
projetados até este vai controlar todas as
a
momento. As sub-rotinas outras tarefas distribuídas
1
sã o utilizadas na divisã o em suas subrotinas.
l
de algoritmos complexos, Tendo definido o
e a
permitindo assim possuir programa principal, é
i t
a modularizaçã o de um iniciado o processo de
a é
determinado problema, detalhamento para cada
M 8 considerado grande e de sub-rotina. Desta forma
D difícil soluçã o. sã o definidos vá rios
[ p Ao trabalhar com esta algoritmos, um para cada
I a técnica, pode-se deparar rotina em separado, para
] s com a necessidade de que se tenha uma visã o do
s dividir uma sub-rotina em que deverá ser executado
S o outras tantas quantas em cada mó dulo de
O forem necessá rias, programa. Existem
M 1 buscando uma soluçã o programadores que
A mais simples de uma estabelecem o nú mero
f parte do problema maior. máximo de linhas de
< a O processo de dividir sub- programa que uma rotina
- ç rotinas em outras é deverá possuir. Se o
a denominado Método de nú mero de linhas
S Refinamento Sucessivo. ultrapassa o limite
O escreva MD[I] preestabelecido, a rotina
M f O Método Top-Down em desenvolvimento é
A i O processo de dividida em outra sub-
m programar um rotina (é neste ponto que
+ _ computador torna-se se aplica o método de
p bastante simples quando refinamento sucessivo).
M a aplicado o método de O método Top-Down
D r utilização de sub-rotinas faz com que o programa
[ a (mó dulos de programas). tenha uma estrutura
I Porém, a utilização dessas semelhante a um
] e sub-rotinas deverá ser organograma. A figura
s feita com aplicaçã o do abaixo apresenta um
f c método top down. exemplo desta estrutura.
i r Um método bastante A utilizaçã o do método
m e adequado para a "de cima para baixo"
_ v programaçã o de um permite que seja efetuado
p a computador é trabalhar cada mó dulo de programa
a com o conceito de em separado. Desta forma,
r M programaçã o estruturada, cada um pode ser testado
a É pois a maior parte das separadamente
D linguagens de garantindo que o
M programa completo esteja
I programaçã o utilizadas
É sem erro ao seu término.
A atualmente também sã o, o
D
que facilita a aplicação
I
Outro detalhe a ser efetuou a chamada da sub- de preferência na mesma
considerado é que muitas rotina. A melhor maneira de ordem em que estã o
vezes existem em um Com relaçã o à criaçã o entender como trabalhar mencionadas no
programa trechos de da rotina, será idêntica a com uma sub-rotina é organograma.
có digos que são repetidos tudo o que já foi estudado fazer a sua aplicaçã o em Programa Principal
vá rias vezes. Esses sobre programaçã o. Na um programa mais 1- Aprese
trechos poderã o ser representaçã o do complexo. Para tanto, ntar um menu de
utilizados como diagrama de blocos, nã o imagine o seguinte seleçã o com cinco
subrotinas, há quase nenhuma problema: opçõ es:
proporcionando um mudança, a nã o ser pela 1-Adiçã o
programa menor e mais troca das identificaçõ es Criar um programa 2-Subtraçã o
fá cil de ser alterado num Início e Fim nos símbolos calculadora que apresente 3-Multiplicaçã o
futuro pró ximo. de Terminal e o novo um menu de seleçõ es no 4- Divisã o
símbolo Sub-rotina, que é programa principal. Esse 5-Fim de
idêntico ao símbolo de menu deverá dar ao Programa
processamento, porém se usuá rio a possibilidade de
caracteriza pelas linhas escolher uma entre quatro 2- Ao ser
paralelas às bordas operaçõ es aritméticas. selecionado um valor,
esquerda e direita, Escolhida a opção a rotina
devendo ser utilizado no desejada, deverá ser correspondente
programa chamador. A solicitada a entrada de deverá ser executada;
sintaxe em português dois nú meros, e 3- Ao
estruturado será também processada a operação escolher o valor 5, o
idêntica ao estudo deverá ser exibido o programa deverá ser
anterior. Observe em resultado. encerrado.
seguida, o có digo em
português estruturado. Algoritmo Rotina 1 - Adiçã o
A utilizaçã o de sub- Português Estruturado Note que esse 1- Ler dois
rotinas e o uso do método procedimento <nome do programa deverá ser um valores, no caso
Top-Down na procedimento> conjunto de cinco rotinas, variá veis A e B;
programaçã o permitem ao var sendo uma principal e 2- Efetuar
programador elaborar < quatro secundá rias. A a soma das variá veis A
rotinas exclusivas. Por v rotina principal efetuará o e B, implicando o seu
exemplo, uma rotina a controle das quatro resultado na variá vel
somente para entrada, r rotinas secundá rias que, R;
outra para a parte de i por sua vez, pedirã o a 3- Aprese
processamento e outra á leitura de dois valores, ntar o valor da
para a saída dos dados. Se v farã o a operaçã o e variá vel R.
o leitor comparar esta e apresentarã o o resultado
proposta com o que foi i obtido. Afigura 11.2 Rotina 2 - Subtraçã o
estudado anteriormente, s apresenta um 1- Ler dois
verá suas vantagens. > organograma com a ideia valores, no caso
Lembre-se dos programas
de hierarquizaçã o das variá veis A e B;
anteriores todos os seus i rotinas do programa. A 2- Efetuar
algoritmos de saída n quinta opçã o nã o se a subtraçã o das
obrigavam de certa forma i caracteriza por ser uma variá veis Ae B,
efetuar primeiro a entrada c rotina, apenas a opçã o que implicando o seu
dos dados. i vai encerrar o looping de resultado na variá vel
o controle do menu.
Procedimentos R;
Um procedimento é 3- Aprese
<
um bloco de programa ntar o valor da
i
contendo início e fim e variá vel R.
n
será identificado por um s
nome, por meio do qual Rotina 3 -
t
será referenciado em Multiplicaçã o
r
qualquer parte do 1- Ler dois
u
programa principal ou do valores, no caso
ç
programa chamador da variá veis A e B;
õ
rotina. Quando uma sub- 2- Efetuar
e
rotina é chamada por um Tendo uma ideia da a multiplicaçã o das
s
programa, ela é executada estrutura geral do variá veis A e B,
>
e ao seu término o programa, será escrito em implicando o seu
controle de separado cada algoritmo resultado na variá vel
f
processamento retorna com os seus detalhes de R;
i
automaticamente para a operaçã o. Primeiro o 3- Aprese
m
primeira linha de programa principal e ntar o valor da
instruçã o apó s a linha que depois as outras rotinas, variá vel R.
Rotina 4 - Divisã o Diagramas de blocos e
1- Ler dois para o programa a
valores, no caso calculadora com sua sub- l
variá veis A e B; rotina
2- Efetuar i
a divisã o das variá veis Português Estruturado n
A e B, implicando o Em có digo português i
seu resultado na estruturado, serã o c
variá vel R; mencionadas em primeiro i
3- Aprese lugar as sub- -rotinase por o
ntar o valor da ú ltimo o programa
variá vel R. principal. Quando no e
programa principal ou s
Observe que em cada rotina chamadora for c
rotina serã o utilizadas as referenciada uma sub- r
rotina, ela será sublinhada e
mesmas variá veis, mas
para facilitar sua v
elas não serã o executadas
visualizaçã o. Observe no a
ao mesmo tempo para
todas as operaçõ es. Serã o programa a variá vel
"
utilizadas em separado e OPÇÃ O para controlar a
R
somente para a rotina opçã o do operador que é
o
escolhida. do tipo caractere. Outro
t
detalhe a ser observado é
i
Diagramas de Blocos o nome de cada rotina
n
Perceba que na mencionado junto da
a
diagramaçã o cada rotina é verificação da instruçã o se
definida em separado no mó dulo de programa d
como um programa principal. programa e
independente. O que CALCULADORA
muda é a forma de v A
identificaçã o do símbolo a d
Terminal. Em vez de se r i
utilizarem os termos ç
Início e Fim, utilizam-se o O ã
nome da subrotina para P o
iniciar e a palavra Ç "
Retomar para encerrar. Ã
Com relaçã o ao mó dulo O e
principal, ele faz uso do s
símbolo Sub-rotina que : c
indica a chamada de uma r
sub-rotina. c e
a v
r a
a
c "
t E
e n
r t
e r
e

{Sub-rotinas de u
cá lculos} m
procedimento
ROTSOMA v
var a
R l
, o
r
A
, p
a
B r
a
:
A
r :
“ escreva "Rotina de es escreva "A
Subtraçã o" escreva "Entre cr multiplicaçã
l um valor para A: " e o de A com
e leia A v B é = ", R
i e a fim
a s "
c R procedimento
A r ot ROTDIVISÃ O var
e in R, A, B: real
esc v a i
rev a d n
a e i
"En " M c
tre E ul i
um n ti o
val t pl
or r ic e
par e a s
a ç c
B: " u ã r
leia m o e
BR " v
<- v e a
A+ a sc
B l r "
esc o e R
rev r v o
a a t
"A p " i
so a E n
ma r n a
de a tr
A e d
co B u e
m : m
Bé v D
= ", “ al i
R o v
fim l r i
e p s
procedimento i a ã
ROTSUBTRAÇÃ O a r o
v a ”
a B A:
r “ escreva "Entre um
R le v
R ia a
, < A l
- escreva "Entre um o
A valor para B: " r
, A l
e p
B - i a
: a r
B a
r B
e escreva A
a "A R :
l subtraçã
o de A < "
i com B é r
n = ", R - l
i fim e
c A i
i procedimento a
o ROTMULTIPLICAÇÃ O *
var A
R, A, B : real B
inicio
escreva "Entre um rotdivisã o m c
valor para B: " fim_se i
l fim_enquanto A sua principal o
e fim diferença está no fato de
i uma funçã o retornar um Z
a Funções determinado valor, que é
Função também é um retornado no pró prio <
B bloco de programa, como nome da funçã o. Quando -
sã o os procedimentos, se diz valor, devem ser
R contendo início e fim e levados em consideraçã o A
sendo identificada por um os valores numéricos,
< nome, por meio do qual ló gicos ou literais +
- também será referenciada (caracteres).
em qualquer parte do B
A programa principal. Uma PARÃMETROS
sub-rotina de funçã o é na Os parâ metros têm e
/ verdade muito parecida por finalidade servir como s
com uma sub-rotina de c
um ponto de comunicaçã o
B r
procedimento. A sintaxe bidirecional entre uma
e
em português estruturado sub-rotina e o programa
v
escre é também idêntica ao principal ou uma outra
a
va "A estudo anterior. Observe sub-rotina
divisã em seguida, o có digo em hierarquicamente de nível
Z
o de A português estruturado de mais alto. Desta forma, é
com B uma funçã o. Português possível passar valores de
f
é = ", Estruturado uma sub-rotina ou rotina i
R fim funçã o <nome da chamadora à outra sub- m
funçã o> rotina e vice-versa,
(Programa (parâ metros) : <tipo utilizando parâ metros que
Principal} da função> podem ser formais ou Observe que a variá vel
início v reais. Z é local e está sendo
OPÇÃ O <- a usada para armazenar a
"0" r Parâmetros Formais e soma das variá veis A e B
enquanto Reais que representam os
(OPÇÃ O <> < Serã o considerados parâ metros formais da
"5") faça v parâ metros Formais sub-rotina CALCSOMA.
escreva "1 - a quando forem declarados
Adiçã o" Serã o considerados
r por meio de variá veis
escreva "2 - parâ metros Reais quando
i juntamente com a
Subtraçã o" substituírem os
á identificação do nome da
escreva "3 - v parâ metros formais,
sub-rotina, os quais serã o quando da utilizaçã o da
Multiplicaç e tratados exatamente da
ã o" i sub-rotina por um
mesma forma que são programa principal ou por
escreva "4 - s tratadas as variá veis
Divisã o" > uma rotina chamadora.
globais ou locais. Considere como exemplo
escreva "5 - Considere como exemplo
Fim de i de parâ metros reais o
de parâ metros formais o có digo em português
Programa" n có digo em português estruturado do programa
escreva í estruturado da sub-rotina que faz uso da sub-rotina
"Escolha c apresentado abaixo: CALCSOMA apresentado
uma opçã o: i
procedimento em seguida: inicio leia X
" leia o
CALCSOMA(A, B : inteiro) leia V calcsoma (X. Y) leia
OPÇÃ O se
var W leia T calcsoma (W, T)
(OPÇÃ O = <
"1") entã o Z calcsoma(8, 2)
i
rotsoma n fim
fim_se se :
s
(OPÇÃ O = t No trecho acima, toda
"2") entã o i
r vez que a sub-rotina
rotsubtracã n
u CALCSOMA é chamada,
o fim_se se t
ç faz-se uso de parâ metros
(OPÇÃ O = e
õ reais. Desta forma, são
"3") entã o i
e parâ metros reais as
rotmultioli r
s variá veis X, Y, W e T, pois
cacã o o
> seus valores sã o
fim_se se fornecidos pela instruçã o
(OPÇÃ O = i
f n leia e também os valores 8
"4") entã o i e 2.
í
Pesquisa Sequencial e partir do primeiro - caso médio: C(n) mostra que a função
Binária18. registro, pesquise = (n + 1) / 2 Pesquisa buscaSequencial está
sequencialmente até sem sucesso: correta.
Estudo de como encontrar a chave Quantas iteraçõ es a
recuperar informaçã o a procurada; entã o pare. - C (n) = n + 1. função faz? Ou melhor,
partir de uma grande Armazenamento de quantas vezes a funçã o
massa de informaçã o um conjunto de registros O algoritmo de compara x com elementos
previamente armazenada. por meio de um array. pesquisa sequencial é a de v? No pior caso, x é
A Busca (find): melhor escolha para o comparado com cada
- A informaçã o é problema de pesquisa elemento do vetor, e
dividida em registros. - Pesquisa retorna com n < 25. portanto o nú mero de
- Cada registro o índice do registro comparaçõ es é n .
possui uma chave para ser que contém a chave x; Veremos um algoritmo O consumo de tempo
usada na pesquisa. - Caso nã o esteja ó bvio, que examina um a da função é proporcional
- Objetivo da presente, o valor um todos os elementos do ao nú mero de
pesquisa: Encontrar uma retornado é -1. vetor. Segue uma comparaçõ es que
ou mais ocorrências de - A implementaçã o implementaçã o do envolvem x, e portanto
registros com chaves nã o suporta mais de algoritmo: proporcional a n no pior
iguais à chave de um registro com uma caso. Assim, se uma busca
pesquisa. mesma chave, pois consome T
retorna o primeiro microssegundos quando o
É importante encontrado. vetor tem N elementos,
considerar os algoritmos consumirá 10T
de pesquisa como tipos microssegundos quando o
abstratos de dados vetor tem 10N elementos.
(TADs), de tal forma que
haja uma independência É possível resolver o
de implementaçã o para as problema com menos
operaçõ es. comparaçõ es? É possível
Operaçõ es mais resolver o problema sem
comuns: comparar x com cada
elemento do vetor? A
O valor de m muda a resposta é afirmativa,
1. Inicializar a cada iteraçã o, mas as
estrutura de dados. como veremos a seguir.
relaçõ es m ≤ n e v[m-1]
2. Pesquisar um ou < x sã o invariantes: elas
mais registros com Busca binária.
valem no início de cada
determinada chave. iteraçã o. Mais
3. Inserir um novo Pesquisa em tabela
precisamente, essas
registro. pode ser mais eficiente se
relaçõ es invariantes
4. Retirar um registro registros forem mantidos
valem imediatamente
específico. em ordem
antes de cada comparaçã o
Para saber se uma
de m com n (ponto A do
Dicioná rio é um TAD chave está presente na
có digo). No começo da
com as operaçõ es: tabela:
primeira iteraçã o, a
- Compare a chave
relaçã o vale se estivermos
1. Inicializa com o registro que está na
dispostos a imaginar que
2. Pesquisa posiçã o do meio da tabela.
v[-1] é −∞.
3. Insere - Se a chave é
A relaçã o invariante
4. Retira menor entã o o registro
vale, em particular, no
procurado está na
início da ú ltima iteração,
Analogia com um primeira metade da tabela
quando m ≥ n ou v[m] ≥
dicioná rio da língua x. Se m ≥ n, temos m == n - Se a chave é
portuguesa: maior entã o o registro
e v[n-1] < x e a funçã o
devolve -1. Se m < n mas procurado está na
segunda metade da tabela.
- Chaves v[m] > x, a funçã o devolve
palavras -1. Se m < n e v[m] == x, a - Repita até que a
função devolve m. Nos chave seja encontrada ou
- Registros
Aná lise: três casos, a funçã o que se constate que a
entradas associadas com
devolve a resposta chave nã o existe na tabela.
*pronú ncia, definiçã o,
sinô nimos, outras Pesquisa com sucesso: correta. Essa discussão
informaçõ es.
- melhor caso :
Busca sequencial . 19 C(n) = 1
- pior caso : C(n) =
n
É o método de
pesquisa mais simples: a 19
https://www.ime.usp.br/~pf/algor
18 http://www.decom.ufop.br/ itmos/aulas/bubi2.html
Para entender a funçã o buscaBinaria, basta verificar que
no início de cada repetiçã o do while, imediatamente antes da
comparaçã o de e com d, vale a relaçã o
v[e-1] < x < v[d+1]

Essa relação é, portanto, invariante. Para que o invariante


valha no início da primeira iteração basta imaginar que v[-1]
vale −∞ e que v[n] vale +∞. Esse jogo de imaginar faz sentido
porque o vetor é crescente.
Se a execuçã o da funçã o termina na linha 5, o índice m é
obviamente uma solução do problema. Suponha agora que a
execuçã o termina na linha 9. Entã o a ú ltima iteraçã o começou
(na linha 3) com e > d. Em virtude do invariante, temos v[e-1]
< v[d+1] e portanto e-1 < d+1, uma vez que o vetor é
crescente. Logo, e == d+1. A relaçã o v[e-1] < x < v[d+1]
garante agora que x está estritamente entre dois elementos
consecutivos do vetor. Como o vetor é crescente, concluímos
que x é diferente de todos os elementos do vetor. Portanto, ao
devolver -1 a função está se comportando como prometeu.
Resta verificar que a execução da função termina.
Suponha que a execuçã o nã o é interrompida na linha 5. Como
o valor da diferença d - e diminui a cada iteraçã o, a diferença
fica estritamente negativa depois de algumas iteraçõ es e entã o
o
proce

Quanto tempo a funçã o buscaBinaria consome? No início


da primeira iteração, d - e vale aproximadamente n. No início
Análise: da segunda, vale aproximadamente n/2. No início da terceira,
aproximadamente n/4. No início da (k+1)-ésima,
- A cada iteração do algoritmo, o tamanho da tabela é aproximadamente n/2k. Quando k passar de log n , o valor da
dividido ao meio. expressão n/2k fica menor que 1 e a execuçã o do algoritmo
- Logo: o número de vezes que o tamanho da tabela é termina. Logo, o nú mero de iteraçõ es é aproximadamente
dividido ao meio é cerca de log n. lg (n)
- Ressalva: o custo par
a manter a tabela ordenada é alto: a
cada inserção na posição p da tabela implica no deslocamento no pior caso, sendo lg (n) o piso de log n . Isso é muito
dos registros a partir da posição p para as posições seguintes.
menos que o nú mero de iteraçõ es da busca sequencial, pois
- Consequentemente, a pesquisa binária não deve ser
log transforma multiplicaçõ es em somas. Por exemplo, se uma
usada em aplicações muito dinâmicas.
busca em um vetor de tamanho N exige T iteraçõ es, entã o uma
Existe um algoritmo muito mais rápido que a busca
sequencial. Ele é análogo ao método que se usa para encontrar
um nome em uma lista telefônica. É claro que essa ideia só
funciona porque o vetor está ordenado.

Os nomes das variá veis nã o foram escolhidos por acaso: e


lembra esquerda, m lembra meio e d lembra direita. O
resultado da divisão por 2 na expressão (e+d)/2 é
automaticamente truncado, pois as variá veis são do tipo int.
Por exemplo, se e vale 3 e d vale 6, entã o (e+d)/2 vale 4.

A ideia da busca biná ria (= binary search) é o ponto de


partida de algoritmos eficientes para muitos problemas.
A função buscaBinaria está correta?
busca em um vetor de método ou na forma de - Uma estante de livros
tamanho 2N fará apenas 1 Qual a profundidade implementaçã o de um com seu títulos bem
+ T iteraçõ es, uma busca da recursã o na função bb? dado método. visíveis.
em um vetor de tamanho Ou seja, quantas vezes bb A estrutura de dados
8N fará apenas 3 + T chama a si mesma? registro é a indicada para A possibilidade de
iteraçõ es, e uma busca em Resposta: cerca de log n representar os elementos acesso direto é a
um vetor de tamanho 16N vezes. a serem ordenados. capacidade ou
fará apenas 4 + T Um algoritmo que impossibilidade de
iteraçõ es. Métodos de ordena uma conjunto, acessar um elemento
O consumo de tempo ordenação. geralmente representada diretamente na estrutura.
da função buscaBinaria é num vetor, é chamado de
proporcional ao nú mero Ordenar corresponde algoritmo de ordenaçã o. - Uma pilha de livros
de iteraçõ es e portanto ao processo de rearranjar Algoritmo de ordenaçã o dentro de uma caixa, onde
proporcional a log n no um conjunto de objetos em ciência da precisamos tirar um a um
pior caso. em uma ordem específica. computaçã o é um para saber qual a sua
O principal objetivo da algoritmo que coloca os natureza.
elementos de uma dada
sequência em uma certa Para classificarmos
ordem — em outras estes dois ambientes de
palavras, efetua sua atuaçã o, costumamos
ordenaçã o completa ou utilizar o meio em que
parcial. As ordens mais está armazenado os
usadas sã o a numérica e dados. Em termos
a léxico-grá fica. Existem computacionais utiliza-se
vá rias razõ es para se a designaçã o Ordenaçã o
ordenar uma sequência. Interna, quando
Uma delas é a queremos ordenar
possibilidade se acessar informaçõ es em
seus dados de modo mais memó ria. E Ordenaçã o
eficiente. Externa, quando
queremos ordenar
Entre os mais informaçõ es em arquivo.
importantes, podemos
citar bubble sort (ou Selection Sort
ordenaçã o por flutuaçã o), (Ordenação por
heap sort (ou ordenaçã o Seleção).
por heap), insertion sort
(ou ordenaçã o por O Selection Sort
Versão recursiva da ordenaçã o é facilitar a inserçã o), merge sort (ou utiliza um o conceito de
busca binária. recuperação posterior de ordenaçã o por mistura) e "selecionar o elemento
elementos do conjunto o quicksort. Existem mais apto". Ele seleciona
Para formular uma ordenado. diversos outros. o menor ou maior valor
versã o recursiva da busca Exemplos: do vetor, por exemplo, e
biná ria é preciso Natureza dos Dados20. passa para a primeira (ou
generalizar ligeiramente o – Listas telefô nicas. ú ltima posiçã o
problema, trocando – Dicioná rios. Para melhor escolha dependendo da ordem
v[0..n1] por v[e..d]. Para – Índices de livros. de um método de requerida), depois o
estabelecer uma ponte – Tabelas e arquivos. ordenaçã o é preciso segundo menor para a
entre a formulaçã o saber sobre a natureza segunda posiçã o e assim
original e a generalizada, Os algoritmos dos dados que serã o sucessivamente com (n-
vamos usar uma funçã o- trabalham sobre os processados. Entre elas 1) elementos restantes
embalagem (= wrapper- registros de um destacam-se duas: até os dois ú ltimos.
function) buscaBinaria2, arquivo. Tempo de acesso a um
que repassa o serviço para Apenas uma parte do elemento e a Vetor inicial:
a funçã o recursiva bb. registro, chamada chave, é possibilidade de acesso
utilizada para controlar a direto a um elemento.
ordenaçã o. O tempo de acesso a
Além da chave podem um elemento é a
existir outros complexidade necessá ria
componentes em um para acessar um Primeira passagem:
registro, que nã o têm elemento em uma Posiçã o 0- compara 4
influência no processo de estrutura, exemplos: com 3.Como 3 é menor
ordenar, a não ser pelo que 4 este é fixado como
fato de que permanecem mínimo, compara 3 com
com a mesma chave. 20 1. Como este é menor do
O tamanho dos outros https://pt.wikibooks.org/wiki/Alg que 3 é fixado como
oritmos_e_Estruturas_de_Dados/Al
componentes pode mínimo. Compara 1 com
goritmos_de
influenciar na escolha do _Ordena%C3%A7%C3%A3o
2. Como continua sendo
menor, é fixado. Ao 1 míni
chegar ao final do vetor, mo]
como 1 é o menor m vetor
elemento em comparaçã o í [míni Quarta passagem:
com o 4, eles trocam de n mo]= compara 2 com 4. 2 menor
posiçã o. i auxili que 4.Permanece.
m ar
o
= Bubble Sort
i (Ordenação Bolha). Quinta passagem:
compara 4 com 1. 1 menor
Segunda Passagem: p O bubble sort, ou que 4.Mudam de posição.
Posiçã o 1- como já temos a ordenaçã o por flutuaçã o
1 como o menor elemento r (literalmente "por bolha"),
do vetor, passamos para a a é um algoritmo de
posiçã o 1. Comparamos 3 ordenaçã o dos mais Sexta passagem:
com 4.Como é menor, 3 j simples. A ideia é compara 4 com 5. 4 menor
continua como mínimo. = comparar dois elementos que 5.Permanece.
Compara com 2. Como 2 é i e trocá -los de posiçã o, até
menor este é fixado como + que os elementos de
mínimo. Ao chegar ao final 1 maior valor sejam levados
Sétima passagem:
do vetor, como 2 é o para o final do vetor. O
a compara 2 com 1. 1 menor
menor elemento em processo continua até a
t que 2.Trocam de posição.
comparaçã o com o 3, eles ordenaçã o total do vetor
trocam de posiçã o. é
lembrando a forma como
as bolhas em um tanque
N
de á gua procuram seu
pró prio nível, e disso vem Oitava passagem:
s compara 2 com 4. 2 menor
o nome do algoritmo.
e do que 4.Permanece.
A complexidade desse
Terceira Passagem:
v algoritmo é de ordem
Posiçã o 2- pegamos o
e quadrá tica (O(n²)). Por
elemento da posiçã o 2 (4)
t isso, ele nã o é
e comparamos com o 3. Nona passagem:
o recomendado para
Como 3 é o ú ltimo compara 4 com 5. 4 menor
r programas que precisem
elemento do vetor e é do que 5. Permanece.
[ de velocidade e operem
menor do que 4, trocamos
j com quantidade elevada
as posiçõ es. Como os dois
] de dados. Também é
elementos sã o os ú ltimos
< necessá ria uma condiçã o
do vetor, o Selection Sort Décima passagem: nã o
v de parada, geralmente
encerra-se. há mudanças. Sai do
e uma flag ou variá vel que
t armazena se houve troca laço.
o ou não na passagem. Se
r uma passagem chega ao
[ seu final sem troca a
m ordenaçã o cessa. O algoritmo pode ser
O algoritmo
í descrito em pseudo-
normalmente é
n Vetor inicial: có digo como segue
implementado por duas
i abaixo. V é um VETOR de
repetiçõ es iterando sobre
m elementos que podem ser
a estrutura em questã o.
o comparados e n é o
Um exemplo de algoritmo
] Primeira Passagem: tamanho desse vetor.
é:
compara 4 com 2. 4 maior BUBBLESORT (V[], n)
m que 2.Mudam de posiçã o. 1 houveTroca <- verdade
p
í # uma variá vel de
a
n controle
r
i 2 enquanto
a
m houveTroca for
Segunda Passagem:
o verdade faça
i compara 4 com 5. 4 menor
= 3 houveTroca <- falso
= que 5.Permanece.
j 4 para i de 1 até n-1
0
faça
auxili 5 se V[i] vem depois
a
ar=v de V[i + 1]
t Terceira passagem:
etor[ 6 entã o troque V[i] e
é compara 5 com 1. 1
i] V[i + 1] de lugar e 7
vetor menor que
n houveTroca <-
[i]=v 5.Mudam de posiçã o.
-
etor[
verdade Ordenaçã o espalhadas pela memó ria
por Inserçã o. de maneira imprevisível).
Este algoritmo é
bastante eficiente Endereço de uma lista
quando aplicado a um encadeada.
pequeno nú mero de
elementos. Em termos O endereço de uma
gerais, ele percorre um lista encadeada é o
vetor de elementos da endereço de sua primeira
É conveniente tratar
esquerda para a direita e célula. Se le é o endereço
as células como um novo
à medida que avança vai de uma lista, convém dizer
tipo-dedados e atribuir
deixando os elementos simplesmente
um nome a esse novo tipo:
mais à esquerda le é uma lista
ordenados. encad
typedef struct reg Eis uma versã o
celula; // célula eada. recursiva da mesma
função:
Uma célula c e um (Nã o confunda le com
ponteiro p para uma 1e). A lista está vazia (ou
célula podem ser seja, nã o tem célula
declarados assim: alguma) se e somente se le
== NULL.
Listas sã o animais
c eminentemente
e recursivos. Para tornar
l isso evidente, basta fazer a Árvore binária26.
u seguinte observaçã o: se le
l é uma lista nã o vazia Á rvore biná ria é uma
a entã o le->prox também é estrutura de dados
uma lista. Muitos caracterizada por:
algoritmos sobre listas
Listas encadeadas21. c
; encadeadas ficam mais - Ou nã o tem
Uma lista encadeada é
simples quando escritos elemento algum (á rvore
uma representaçã o de
c de maneira recursiva. vazia).
uma sequência de objetos,
e Exemplo. A seguinte - Ou tem um
todos do mesmo tipo, na
l função recursiva imprime elemento distinto,
memó ria RAM (= random
u o conteú do de uma lista denominado raiz, com
access memory) do
l encadeada le: dois apontamentos para
computador. Cada
elemento da sequência é a duas estruturas
armazenado em uma diferentes,
célula da lista: o primeiro * denominadas sub-
elemento na primeira p á rvore esquerda e sub-
célula, o segundo na ; á rvore direita.
segunda e assim por
diante. Perceba que a
Se c é uma célula entã o definiçã o é recursiva e,
Estrutura de uma lista c.conteudo é o conteú do E aqui está a versã o devido a isso, muitas
encadeada. da célula e c.prox é o iterativa da mesma operaçõ es sobre á rvores
Uma lista encadeada endereço da pró xima funçã o: biná rias utilizam
(= linked list = lista ligada) célula. Se p é o endereço recursão. É o tipo de
é uma sequência de de uma célula, entã o p- á rvore mais utilizado na
células; cada célula >conteudo é o conteú do computaçã o. A principal
contém um objeto de da célula e p>prox é o utilizaçã o de á rvores
algum tipo e o endereço endereço da pró xima biná rias sã o as á rvores
da célula seguinte. célula. Se p é o endereço de busca.
Suporemos neste capítulo da ú ltima célula da lista
que os objetos entã o p->prox vale Busca em uma lista Implementação de um
armazenados nas células NULL . encadeada. Nó de uma árvore
sã o do tipo int. Cada binária.
célula é um registro que Veja como é fá cil
pode ser definido assim: verificar se um objeto x Um nó de uma á rvore
A figura pode dar a pertence a uma lista biná ria é composto por,
falsa impressão de que as encadeada, ou seja, se é pelo menos, três
células da lista ocupam igual ao conteú do de elementos, a sua chave e
posiçõ es consecutivas na alguma célula da lista: mais dois ponteiros que
memó ria. Na realidade, as apontarã o um para a sub-
células estã o tipicamente á rvore esquerda e outro
para a subá rvore direita.
21 https://www.ime.usp.br/
26
PosOrdem.
https://pt.wikibooks.org/wiki/Algo
ritmos_e_Estruturas_de_Dados/ InOrdem.
%C3%81rvor es_Bin%C3%A1rias

Para a á rvore acima, o percurso seria: 2, 7, 5, 6, 11, 2, 5, 4 e


9.
PreOrdem.
O algoritmo desse percurso é:
filhos terã o índices 2i + 1
e 2i + 2 e o seu pai terá
índice piso((i - 1)/2). Essa
implementaçã o é utilizada
para representar á rvores
completas ou quase
completas. Heaps, que sã o
á rvores biná rias quase
completas sã o
implementadas na forma
Para a á rvore acima, o de um vetor de uma
percurso seria: 2, 7, 2, maneira bastante
6, 5, 11, 5, 9 e eficiente.
4.
PosOrdem. Apesar da
O algoritmo desse simplicidade, essa
percurso é: representaçã o requer uma
grande quantidade de
memó ria contígua para o
armazenamento de
á rvores grandes, o
crescimento desta é difícil
Definições para árvores binárias. de implementar e manter
e pode haver grande
Os nó s de uma á rvore biná ria possuem graus zero, um ou quantidade de desperdício
dois. Um nó de grau zero é denominado folha. de memó ria.
Uma á rvore biná ria é considerada estritamente biná ria se
cada nó da á rvore possui grau zero ou dois. Para a á rvore acima, o
A profundidade de um nó é a distâ ncia deste nó até a raiz. percurso seria: 2, 5,
Um conjunto de nó s com a mesma profundidade é 11, 6, 7, 4, 9, 5 e
denominado nível da á rvore. A maior profundidade de um nó , Em uma linguagem
2.
é a altura da á rvore. que possua suporte a
Uma á rvore é dita completa se todas as folhas da á rvore estruturas e referências
Transformação de uma
estã o no mesmo nível da á rvore. (por exemplo Pascal e C),
árvore n-ária.
Uma á rvore n-á ria as á rvores sã o
Definições em teoria dos grafos. implementadas a partir de
qualquer (á rvore cujos
nó s possuem graus nó s, com um, ou mais,
Em teoria dos grafos, uma á rvore biná ria é definida como menores ou iguais a n) campos para a(s)
um grafo acíclico, conexo, dirigido e que cada nó nã o tem podem ser representados informaçã o(õ es)
grau maior que por uma á rvore biná ria. principal(is) e dois
3. Assim sendo, só existe um caminho entre dois nó s distintos. Métodos para campos apontadores
E cada ramo da á rvore é um vértice dirigido, sem peso, que representação de especiais, denominados
parte do pai e vai o filho. árvores binárias. esquerda e direita, que
Uma das maneiras fazem referência à s sub-
mais simples de á rvores esquerda e
Percursos em árvore. representar á rvores direita, respectivamente.
Existem três tipos biná rias em linguagens de Algumas vezes, há um
de percursos: programaçã o é por meio apontador para o pai. Em
Percurso em de arranjos um nó do tipo folha, os
InOrdem, unidimensionais campos apontadores
PreOrdem e (vetores). Dado um nó de possuem valores especiais
índice i qualquer, os seus
(nil em Pascal e NULL em variá veis de entrada em de dados através de um Ban
C). categorias distintas. modelo de menor
Exemplo: dimensã o desse conjunto co de
Algoritmos de de dados. Um exemplo dados:
aprendizado (A) Regressã o —  interessante desse tipo de conceit
supervisionado e Dada uma imagem de aplicaçã o é fornecido pela
nãosupervisionados22. homem/mulher, temos de Aná lise dos Componentes os de
prever sua idade com base Principais. banco
Supõ em a existência em dados da imagem. Ainda é possível de
de um "Professor" que te (B) Classificaçã o —  utilizar aprendizagem não
Dada um exemplo de supervisionada para
dados
ensina que tipo de
comportamento você deve tumor cancerígeno, temos representar um conjunto e
exibir em cada situaçã o. de prever se ele é benigno de dados através de sistem
Na prá tica, imagine que ou maligno através do seu características
tamanho e idade do interessantes do conjunto
as
você deseja classificar
empresas saudá veis de paciente. de dados. gerenc
nã o-saudá veis e para fazer Com aprendizagem iadore
isso você tem uma nã o supervisionada nã o
há feedback com base nos
s de
amostra que associa cada
empresa saudá vel uma resultados da previsã o, ou bancos
série de variá veis. Entã o, seja, nã o há professor de
um algoritmo de para corrigi-la. Exemplo:
Nã o Clustering, é o
dados
aprendizagem
supervisionado tentaria “Algoritmo Cocktail (SGBD)
usar explicitamente essa Party”, que pode ,
informaçã o para no futuro encontrar em uma
Outro exemplo de estrutura de dados
model
ser há bil para separar
empresas saudá veis de Classificaçã o muito desorganizada como agem
nã o-saudá veis. O exemplo utilizado pelos bancos é a identificar as vozes conceit
mais simples de modelo decisã o do aceite do individuais e mú sica.
Abordagens comuns
ual de
que é baseado nesse tipo empréstimo para algum
de aprendizagem é o cliente com base no seu de aprendizagem nã o dados
modelo de regressã o histó rico de crédito. supervisionada incluem (a
linear, quando estimado armazenamento em
Cluster K-Médio,
aborda
usando por exemplo a Muitos algoritmos sã o
minimizaçã o dos erros utilizados para criar Hierá rquico, e Mapas gem
quadrá ticos, isto é, a aprendizes Auto-organizadores. entida
minimaçã o do erro supervisionadas, sendo os derela
quadrá tico entre o valor mais comuns as Redes
da variá vel predita pelo Neurais, Má quinas de cionam
modelo e o valor da Vetor de Suporte (SVMs), ento),
variá vel real. e Classificadores Naive model
Problemas de Bayes.
aprendizagem Por outro lado, o
supervisionados sã o algoritmos de relacio
classificados em aprendizagem nã o nal de
problemas de “regressã o” supervisionada nã o
e “classificaçã o”. Em um supõ em a classificação dados
problema de regressã o, entre as empresas Um exemplo de
estamos tentando prever saudá veis e nã o saudá veis projeto que implementa
os resultados em uma em sua base de dados. aprendizado de má quina
saída contínua, o que Eles simplesmente de uma maneira simplista
significa que estamos a tentariam separar as é o Apache Mahout que
tentando mapear empresas em questã o tem por objetivo a
variá veis de entrada para usando as variá veis construçã o de um
alguma funçã o contínua. associadas as empresas e ambiente para a criaçã o
Em um problema de nã o necessariamente rá pida de aplicaçõ es
classificaçã o, estamos separariam as empresas escalá veis de aprendizado
tentando prever os em duas classes. Eles de má quina de alta
resultados em uma saída normalmente associam o performance.
discreta. Em outras seu aprendizado a
palavras, estamos métricas que devem ser
tentando mapear otimizadas.
Outras formas de
22
aprendizagem nã o
http://prorum.com/index.php/167 supervisionado sã o
3/diferenca-algoritmos- baseadas no objetivo de
aprendizadosupervisionado- representar um conjunto
supervisionado
(concei satisfaçam esta restriçã o. CHAR(20), login:
Um exemplo de uma CHAR(10), age: INTEGER,
tos O Modelo Relacional23 instâ ncia para o esquema gpa: REAL)
básicos, Students é ilustrado na Observe que com a
normali No modelo relacional a Figura 1. execução deste comando
principal construçã o para está sendo criada apenas a
zação), relaçã o, sem que sejam
representaçã o dos dados é
banco a relaçã o, uma tabela com Sid Name Login atribuídos quaisquer
de linhas não ordenadas e valores aos seus atributos.
53666 Jones jones@cs
colunas. Uma relaçã o Para a remoçã o de
dados uma relaçã o do banco de
consiste de um esquema e 53688 Smith smith@eecs
SQL de uma instâ ncia. O dados usa-se o comando
(lingua esquema especifica o 53650 Smith smith@math
DROP TABLE. Assim, para
nome da relação e o nome remover a mesma relaçã o
gem Figura 1 – Exemplo Students tem-se:
e o domínio de cada
SQL coluna, também de instâ ncia da DROP TABLE Students
(SQL20 denominada atributo ou relaçã o Students Este comando remove
campo da relaçã o. O a relaçã o especificada,
08), removendo a informaçã o
domínio do atributo é O nú mero de tuplas
linguag referenciado no esquema (cada linha formada por sobre o seu esquema e
em por seu nome e serve para uma lista ordenada de também as tuplas da
restringir os valores que colunas) que uma dada instâ ncia atual.
HiveQL O comando ALTER
este atributo pode instâ ncia possui
(Hive assumir. O esquema de denomina-se TABLE é usado para
2.2.0)), uma relaçã o é invá riavel cardinalidade da relaçã o e alteraçã o do esquema de
ao longo do tempo, sendo o nú mero de atributos é o uma relaçã o. Ainda
banco considerando a relaçã o
modificado apenas por seu grau. A instâ ncia de
de comandos específicos. Um relaçã o da Figura 1 tem Students para alterar o
dados exemplo de esquema de cardinalidade 3 e grau 5. seu esquema com a adiçã o
relaçã o é: Note que a cardinalidade é de um novo campo
NoSQL
Students (sid: string, variá vel, mas o grau nã o. firstYear cujo domínio é
(conceit name: string, login: string, Um banco de dados inteiro usa-se o comando:
os age: integer, gpa: real). relacional é um conjunto ALTER TABLE
Neste caso está sendo de uma ou mais relaçõ es Students ADD
básicos,
definida a relaçã o de com nomes distintos. O COLUMN firstYear:
bancos nome Students, com esquema do banco de integer;
orienta atributos sid, name, login, dados relacional é a A execuçã o deste
dos a age e gpa, cujos domínios coleçã o dos esquemas de comando faz com que o
sã o respectivamente cada relação que compõ e esquema da relaçã o seja
grafos, string, string, string, o banco de dados. alterado e com que para
colunas, integer e real. cada tupla da instâ ncia
chave/v A instâ ncia de uma Criando e corrente seja criado um
relaçã o é o conjunto de Modificando Relações novo atributo de nome
alor e linhas, também em SQL firstYear, atribuindo a ele
docume denominadas tuplas ou A linguagem SQL o valor null.
ntos), registros, distintas entre padrã o usa a palavra Um outro subconjunto
si, que compõ em a relaçã o TABLE para referenciar da linguagem SQL forma a
data em um dado momento. Ela uma relação. Um Linguagem de
Wareho é variá vel, já que o subconjunto desta Manipulaçã o de Dados
use nú mero de tuplas e o linguagem forma a (DDL), que compreende
conteú do de seus Linguagem de Definiçã o comandos bá sicos para a
(model atributos podem variar ao de Dados (DDL) que modificaçã o e a
agem longo do tempo. A compreende comandos recuperação de dados.
conceit instâ ncia de uma relaçã o bá sicos para a criação, a O comando INSERT
deve seguir sempre o seu remoçã o e a modificaçã o INTO é usado para
ual respectivo esquema, de relaçõ es. adicionar novas tuplas a
para respeitando o nú mero de A criaçã o de relaçõ es uma relação.
data atributos definidos, bem em SQL é feita usando-se o Por exemplo, para
como os seus domínios. comando CREATE TABLE, inserir uma tupla na
wareho Esta restriçã o, com a especificaçã o do relaçã o Students, tem-se:
uses, denominada restriçã o de respectivo esquema. Por INSERT INTO Students
dados domínio, é muito exemplo, para criar a (sid, name, login, age, gpa)
importante. O modelo relaçã o Students citada VALUES (53688, ‘Smith’,
multidi relacional somente anteriormente tem-se: ‘smith@ee’, 18, 3.2) onde
mensio considera relaçõ es que CREATE TABLE os valores descritos por
nais); Students (sid: VALUES, correspondem ao
23 Fonte: CHAR(20), name: valor que cada atributo
www.ic.unicamp.br/~geovane/mo4 terá na nova tupla.
10-091/
As tuplas de uma garante as RIs, nã o unicamente as tuplas. O O uso de CONSTRAINT
relaçã o são removidas por permitindo a existência de conjunto de todos os no comando serve para
meio do comando DELETE instâ ncias invá lidas. atributos de uma relaçã o nomear uma restriçã o,
FROM. Pode-se remover As RI sã o especificadas formam sempre uma facilitando sua
todas as tuplas de uma e conferidas em 2 super-chave desta relaçã o. identificaçã o para
relaçã o ou apenas aquelas momentos diferentes: Pela definiçã o de impressão de mensagens
que satisfaçam uma dada - especificaçã o da relaçã o, é sempre de erro numa eventual
condiçã o. Para remover as RI: se dá na definiçã o do garantida a existência de ocorrência de violaçã o.
tuplas de estudantes cujo esquema da base de dados uma chave. Entretanto, Note que neste
nome (name) é Smith na pelo usuá rio ou pelo cada relação pode conter segundo exemplo cada
relaçã o Students executa- administrador da base de vá rias chaves candidatas. estudante pode cursar
se o comando: DELETE dados (DBA); Cabe ao DBA escolher apenas um curso e
FROM Students S WHERE - conferência das dentre elas aquela que receber uma ú nica nota
S.name = ‘Smith’ RIs: é feita pelo banco de será a chave primá ria, a para este curso. E ainda
A alteraçã o do valor de dados toda vez que uma ser usada pelo banco de que dois estudantes de um
atributos que compõ em as relaçã o é modificada por dados em operaçõ es de mesmo curso nã o
tuplas é feita usando-se o uma aplicação sendo otimizaçã o. A escolha recebem a mesma nota.
comando UPDATE FROM. executada. desta chave é muito Percebe-se, entã o, que
De forma semelhante ao O modelo relacional importante e deve ser quando usada de forma
comando DELETE FROM, permite a especificaçã o de feita visando garantir a displicente, uma restriçã o
podese modificar uma vá rios tipos de RIs. qualidade dos dados. Por de integridade pode
tupla específica ou vá rias Um deles exemplo, na relação impedir o armazenamento
delas por meio de um é a Students, se name fosse de instâ ncias de base de
ú nico comando. Por restriçã o escolhido como chave dados que surgem na
exemplo: de primá ria, nã o seria prá tica.
UPDATE FROM domínio citada possível a existência de
Students S anteriormente. Outros estudantes homô nimos, o Restrições de Chave
SET S.age = S.age + 1, tipos serã o vistos a seguir. que talvez nã o refletisse Estrangeira
S.gpa = S.gpa – 1 corretamente os No modelo relacional é
WHERE S.sid = 53688 Restrições de Chaves requisitos do sistema. A comum que a informaçã o
Este comando altera A restriçã o de chave chave primá ria nã o pode de uma relaçã o esteja
apenas a tupla da relação serve para garantir que as assumir valor null. ligada à informaçã o de
Students cujo atributo sid tuplas de uma relaçã o outra relaçã o. Se uma
tenha valor igual a 53688. sejam ú nicas. Para isso, Especificando delas é modificada a outra
Já o comando a seguir identifica um conjunto Restrições de Chaves também deve ser checada
altera todas as tuplas cujo mínimo de atributos que em SQL e modificada, se for o caso,
atributo gpa tenha valor devem ter valores A especificaçã o de uma de maneira a garantir a
maior ou igual a 3.2. diferentes em todas as chave e de uma chave consistência da
UPDATE FROM tuplas de uma instâ ncia da primá ria em SQL é feita informaçã o. Para que o
Students S SET S.gpa = relaçã o. Este conjunto de respectivamente, pelos banco de dados possa
S.gpa + 0.5 WHERE atributos denomina-se comandos UNIQUE e fazer esta checagem, é
S.gpa >= 3.2 chave candidata da PRIMARY KEY. especificada uma restriçã o
relaçã o e deve satisfazer Na execução do envolvendo ambas as
Restrições de os seguintes requisitos: comando a seguir está relaçõ es. Esta restriçã o
Integridade sobre - nã o podem sendo criada a relaçã o denomina-se restriçã o de
Relações existir 2 tuplas diferentes Enrolled, cuja chave chave estrangeira.
Um bom SGBD deve com os mesmos valores primá ria é composta pelos A chave estrangeira é
evitar a entrada de para estes atributos, ou atributos stdid e cid um conjunto de atributos
informaçã o incorreta ou seja, a chave identifica CREATE TABLE de uma relaçã o que é
inconsistente em sua base unicamente qualquer Enrolled (stdid CHAR(20), usado para fazer
de dados, garantindo, com tupla da relaçã o vá lida; cid CHAR(20), grade referência a uma tupla de
isso, a qualidade da - ao retirar-se CHAR(2), PRIMARY KEY outra relaçã o,
informaçã o inserida. Uma qualquer atributo (stdid,cid) ) correspondendo à chave
restriçã o de integridade componente da chave, ela Caso fosse desejado primá ria da relaçã o
(RI) é uma condiçã o deixa de identificar que esta mesma relaçã o referenciada. A chave
especificada no esquema unicamente as tuplas. tivesse uma chave estrangeira deve conter o
da base de dados para Se o segundo requisito composta pelos atributos mesmo nú mero de
restringir a informaçã o a for violado, entã o a chave cid e grade, sendo sid a atributos da chave
ser armazenada. Ou seja, a candidata é uma super- chave primá ria da relaçã o, primá ria da outra relaçã o,
RI é uma condiçã o chave. Por exemplo temos deveria ser executado o e seus respectivos
definida que deve ser que sid é uma chave para comando: domínios, mas nã o
verdadeira para qualquer a relaçã o Student, pois CREATE TABLE necessariamente os
instâ ncia da base de identifica cada estudantes. Enrolled (stdid CHAR(20), mesmos nomes. Além
dados. Se uma instâ ncia Já o conjunto {sid, gpa} é cid CHAR(20), grade disso, diferente da chave
da base de dados satisfaz uma super-chave da CHAR(2), primá ria, pode assumir
todas as RIs especificadas, relaçã o, pois ao retirar-se UNIQUE (cid, grade), valor null. Por fim pode
entã o ela é uma instâ ncia o atributo gpa, o atributo CONSTRAINT EnrolledKey referenciar a relaçã o que a
vá lida. Um bom SGBD sid continua identificando PRIMARY KEY (cid) ) contém, se necessá rio.
Considerando a (stdid) REFERENCES ser feito se uma tupla de valor à chave estrangeira
relaçã o Enrolled Students ) Enrolled com um id de da tupla referenciada.
apresentada Com este comando estudante nã o existente A seleção da
anteriormente, queremos garante-se que somente fosse inserida? Ou entã o alternativa a ser utilizada
garantir que apenas estudantes registrados em uma tupla de Students é feita no momento da
estudantes com registro Students possam ser com sid nulo (null)? O especificaçã o da RI. Para o
vá lido (sid) podem ser matriculados em cursos. sistema deveria apenas exemplo utilizado,
matriculados nos cursos. Outra restriçã o colocada rejeitá -las. Mas o que supondo-se que no caso
Para isso, cria-se uma por este comando, por deveria ser feito se uma de exclusão seja escolhida
chave estrangeira em meio da chave primá ria, é tupla de Student a segunda alternativa e no
Enrolled que corresponde que cada estudante pode referenciada por Enrolled caso de atualização a
à chave primá ria da ter apenas uma nota por fosse removida? Neste primeira delas, a criaçã o
relaçã o Students, curso. caso com certeza o da tabela Enrolled se daria
conforme ilustra a Figura sistema estaria violando pelo comando:
2: Restrições Gerais as restriçõ es de CREATE TABLE
Restriçõ es de domínio, integridade referencial. Enrolled (stdid CHAR(20),
de chave primá ria e de Para evitar isso, a cid CHAR(20), grade
Figura 2 – chave estrangeiras são linguagem SQL provê CHAR(2),
Exemplo de consideradas como parte alternativas de tratamento PRIMARY KEY
chave fundamental do modelo para estas violaçõ es. Sã o (stdid,cid), FOREIGN
estrangeira de dados relacional. elas: KEY (stdid) R
Entretanto, elas nã o sã o - rejeitar a EFERENCES Students
Neste caso, se a suficientes para remoçã o da tupla de ON DELETE CASCADE
aplicaçã o tentar inserir especificar outras Students que é ON UPDATE NO
em Enrolled uma tupla de restriçõ es mais genéricas, referenciada por Enrolled; ACTION )
um estudante de stdid como, por exemplo, a - remover também
53673, o sistema de banco definiçã o de intervalos de todas as tuplas de Transações e
de dados irá rejeitar a valores para Enrolled que referenciam Restrições
operaçã o, pois nã o existe determinados atributos. a tupla de Students a ser Uma transaçã o é um
um estudante em Students Para estes outros removida; programa que é executado
com este sid. Da mesma casos sã o usadas - atribuir um valor pelo banco de dados e que
forma, ao tentar excluir de restriçõ es de tabelas e de padrã o vá lido ao stdid das pode conter vá rios
Students o estudante com assertivas. As restriçõ es tuplas de comandos de acesso à
sid 53650, o sistema nã o de tabelas sã o associadas Enrolled que referenciam base de dados, como
deve permitir a exclusã o, a um ú nica tabela e sã o a tupla de Students a ser consultas, inserçõ es,
pois ele está sendo checadas sempre que a removida; atualizaçõ es, etc. Caso um
referenciado por Enrolled. tabela é alterada. Já as - atribuir o valor destes comandos da
Uma outra ação possível restriçõ es de assertivas null ao stdid das tuplas de transaçã o viole algumas
para este caso seria a sã o associadas a vá rias Enrolled que referenciam das restriçõ es de
exclusã o de todas as tabelas e sã o checadas a tupla de Students integridade especificadas
tuplas de Enrolled que sempre que uma destas removida, denotando o tratamento padrã o é
façam referência a este tabelas é modificada. ‘desconhecido’ ou ‘nã o rejeitar a sua execuçã o.
estudante. aplicá vel’; entretanto, Entretanto, esta
Se todas as restriçõ es Garantindo as como neste exemplo stdid abordagem algumas vezes
de chave estrangeiras Restrições de é parte da chave primá ria pode ser muito inflexível,
definidas no banco de Integridade de Enrolled , esta devendo ser dado outro
dados sã o garantidas, a Como já visto alternativa estaria tratamento à situaçã o.
sua integridade anteriormente, as RIs sã o violando a RI de chave Um exemplo seria,
referencial é alcançada, ou especificadas quando uma primá ria e portanto nã o considerando as relaçõ es
seja, garante-se que nã o relaçã o é criada e são poderia ser aplicada. Enrolled e Students, a
há referências pendentes. checadas sempre que uma Estas opçõ es sã o situação em que para o
relaçã o é modificada. O vá lidas também para o estudante ser registrado,
Especificando impacto de RIs de caso de atualizaçõ es na ou seja, ter seu id, ele deve
Restrições de Chave domínio, de chave relaçã o Students. estar matriculado em um
Estrangeira em SQL primá ria e de chave Os comandos em SQL curso. Entretanto, para o
O comando FOREIGN estrangeiras é direto. Ou para implementar curso existir, deve haver
KEY identifica a chave seja, sempre que um estas açõ es sã o: pelo menos um estudante
estrangeira na criação da comando de inserção, NO ACTION, que é a matriculado. Percebe-se
relaçã o. Assim, para exclusã o ou atualização opçã o padrã o e que rejeita pelas restriçõ es existentes
definir esta restriçã o para causa uma violaçã o de RI, a operação sendo neste caso, que ao tentar-
o exemplo da Figura 2 ele é rejeitado. executada; se inserir a primeira tupla
usa-se o comando: Considerando as CASCADE, que remove de qualquer das relaçõ es,
CREATE TABLE relaçõ es Students e a tupla da relaçã o ocorrerá violaçã o e,
Enrolled (stdid CHAR(20), Enrolled já definidas, referenciada e todas as portanto, as operaçõ es
cid CHAR(20), grade sendo stdid uma chave tuplas que fazem nã o serã o completadas. A
CHAR(2), estrangeira em Enrolled referência à ela; ú nica maneira de
PRIMARY KEY que faz referência a SET NULL / SET conseguir realizar a
(stdid,cid) , FOREIGN KEY Students. O que deveria DEFAULT , que atribui um primeira inserção em
alguma delas seria resposta é apresentada na
postergando a checagem Figura 3: Conjuntos Entidade
da restriçã o, que Um conjunto entidade
normalmente ocorreria ao (CE) é mapeado no
final da execuçã o do modelo relacional com
comando INSERT. Figura 3 – Relaçã o uma relaçã o. Os atributos
A linguagem SQL resultante de uma desta relaçã o serã o os
permite entã o que a consulta mesmos do CE, bem como
checagem de uma O símbolo ‘*’ na seus respectivos
Para o exemplo do CR
restriçã o possa ser feita consulta indica que a domínios. Da mesma
Works_In ilustrado na
em modo imediato relaçã o resultante deve forma, a chave primá ria
Figura 6, o seguinte
(IMMEDIATE) ou conter todos os atributos também é mantida.
comando SQL será usado
postergado (DEFERRED). existentes na relaçã o Como exemplo,
no mapeamento:
Para isso usa-se o consultada. Caso fosse considere o CE Employees
CREATE TABLE
comando SET, indicando a desejado obter apenas o ilustrado na Figura 5,
Works_In( ssn CHAR(11),
restriçã o e o seu modo. nome e a senha destes cujos atributos sã o ssn,
did INTEGER, since DATE,
Por exemplo o comando estudantes, o comando a name e lot, sendo ssn a
PRIMARY KEY (ssn,
SET CONSTRAINT ser exeutado seria o chave primá ria.
did),
EnrolledKey DEFERRED, descrito abaixo que
faz com que a restriçã o de FOREIGN KEY (ssn)
produziria o resultado REFERENCES
nome EnrolledKey ilustrado na Figura 4.
definida anteriormente Employees,
SELECT name, login FOREIGN KEY (did)
seja checada somente no FROM Students S
momento de efetivaçã o REFERENCES
WHERE S.age=18 Departments)
(commit ) da transaçã o.
No caso de auto
relacionamento a relaçã o
Consultando Dados
a ser criada conterá 2
Relacionais
ocorrências da chave
Uma consulta em uma
Figura 4 primá ria da entidade
base de dados relacionais,
– Relaçã o O comando SQL para envolvida, as quais
normalmente
resultante de criar a relaçã o comporã o a chave
referenciada como query,
uma consulta correspondente é primá ria da relaçã o.
é uma questã o sobre os
CREATE TABLE
dados da base, cuja
Projeto Lógico da Employees (ssn
resposta consiste em uma
Base de Dados: indo do CHAR(11), name
nova relaçã o que contém o
Modelo ER para o CHAR(20), lot INTEGER,
resultado na forma de
Modelo Relacional PRIMARY KEY (ssn)).
tuplas. Por exemplo,
usando as relaçõ es O Modelo Entidade
Students e Enrolled, pode- Relacionamento (MER) é
se querer saber quantos adequado para Conjuntos
Relacionamento
O mapeamento de
Sid Name Login age gpa
conjuntos relacionamento
53666 Jones jones@cs 18 3.4 (CR) para o modelo
relacional pode ser feito
53688 Smith smith@eecs 18 3.2 de duas maneiras,
estudantes sã o maiores de representar um projeto de abordadas a seguir.
18 anos ou quantos banco de dados em alto
estudantes estã o nível. Uma vez pronto o Conjuntos
matriculados em um esquema da base de dados Relacionamento sem
Assim, o mapeamento
determinado curso. em MER, é preciso Restrições
do conjunto auto-
O comando em SQL converter este esquema Um conjunto
relacionamento
usado para realizaçã o de para o esquema de banco relacionamento (CR) sem
Reports_To ilustrado na
consultas é o SELECT. de dados a ser usado, restriçõ es é mapeado
Figura 7 para o modelo
Para encontrar todos os geralmente no modelo numa relaçã o de maneira
relacional é feito pelo
relacional. Para isso, semelhante ao conjunto
Logi comando:
existe um conjunto entidade. Entretanto, a
Name n CREATE TABLE
de regras que chave primá ria de cada
Reports_To(supervisor_ss
direcionam o entidade envolvida irá
Jones jones@cs n CHAR(11),
usuá rio nesta compor os atributos da
Smit subordinate_ssn
atividade, tratando, nova relaçã o como chaves
h smith@eecs CHAR(11) ,
inclusive, restriçõ es estrangeiras, juntamente
estudantes com 18 anos PRIMARY KEY
que nã o foram cobertas no com os atributos
na instâ ncia de relaçã o da (supervisor_ssn,
esquema conceitual. Estas descritivos. A chave
Figura 1, executase o subordinate_ssn),
regras serã o discutidas a primá ria desta relação
comando SELECT * FROM seguir, abrangendo os FOREIGN KEY
será composta pelas
Students S WHERE principais elementos do (supervisor_ssn)
chaves estrangeiras.
S.age=18. A relaçã o MER.
REFERENCES DATE, PRIMARY KEY casos anteriores é ideal. que referencia a super
Employees (did), Entretanto, por se tratar entidade. A chave
(ssn), FOREIGN KEY (ssn) de uma entidade estrangeira desta relaçã o
FOREIGN KEY REFERENCES dependente de outra, tem é também a sua chave
(subordinate_ssn) Employees)) chave do tipo parcial. primá ria. Caso a relaçã o
REFERENCES Esta abordagem pode correspondente à super
Departments(ssn)) ser aplicada a CR que entidade seja removida, as
envolvam mais de 2 CE. relaçõ es das entidades
Conjuntos Em geral, se o CR envolve especializadas também
Relacionamento com N CE e algumas delas tem devem ser removidas,
Restrições de Chave restriçã o de chave, o CR usando para isso o
Existem 2 opçõ es para pode ser embutido nesta comando CASCADE.
o mapeamento de CR com CE. Figura A segunda abordagem
restriçã o de chave para o 9 – sugere criar uma relaçã o
modelo relacional. A Conjuntos Conju para cada especialização
primeira delas é Relacionamento com nto do CE, mas nã o para a
semelhante à quela já Restrições de Entida super entidade. Neste caso
apresentada, criando uma Participação de cada relação criada
relaçã o para representar o A abordagem é a Fraca conterá , além dos seus
CR, com chaves mesma que no caso atributos, os atributos da
estrangeiras para as anterior, mas com Para o exemplo de super entidade.
relaçõ es envolvidas. Esta algumas particularidades. conjunto entidade fraca A primeira abordagem
abordagem nem sempre é Considerando que no ilustrado na Figura 9 o é mais genérica e também
interessante, pois faz com exemplo da Figura 8 mapeamento para o a mais usada. Sua
que seja necessá ria a existisse uma restriçã o de modelo relacional seria principal vantagem é
combinação de relaçõ es participaçã o relacionada feito por meio do permitir que a relaçã o
para responder às ao gerente: todo comando: referente à super classe
consultas do usuá rio, departamento tem de ter CREATE TABLE seja utilizada
podendo se tornar uma sempre um gerente. O Dept_Policy(pname independente das relaçõ es
atividade lenta. comando a ser utilizado CHAR(20), age referentes à s entidades
A segunda opçã o é seria: INTEGER, cost REAL, ssn especializadas. Já a
embutir o CR em qualquer CREATE TABLE CHAR(11), segunda abordagem
das relaçõ es referentes à s Dept_Mgr(did INTEGER, PRIMARY KEY obriga que a informação
entidades envolvidas, dname CHAR(20), budget (pname, ssn), seja sempre obtida a
usando uma chave REAL, ssn CHAR(11) NOT FOREIGN KEY (ssn) partir de uma das
estrangeira para NULL, since REFERENCES Employees entidades especializadas,
referenciar a outra DATE, ON DELETE CASCADE) nã o permitindo a
entidade. Os atributos PRIMARY KEY (did), Note que neste caso, a existência da super classe.
descritivos também FOREIGN KEY (ssn) chave da relaçã o passou a
passam a integrar a REFERENCES Employees ser composta pela chave Traduzindo
relaçã o que recebeu o CR. ON DELETE NO ACTION) primá ria da entidade fraca diagramas ER com
Esta soluçã o é mais Neste caso a restriçã o (pname) e pela chave Agregação
vantajosa por permitir a de participaçã o é primá ria da relação que a Neste casos o
obtençã o mais rá pida de garantida pelo NOT NULL contém (ssn, em mapeamento é simples e
uma resposta. A ú nica usado no atributo ssn Employees), sendo esta semelhante à queles
ressalva é que podem indicando que ele nã o ú ltima também uma chave discutidos anteriormente:
ocorrer tuplas nas quais pode assumir valores null. estrangeira. O comando o CR da agregaçã o é
os atributos referentes ao Ou seja, que ele tem CASCADE, garante que se traduzido em uma nova
CR estejam vazios. sempre um valor o empregado for excluído relaçã o, sendo sua chave
associado. Já o comando da relaçã o Employees, primá ria é composta pela
NO ACTION, que é padrã o, todos os seus chave primá ria dos CE
garante que o empregado dependentes também o envolvidos. Da mesma
nã o pode ser excluído da serã o. forma, o CR que envolve
relaçã o de empregados, se esta agregaçã o também é
ele estiver como gerente Traduzindo traduzido em uma nova
do departamento. Hierarquias de Classe relaçã o, que terá dentre
Semelhante ao que seus atributos a chave
Conjuntos de ocorre com os CR, existem primá ria da relaçã o que
Considerando a
Entidades Fracas 2 abordagens para tratar representa a agregaçã o.
segunda opçã o, o
O conjunto de as hierarquias ISA. Na
mapeamento do CR
entidades fracas tem primeira delas, deve ser Visões
Manages da Figura 8 para
sempre participaçã o criada, além da relaçã o A visão é uma tabela
o modelo relacional é feito
biná ria do tipo 1:N, bem referente à super cujas linhas nã o são
pelo comando:
como uma restriçã o de entidade, uma relação explicitamente
CREATE TABLE
chave e uma de para cada especializaçã o armazenadas na base de
Dept_Mgr(did INTEGER,
participaçã o total. do CE, mantendo seus dados, mas sim
dname
Levando-se isso em conta, atributos e acrescentando computadas, quando
CHAR(20), budget REAL,
a abordagem utilizada nos uma chave estrangeira necessá rio, a partir de
ssn CHAR(11), since
uma definiçã o em termos possível permitir que Assim, por questõ es O controle de acesso
de tabelas da base de determinados grupos de prá ticas, a linguagem SQL ló gico pode ser encarado
dados, denominada usuá rios acessem somente permite a atualização de de duas formas diferentes:
tabelas base. O comando os dados que eles tem visõ es apenas em casos a partir do recurso
em SQL usado para isso é permissão para uso. Por muito específicos, nã o computacional que se
o CREATE VIEW. exemplo, permitir que permitindo, por exemplo, quer proteger e a partir do
Considere as relaçõ es estudantes vejam apenas a atualizaçã o de colunas usuá rio a quem serã o
Students e Enrolled o nome e login de outros calculadas, de visõ es concedidos certos
discutidas anteriormente. estudantes, mas nã o sua compostas por agregados privilégios e acessos aos
Suponha que exista um senha ou sua nota em um de linhas ou geradas a recursos.
interesse constante em curso. partir de junçõ es. A proteção aos
recuperar o nome e o recursos computacionais
identificador dos Atualizações em Destruindo e baseia-se nas
estudantes que tem nota B Visões Alterando Visões necessidades de acesso de
em algum curso e também Uma das vantagens do Uma visão, de maneira cada usuá rio, enquanto
o identificador deste uso de visõ es é permitir o semelhante ao que ocorre que a identificação e
curso. Uma visã o pode ser gerenciamento da com as relaçõ es, também autenticaçã o do usuá rio
utilizada neste caso, sem apresentaçã o do dados pode ser removida do (confirmaçã o de que o
que seja necessá ria a aos usuá rios, sem que eles banco de dados. O usuá rio realmente é quem
criação de uma tabela tenham de se preocupar comando em SQL utilizado ele diz ser) é feita
para isso. Entã o para o com a maneira como eles para isso é o DROP VIEW. normalmente por meio de
exemplo descrito poderia estã o fisicamente Note que a remoçã o de um identificador de
ser usado o comando: armazenados na base de uma relação também pode usuá rio (ID) e por uma
CREATE VIEW B- dados. Isto normalmente levar à remoção de uma senha durante o processo
Students (name, sid, funciona adequadamente, visão caso tenha sido de logon no sistema.
course) AS SELECT já que a visã o pode ser usado algum comando que
S.sname, S.sid, E.cid FROM usada exatamente como estabeleça esta restriçã o, Que recursos devem
Students S, Enrolled E uma relaçã o, permitindo a como o CASCADE. Já o ser protegidos?
WHERE S.sid = E.sid AND definiçã o de consultas comando RESTRICT evita A proteção aos
E.grade = 'B' sobre os dados que a que uma relaçã o seja recursos computacionais
A visã o definida neste compõ em. Esta vantagem excluída quando da inclui desde aplicativos e
caso é composta por 3 acaba levando a uma existência de uma visã o arquivos de dados até
campos (name, sid e restriçã o, pois como se associada a ela. utilitá rios e o pró prio
course) cujos domínios também se trata de uma sistema operacional.
correspondem aos relaçã o, é natural o desejo CONTROLES DE Abaixo serã o
mesmos das relaçõ es de atualizaçã o os seus ACESSO E apresentados os motivos
Students (name e sid) e dados. Entretanto, como a AUTENTICAÇÃO pelos quais esses recursos
Enrolled visã o é uma tabela virtual, Os controles de acesso, devem ser protegidos.
(course). a sua atualizaçã o deve físicos ou ló gicos, têm - Aplicativos
incidir sobre a tabela base, como objetivo proteger (programas fonte e
Visões, o que nem sempre é equipamentos, aplicativos objeto)
Independência de possível, devido a e arquivos de dados O acesso nã o
Dados e Segurança problemas como contra perda, modificaçã o autorizado ao có digo fonte
O mecanismo de ambiguidade e restriçõ es ou divulgaçã o nã o dos aplicativos pode ser
visõ es provê uma de integridade. autorizada. Os sistemas usado para alterar suas
independência ló gica dos computacionais, bem funçõ es e a ló gica do
dados no modelo Necessidade de diferentes de outros tipos programa. Por exemplo,
relacional. Ela pode ser Restringir de recursos, não podem em um aplicativo
usada para definir Atualizações de ser facilmente controlados bancá rio, pode-se zerar os
relaçõ es em um esquema Visões apenas com dispositivos centavos de todas as
externo que mascare É possível atualizar ou físicos, como cadeados, contas-correntes e
mudanças ocorridas no inserir uma linha em uma alarmes ou guardas de transferir o total dos
esquema conceitual da visã o. No entanto, nem segurança. centavos para uma
base de dados das sempre esta atualizaçã o determinada conta,
aplicaçõ es. Por exemplo, fará parte dela. Isto ocorre O que sã o controles de beneficiando ilegalmente
se o esquema de uma dada porque na verdade a acesso ló gico? esse correntista.
relaçã o for alterado, pode execução destes Os controles de acesso - Arquivos de dados
ser definida uma visã o comandos promovem uma ló gico sã o um conjunto de Bases de dados,
que represente o esquema atualizaçã o ou inserção procedimentos e medidas arquivos ou transaçõ es de
antigo, permitindo que nas tabelas base e com o objetivo de bancos de dados devem
aplicaçõ es continuem dependendo da condiçã o proteger dados, ser protegidos para evitar
executando estabelecida na definiçã o programas e sistemas que os dados sejam
normalmente da visã o, a linha pode nã o contra tentativas de apagados ou alterados
sem grandes ser selecionada para acesso nã o autorizadas sem autorização, como,
modificaçõ es. compor a tabela virtual, feitas por pessoas ou por por exemplo, arquivos
Visõ es também sã o nã o refletindo a alteraçã o outros programas de com a configuraçã o do
muito ú teis no contexto de feita. computador. sistema, dados da folha de
segurança. Com elas é
pagamento, dados alterar os arquivos de log e de uma senha computador. - limitar o
estratégicos da empresa. para que suas açõ es nã o (autenticaçã o do usuá rio). tempo má ximo para o
- Utilitá rios e sistema possam ser identificadas. A identificação define para procedimento de logon. Se
operacional Dessa forma, o o computador quem é o excedido, o sistema
O acesso a utilitá rios, administrador do sistema usuá rio e a senha é um deverá encerrar o
como editores, nã o ficará sabendo que autenticador, isto é, ela procedimento;
compiladores, softwares houve uma invasã o. prova ao computador que - mostrar as seguintes
de manutençã o, o usuá rio é realmente informaçõ es, quando o
monitoraçã o e diagnó stico O que os controles de quem ele diz ser. procedimento de logon no
deve ser restrito, já que acesso ló gico pretendem sistema finalizar com
essas ferramentas podem garantir em relaçã o à Como deve ser êxito:
ser usadas para alterar segurança de projetado um processo de a) data e hora do
aplicativos, arquivos de informaçõ es? logon para ser ú ltimo logon com
dados e de configuraçã o Os controles de acesso considerado eficiente? sucesso;
do sistema operacional, ló gico sã o implantados O procedimento de b) detalhes de
por exemplo. com o objetivo de garantir logon deve divulgar o qualquer tentativa
O sistema operacional que: mínimo de informaçõ es de logon sem
é sempre um alvo - apenas usuá rios sobre o sistema, evitando sucesso,
bastante visado, pois sua autorizados tenham fornecer a um usuá rio nã o desde o ú ltimo
configuraçã o é o ponto- acesso aos recursos; autorizado informaçõ es procedimento realizado
chave de todo o esquema - os usuá rios detalhadas. Um com sucesso.
de segurança. A tenham acesso apenas aos procedimento de logon
fragilidade do sistema recursos realmente eficiente deve: O que é identificaçã o
operacional compromete necessá rios para a - informar que o do usuá rio?
a segurança de todo o execução de suas tarefas; computador só deve ser A identificação do
conjunto de aplicativos, - o acesso a acessado por pessoas usuá rio, ou ID, deve ser
utilitá rios e arquivos. recursos críticos seja bem autorizadas; ú nica, isto é, cada usuá rio
- Arquivos de senha monitorado e restrito a - evitar identificar deve ter uma identificaçã o
A falta de proteçã o poucas pessoas; o sistema ou suas pró pria. Todos os usuá rios
adequada aos arquivos - os usuá rios aplicaçõ es até que o autorizados devem ter um
que armazenam as senhas estejam impedidos de processo de logon esteja ID, quer seja um có digo de
pode comprometer todo o executar transaçõ es completamente concluído; caracteres, cartã o
sistema, pois uma pessoa incompatíveis com sua - durante o inteligente ou qualquer
nã o autorizada, ao obter funçã o ou além de suas processo de logon, evitar o outro meio de
identificador (ID) e senha responsabilidades. fornecimento de identificaçã o. Essa
de um usuá rio O controle de acesso mensagens de ajuda que unicidade de identificaçã o
privilegiado, pode, pode ser traduzido, entã o, poderiam auxiliar um permite um controle das
intencionalmente, causar em termos de funçõ es de usuá rio não autorizado a açõ es praticadas pelos
danos ao sistema. Essa identificaçã o e completar esse usuá rios através dos logs.
pessoa dificilmente será autenticaçã o de usuá rios; procedimento; No caso de
barrada por qualquer alocação, gerência e - validar a identificaçã o a partir de
controle de segurança monitoramento de informação de logon caracteres, é comum
instalado, já que se faz privilégios; limitaçã o, apenas quando todos os estabelecer certas regras
passar por um usuá rio monitoramento e dados de entrada de composiçã o, como, por
autorizado. desabilitaçã o de acessos; e estiverem completos. Caso exemplo, quantidade
- Arquivos de log prevençã o de acessos nã o ocorra algum erro, o mínima e máxima de
Os arquivos de log sã o autorizados. sistema nã o deve indicar caracteres, misturando
usados para registrar qual parte do dado de letras, nú meros e
açõ es dos usuá rios, Como os usuá rios sã o entrada está correta ou símbolos.
constituindo-se em ó timas identificados e incorreta, como, por
fontes de informaçã o para autenticados? exemplo, ID ou senha; O que é autenticaçã o
auditorias futuras. Os logs Os usuá rios dos - limitar o nú mero do usuá rio?
registram quem acessou sistemas computacionais de tentativas de logon sem Apó s a identificaçã o do
os recursos sã o identificados e sucesso (é recomendado usuá rio, deve-se proceder
computacionais, autenticados durante um um má ximo de três à sua autenticaçã o, isto é,
aplicativos, arquivos de processo, chamado Logon. tentativas), e ainda: o sistema deve confirmar
dados e utilitá rios, quando Os processos de logon são a) registrar as se o usuá rio é realmente
foi feito o acesso e que usados para conceder tentativas de acesso quem ele diz ser. Os
tipo de operaçõ es foram acesso aos dados e invá lidas; sistemas de autenticação
efetuadas. aplicativos em um sistema b) forçar um tempo sã o uma combinaçã o de
Um invasor ou usuá rio computacional, e orientam de espera antes de hardware, software e de
nã o autorizado pode os usuá rios durante sua permitir novas tentativas procedimentos que
tentar acessar o sistema, identificaçã o e de entrada no sistema ou permitem o acesso de
apagar ou alterar dados, autenticaçã o. rejeitar qualquer tentativa usuá rios aos recursos
acessar aplicativos, alterar Normalmente esse posterior de acesso sem computacionais.
a configuraçã o do sistema processo envolve a autorizaçã o específica; Na autenticaçã o, o
operacional para facilitar entrada de um ID c) encerrar as usuá rio deve apresentar
futuras invasõ es, e depois (identificaçã o do usuá rio) conexõ es com o algo que só ele saiba ou
possua, podendo até - evitar reutilizar computador (ASDFG, sistemas. Se um deles nã o
envolver a verificaçã o de as mesmas senhas; YUIOP); for devidamente
características físicas - alterar senhas - objetos ou locais protegido, a senha poderá
pessoais. A maioria dos temporá rias no que podem ser vistos a ser descoberta e utilizada
sistemas atuais solicita primeiro acesso ao partir da mesa do nos sistemas que, a priori,
uma senha (algo que, sistema; usuá rio (nome de um estariam seguros. Outro
supostamente, só o - nã o incluir livro na estante, nome conselho: adquira o há bito
usuá rio conhece), mas já senhas em processos de uma loja de trocar sua senha com
existem sistemas mais automá ticos de acesso vista pela janela); frequência. Trocá -la a
modernos utilizando ao sistema (por - qualquer senha cada sessenta, noventa
cartõ es inteligentes (algo exemplo, armazenadas com menos de seis dias é considerada uma
que o usuá rio possui) ou em macros). caracteres. boa prá tica.
ainda características Vale lembrar também Alguns softwares sã o Se você realmente nã o
físicas (algo intrínseco ao que utilizar a mesma capazes de identificar conseguir memorizar sua
usuá rio), como o formato senha para vá rios senhas frá geis, como senha e tiver que escrevê-
da mã o, da retina ou do sistemas nã o é uma boa algumas dessas citadas la em algum pedaço de
rosto, impressã o digital e prá tica, pois a primeira acima, a partir de bases de papel, tenha pelo menos o
reconhecimento de voz. atitude de um invasor, dados de nomes e cuidado de nã o identificá -
quando descobre a senha sequências de caracteres la como sendo uma senha.
Como orientar os de um usuá rio em um mais comuns, e ainda Nã o pregue esse pedaço
usuá rios em relaçã o à s sistema vulnerá vel, é bloquear a escolha dessas de papel no pró prio
senhas? tentar a mesma senha em senhas por parte do computador, nã o guarde a
Para que os controles outros sistemas a que o usuá rio. Essas bases de senha junto com a sua
de senha funcionem, os usuá rio tem acesso. dados normalmente fazem identificaçã o de usuá rio, e
usuá rios devem ter pleno parte do pacote de nunca a envie por e-mail
conhecimento das Que tipos de senhas software de segurança, e ou a armazene em
políticas de senha da devem ser evitadas? podem ser atualizadas arquivos do computador.
organizaçã o, e devem ser Os usuá rios devem pelo gerente de segurança
orientados e estimulados evitar senhas compostas com novas inclusõ es. Como deve ser feita
a segui-las fielmente. de elementos facilmente a concessã o de
Todos os usuá rios devem identificá veis por Como escolher uma senhas aos usuá rios?
ser solicitados a: possíveis invasores, como boa senha? A concessã o de senhas
- manter a por exemplo: Geralmente sã o deve ser feita de maneira
confidencialidade das - nome do usuá rio; consideradas boas senhas formal, considerando os
senhas; - identificador do aquelas que incluem, em seguintes pontos:
- nã o compartilhar usuá rio (ID), mesmo sua composiçã o, letras - solicitar aos
senhas; que seus caracteres (maiú sculas e usuá rios a assinatura de
- evitar registrar estejam minú sculas), nú meros e uma declaraçã o, a fim de
as senhas em papel; embaralhados; símbolos embaralhados, manter a
- selecionar - nome de totalizando mais de seis confidencialidade de sua
senhas de boa membros de sua caracteres. Porém, para senha pessoal (isso pode
qualidade, evitando o família ou de amigos ser boa mesmo, a senha estar incluso nos termos e
uso de senhas muito íntimos; tem de ser difícil de ser condiçõ es do contrato de
curtas ou muito - nomes de adivinhada por outra trabalho do usuá rio);
longas, que os pessoas ou lugares em pessoa, mas de fá cil - garantir, aos
obriguem a escrevê- geral; memorizaçã o, para que usuá rios, que estã o sendo
las em um pedaço de - nome do sistema nã o seja necessá rio anotá - fornecidas senhas iniciais
papel para nã o serem operacional ou da la em algum lugar. seguras e temporá rias,
esquecidas má quina que está Também é conveniente forçando-os a alterá -las
(recomenda-se sendo utilizada; escolher senhas que imediatamente no
tamanho entre seis e - nomes pró prios; possam ser digitadas primeiro logon. O
oito caracteres); - datas; rapidamente, dificultando fornecimento de senhas
- alterar a senha - nú meros de que outras pessoas, a uma temporá rias, nos casos de
sempre que existir telefone, de cartã o de certa distâ ncia ou por esquecimento por parte
qualquer indicaçã o de crédito, de carteira de cima de seus ombros, dos usuá rios, deve ser
possível identidade ou de possam identificar a efetuado somente apó s a
comprometimento do outros documentos sequência de caracteres. identificaçã o positiva do
sistema ou da pró pria pessoais; Um método bastante respectivo usuá rio;
senha; - placas ou marcas difundido é selecionar - fornecer as
- alterar a senha de carro; uma frase significativa senhas temporá rias aos
em intervalos - palavras que para o usuá rio e utilizar os usuá rios de forma segura.
regulares ou com base constam de primeiros caracteres de O uso de terceiros ou de
no nú mero de acessos dicioná rios em cada palavra que a mensagens de correio
(senhas para usuá rios qualquer idioma; - compõ e, inserindo eletrô nico desprotegidas
privilegiados devem letras ou nú meros símbolos entre eles. É (nã o criptografadas) deve
ser alteradas com repetidos; também recomendá vel ser evitado.
maior frequência que - letras seguidas nã o utilizar a mesma
senhas normais); do teclado do senha para vá rios
O que a instituiçã o administrativos eficientes reproduzidas com maior O que são sistemas
pode fazer para proteger e que informem o gerente facilidade. biométricos?
controlar as senhas de de segurança, ou o Os sistemas
acesso a seus sistemas? administrador dos O que sã o cartõ es biométricos sã o sistemas
O sistema de controle sistemas, da ocorrência de magnéticos automá ticos de verificaçã o
de senhas deve ser demissõ es ou de inteligentes? de identidade baseados
configurado para proteger desligamentos de Os cartõ es inteligentes em características físicas
as senhas armazenadas funcioná rios. Esses sã o tokens que contêm do usuá rio. Esses sistemas
contra uso nã o autorizado, procedimentos, na prá tica, microprocessadores e têm como objetivo suprir
sem apresentá -las na tela nem sempre sã o seguidos, capacidade de memó ria deficiências de segurança
do computador, expondo a organizaçã o a suficiente para armazenar das senhas, que podem ser
mantendo-as em arquivos riscos indesejá veis. dados, a fim de dificultar reveladas ou descobertas,
criptografados e Também devem ser sua utilizaçã o por outras e das tokens, que podem
estipulando datas de bloqueadas contas de pessoas que nã o seus ser perdidas ou roubadas.
expiração (normalmente usuá rios apó s um proprietá rios legítimos. Os sistemas
se recomenda a troca de determinado nú mero de O primeiro cartã o biométricos automá ticos
senhas apó s 60 ou 90 tentativas de acesso sem inteligente, patenteado em sã o uma evoluçã o natural
dias). Alguns sistemas, sucesso. Esse 1975, foi o de Roland dos sistemas manuais de
além de criptografar as procedimento diminui os Moreno, considerado o pai reconhecimento
senhas, ainda guardam riscos de alguém tentar do cartã o inteligente. amplamente difundidos
essas informaçõ es em adivinhar as senhas. Comparado ao cartã o há muito tempo, como a
arquivos escondidos que Atingido esse limite, só o magnético, que é um aná lise grafoló gica de
nã o podem ser vistos por administrador do sistema simples dispositivo de assinaturas, a aná lise de
usuá rios, dificultando, poderá desbloquear a memó ria, o cartã o impressõ es digitais e o
assim, a açã o dos hackers. conta do usuá rio, por inteligente nã o só pode reconhecimento de voz.
Para evitar o uso exemplo. armazenar informaçõ es Hoje já existem sistemas
frequente das mesmas para serem lidas, mas ainda mais sofisticados,
senhas, o sistema de Existem outras formas também é capaz de como os sistemas de
controle de senhas deve de autenticação do processar informaçõ es. aná lise da conformaçã o
manter um histó rico das usuá rio, além do uso de Sua clonagem é mais dos vasos sanguíneos na
ú ltimas senhas utilizadas senhas? difícil e a maioria dos retina.
por cada usuá rio. Deve-se Sim. A autenticaçã o cartõ es inteligentes ainda
ressaltar, entretanto, que dos usuá rios pode ser oferece criptografia. Que características
a troca muito frequente de feita a partir de tokens, ou Normalmente o humanas podem ser
senhas também pode ainda, de sistemas usuá rio de cartã o verificadas por sistemas
confundir o usuá rio, que biométricos. inteligente precisa biométricos?
poderá passar a escrever a O que são tokens? fornecer uma senha à Teoricamente,
senha em algum lugar A ideia de fornecer leitora de cartã o para que qualquer característica
visível ou escolher uma tokens aos usuá rios como o acesso seja permitido, humana pode ser usada
senha mais fá cil, forma de identificá -los é como uma medida de como base para a
comprometendo, assim, bastante antiga. No nosso proteçã o a mais contra o identificaçã o biométrica.
sua segurança. dia-a-dia, estamos roubo de cartõ es. Na prá tica, entretanto,
O gerente de frequentemente As instituiçõ es existem algumas
segurança deve utilizando tokens para bancá rias, financeiras e limitaçõ es. A tecnologia
desabilitar contas inativas, acessar alguma coisa. As governamentais são os deve ser capaz de medir
sem senhas ou com chaves que abrem a porta principais usuá rios dessa determinada
senhas padronizadas. Até da sua residência ou seu tecnologia, em funçã o de característica de tal forma
mesmo a senha cartã o com tarja seus benefícios em relaçã o que o indivíduo seja
temporá ria fornecida ao magnética para utilizar o à segurança de realmente ú nico,
usuá rio pela gerência de caixa eletrô nico do banco informaçõ es e pela distinguindo inclusive
segurança deve ser gerada sã o exemplos de tokens. O possibilidade de reduçã o gêmeos, porém nã o deve
de forma que já entre cartã o magnético é ainda de custos de instalaçõ es e ser invasiva ou ferir os
expirada no sistema, uma token especial, pois de pessoal, como, por direitos dos indivíduos.
exigindo uma nova senha guarda outras exemplo, a substituição Um dos problemas
para os pró ximos logons. informaçõ es, como, por dos guichês de enfrentados pelos
Portanto, deve haver um exemplo, a sua conta atendimento ao pú blico sistemas biométricos
procedimento que force a bancá ria. nos bancos por caixas atuais é sua alta taxa de
troca de senha Token pode ser eletrô nicos. Os cartõ es erro, em funçã o da
imediatamente apó s a definida, entã o, como um inteligentes têm sido mudança das
primeira autenticação, objeto que o usuá rio usados em diversas características de uma
quando o usuá rio poderá possui, que o diferencia aplicaçõ es: cartõ es pessoa com o passar dos
escolher a senha que será das outras pessoas e o bancá rios, telefô nicos e de anos, ou devido a
utilizada dali por diante. habilita a acessar algum crédito, dinheiro problemas de saú de ou o
Ex-funcioná rios devem objeto. A desvantagem das eletrô nico, segurança de pró prio nervosismo, por
ter suas senhas tokens em relaçã o às acesso, carteiras de exemplo. A tolerâ ncia a
bloqueadas. Para isso, senhas é que essas, por identidade. erros deve ser
devem existir serem objetos, podem ser estabelecida com precisão,
procedimentos perdidas, roubadas ou de forma a nã o ser grande
o suficiente para admitir imagem captada por uma pagamento, poderá ser definiçõ es de acesso desse
impostores, nem pequena câ mera infravermelha que apresentado um menu usuá rio e do recurso
demais a ponto de negar mostra os padrõ es inicial com três opçõ es desejado conferem. O
acesso a usuá rios térmicos de uma face. Essa diferentes: funcioná rio, usuá rio só conseguirá o
legítimos. Abaixo serã o imagem é ú nica e, gerente e setor de acesso se essa verificação
apresentadas algumas combinada com recursos humanos. Nesse for positiva.
características humanas algoritmos sofisticados de caso, o administrador do Para garantir a
verificadas por sistemas comparaçã o de diferentes sistema deverá conceder segurança ló gica, pode-se
biométricos existentes: níveis de temperatura acesso a cada uma das especificar dois tipos de
- Impressõ es distribuídos pela face, opçõ es de acordo com a controle, sob ó ticas
digitais – sã o constitui-se em uma função desempenhada diferentes: - O que um
características ú nicas e técnica nã oinvasiva, pelo usuá rio. Portanto, o sujeito pode fazer; ou - O
consistentes. Nos sistemas altamente confiá vel, nã o funcioná rio só terá acesso que pode ser feito com um
biométricos que utilizam sendo afetada por a dados da sua folha de objeto.
essa opção, sã o alteraçõ es de saú de, idade pagamento pessoal,
armazenados de 40 a 60 ou temperatura do corpo. enquanto que o gerente O que são direitos e
pontos para verificar uma Sã o armazenados ao todo poderá ter acesso a permissõ es de acesso?
identidade. O sistema 19.000 pontos de algumas informaçõ es da Definir direitos de
compara a impressã o lida identificaçã o, podendo folha de seus funcioná rios. acesso individualmente
com impressõ es digitais distinguir gêmeos O setor de recursos para cada sujeito e objeto
de pessoas autorizadas, idênticos, mesmo no humanos, para poder pode ser uma maneira um
armazenadas em sua base escuro. O alimentar a base de dados tanto trabalhosa quando
de dados. Atualmente, desenvolvimento dessa de pagamento, obterá um estiverem envolvidas
estã o sendo utilizadas tecnologia tem como um nível diferente de acesso e grandes quantidades de
impressõ es digitais em de seus objetivos baratear sua interaçã o com o sujeitos e objetos. A forma
alguns sistemas seu custo para que possa sistema será feita a partir mais comum de definiçã o
governamentais, como, ser usada em um nú mero de menus pró prios para a de direitos de acesso,
por exemplo, o sistema de maior de aplicaçõ es de administraçã o de pessoal. nesse caso, é a matriz de
previdência social na identificaçã o e de Os menus apresentados controle de acesso. Nessa
Espanha e o de registro de autenticaçã o. apó s a seleçã o de uma das matriz pode-se fazer duas
eleitores na Costa Rica; opçõ es (funcioná rio, aná lises: uma em relação
- Voz – os sistemas Como restringir o gerente ou setor de aos sujeitos; outra, em
de reconhecimento de voz acesso aos recursos recursos humanos) serã o, relaçã o aos objetos.
sã o usados para controle informacionais? portanto, diferentes. Na primeira
de acesso, porém nã o sã o O fato de um usuá rio abordagem, cada sujeito
tã o confiá veis como as ter sido identificado e Para que servem os recebe uma permissã o (ou
impressõ es digitais, em autenticado nã o quer controles de funçõ es capacidade) que define
funçã o dos erros causados dizer que ele poderá de aplicativos? todos os seus direitos de
por ruídos do ambiente e acessar qualquer No que diz respeito às acesso. As permissõ es de
de problemas de garganta informaçã o ou aplicativo funçõ es internas dos acesso sã o, entã o,
ou nas cordas vocais das sem qualquer restriçã o. aplicativos, os respectivos atributos, associados a um
pessoas a eles submetidas; Deve-se implementar um proprietá rios deverã o sujeito ou objeto, que
- Geometria da controle específico, definir quem poderá definem o que ele pode ou
mã o – também é usada em restringindo o acesso dos acessá-las e como, por nã o fazer com outros
sistemas de controle de usuá rios apenas às meio de autorizaçã o para objetos. Essa abordagem,
acesso, porém essa aplicaçõ es, arquivos e uso de funçõ es específicas no entanto, é pouco
característica pode ser utilitá rios imprescindíveis ou para restriçã o de utilizada, já que, na
alterada por aumento ou para desempenhar suas acesso a funçõ es de prá tica, com grandes
diminuição de peso ou funçõ es na organizaçã o. acordo com o usuá rio quantidades de sujeitos e
pela artrite; Esse controle pode ser (menus de acesso objetos, a visualizaçã o
- Configuraçã o da feito por menus, funçõ es predefinidos), horá rio ou exata de quem tem acesso
íris e da retina – os ou arquivos. tipo de recursos a um determinado objeto
sistemas que utilizam (impressoras, fitas nã o é tã o clara,
essas características se backup). comprometendo, assim, a
propõ em a efetuar gerência de controle de
identificaçã o mais Como proteger acesso.
confiá vel do que os Para que servem os arquivos? Na segunda
sistemas que verificam controles de menu? A maioria dos sistemas abordagem, os direitos de
impressõ es digitais. Os controles de menu operacionais possui acesso sã o armazenados
Entretanto, sã o sistemas podem ser usados para mecanismos de controle com o pró prio objeto
invasivos, pois direcionam restringir o acesso de de acesso que definem as formando a chamada lista
feixes de luz aos olhos das diferentes categorias de permissõ es e os de controle de acesso
pessoas que se submetem usuá rios apenas à queles privilégios de acesso para (Access Control List
à sua identificaçã o; aplicativos ou utilitá rios cada recurso ou arquivo (ACL)).
- Reconhecimento indispensá veis a cada no sistema. Quando um
facial através de categoria. usuá rio tenta acessar um O que são listas de
termogramas - o Por exemplo, em um recurso, o sistema controle de acesso?
termograma facial é uma sistema de folha de operacional verifica se as
Enquanto a permissão de invasã o por meio da protegidos contra automá tico, isto é, a
de acesso define o que um identificaçã o e alteraçã o ou destruiçã o sessã o é desativada apó s
objeto pode ou nã o fazer autenticaçã o de usuá rios. por usuá rios ou invasores um determinado tempo
com outros, a lista de Na ocorrência de uma que queiram encobrir sem qualquer atividade no
controle de acesso define invasã o, falha do sistema suas atividades. terminal ou computador.
o que os outros objetos ou ou atividade nã o Para restaurá -la, o usuá rio
sujeitos podem fazer com autorizada, é O que deve ser é obrigado a fornecer
o objeto a ela associado. imprescindível reunir registrado em logs? novamente seu ID e senha.
As listas de controle de evidências suficientes Devido à grande Em alguns sistemas
acesso nada mais sã o do para que possam ser quantidade de dados operacionais, o pró prio
que bases de dados, tomadas medidas armazenada em logs, usuá rio, apó s sua
associadas a um objeto, corretivas necessá rias ao deve-se levar em habilitaçã o no processo de
que descrevem os restabelecimento do consideração que seu uso logon, pode ativar e
relacionamentos entre sistema à s suas condiçõ es pode degradar o desativar essa funçã o de
aquele objeto e outros, normais, assim como desempenho dos sistemas. time-out. Nesse sentido,
constituindo-se em um medidas administrativas Sendo assim, é os usuá rios devem ser
mecanismo de garantia de e/ ou judiciais para aconselhá vel balancear a orientados a:
confidencialidade e investigar e punir os necessidade de registro de - encerrar as
integridade de dados. invasores. atividades críticas e os sessõ es ativas, a menos
A definição das listas A forma mais simples custos, em termos de que elas possam ser
de controle de acesso deve de monitoramento é a desempenho global dos protegidas por mecanismo
ser sempre feita pelos coleta de informaçõ es, sistemas. de bloqueio (por exemplo,
proprietá rios dos sobre determinados Normalmente, os registros proteçã o de tela com
recursos, os quais eventos, em arquivos de log incluem: senha);
determinam o tipo de histó ricos, mais - identificação dos - no caso de
proteçã o adequada a cada conhecidos como logs. usuá rios; terminal conectado a
recurso e quem Com essas informaçõ es, a - datas e horá rios computador de grande
efetivamente terá acesso a equipe de segurança é de entrada (logon) e saída porte, efetuar a
eles. capaz de registrar eventos do sistema (logoff); desconexã o quando a
A gerência das listas e de detectar tentativas de - identificação da sessã o for finalizada (nã o
de controle de acesso, na acesso e atividades nã o estaçã o de trabalho e, apenas desligar o
prá tica, também é autorizadas apó s sua quando possível, sua terminal, mas utilizar o
complicada. Para reduzir ocorrência. localizaçã o; procedimento para
os problemas de - registros das desconexã o).
gerenciamento dessas O que são logs? tentativas de acesso Como controle de
listas e o espaço de Os logs sã o registros (aceitas e rejeitadas) ao acesso ló gico, a gerência
memó ria ou disco por elas cronoló gicos de atividades sistema; de segurança pode ainda
ocupado, costuma-se do sistema que - registros das limitar o horá rio de uso
agrupar os sujeitos com possibilitam a tentativas de acesso dos recursos
características reconstrução, revisã o e (aceitas e rejeitadas) a computacionais de acordo
semelhantes ou direitos aná lise dos ambientes e outros recursos e dados. com a real necessidade de
de acesso iguais. Dessa das atividades relativas a Ao definir o que será acesso aos sistemas. Pode-
forma, os direitos de uma operaçã o, registrado, é preciso se, por exemplo,
acesso sã o associados a procedimento ou evento, considerar que desabilitar o uso dos
grupos, e nã o a sujeitos acompanhados do início quantidades enormes de recursos nos fins de
individualizados. Vale ao fim. registros podem ser semana ou à noite.
ressaltar que um sujeito Os logs sã o utilizados inviá veis de serem É usual também
pode pertencer a um ou como medidas de monitoradas. Nada limitar a quantidade de
mais grupos, de acordo detecção e adianta ter um log se ele sessõ es concorrentes,
com o objeto a ser monitoramento, nã o é periodicamente impedindo que o usuá rio
acessado. registrando atividades, revisado. Para auxiliar a consiga entrar no sistema
falhas de acesso gerência de segurança na ou na rede a partir de
Como monitorar o (tentativas frustradas de á rdua tarefa de aná lise de mais de um terminal ou
acesso aos recursos logon ou de acesso a logs, podem ser computador
informacionais? recursos protegidos) ou previamente definidas simultaneamente. Isso
O monitoramento dos uso do sistema trilhas de auditoria mais reduz os riscos de acesso
sistemas de informaçã o é operacional, utilitá rios e simples e utilizados ao sistema por invasores,
feito, normalmente, pelos aplicativos, e detalhando o softwares especializados pois se o usuá rio
registros de log, trilhas de que foi acessado, por disponíveis no mercado, autorizado já estiver
auditoria ou outros quem e quando. Com os específicos para cada conectado, o invasor nã o
mecanismos capazes de dados dos logs, pode-se sistema operacional. poderá entrar no sistema.
detectar invasõ es. Esse identificar e corrigir falhas Da mesma forma, se o
monitoramento é da estratégia de Outros controles de invasor estiver logado, o
essencial à equipe de segurança. Por conterem acesso lógico usuá rio autorizado, ao
segurança de informaçõ es, informaçõ es essenciais Outro recurso de tentar se conectar,
já que é praticamente para a detecçã o de acesso proteçã o bastante identificará que sua conta
impossível eliminar por nã o autorizado, os utilizado em alguns já está sendo usada e
completo todos os riscos arquivos de log devem ser sistemas é o time-out
poderá notificar o fato à das regras de controle de documento escrito com sistema aplicativo sob sua
gerência de segurança. acesso? seus direitos de acesso. Os responsabilidade, os
Ao especificar as usuá rios deverã o assinar proprietá rios são as
Onde as regras de regras de controle de esse documento, pessoas mais indicadas
controle de acesso sã o acesso, devem ser indicando que para definir privilégios de
definidas? considerados os seguintes entenderam as condiçõ es acesso de acordo com as
As regras de controle e aspectos: de seus direitos de acesso; reais necessidades dos
direitos de acesso para - diferenciar - manutenção de usuá rios.
cada usuá rio ou grupo regras que sempre devem um registro formal de Dessa forma, as
devem estar claramente ser cumpridas das regras todas as pessoas responsabilidades sobre
definidas no documento opcionais ou condicionais; cadastradas para usar segurança de acesso sã o
da política de controle de - estabelecer cada sistema de segregadas entre o
acesso da instituiçã o, o regras baseadas na informaçõ es; gerente do ambiente
qual deverá ser fornecido premissa “Tudo deve ser - remoçã o operacional de
aos usuá rios e provedores proibido a menos que imediata dos direitos de informá tica e os gerentes
de serviço para que expressamente permitido” acesso de usuá rios que de aplicativos.
tomem conhecimento dos ao invés da regra “Tudo é mudarem de função ou
requisitos de segurança permitido a menos que saírem da organizaçã o; Em que os usuá rios
estabelecidos pela expressamente - verificação podem ajudar na
gerência. proibido”; perió dica da lista de implantaçã o dos controles
- diferenciar as usuá rios, com intuito de de acesso ló gico?
O que considerar na permissõ es de usuá rios remover usuá rios A cooperaçã o dos
elaboraçã o da política de que são atribuídas inexistentes e IDs em usuá rios autorizados é
controle de acesso? automaticamente por um duplicidade; essencial para a eficácia
A política de controle sistema de informaçã o - inclusã o de da segurança. Os usuá rios
de acesso deve levar daquelas atribuídas por cláusulas nos contratos de devem estar cientes de
em conta: um administrador; funcioná rios e suas responsabilidades
- os requisitos de - priorizar regras prestadores de serviço, para a manutençã o efetiva
segurança de aplicaçõ es que necessitam da que especifiquem as dos controles de acesso,
específicas do negó cio da aprovaçã o de um sançõ es a que estarã o considerando,
instituiçã o; administrador antes da sujeitos em caso de particularmente, o uso de
- a identificaçã o de liberaçã o daquelas que tentativa de acesso nã o senhas e a segurança dos
toda informaçã o referente nã o necessitam de tal autorizado. equipamentos de
à s aplicaçõ es de negó cio; aprovaçã o. informá tica que
- as políticas para Quem é o costumam utilizar.
autorização e distribuiçã o Que tipo de regras de responsá vel pelos
de informaçã o (por controle de acesso devem controles de acesso Análise estática de
exemplo, a necessidade de ser formalizadas na ló gico? código fonte24
conhecer os princípios e política? A responsabilidade
níveis de segurança, bem O acesso aos sistemas sobre os controles de A aná lise de có digo
como a classificação da de informaçã o deve ser acesso ló gico pode ser para fins de segurança é
informaçã o); controlado por um tanto do gerente do uma das alternativas
- a processo formal, o qual ambiente operacional bastante utilizadas pelo
compatibilidade entre o deverá abordar, entre como dos proprietá rios mercado para o
controle de acesso e as outros, os seguintes (ou gerentes) de desenvolvimento de
políticas de classificaçã o tó picos: aplicativos. O gerente do software seguro. Sua
da informaçã o dos - utilizaçã o de um ambiente operacional difusão se deve primeiro
diferentes sistemas e identificador de usuá rio deve controlar o acesso à aos resultados, em termos
redes; (ID) ú nico, de forma que rede, ao sistema de localização de bugs de
- a legislaçã o cada usuá rio possa ser operacional e seus segurança em có digo e,
vigente e qualquer identificado e recursos e, ainda, aos segundo, pela facilidade
obrigaçã o contratual, responsabilizado por suas aplicativos e arquivos de de incorporaçã o ao ciclo
considerando a proteçã o açõ es; dados. É responsá vel, de desenvolvimento, uma
do acesso a dados ou - verificaçã o se o assim, por proteger os vez que as principais
serviços; usuá rio obteve recursos do sistema ferramentas se integram
- o perfil de acesso autorização do contra invasores ou à s IDEs mais usadas hoje,
padrã o para categorias de proprietá rio do sistema de funcioná rios nã o como o Eclipse e o Visual
usuá rios comuns; informaçã o ou serviço autorizados. Studio da Microsoft.
- o gerenciamento para sua utilizaçã o; Enquanto isso, os Todas as ferramentas
dos direitos de acesso em - verificaçã o se o proprietá rios dos comerciais existentes se
todos os tipos de conexõ es nível de acesso concedido aplicativos sã o fundamentam no mesmo
disponíveis em um ao usuá rio está adequado responsá veis por seu princípio, regras e
ambiente distribuído aos propó sitos do negó cio controle de acesso, padrõ es de codificaçã o
conectado em rede. e consistente com a identificando quem pode suspeitos. Isso as tornam
política de segurança da acessar cada um dos
24 Fonte:
Que cuidados devem organizaçã o; sistemas e que tipo de
ser tomados na definiçã o - fornecimento, operaçõ es pode executar. http://softwareseguro.blogspot.co
Por conhecerem bem o m.br/2007/07/ferramentas-
aos usuá rios, de
deanlise-cdigo-fonte.html
muito dependentes da As aná lises de có digo
açã o humana. Num fonte podem ser divididas
primeiro momento, para de acordo com as
desenhar essas regras a seguintes abordagens:
partir de muita pesquisa e - Aná lise está tica:
depois, para avaliar o a aná lise está tica pode
resultado de uma aná lise compreender as técnicas
de có digo. de busca direta a partir de
As ferramentas de lista de strings (grep); a
aná lise de có digo aná lise léxica, onde os
fundamentam ao Teorema tokens do có digo fonte sã o
de Rice, que coloca que comparados com à queles
qualquer questã o nã o contidos numa biblioteca
trivial endereçada a um de vulnerabilidades e
programa pode ser aná lise semâ ntica, onde se
reduzido ao Problema de prevê como o programa se
Halting, isso implica que comportará em tempo de
os problemas de aná lise execução, usando a
de có digo sã o insolú veis tecnologia de
no pior caso e, por compiladores (á rvore
consequência, que essas sintá tica abstrata)
ferramentas sã o obrigadas - Aná lise de fluxo
a fazer aproximaçã o, cujo de controle: usada para
resultado é algo nã o caminhar através das
perfeito. condiçõ es ló gicas do
Os principais có digo. O processo
problemas das funciona como a seguir:
ferramentas de aná lise de - Observe uma
có digo fonte para funçã o e determine cada
segurança estã o condiçã o de desvio. Essas
concentradas em: incluem loops, switchs, if's
- Falso negativo - e blocos try/catch.
o programa contém bugs - Entenda as
nã o endereçados pela condiçõ es sobre como
ferramenta. Isso dá a falsa cada bloco será executado.
sensaçã o de que nã o - Vá para a
existe bugs, que na pró xima funçã o e repita.
verdade significa que a
ferramenta nã o foi capaz
de encontrar mais
exemplares.
- Falso positivo - a
ferramenta endereça bugs
nã o existentes. Isso se
refere a duas
possibilidades: um erro
propriamente dito, onde a
ferramenta localizou um
bug que nã o existe
fisicamente; ou há uma
classificaçã o da
ferramenta incoerente
com as variá veis do
ambiente. Por exemplo, a
ferramenta poderia
encontrar um bug de SQL
Injection, que na
realidade, nã o interessa
para o software
investigado pelas suas
características de
operaçã o.
Vale ressaltar que as
ferramentas comerciais
procuram reduzir o falso
positivo, assumindo o
custo de deixar passar
falsos negativos.
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

Aná lise de fluxo de dados: usada para seguir fluxos de Um backup de dados em um banco de dados completo
dados dos pontos de entrada aos pontos de saída. O processo (um backup de banco de dados), um banco de dados parcial
funciona como descrito a seguir: (um backup parcial) ou um conjunto de arquivos de dados ou
- Para cada entrada, determine o quanto você grupos de arquivos (um backup de arquivo). - backup de
acredita na fonte de entrada. Quando em dú vida você nã o banco de dados
deve acreditar. Um backup de um banco de dados. Os backups completos
- Siga o fluxo de dados para cada saída possível, de banco de dados representam todo o banco de dados no
registrando ao longo do percurso qualquer tentativa de momento em que o backup é concluído. Os backups de banco
validaçã o de dados. de dados diferenciais contêm somente alteraçõ es feitas no
- Vá para a pró xima entrada e continue. banco de dados desde seu backup completo de banco de
dados mais recente.
A ferramenta mais eficiente é a que consegue fazer uso - backup diferencial
dessas abordagens combinadas para reduzir tanto o falso Um backup de dados que se baseia no backup completo
negativo, como o falso positivo. Alguns fornecedores estã o na mais recente de um banco de dados completo ou parcial ou
busca por ferramentas efetivas em temos de aná lise de um conjunto de arquivos de dados ou grupos de arquivos (a
có digo para segurança. Dentre eles, vale destacar: base diferencial) que contém somente as extensõ es de dados
- Coverity alterados desde a base diferencial.
- Fortify Um backup diferencial parcial registra apenas as
- Ounce Labs extensõ es de dados que foram alteradas nos grupos de
- Microsoft arquivos desde o backup parcial anterior, conhecido como a
base para o diferencial.
Vale reforçar, que para conseguir tirar o melhor proveito - backup completo
das ferramentas de aná lise de có digo fonte para segurança, Um backup de dados que contém todos os dados em um
seu uso deve estar amparado por um ciclo de banco de dados ou em um conjunto de grupos de arquivos ou
desenvolvimento seguro, como o CLASP ou SDL. arquivos, além de log suficiente para permitir a recuperaçã o
desses dados.
Visão geral de backup (SQL Server)25 - backup de log
Este tó pico apresenta o componente de backup do SQL Um backup de logs de transaçõ es que inclui todos os
Server. O backup do banco de dados do SQL Server é registros de log dos quais nã o foi feito backup em um backup
essencial para proteger seus dados. Esta discussã o abrange de log anterior. (modelo de recuperaçã o completa)
tipos de backup e restriçõ es de backup. O tó pico também - backup de arquivo
apresenta dispositivos de backup do SQL Server e mídia de Um backup de um ou mais arquivos ou grupos de
backup. arquivos de banco de dados.
- fazer backup [verbo] - backup parcial
Copia os dados ou registros de log de um banco de dados Contém dados apenas de alguns grupos de arquivos em
do SQL Server ou de seu log de transaçõ es para um um banco de dados, incluindo os dados no grupo de arquivos
dispositivo de backup, como um disco, a fim de criar um primá rio, em cada grupo de arquivos de leitura/gravaçã o e
backup de dados ou backup de log. em qualquer arquivo somente leitura especificado
- backup [substantivo] opcionalmente.
Uma có pia dos dados do SQL Server que pode ser usada
para restaurar e recuperar os dados apó s uma falha. Um Termos e definições de mídia de backup
backup dos dados do SQL Server é criado no nível de um - dispositivo de backup
banco de dados ou de um ou mais de seus arquivos ou grupos Um disco ou dispositivo de fita no qual sã o gravados
de arquivos. Nã o é possível criar backups no nível da tabela. backups do SQL Server e nos quais eles podem ser
Além dos backups de dados, o modelo de recuperaçã o restaurados. Os backups do SQL Server também podem ser
completa requer a criaçã o de backups do log de transaçõ es. gravados em um serviço de armazenamento do Blob do
- modelo de recuperação Windows Azure. O formato de URL é usado para especificar o
Uma propriedade de banco de dados que controla a destino e o nome do arquivo de backup.
manutençã o do log de transaçõ es em um banco de dados. - mídia de backup
Existem três modelos de recuperaçã o: simples, completo e Uma ou mais fitas ou arquivos de disco nos quais um ou
bulk-logged. O modelo de recuperaçã o de banco de dados mais backups foram gravados.
determina seus requisitos de backup e de restauraçã o. - conjunto de backup
- restaurar O conteú do de backup adicionado a um conjunto de
Um processo multifase que copia todos os dados e mídias por uma operaçã o de backup bem-sucedida.
pá ginas de log de um backup do SQL Server para um banco - família de mídia
de dados especificado e, em seguida, efetua roll-forward de Os backups criados em um ú nico dispositivo não
todas as transaçõ es registradas no backup, aplicando as espelhado ou um conjunto de dispositivos espelhados em um
alteraçõ es registradas para avançar os dados em tempo. conjunto de mídias
- conjunto de mídias
Tipos de backups Uma coleção ordenada de mídias de backup, fitas ou
- backup somente có pia arquivos de disco, em que uma ou mais operaçõ es de backup
Um backup de uso especial que é independente da foram gravadas, usando um nú mero e um tipo fixo de
sequência regular dos backups do SQL Server. dispositivos de backup.
- backup de dados - conjunto de mídias espelhado
Vá rias có pias (espelhos) de um conjunto de mídias.

25 Fonte: https://msdn.microsoft.com/pt-br/library/ms175477(v=sql.120).aspx

Conhecimentos de Informática 82
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

-
Fazer backup e restaurar bancos de dados do SQL (um backup parcial) ou um conjunto de arquivos de dados ou
Server grupos de arquivos (um backup de arquivo).
O componente de backup e restauraçã o do SQL Server - backup de banco de dados
oferece uma proteçã o essencial para dados críticos Um backup de um banco de dados. Os backups completos
armazenados em bancos de dados do SQL Server. Para de banco de dados representam todo o banco de dados no
minimizar o risco de perda de dados catastró fica, você momento em que o backup é concluído. Os backups de banco
precisa fazer backup dos bancos de dados para preservar as de dados diferenciais contêm somente alteraçõ es feitas no
modificaçõ es feitas nos dados regularmente. Uma estratégia banco de dados desde seu backup completo de banco de
de backup e restauraçã o bem-planejada ajuda a proteger dados mais recente.
bancos de dados contra perda de dados causada por vá rias - backup diferencial
falhas. Teste sua estratégia restaurando um conjunto de Um backup de dados que se baseia no backup completo
backups e recuperando depois seu banco de dados para se mais recente de um banco de dados completo ou parcial ou
preparar para responder com eficiência a um desastre. um conjunto de arquivos de dados ou grupos de arquivos (a
Além do armazenamento local para guardar os backups, o base diferencial) que contém somente os dados alterados
SQL Server também oferece suporte ao backup e à desde essa base.
restauraçã o no serviço de armazenamento de Blob do - backup completo
Windows Azure. . Um backup de dados que contém todos os dados em um
banco de dados ou em um conjunto de grupos de arquivos ou
Benefícios arquivos, além de log suficiente para permitir a recuperaçã o
O backup dos bancos de dados do SQL Server, a execuçã o desses dados.
de procedimentos de restauração de teste nos backups e o - backup de log
armazenamento de có pias de backups em um local externo Um backup de logs de transaçõ es que inclui todos os
seguro evita a perda de dados potencialmente catastró fica. registros de log dos quais nã o foi feito backup em um backup
Com backups vá lidos de um banco de dados, você pode de log anterior. (Modelo de recuperação completa)
recuperar seus dados de muitas falhas, como: - recuperação
- Falha de mídia. Para retornar um banco de dados a um estado está vel e
- Por exemplo, erros de usuá rio, que removem uma consistente.
tabela por engano. - recuperação
- Por exemplo, problemas de hardware, uma unidade Uma fase de inicialização de banco de dados ou de
de disco danificada ou perda permanente de um servidor. restauraçã o com recuperaçã o que coloca o banco de dados
- Desastres naturais. Ao usar o Backup do SQL Server em um estado de transaçã o consistente.
para serviço de armazenamento de Blob do Windows - modelo de recuperação
Azure, é possível criar um backup externo em uma regiã o Uma propriedade de banco de dados que controla a
diferente daquela do seu local, para usar no caso de um manutençã o do log de transaçõ es em um banco de dados.
desastre natural afetar seu local. Existem três modelos de recuperaçã o: simples, completo e
Além disso, os backups de um banco de dados são ú teis bulk-logged. O modelo de recuperaçã o de banco de dados
para fins administrativos rotineiros, como copiar um banco determina seus requisitos de backup e de restauraçã o.
de dados de um servidor para outro, configurar o - restaurar
espelhamento do banco de dados ou Grupos de Um processo multifase que copia todos os dados e
Disponibilidade AlwaysOn e fazer arquivamento. pá ginas de log de um backup do SQL Server para um banco
de dados especificado e, em seguida, efetua roll forward de
Componentes e conceitos todas as transaçõ es registradas no backup, aplicando as
- fazer backup [verbo] alteraçõ es registradas para avançar os dados no tempo.
Copia os dados ou registros de log de um banco de dados
do SQL Server ou de seu log de transaçõ es para um Introduçã o à s estratégias de backup e restauraçã o
dispositivo de backup, como um disco, a fim de criar um O backup e a restauração dos dados devem ser
backup de dados ou backup de log. personalizados em um ambiente específico e devem
- backup [substantivo] funcionar com os recursos disponíveis. Portanto, um uso
Uma có pia dos dados que podem ser usados para confiá vel de backup e restauraçã o para recuperaçã o requer
restaurar e recuperar os dados apó s uma falha. Os backups uma estratégia de backup e restauraçã o. Uma estratégia de
de um banco de dados também podem ser usados para backup e restauraçã o bem-planejada maximiza a
restaurar uma có pia do banco de dados em um novo local. disponibilidade dos dados e minimiza a perda de dados,
- dispositivo de backup considerando, ao mesmo tempo, seus requisitos empresariais
Um disco ou dispositivo de fita no qual os backups do SQL específicos.
Server serã o gravados e nos quais eles poderã o ser Coloque o banco de dados e os backups em dispositivos
restaurados. Os backups do SQL Server também podem ser separados. Caso contrá rio, se o dispositivo que contém o
gravados em um serviço de armazenamento do Blob do banco de dados falhar, seus backups ficarã o indisponíveis.
Windows Azure. O formato de URL é usado para especificar o Colocar os dados e backups em dispositivos separados
destino e o nome do arquivo de backup. também aprimora o desempenho de E/S dos backups
- mídia de backup gravados e o uso de produção do banco de dados.
Uma ou mais fitas ou arquivos de disco nos quais um ou Uma estratégia de backup e restauração contém uma
mais backups foram gravados. parte de backup e uma parte de restauraçã o. A parte de
- backup de dados backup da estratégia define o tipo e a frequência dos backups,
Um backup de dados em um banco de dados completo a natureza e velocidade do hardware exigido para eles, como
(um backup de banco de dados), um banco de dados parcial os backups serã o testados, e onde e como a mídia de backup

Conhecimentos de Informática 83
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

deve ser armazenada (incluindo consideraçõ es de No modelo de recuperação simples, agende backups
segurança). A parte de restauraçã o da estratégia define quem diferenciais entre os backups de banco de dados completos.
é responsá vel pela execuçã o da restauraçã o e como a Um backup diferencial captura só as alteraçõ es desde o
restauraçã o deve ser executada para atender à s metas de ú ltimo backup completo do banco de dados.
disponibilidade do banco de dados e minimizar perda de No modelo de recuperaçã o completa, você deve agendar
dados. Recomendamos que você documente seus backups de log frequentes. O agendamento de backups
procedimentos de backup e restauraçã o e mantenha uma diferenciais entre backups completos pode reduzir o tempo
có pia da documentaçã o em seu livro de execuçõ es. de restauração reduzindo o nú mero de backups de log a
O design de uma estratégia de backup e restauraçã o eficaz serem restaurados apó s a restauração dos dados.
requer planejamento, implementaçã o e teste cuidadosos. O As alteraçõ es ocorrem geralmente em uma pequena parte
teste é obrigató rio. Nã o existirá uma estratégia de backup até do banco de dados ou em uma grande parte do banco de
que você tenha restaurado com êxito os backups em todas as dados?
combinaçõ es incluídas na estratégia de restauração. Você Para um banco de dados grande no qual mudanças estã o
deve considerar uma variedade de fatores. Eles incluem o concentradas em uma parte dos arquivos ou grupos de
seguinte: arquivos, backups parciais e backups de arquivo podem ser
- As metas de produçã o de sua organização para os ú teis
bancos de dados, especialmente os requisitos para Quanto espaço em disco é necessá rio para um backup
disponibilidade e proteçã o contra perda de dados. completo de banco de dados?
A natureza de cada um dos seus bancos de dados: o
tamanho, os padrõ es de uso, a natureza de seu conteú do, os Estimar o tamanho de um backup de banco de dados
requisitos dos dados, e assim por diante. completo
- Restriçõ es de recursos, como hardware, pessoal, espaço Antes de implementar uma estratégia de backup e
para armazenagem de mídia de backup, a segurança física da restauraçã o, calcule quanto espaço em disco um backup de
mídia armazenada, e assim por diante. banco de dados completo usará . A operaçã o de backup copia
O formato de armazenamento do SQL Server em disco é o os dados no banco de dados para o arquivo de backup. O
mesmo nos ambientes de 64 bits e 32 bits. Portanto, backup e backup contém só os dados reais no banco de dados e nã o
restauraçã o funcionam em ambientes de 32 bits e 64 bits. Um qualquer espaço nã o utilizado. Portanto, o backup é
backup criado em uma instâ ncia de servidor executada em geralmente menor do que o pró prio banco de dados. Você
um ambiente pode ser restaurado em uma instâ ncia de pode estimar o tamanho de um backup de banco de dados
servidor executada em outro ambiente. completo usando o procedimento armazenado do sistema
sp_spaceused. Para obter mais informaçõ es, consulte
Impacto do modelo de recuperaçã o no backup e na sp_spaceused (Transact-SQL).
restauraçã o
As operaçõ es de backup e restauraçã o ocorrem dentro do Agendar backups
contexto de um modelo de recuperaçã o. Um modelo de A execuçã o do backup tem um efeito mínimo sobre as
recuperação é uma propriedade de banco de dados que transaçõ es em andamento; portanto, as operaçõ es de backup
controla a forma de gerenciamento do log de transaçõ es. podem ser realizadas durante a operaçã o regular. Você pode
Além disso, o modelo de recuperação de um banco de dados executar um backup do SQL Server com um efeito mínimo
determina para quais tipos de backups e cená rios de sobre as cargas de trabalho de produçã o.
restauraçã o o banco de dados oferece suporte. Geralmente, Depois de decidir os tipos de backups necessá rios e a
um banco de dados usa o modelo de recuperaçã o simples ou frequência de execuçã o de cada tipo, recomendamos que
o modelo de recuperaçã o completa. O modelo de recuperaçã o você agende backups regulares como parte de um plano de
completa pode ser suplementado alternando para o modelo manutençã o de banco de dados para o banco de dados.
de recuperaçã o bulk-logged antes das operaçõ es em massa. Testar seus backups
A melhor escolha do modelo de recuperação para o banco Nã o existirá uma estratégia de restauraçã o até que você
de dados depende de seus requisitos empresariais. Para tenha testado seus backups. É muito importante testar sua
evitar gerenciamento de log de transaçõ es e simplificar o estratégia de backup completamente para cada um dos
backup e a restauraçã o, use o modelo de recuperaçã o bancos de dados, restaurando uma có pia do banco de dados
simples. Para minimizar exposiçã o à perda de trabalho, à s em um sistema de teste. É necessá rio testar a restauraçã o de
custas de uma sobrecarga administrativa, use o modelo de cada tipo de backup que você pretende usar.
recuperação completa. Recomendamos que você mantenha um manual de
Planejar a estratégia de backup operaçõ es para cada banco de dados. Esse manual
Depois de selecionar um modelo de recuperaçã o que operacional deve documentar o local dos backups, os nomes
satisfaça seus requisitos empresariais para um banco de do dispositivo de backup (se houver) e o tempo necessá rio
dados específico, você precisa planejar e implementar uma para restaurar os backups de teste
estratégia de backup correspondente. A melhor estratégia de
backup depende de uma série de fatores, dos quais os Banco de Dados NoSQL (Key/Value, Orientados a
seguintes são especialmente significativos: Documentos e Grafos).2627
Quantas horas ao dia os aplicativos precisam acessar o
banco de dados? O termo NoSQL (do inglês Not Only SQL) foi utilizado pela
Se houver um período de pouca atividade previsível, primeira vez em 1998 para designar um banco de dados nã o
recomendamos que você agende backups de banco de dados relacional de có digo aberto. É um termo genérico para uma
completos para aquele período. classe definida de banco de dados nã o-relacionais e ainda faz
Com que frequência as alteraçõ es e atualizaçõ es deverã o
ocorrer?
26 Fonte: http://jordankobellarz.github.io/nosql/2015/01/27/modelos-
Se as alteraçõ es forem frequentes, considere o debancos-no-sql.html
seguinte: 27 Fonte: http://www.codate.com.br/banco-de-dados-nosql/

Conhecimentos de Informática 84
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

-
referência aos bancos de dados relacionais mais populares do - os documentos geralmente são armazenados como
mercado: MySQL, PostgreSQL, etc. JSON
Com a popularizaçã o da internet e das redes sociais, a - sã o amigá veis à programaçã o orientada a objetos,
geraçã o de conteú do por dispositivos mó veis e o nú mero visto que cada documento é um objeto que contém vá rios
cada vez maior de pessoas e dispositivos conectados, faz com atributos (campos) com seus respectivos tipos
que o trabalho de armazenamento de dados com o objetivo - em vez de armazenar dados correlacionados em
de utilizá -los em ferramentas analíticas, comece a esbarrar locais diferentes, esse modelo permite que tudo fique em um
nas questõ es de escalabilidade e custos de manutençã o só documento, eliminando a necessidade de joins
desses dados. Bancos de dados relacionais escalam, mas - os campos podem mudar de um documento para
quanto maior o seu tamanho mais caro se torna essa outro, permitindo flexibilidade na estrutura do banco, mesmo
escalabilidade, seja pelo custo de novas má quinas, ou pelo apó s a implementaçã o
aumento de especialistas nos bancos de dados utilizados. Os - as querys sã o relativamente menores do que em um
nã o relacionais, permitem uma escalabilidade mais barata e banco relacional
menos trabalhosa, pois nã o exigem má quinas extremamente - é o mais usado dentre os bancos nã o relacionais
poderosas, e como sua manutençã o é fá cil permite que seja
necessá rio um nú mero menor de profissionais. Aplicação:
Existem quatro principais tipos de banco de dados NoSQL, - é um banco de propó sito geral
que são:
Famílias de Colunas: Bancos relacionais normalmente
Chave/valor (Key/Value): conhecidos como tabelas de guardam os registros das tabelas contiguamente no disco. Por
hash distribuídas, armazenam objetos indexados por chaves, exemplo, caso se queira guardar id, nome e endereço de
e facilita a busca por esses objetos a partir de suas chaves. usuá rios em um banco de dados relacional, os registros
Vantagens: Gerência bem o tamanho, processa uma seriam:
quantidade constante de leituras e escritas, é rá pido e é
amigo do programador. Id1, Nome1, Endereço1;
Alguns bancos que utilizam esse padrã o são: DynamoDb, Id2, Nome2, Endereço2.
Couchbase, Riak, Azure, Table Storage, Redis, Tokyo Cabinet,
Berkeley DB, etc… Essa estrutura torna a escrita muito rá pida, pois todos os
dados de um registro são colocados no disco com uma ú nica
Características escrita no banco. Essa estrutura também é eficiente caso se
- comparando com um banco de dados relacional, é queira ler registros inteiros. Mas para situaçõ es onde se quer
uma ú nica tabela com duas colunas: uma chave primá ria e ler algumas poucas colunas de muitos registros, essa
um valor - é o banco NoSQL mais simples de todos estrutura é pouco eficiente, pois muitos blocos do disco terã o
- cada item no banco é apenas o nome de um atributo de ser lidos.
(chave) e seu respectivo valor Para esses casos onde se quer otimizar a leitura de dados
- podemos compará -lo a um hashmap estruturados, bancos de dados de famílias de colunas sã o
- os dados sã o acessados somente pela chave (os mais interessantes, pois eles guardam os dados
valores sã o transparentes ao sistema) contiguamente por coluna.
- flexibilidade na estrura dos dados O exemplo anterior em um banco de dados dessa
- extremamente rá pido categoria ficaria: Id1, Id2; Nome1, Nome2; Endereço1,
- suporta quantidades extraordinariamente grande Endereço2. Os bancos de dados de famílias de colunas são
de dados mais interessantes para processamento analítico online
(OLAP). O Bigtable é uma implementaçã o da Google dessa
Aplicação: categoria de bancos de dados.
- propó sito geral Vantagens: Gerência bem o tamanho, processa uma
- aplicaçõ es mobile (metadados do aplicativo) grande quantidade de carga via fluxos, alta disponibilidade,
mú ltiplos data-centers e MapReduce.
Orientados a Documentos: os documentos dos bancos Outros bancos de dados que sã o orientados a coluna:
dessa categoria, sã o coleçõ es de atributos e valores, onde um Cassandra, Hypertable, Amazon SimpleDB, etc.
atributo pode ser multi-valorado.
Em geral, os bancos de dados orientados a documento Características
nã o possuem esquema, ou seja, os documentos armazenados - é um banco chave-valor multidimensional, ou seja,
nã o precisam possuir estrutura em comum. cada tupla (chave, valor) pode conter vá rias tuplas
Essa característica faz deles boas opçõ es para o encadeadas
armazenamento de dados semi estruturados. - as colunas podem ser agrupadas por famílias de
Vantagens: Modelagem de dados natural, amigo do colunas
programador, desenvolvimento rá pido e amigo da - o acesso é feito através da chave da coluna
web(CRUD).
Alguns bancos que utilizam esse padrã o sã o: MongoDB, Aplicação:
CouchDB, RavenDB, etc. - propó sito geral

Características Orientado a Grafos: diferente de outros bancos de dados


- modelo mais pró ximo do relacional, enquanto um NoSQL, esse está diretamente relacionado a um modelo de
BD relacional guarda os dados em linhas e colunas, o BD dados estabelecido, o modelo de grafos. A ideia desse modelo
orientado a documentos guarda em documentos é representar os dados e / ou o esquema dos dados como

Conhecimentos de Informática 85
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

grafos dirigidos, ou como estruturas que generalizem a noçã o Mongodb: um banco de dados NoSQL28
de grafos.
O modelo de grafos é aplicá vel quando “informaçõ es Vamos falar um pouco sobre o Mongodb que é um banco
sobre a inter-conectividade ou a topologia dos dados sã o de dados NoSQL que nã o utiliza modelagem relacional, o que
mais importantes, ou tã o importante quanto os dados é para muitos uma novidade assustadora, pois estamos
propriamente ditos”. acostumados a utilizar o modelo relacional. Os modelos
O modelo orientado a grafos possui três componentes relacionais utilizam uma abordagem bidimensional que
bá sicos: os nó s (sã o os vértices do grafo), os relacionamentos representa quantas dimensõ es quisermos a partir de
(sã o as arestas) e as propriedades (ou atributos) dos nó s e relacionamentos com linhas e colunas. Entretanto, para
relacionamentos. consultas com grandes quantidades de dados podemos
Vantagens: Auxilia em problemas complicados com grafos encontrar problemas de performance especialmente quando
e é rá pido. precisamos distribuir os dados em vá rios computadores. O
Alguns bancos que utilizam esse padrã o sã o: Neo4J, Mongodb nã o utiliza este conceito e oferece uma alta
Infinite Graph, InforGrid, HyperGraphDB, etc. performance em armazenamento de grandes quantidades de
dados e rapidez nas consultas. Nesse post vamos falar sobre
Características agregaçã o(embeded), associaçã o(reference), ids automá ticos
- usa grafos para armazenar os dados e Schemas. Os registros sã o documentos Fazendo uma
- baseado na teoria dos grafos (rede de elementos comparaçã o com banco de dados que utilizam modelagem
interconectados) relacional para persistirmos dados no banco precisamos criar
- cada nó representa uma entidade (como uma uma base de dados antes, entretanto no Mongodb nã o
pessoa, empresa, conta, etc.), que contém suas respectivas precisamos criá -la pois isso é feito automaticamente. Abaixo
propriedades segue dois exemplos do modelo relacional e o utilizado pelo
- nã o requer operaçõ es de join Mongodb: SQL
- requer uma grande curva de aprendizado
- flexibilidade na estrutura dos nó s

Aplicação:
- redes sociais
- á rvores genealó gicas
- controle de acesso
- georreferenciamento

Outros bancos NoSQL (pouco usuais)


- Orientado a objetos
- Orientado a serviços
Multivalor
- Multidimensional

Características em comum:
- todos esses modelos permitem flexibilidade no
projeto do banco de dados
- sã o amigá veis à programaçã o á gil
- podem ser consistentes ou ter eventuais
consistências

A seguir será demonstrado o Mongodb que é um dos


bancos de dados NoSQL.
Associações (References) no Mongodb

Fazendo uma analogia com SQL podemos dizer que no


Mongodb a associaçã o é como se fosse uma foreign key do
modelo relacional. Podemos incluir referências e vincular um
documento ao outro. Exemplo:

28 Fonte: http://www.codate.com.br/mongodb-um-banco-de-dados-nosql/

Conhecimentos de Informática 86
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

Schemas

Nos bancos de dados que utilizam modelagem relacional é


necessá rio realizar um esquema de tabelas e atributos que
farã o parte de uma estrutura de dados fixa, ou seja, se
durante um projeto precisarmos inserir um novo atributo em
uma tabela do banco de dados seremos obrigados a
acrescentá -lo na tabela incluindo uma coluna com campos
vazios. O Mongodb nã o exige uma estrutura fixa, assim,
podemos atualizar apenas um documento, com a adição de
novos campos, por exemplo, sem causar problemas na
estrutura do banco de dados. Binary JSON Permite
representaçã o de algumas formas de dados que nã o fazem
parte do padrã o JSON(Date, BinData, outros). Através do
Agregação (Embeded) no Mongodb comando instanceof retornará um boolean para testar se um
valor é uma instâ ncia de algum tipo: acadêmico.id instanceof
Podemos incorporar sub-documentos a um documento, ObjectId Resultado: true. Através do comando typeof
como assim? Vamos utilizar o exemplo anterior, realizamos podemos saber qual é o tipo do atributo. typeof acadêmico.id
uma associaçã o e vinculamos o documento acadêmico com o
documento curso inserindo o campo curso_id. Se fossemos
realizar uma consulta o banco acessaria os dois documentos,
porém, poderíamos incorporar o curso diretamente no
documento acadêmico o que permitiria ao banco realizar
apenas uma operação de consulta. Exemplo:

Id’s automá ticos(ObjectId) No mongo os documentos sã o


identificados através de um campo id que atua como uma
chave primá ria. Cada documento possui seu id que
possivelmente será ú nico. Se o programador nã o informar o
id do documento por padrã o o mongoDB irá adicionar um
campo id automaticamente que conterá um ObjectId.
Exemplo: Vamos criar um documento que e salvá -lo. Repare
que nã o identificamos um id para o documento acadêmico:

Agora vamos pesquisar esse mesmo documento através


do comando “db.academico.find();”. Deve aparecer uma
resposta similar à seguinte (o atributo _id é um identificador
exclusivo e provavelmente será diferente no seu resultado):

Conhecimentos de Informática 87
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Apostila Digital Licenciada para Diego Rosilan Santana Pinheiro - CPF:009.064.395-07 (Proibida a Revenda) - www.apostilasopcao.com.br

APOSTILAS OPÇÃO

ORACLE29 Linguagem de Definiçã o de Dados (DDL)


Tem como objetivo definir, alterar e eliminar as tabelas
BANCO DE DADOS RELACIONAL usadas para armazenar os dados. CREATE TABLE, CREATE
Um banco de dados relacional pode ser definido como um VIEW, sã o comandos de definiçã o de dados, dentre outros.
banco de dados que aparece ao usuá rio como uma coleçã o de Exemplo: Criação de Tabelas
tabelas. A característica mais fundamental num banco de Em SQL as tabelas possuem a funçã o de armazenar os
dados relacional é a de que temos que identificar dados do Banco de Dados. O comando para criaçã o de tabelas
univocamente seus registros (que chamamos de linhas), ou no SQL é o CREATE TABLE.
seja, devemos definir um campo (ou mais de um) dentre os Exemplo de CREATE TABLE:
vá rios campos do registro, para ser o atributo identificador CREATE TABLE T_Funcionario
do mesmo (chave primá ria). (cod_funcionario VARCHAR(2),
O Oracle é um SGBD Relacional - Sistema de nome_funcionario VARCHAR(30), end_funcionario
Gerenciamento de Banco de Dados Relacional (RDBMS - VARCHAR(40),
Relational Database Managemente System) e foi um dos CONSTRAINT pk_funcionario PRIMARY KEY
primeiros sistemas de banco de dados a utilizar a Linguagem (cond_funcionario),
de Pesquisa Estruturada (SQL - Structured Query Language) TABLESPACE ST_funcionario;
como interface do usuá rio sendo, talvez, por este motivo,
agora um dos principais sistemas de gerenciamento de banco Linguagem de Controle de Dados (DCL)
de dados. A DCL contém elementos que serã o ú teis num sistema
CONCEITOS multiusuá rio, onde a privacidade das informaçõ es é
No estudo de banco de dados convém sabermos algumas importante, bem como a segurança das tabelas e o
definiçõ es importantes: estabelecimento de fronteiras entre as transaçõ es. Os
Tabelas - Sã o as unidades bá sicas de um SGBD Relacional. comandos GRANT e REVOKE sã o alguns dos comandos
É formada por linhas e colunas, onde as linhas representam utilizados para o controle de dados.
os registros e as colunas os campos da tabela. Sã o muito
conhecidas como Tabelas-Base. Linguagem de Manipulação de Dados (DML)
Esta linguagem contém os componentes da linguagem e
Exemplo: conceitos para a manipulação das informaçõ es armazenadas
Cod_Funcionario - CHAR(06) nas tabelas. Os comandos SELECT, UPDATE, INSERT, bem
Cod_Departamento - CHAR(05) como outros, são comandos de manipulaçã o.
Nome_Funcionario-VARCHAR2(40) O Comando mais utilizado na linguagem SQL para
Data_Nascimento-DATE manipulaçã o dos dados é o SELECT. Com ele é que
Colunas - Um nome de coluna é o nome que o usuá rio produzimos as “Queries”, ou seja, as pesquisas no Banco de
informará para representar os valores de dados que serão Dados. Exemplos: Selecionando Dados a) SELECT * FROM
entrados sob cada coluna. ALUNO;
Linhas - Sã o os registros da tabela. Retorna todas as linhas e todas as colunas da tabela
Valores de dados - Sã o os valores encontrados na ALUNO.
interseçã o de uma coluna e uma linha. b) SELECT MATRICULA, NOME_ALUNO
Chave primá ria - Uma ou mais de uma coluna que FROM ALUNO;
identifica uma linha, facilitando em muito o acesso aos dados. Retorna todas as linhas das colunas matrícula e o nome
Visã o ou Tabela Virtual(View) - É uma tabela formada por do aluno da tabela ALUNO.
uma pesquisa em uma ou mais tabela-base. Ela nã o existe, c) SELECT MATRICULA, NOME_ALUNO FROM
mas parece ao usuá rio como se existisse. ALUNO
Toda tabela num banco de dados relacional tem que WHERE NOME_ALUNO = ‘JOAO DA SILVA’;
possuir uma Chave Primá ria. As tabelas poderã o também ter Retorna a matrícula e o nome do aluno que tenham nome
chaves estrangeiras, que sã o campos que relacionam as igual a JOAO DA SILVA.
tabelas do banco de dados, fazendo referência entre uma e d) SELECT MATRICULA FROM CURSA WHERE
outra tabela. ((NOTA1+NOTA2+NOTA3)/3) > 7
SQL - LINGUAGEM DE PESQUISA ESTRUTURADA AND CD_DISCIPLINA = ‘PORT’;
A SQL - Linguagem de Pesquisa Estruturada (Structured Retorna a matrícula de todos os alunos que obtiveram
Query Language) devido as suas características tornou-se a média acima de sete na disciplina PORT.
linguagem padrã o de banco de dados relacionais. e) SELECT AVG(SALARIO) FROM EMPREGADO;
A Linguagem SQL pode ser usada através de dois modos:
SQL Interativa - Onde os comandos SQL são digitados
interativamente, ou seja, logo apó s a digitaçã o do comando
vemos sua execuçã o.
SQL Embutida - Neste modo os comandos SQL ficam
embutidos no programa-fonte de uma linguagem de
programaçã o. Tal linguagem é normalmente chamada
linguagem hospedeira. Linguagens de programaçã o como
COBOL, C, PASCAL, PL/1, etc, admitem a SQL Embutida.
A SQL divide-se em três grupos:
- Linguagem de Definiçã o de Dados (DDL)
- Linguagem de Controle de Dados (DCL)
- Linguagem de Manipulaçã o de Dados (DML)

29 Fonte: http://www.consulting.com.br/edsonalmeidajunior/

Conhecimentos de Informática 88
Pedido N.: 2886190 - Apostila Licenciada para diegorosilan@hotmail.com (Proibida a Revenda) - www.apostilasopcao.com.br
Retorna a média dos salá rios dos funcioná rios da tabela. Administraçã o de Dados, que é responsá vel pela elaboraçã o
Obs.: de um modelo global de dados para a corporaçã o, que
1) A Sintaxe completa do comando SELECT encontra-se normalmente surge como resultado da integraçã o dos
no manual de referência de SQL da ORACLE. sistemas de transaçõ es on line. Para o usuá rio, aspectos
2) Podemos usar o comando Select para acessar dados importantes sã o as ferramentas de query e aná lise de dados,
de duas ou mais tabelas, ao mesmo tempo: bem como o grau de integraçã o com as ferramentas de
SELECT COD_EMPREGADO, NOME_EMPREGADO, automaçã o de escritó rio, que correspondem ao dia-a-dia dos
SALARIO_EMPREGADO usuá rios corporativos.
FROM FUNCIONARIO, SALARIO Muitos vendedores consideram gerenciadores de banco
WHERE FUNCIONARIO.COD_EMPREGADO = de dados especializados para data warehouse, mas esses
SALARIO.COD_EMPREGADO; desconsideram as melhorias da tecnologia relacional nas
Esta “Query” acima retorna os dados da tabela á reas de processamento e otimizaçã o em paralelo de queries,
FUNCIONARIO (COD_EMPREGADO e NOME_EMPREGADO) e bem como a integraçã o com ferramentas de acesso,
da tabela SALARIO (SALARIO_EMPREGADO). modelagem, apresentaçã o e aná lise, tais como as planilhas
OUTROS CONCEITOS DE BANCO DE DADOS BANCO DE eletrô nicas e bancos de dados de mesa.
DADOS DISTRIBUÍDOS O Oracle Warehouse suporta além de dados estruturados
Permitem o manuseio da informação armazenada no da forma relacional, outros tipos de dados, como por
Banco de Dados que se encontra distribuído em diversas exemplo, textos desestruturados, dados espaciais, vídeo, ...
má quinas geralmente em locais geográ ficos distintos. A A proposta do Oracle Warehouse é a de possibilitar o
distribuiçã o dos dados pode ser feita no nível de uma entidade gerenciamento dos dados da empresa, independente da
do esquema conceitual (1 tabela, por exemplo) ou através de origem dos dados, ou seja, se sã o dados histó ricos, de
fragmentos (partiçõ es da tabela). Os fragmentos podem ser produçã o, etc.
obtidos através do uso de técnicas de fragmentaçã o horizontal
(seleçã o de linhas da tabela), fragmentaçã o vertical (seleçã o REPLICAÇÃO DE DADOS
de colunas da tabela) ou de forma híbrida (conbinando a O Oracle permite a replicaçã o dos dados, isto é, có pias de
fragmentaçã o horizontal e vertical ao mesmo tempo). tabelas dos bancos de dados podem ser instaladas nas
A alocaçã o dos fragmentos pode ser realizada com ou sem unidades regionais da empresa, visando assim a rapidez no
replicaçã o. No primeiro caso, có pias de um mesmo fragmento acesso aos mesmos (evita o trá fego na rede).
sã o distribuídas pelos diversos nó s que compõ em o Banco de
Dados distribuído. ATRIBUIÇÕES / RESPONSABILIDADES DE UM DBA
O principal objetivo dos bancos de dados distribídos é (DATABASE ADMINISTRATOR)
disponibilizar o dado o mais pró ximo possível do local onde é O DBA é o administrador do banco de dados Oracle e tal
mais acessado, permitindo um aumento no desempenho de função, geralmente é exercida por um Analista de Sistemas
consultas devido ao aproveitamento da localidade de acesso e com alguma formaçã o/experiência em Banco de Dados.
também, por trabalhar com um volume menor de dados. Diversas atividades de administraçã o do SGBD Oracle,
devem ser exercidas pelo(s) DBA(s). Dentre elas destacamos:
DATA WAREHOUSE Instalar e fazer o Upgrade do Oracle Server e das
Em sua forma essencial, um data warehouse é um ferramentas diversas da Oracle;
repositó rio para informaçõ es organizacionais. Pode incluir - Criar as estruturas e objetos primá rios;
tabelas relacionais geradas pelos sistemas de controle e - Planejar/calcular, bem como, disponibilizar o espaço
acompanhamento, dados consolidados altamente necessá rio para o Banco de Dados Oracle;
estruturados, documentos e objetos multimídia. Também - Modificar a estrutura do banco , quando necessá rio;
podem ser encapsuladas regras de negó cio. Sem dú vida, uma - Criar, deletar, dar/remover privilégios, enfim,
soluçã o data warehouse deve ser aberta, escalá vel, com gerenciar os usuá rios do banco;
velocidade e facilidade de acesso, e deve ser gerenciá vel. - Gerar có pias de segurança (Backup’s) e recuperar o
Dada a tendência da indú stria para a distribuiçã o de banco Oracle;
recursos e o desejo de maior controle e acessibilidade, uma - Manter a segurança do sistema, controlando o acesso
soluçã o deve ser projetada para operaçã o geograficamente ao banco de dados utilizando os recursos de segurança do
distribuída ao longo das unidades de negó cio da corporaçã o. sistema operacional, do sistema de rede e do Oracle;
Facilidade de instalaçã o, ajustes, gerenciamento, controle e - Monitorar e otimizar a performance do Banco de
interoperabilidade sã o pontos críticos, particularmente em dados.
um ambiente distribuído.
Data warehouse é uma arquitetura, nã o um produto, e nã o ARQUITETURA ORACLE
deve ser associada com um repositó rio de dados O DBA deve conhecer a arquitetura Oracle, isto é, como o
especializado, tal como um sistema de gerenciamento de Oracle “trabalha”, tendo assim subsídios para a
dados multidimensional, e pode, de fato, ser perfeitamente administraçã o do(s) banco(s).
hospedado em um sistema de gerenciamento de dados A Arquitetura Oracle
relacional, que provê uma base mais só lida sobre a qual se
construirá as aplicaçõ es que alimentarã o o repositó rio de
dados.
Mais importante que a ferramenta para hospedar o
repositó rio é o conjunto de aplicaçõ es e ferramentas que
compõ em as informaçõ es organizacionais. Data warehouse é
uma forma de unificar e facilitar o acesso a todas as
informaçõ es de que os membros de uma corporaçã o
necessitam para a execuçã o, controle e planejamento de
atividades de negó cio.
A construção do repositó rio é consequência da
INSTÂNCIA ORACLE

A cada inicialização do banco Oracle, parte da memó ria


RAM do computador é alocada para a SGA (System Global
Arquitetura Oracle = Instâ ncia + BD Oracle Area) e processos Oracle de segundo plano (Background
Instâ ncia = Memó ria + Processos Background Process) são inicializados, visando controlar o banco. Entã o
uma Instâ ncia Oracle (Instance) é o conjunto da SGA (buffers
ESTRUTURAS FÍSICAS da memó ria RAM) + processos Oracle de segundo plano
O Banco de Dados Oracle é composto por 3 tipos de (Background), que juntos oferecem aos vá rios usuá rios o
estruturas físicas (arquivos): Dados (data files); acesso ao banco de dados.
Controle (control files); Log Existe um banco de dados para cada instance, e é possível
(redo log files) e Parâ metros criar em um mesmo equipamento mais de uma instance,
(parameter file). sendo, por exemplo, uma para conter um banco de dados de
Data files – Contém todos os dados do banco. Estruturas produçã o e outra para conter o banco de dados de teste.
ló gicas, tabelas, índices, visõ es e outros objetos são Neste caso, haverá processos sendo executados em
armazenados nestes arquivos. Um ou mais data files podem background específicos para cada instance e uma á rea de
compor uma tablespace (objeto ló gico que armazena os memó ria independente utilizada em cada instance.
arquivos de dados). Obs.:
Control files – Arquivos que armazenam informaçõ es 1)SGA – Memó ria compartilhada por todos os usuá rios
sobre as estruturas físicas do banco de dados (nome, Oracle.
localizaçã o, ...). Todos os data files e redo log files são 2)Instâ ncia (instance) = SGA + Processos “Background”
identificados no control file, bem como o nome do banco de 3)É no arquivo de parâ metros (parameter file) que
dados. determinamos as características da instâ ncia
Recomenda-se que se tenha no mínimo dois Control Files, (instance)
armazenados em discos diferentes (se possível).
Redo log files – Arquivos que guardam todas as alteraçõ es OBJETOS DO BANCO DE DADOS ORACLE
efetuadas nos dados das tabelas do banco e sã o utilizados para O Oracle possui diversos componentes denominados
recuperação destas. Objetos do Banco de Dados. Dentre eles podemos destacar:
Para garantir uma boa recuperaçã o cada redo log file deve Tabelas - Sã o as unidades bá sicas de um SGBD Relacional.
Ter no mínimo uma réplica. Um conjunto de redo log files É formada por linhas e colunas, onde as linhas representam
iguais recebe o nome de grupo, e um grupo é formado por os registros e as colunas os campos da tabela. São muito
membros (redo log file original e suas réplicas). conhecidas como Tabelas-Base (conforme já vimos
Ao terminar o espaço disponível nos membros de um anteriormente).
grupo redo log, a gravaçã o continua nos membros do grupo Visão ou Tabela Virtual(View) - É uma tabela formada
seguinte (log switch). O grupo anterior fica entã o disponível por uma pesquisa em uma ou mais tabela-base. Ela nã o
para Ter seu conteú do copiado para outro local (archive log existe, mas parece ao usuá rio como se existisse.
files), pois, ao terminar o espaço no ú ltimo grupo, o processo Muitas vezes o acesso aos dados exigem “queries”
irá reutilizar o primeiro, sobregravando-o. complexas. Um usuá rio pode construir uma visã o que
Além dos 3 tipos de arquivos citados acima temos também contenha uma certa complexidade e disponibilizá -la para
o Parameter file – Para inicializar uma instâ ncia, o Oracle deve usuá rios finais e programadores, que farã o “queries” mais
ler um arquivo de parâ metros de nome padrã o simples sobre esta Visão. Você estará entã o, retirando a
init<nome_da_instâ ncia>.ora. Este arquivo é do tipo texto e complexidade da navegaçã o de uma aplicaçã o ou de um
contém diversos parâ metros de configuraçã o associados a usuá rio no acesso aos dados.
uma instâ ncia, aos quais devem ser atribuídos valores Usuá rio - Sã o as pessoas que irã o acessar o BD Oracle.
específicos. Possui nome e senha para o acesso ("login").
Os valores dos parâ metros serã o utilizados para inicializar Cabe ao DBA criar, modificar e excluir os usuá rios do BD.
muitas das configuraçõ es de memó ria e processos da instâ ncia Role - Agrupamento de privilégios, ou seja, em uma role
Oracle. Cada instâ ncia tem seu arquivo de parâ metros que podemos agrupar diversos privilégios e conceder aos
define as particularidades de cada ambiente. usuá rios, nã o mais os privilégios e sim as roles.
DB_BLOCK_BUFFERS (parâ metros contidos no arquivo de
Rotinas armazenadas (Stored Procedures, Functions e parâ metros do Oracle).
Triggers) - Sã o grupos de comandos SQL que poderã o ser Com a atuaçã o do Database Buffer Cache as E/S de disco
ativados pelos usuá rios. Uma "Function" retorna um valor sã o reduzidas, armazenando dados que as transaçõ es
sempre, enquanto que as "Procedures" nã o. solicitaram recentemente.
As Triggers (gatilhos) sã o também rotinas armazenadas Exemplo:
que sã o executadas (disparadas) quando ocorre algum evento Quando uma transaçã o inclui uma instruçã o pra atualizar
modificando alguma tabela (Ex. Ao clicar o botã o ...) uma linha o Oracle manda para o database buffer cache o
Índices - Quando criamos índices para uma tabela, bloco que contém a linha, atualizando a linha logo em
especificando uma coluna, tal tabela é classificada de tal forma seguida. Se outra transaçã o quiser atualizar a mesma linha,
que, sempre que for mencionada uma query, o sistema usará o ou outra que está no mesmo bloco, nã o será necessá rio outro
índice para Ter acesso direto aos dados desejados, ao invés de acesso a disco, pois a linha já está no database buffer cache
vasculhar a coluna toda. O objetivo da criação de índices é (memó ria).
agilizar a recuperaçã o de dados, ou seja, acelerar a procura
dos dados na tabela. SEGMENTOS DE RECONSTRUÇÃO: O “DESFAZER” DO
Tablespace - Objeto ló gico que guarda os arquivos de ORACLE
dados do BD Oracle. Convém, antes de definir o tamanho da Um Segmento de Rollback do Oracle é uma á rea utilizada
Tablespace, fazer uma estimativa do quanto de espaço em para guardar temporariamente dados anteriores a uma
disco será necessá rio para alocar os objetos (tabelas, transaçã o (que atualizou ou eliminou os dados). Se for
índices, ...). Entretanto, podemos aumentar o tamanho da necessá rio, através do comando Rollback (comando SQL) os
Tablespace, adicionando datafiles (arquivos de dados) à dados sã o reconstruídos (que estavam no segmento de
mesma. rollback) voltando os dados ao estado anterior.
O Segmento de Rollback System
PROCESSANDO COMANDOS SQL Todo banco de dados Oracle tem um segmento de
Observando a figura anterior, podemos ver a presença de rollback denominado System. Durante a criaçã o do BD, o
processos de usuá rios (users) e servidores (servers). segmento inicial é criado na tablespace System.
Todos os comandos SQL são executados pelos processos Obs.:
servidores, dividindo-os em 3 (três) fases: Ao se criar uma nova Tablespace devemos criar um
- Parse Segundo segmento de Rollback denominado System.
- Execute - Fetch. Para se criar um segmento de rollback usa-se o comando
Parse CREATE ROLLBACK SEGMENT
Checa a sintaxe do comando; Sintaxe:
Checa também os privilégios do usuá rio, definindo logo CREATE PUBLIC ROLLBACK SEGMENT rbs01
apó s, o caminho da pesquisa; Define o plano de execuçã o do TABLESPACE st_01
comando. STORAGE (INITIAL 10K NEXT 10K
Execute OPTIMAL 20K MAXEXTENTS 121);
Analisa o requerimento que está no buffer (na “Shared SQL Para colocar o segmento ativo (ONLINE):
Area”), e ALTER ROLLBACK SEGMENT rbs01 ONLINE;
Faz a leitura física ou ló gica (no arquivo datafile ou no
Database Buffer Cache). OS PROCESSOS ORACLE
Obs.:
Na “Shared SQL Area” temos: o texto do comando SQL (ou
PL/SQL), o plano de execuçã o.
Fetch
Retorna o resultado do comando SQL (geralmente
chamada de “tabela-resultado”).
Obs.:
Na Shared SQL Area temos dois caches a saber:
a)Cache de biblioteca – armazena instruçõ es SQL (e/ou
procedimentos) bem como planos de execuçã o das instruçõ es
(ex.: vá rios usuá rios (clientes) podem estar executando uma
mesma aplicaçã o compilada).
b)Cache de dicioná rio – Armazena informaçõ es contidas
no dicioná rio de dados do BD, reduzindo as E/S de disco (o
Oracle usa as informaçõ es do dicioná rio do BD em
praticamente todas as operaçõ es). Os processos Oracle executam tarefas específicas para os
usuá rios do banco de dados. Tais processos trabalham no
DATABASE BUFFER CACHE sentido de manipular as solicitaçõ es enviadas pelos
No Database Buffer Cache dados do BD Oracle são processos de clientes e operam as diversas funçõ es de um
armazenados. O processo DBWR (database writer) grava os servidor de banco de dados Oracle. O Oracle distingue os
blocos de dados que as transaçõ es modificam na memó ria processos de servidor de primeiro plano dos de segundo
(database buffer cache) de volta para os arquivos de dados do plano. Os processos de primeiro plano manipulam
BD. diretamente as solicitaçõ es dos processos de clientes,
Os buffer do Database Buffer Cache sã o compartilhados enquanto os processos de servidor de segundo plano
por todos os processos de usuá rio do Oracle conectados à manipulam outros serviços do Oracle.
instâ ncia (instance). O tamanho do bloco do database buffer Funcionamento de um sistema Cliente/Servidor Oracle:
cache é determinado no parâ metro DB_BLOCK_SIZE. A
quantidade de blocos é definida no parâ metro
1) Processo cliente envia solicitaçã o para o servidor
Oracle. Um processo despacha (Dispatcher) o mesmo para
uma fila de solicitaçõ es.
2) Um processo de servidor de primeiro plano pega a
solicitação mais antiga, processando-a. Ao terminar o
processamento, coloca o resultado numa fila de respostas.
3) O Dispatcher gerencia a fila de respostas, enviando o
resultado de cada solicitaçã o para o processo cliente que fez a
solicitação.
A quantidade de processos de servidor de primeiro plano
é ajustada automaticamente pelo Oracle. De acordo com a
necessidade o Oracle inicia/encerra processos de servidor de
primeiro plano, visando atender as solicitaçõ es dos clientes.
Cada estação cliente usa um processo Cliente. O Oracle usa
PRINCIPAIS PROCESSOS DE SEGUNDO PLANO a arquitetura de servidor multilinear
(BACKGROUND PROCESS) – que envolve os processos despachantes (Dispatchers),
DBWR (Database Writer) – Grava os dados do Database ouvinte (listener) e servidor (shared server) – para atender
Buffer Cache para os arquivos físicos do Banco de Dados às solicitaçõ es dos diversos clientes. Duas filas sã o
(datafiles). O DBWR não faz esta gravaçã o imediatamente formadas: fila de solicitaçõ es (Request Queue) e fila de
apó s a efetivaçã o das transaçõ es. Tal evento acontece quando: respostas (Response Queue).
um processo servidor precisa ler um novo bloco para a Quando uma aplicaçã o cliente estabelece uma conexã o
memó ria e não existe espaço disponível, ou ele está ocioso por com o Oracle, o listener fornece o endereço de rede de um
alguns segundos, ou Quando o Oracle efetua um Checkpoint processo Dispatcher, com o qual o cliente se conecta. O
do Banco de Dados ou da Tablespace. Dispatcher entã o pega a solicitaçã o do cliente e coloca-a na
LGWR (Log Writer) – Grava informaçõ es de alteraçõ es fila de solicitaçõ es. As solicitaçõ es são processadas e os
efetuadas sobre o BD do redo log buffer para os redo log files. resultados sã o inseridos na fila de respostas. A partir daí o
ARCH (Archiver) – É opcional. Copia automaticamente Dispatcher retorna os resultados para as aplicaçõ es clientes
grupos de log de transaçõ es (redo log files) para um outro adequadas.
local físico (gerando os archives redo log files). Pode ser para
fita ou para disco.
LCKn (Lock) - Faz bloqueios (Lock´s) entre instâ ncias em
servidores paralelos.
PMON (Process Monitor) – Realiza todo o processo de
recuperação para um processo de usuá rio que tenha falhado.
Por exemplo, se cair a conexã o de um usuá rio com o Oracle, o
Process Monitor irá desfazer a transaçã o que caiu, liberando
os lock´s da transaçã o, liberando assim o acesso de outras
Quando uma aplicaçã o cliente se conecta ao Oracle, o
transaçõ es aos mesmos dados.
processo ouvinte inicializa um processo servidor dedicado e
SMON (System Monitor) – Executa diversas operaçõ es de
conecta o cliente diretamente ao servidor dedicado,
gerenciamento do espaço à medida que as transaçõ es liberam
ignorando a arquitetura de servidor multilinear. Como um
mais espaço para dados do BD.
servidor dedicado consome uma quantidade significativa de
RECO (Recoverer) – Recupera falhas que envolvam
memó ria do servidor de banco de dados para apenas um
transaçõ es distribuídas.
usuá rio, os servidores dedicados nã o deve ser usados para as
CKPT (Checkpoint) – Faz periodicamente uma verificaçã o
conexõ es de aplicaçõ es clientes, a menos que absolutamente
(checkpoint), para se certificar de que todas as informaçõ es
necessá rio.
modificadas na memó ria estã o armazenadas fisicamente no
disco. Tem a funçã o de marcar o quanto o log de transaçõ es
LOG DE TRANSAÇÕES (LOG DE RECONSTRUÇÃO: REDO)
precisará aplicar, caso o sistema venha a exigir uma
O Log de transaçõ es do Oracle registra imediatamente as
recuperação por queda. Somente as mudanças provocadas
mudanças feitas no Banco de Dados pelas transaçõ es em
pelas transaçõ es a partir do ú ltimo Checkpoint serã o aplicadas
andamento, para que, se for necessá rio (em virtude, por
pois o Oracle sabe que os dados foram gravados no disco
exemplo, de uma falha), todo o trabalho confirmado seja
(anteriores ao ú ltimo Checkpoint). Atualiza os “headers” de
protegido e recuperado.
todos os arquivos físicos do BD.
Na SGA existe o Redo Log Buffer que armazena as
Dnnn (Dispatcher) – Direciona para a fila de solicitaçõ es,
informaçõ es que serã o gravadas nos Redo log Files.
as solicitaçõ es dos processos cliente, e também, retorna para
os clientes as respostas que estã o na fila de respostas. Um
nú mero limitado de processos servidores sã o compartilhados REDO LOG FILES
pelos usuá rios (configuraçã o multi-threaded).]

CONFIGURAÇÕES DE SERVIDORES DE BANCO DE


DADOS
Em relaçã o à configuraçã o de servidores o Oracle pode
trabalhar de 2 (dois) modos: Servidor multilinear
(Multithreaded Server);
Os Redo Log Files armazenam todas as alteraçõ es no
Servidor dedicado (Dedicated Server). Banco de Dados, e sã o usadas em um processo de
recuperaçã o. Se os Redo Log Files sã o espelhados em vá rios

SERVIDOR MULTILINEAR (MULTI-THREADED)


discos, as mesmas informaçõ es sã o gravadas nos arquivos log_checkpoint_interval = 10000# opcao por
espelhados. desempenho.
Os Redo Log Files sã o gravados de maneira circula, Nunca um checkpoint será
conforme figura acima. # disparado por Ter atingido este limite (10 mil blocos
Com o espelhamento dos Redo Log Files pelos discos, # de 512 gravados, desde o ú ltimo checkpoint).
todos os grupos de membros sã o gravados simultaneamente. log_checkpoint_timeout = 0 # valor default (em segundos).
A vantagem do espelhamento é que se, por exemplo, algum log_archive_start = true # utilizacao de archiving automatico
problema em um disco, tem-se a có pia em outro. # Localizaçã o dos arquivos de archived redologs, trace e
log.
LOG SWITCHES # Trace (dump) dos processos background, de usuá rios
Um Log Switch (troca de log) ocorre quando o Oracle troca log_archive_dest = /prd5/oracle/pb1/arch/A
de um redo log para outro. Enquanto isto o servidor fica log_archive_format = "RCH%s.log" background_dump_dest
gravando novas transaçõ es em outro grupo de log. = /prd2/oracle/pb1/bdump core_dump_dest =
/prd2/oracle/pb1/cdump user_dump_dest
CHECKPOINTS = /prd2/oracle/pb1/udump
Processo que verifica se as ú ltimas transaçõ es que estã o max_dump_file_size = 10240
na memó ria já foram gravadas fisicamente em disco. # Num. de processos = proc. Servers + proc Backgs
Ocorre quando: processes = 50 # 50 BD Pequeno
Acontece um Log Switch; # 100 BD Medio
- Durante um intervalo de tempo (definido no parâ metro # 200 BD Grande
Log_Checkpoint_Timeout do arquivo de parâ metro); # Numero de blocos lidos para memoria numa operacao
Acontece um Shutdown; de
O DBA força um Checkpoint; e I/O db_file_multiblock_read_count = 32 # 8 BD
Quando a Tablespace é passada para Offline. Pequeno
# 16 BD Medio
O processo Checkpoint é habilitado através do parâ metro # 32 BD Grande
Checkpoint_Process
(init<instâ ncia>.ora). # Parametros de configuracao do Asynchronous I/O
O ARQUIVO DE PARÂ METROS use_async_io = true lgwr_use_async_io = true
No arquivo de parâ metros é que definimos os parâ metros use_post_wait_driver = true
de inicialização da instâ ncia Oracle. Exemplo (sistema Unix): # Parametrso de configura;á o do servidor multi-threaded
# Parameter file para o database pb1 (Exemplo) # Multi_threaded server requer a instala;á o do SQL*Net
# V2 mts_dispatchers = “tcp,2” mts_max_dispatchers
# = 10 mts_servers = 2 mts_max_servers
# Nome do Banco de Dados db_name = 10 mts_service = pb1 mts_listener_address =
= pb1 “(ADDRESS=(PROTOCOL=tcp)
# Compatilidade com as características da versã o 7.3.2 (HOST=durjbf01) (PORT=1521)”
compatible = 7.3.2 # Localizaçã o dos controlfiles
control_files = (/prd3/oracle/pb1/dbs/control01.ctl, INICIALIZANDO E TERMINANDO UM BD ORACLE
/prd4/oracle/pb1/dbs/control02.ctl, Usamos o comando STARTUP para iniciar um BD e o
/prd5/oracle/pb1/dbs/control03.ctl) SHUTDOWN para terminá -lo.
Antes de inicializar ou terminar um banco Oracle é
# Especificaçã o dos Segmentos de Reconstruçã o (Rollback necessá rio conectar-se como usuá rio INTERNAL.
Segments) rollback_segments = Obs.: Conectar-se como INTERNAL é equivalente a
(r01,r02,r03,r04) # Definiçã o do conectar-se como usuá rio SYS (O “dono” do dicioná rio de
tamanho da SGA do Banco dados do Oracle)
#
# SGA = [( db_block_size * db_block_buffers) + INICIALIZANDO (STARTUP)
shared_pool_size + log_buffers ] Um processo de inicializaçã o é composto de 3 passos:
db_bloc_size = 2048 m# 2k START, MOUNT e OPEN.
shared_pool_size = 9000000 # 3500000 BD Pequeno START – O Oracle lê o arquivo de parâ metros; aloca
# 6000000 BD Médio espaço na memó ria para a SGA; “starta” os processo de
# 9000000 BD Grande segundo plano (background process) e abre os arquivos de
# 18000000 BD com Designer/2000 db_block_buffers = trace
3200 # 200 BD Pequeno (background trace files).
# 550 BD Médio MOUNT – Abre o(s) Control(s) File(s) e lê os nomes do
# 3200 BD Grande Banco de dados e dos REDO LOG FILES.
OPEN – Abre o Banco de Dados disponibilizando-o para as
log_buffer = 163840 # 8192 BD Pequeno transaçõ es dos usuá rios. Sintaxe:
# 32768 BD Médio STARTUP OPEN/MOUNT/NOMOUNT database
# 163840 BD Grande EXCLUSIVE/PARALLEL
# SGA = [ ( 2048 * 3200 ) + 9000000 = 163840 ] 15 PFILE = parfile
Mbytes (Aproximadamente) RECOVER/FORCE/RESTRICT Onde:
# Parametros de ajuste dos redologs files log_files = 3 OPEN - Disponibiliza o Banco para o acesso aos usuá rios.
# Num. De redo logs que podem ser abertos # MOUNT - Monta o banco para atividades de DBA, mas nã o
limitado pelo parametro maxlogfiles do create database deixa livre o acesso ao BD. NOMOUNT - Cria a SGA e “starta”
# que indica o num. Má ximo de grupos de redolog files
os processos de segundo plano, mas nã o deixa livre o acesso
ao BD.
EXCLUSIVE - Permite que somente a instâ ncia corrente
seja acessada. PARALLEL Disponibiliza mú ltiplas instâ ncias.
PFILE=parfile Pega do arquivo de parâ metrso
especificado (parfile) e “starta” tal instâ ncia. FORCE Aborta a
instâ ncia que está “rodando” para “startar’ a nova.
RESTRICT Permite que só os usuá rios com privilégio
RESTRICT SESSION acesse o BD. RECOVER Inicia processo de
Recover quando o banco é Startado.
Ex:
A) SVRMGR>STARTUP teste; Inicializa o banco de dados
teste.
B) STARTUP EXCLUSIVE MOUNT teste PFILE
inittest.ora;
Inicializa o BD teste, apenas montando-o, utilizando o
arquivo de parâ metros inittest.ora

Obs.:
Com o comando ALTER DABATASE podemos alterar o
modo de banco, ou seja, podemos por exemplo apenas
montá lo, deixando em modo Exclusivo (para serem feitas
atividades de DBA. O banco nã o fica disponível aos usuá rios).
Obs: Nos Bancos Apartir da versã o 9 o comando para
inicializar ou terminar o banco é
SQLPLUS /NOLOG Connect / as sysdba
TERMINANDO UM BD ORACLE (SHUTDOWN)
O comando SHUTDOWN fecha o BD e indisponibiliza-o aos
usuá rios. Sintaxe:
SHUTDOWN ABORT/IMMEDIATE/NORMAL; Onde:
ABORT Nã o espera a saída (desconexã o) dos usuá rios,
terminando rapidamente. IMMEDIATE Desconect os usuá rios Database
e depois termina. As seguintes estruturas sã o utilizadas para o
NORMAL espera todos os usuá rios conectados saíre, para gerenciamento do espaço do BD.
depois terminar o BD. Estrutura / Definição
ALTER DATABASE: ALTERANDO O ESTADO DO BANCO DE BLOCO Sã o blocos que ficam alocados nos datafiles
DADOS EXTENT Compõ em o bloco do datafile.
Com o ALTER DATABASE podemos fazer trocas no estado SEGMENT Armazena um ou mais EXTENT’s contendo
do Banco, para disponibilizá -lo a todos os usuá rios. todos os dados na TABLESPACE.
Sintaxe: TABLESPACE Estrutura ló gica do Oracle que pode ter um
ALTER DATABASE database MOUNT ou mais datafiles (arquivos físicos).
EXCLUSIVE/PARALLEL OPEN Onde: DATAFILES Arquivos físicos que armazenam os dados do
Database Nome do BD a ser alterado. BD.
MOUNT Monta o BD para atividades do DBA, mas nã o DATABASE Coleção ló gica dos dados compartilhados
disponibiza-o aos usuá rios. OPEN Permite o acesso dos (que estã o armazenados nos
usuá rios ao BD. TABLESPACES)
EXCLUSIVE Permite que somente a instâ ncia corrente
acesse o BD. PARALLEL Permite que vá rias COMPONENTES DE UM BLOCO ORACLE
instâ ncias acesse, o BD. Um bloco é composto das seguintes partes: Cabeçalho
Ex.: (Header), Diretó rio da Tabela (Table Directory), Diretó rio da
SVRMGR>CONNECT INTERNAL SVRMGR> ALTER Linha (Row Directory), Espaço Livre (Free Space), Linha de
DATABASE OPEN; Dados (Row Data).
Libera aos usuá rios o acesso ao BD. Parte / Descriçã o
ALTER SYSTEM: RESTRINGINDO O ACESSO Cabeçalho(Header) Contém informaçõ es gerais do bloco:
Tem a capacidade de disponibilizar o BD para somente os endereço do bloco, tipo de segmento.
usuá rios que tenham o privilégio de RESTRICTED SESSION (só Diretó rio da Tabela (Table Directory) Armazena
eles se conectam ao BD). Sintaxe: informaçõ es sobre as tabelas.
ALTER SYSTEM Diretó rio da Linha (Row Directory) Contém informaçõ es
ENABLE/DISABLE RESTRICT SESSION; Onde: sobre a linha que está no bloco.
ENABLE Permite que só os usuá rios que tem privilégio Espaço Livre (Free Space) É o conjunto de bytes do bloco
RESTRICT SESSION acessem o BD. disponível para operaçõ es de manipulaçã o (insert,
DISABLE Permite acesso ao BD a todos os usuá rios. update, ...)
Ex: Linha de Dados (Row Data) Guarda dados da tabela (ou de
ALTER SYSTEM ENABLE RESTRICTED SESSION; índices). Obs.: O espaço livre do bloco também pode conter
GERENCIANDO O ESPAÇO DO BANCO DE DADOS transaçõ es.

CONTROLANDO O ESPAÇO LIVRE


O controle do espaço livre para comandos de manipulaçã o Cláusulas
no bloco é especificado nos parâ metros PCTFREE, PCTUSED, ONLINE/OFFLINE Disponibiliza/indisponibiliza a
INITRANS, MAXTRANS. TABLESPACE.
PCTFREE - Armazena o percentual de espaço livre no NORMAL Faz um CHECKPOINT para todos os
bloco. DATAFILES da
PCTUSED - Permite ao bloco reconsiderar o espaço livre TABLESPACE.
para a inserção de novas linhas. INITRANS - Define o nú mero TEMPORARY Faz um CHECKPOINT para todos
inicial de transaçõ es para o bloco (default 1, mínimo 1, os DATAFILES da TABLESPACE, mas nã o assegura que serão
má ximo255) gravados dados em todos eles.
MAXTRANS Nú mero máximo de transaçõ es concorrentes IMMEDIATE Nã o assegura que os datafiles serã o
para o bloco (default 255, mínimo1, máximo 255). disponibilizados e nã o faz o
CHECKPOINT.
ESTUDANDO AS TABLESPACES DELETANDO UMA TABLESPACE
As TABLESPACES são objetos ló gicos que armazenam Comando: DROP TABLESPACE Sintaxe:
outros objetos do BD Oracle. Cada TABLESPACE possui um ou DROP TABLESPACE nome_da_tablespace
mais DATAFILES. INCLUDING CONTENTS [CASCADE CONSTRAINTS] Onde:
Podemos colocar uma TABLESPACE, no estado de Nome_da_tablespace É o nome da TABLESPACE a ser
OFFLINE (desativar a mesma) com ex ceçã o da TABLESPACE apagada. INCLUDING CONTENTS Apaga todo o conteú do da
SYSTEM (possui o dicioná rio de dados do Oracle). TABLESPACE.
A TABLESPACE SYSTEM contém informaçõ es do CASCADE CONSTRAINTS Apaga todas as restriçõ es de
dicioná rio de dados do Oracle, bem como contém também o integridade referencial das tabelas fora da TABLESPACE
Segmento de Reconstruçã o (ROLLBACK SEGMENT) CRIANDO SEGMENTOS DE RECONSTRUÇÃ O (ROLLBACK
denominado SYSTEM. SEGMENTS)
Obs: a TABLESPACE SYSTEM pode conter dados de Comando: CREATE ROLLBACK SEGMENT Sintaxe:
usuá rios. CREATE ROLLBACK SEGMENT nome_segmento
O uso de outras TABLESPACE diferente da SYSTEM TABLESPACE
permite uma maior flexibilidade na administração, por parte nome_da_tablespace STORAGE
do DBA cláusulas Onde:
Tais TABLESPACES armazenam Segmentos de ROLLBACK, nome_segmento É o nome do segmento a ser
segmentos temporá rios, dados de aplicaçõ es, índices, espaço criado. Nome_da_tablespace TABLESPACE onde
para os usuá rios. o segmento será criado. STORAGE clá usulas Define
como o espaço será alocado para o segmento.
CRIAÇÃO DE TABLESPACES Ex:
Sintaxe: CREATE ROLLBACK SEGMENT rbs1
CREATE TABLESPACE nome_da_tablespace TABLESPACE SYSTEM
DATAFILE “especif_do_datafile” DEFAULT STORAGE STORAGE (INITIAL 100K, NEXT 100K, MINEXTENTS 2,
clá usulas ONLINE/OFFLINE Onde: MAXEXTENTS 121,
Nome_da_tablespace É o nome da TABLESPACE a ser OPTIMAL lOOOK);
criada. “especif_do_datafile” Especificaçã o CRIANDO UM BANCO DE DADOS
do arquivo. Contém: Comando: CREATE DATABASE Sintaxe:
nome do datafile É o nome do datafile ou redo log file. CREATE DATABASE nome_do_banco
SIZE inteiro É o tamanho do mesmo (em K ou M ) REUSE CONTROL FILE REUSE
Permite ao Oracle reusar o arquivo. LOGFILE especif_arquivo GROUP inteiro MAXLOGFILES
DEFAULT STORAGE clá usulas Especifica os parâ metros inteiro MAXLOGMEMBERS inteiro MAXLOGHISTORY inteiro
default de armazenamento para todos os objetos criados na DATAFILE especif_arquivo MAXDATAFILES inteiro
TABLESPACE. MAXINSTANCES inteiro
ONLINE/OFFLINE Disponibiliza/indisponibiliza a ARCHIVELOG/NOARCHIVELOG
TABLESPACE. Clá usulas (DEFAULT STORAGE): INITIAL EXCLUSIVE CHARACTER SET charset
inteiro K/M Tamanho em bytes do primeiro EXTENT. Onde:
NEXT inteiro K/M Tamanho em bytes do pró ximo Nome_do_banco Nome do banco de dados a ser
EXTENT a ser alocado para a TABLESPACE. criado
MINEXTENTS Total de EXTENTS alocados quando o objeto Especif_arquivo
for criado. MAXEXTENTS Total de EXTENTS, incluindo o Especificaçã o do arquivo. Contém:
primeiro, que o Oracle pode alocar para o objeto. nome do datafile É o nome do datafile ou redo log
PCTINCREASE Percentual de incremento que o Oracle file. SIZE inteiro É o tamanho do mesmo (em K ou M ) REUSE
aloca novos EXTENTS para uma Tabela ou Índice. Permite ao Oracle reusar o arquivo.
ALTERANDO UMA TABLESPACE Comando: ALTER CONTROL FILE REUSE Especifica o
TABLESPACE Sintaxe: control file especificado no arquivo de parâ metros
ALTER TABLESPACE nome_da_tablespace (podendo ser reusado). LOGFILE GROUP Especifica o
ADD DATAFILE especif_do_datafile nome dos logfiles.
RENAME DATAFILE ‘nome_datafile’ TO ‘nome_datafile’ MAXLOGFILES má ximo de log files que podem ser criados
DEFAULT STORAGE Clá usulas para o banco de dados.
ONLINE/OFFLINE NORMAL/TEMPORARY/IMMEDIATE MAXLOGMEMBERS má ximo de membros de log files para
BEGIN/END BACKUP Onde: nome_da_tablespace É o um grupo de log files. MAXLOGHISTORY máximo de
nome da TABLESPACE a ser alterada. archived redo logs para ser recuperado
ADD DATAFILE Adiciona DATAFILE automaticamente (Oracle Parallel Server). DATAFILE
RENAME DATAFILE Renomeia um ou mais DATAFILES da especif_arquivo Nome(s) do(s) datafile(s)
TABLESPACE. DEFAULT STORAGE Altera as
a ser(em) usado(s). MAXDATAFILES Má ximo User_dump_dest caminho dos arquivos de trace dos
de datafiles que podem ser criados para o banco. usuá rios
MAXINSTANCES Má ximo de instâ ncias que podem ser Background_dump_dest caminho onde serã o gerados
montadas e abertas simultaneamente pelo banco de dados. arquivos de trace dos processos background do Oracle
ARCHIVELOG Habilita o modo de arquivamento. Processes nú mero máximo de processos (processos
NOARCHIVELOG Nã o habilita o modo de arquivamento. servidores + processos background)
EXCLUSIVE monta o banco no modo exclusivo apó s a sua Sql_trace habilita/desabilita o trace do SQL para todas as
criação. CHARACTER SET Seta o tipo de caracteres sessõ es de usuá rio
que será usado pelo banco para Audit_trail habilita/desabilita o Audit
armazenar os dados (Ex. ASCII). Obs: Para ver os parâ metros usar o comando SHOW
ALTERANDO UM BANCO DE DADOS PARAMETER Exemplo:
Comando: ALTER DATABASE Sintaxe: ALTER SVRMGR>SHOW PARAMETER DB; SVRMGR>SHOW
DATABASE nome_do_banco PARAMETER DEST;
ADD LOGFILE MEMBER ‘nome_arquivo’ CRIAÇÃ O E GERENCIAMENTO DE USUÁ RIOS DO BANCO
REUSE TO GROUP inteiro (“nome_arquivo, nome_arquivo) DE DADOS
Onde: Cada usuá rio do BD Oracle possui um esquema associado
nome_do_banco Nome do banco de dados a ser a ele, ou seja, cada objeto criado para (ou pelo) usuá rio é do
criado nome_arquivo nome de arquivo a ser adicionado esquema do mesmo. Ao se criar um usuá rio Oracle, um
(colocar esquema com o mesmo nome é criado para ele.
o caminho igual dos que já existem). Comando: CREATE USER Sintaxe:
GROUP inteiro nú mero do grupo que receberá o log file CREATE USER nome_usuá rio IDENTIFIED BY
membro a ser adicionado. senha/EXTERNALLY DEFAULT TABLESPACE
nome_tablespace
Obs.: TEMPORARY TABLESPACE nome_tablespace_temporaria
A Visã o V$LOGFILE mostra os grupos e membros de log PROFILE arquivo_profile
files. QUOTA inteiro/UNLIMITED ON nome_tablespace
INSTALAÇÃ O DO ORACLE Onde:
Na instalaçã o do Oracle geralmente utilizamos o instalador Nome_usuá rio nome do usuá rio a ser criado. BY senha
da Oracle, que é o Oracle Installer. Tal produto tanto instala senha do usuá rio
como desinstala os produtos Oracle. É de fá cil utilizaçã o pois EXTERNALLY usa como senha a senha do
basta escolhermos os produtos Oracle contratados e sistema operacional. DEFAULT TABLESPACE identifica a
selecionar a opçã o Install. (para maiores detalhes ver Manual TABLESPACE default para os objetos do usuá rio.
de Instalaçã o do produto). TEMPORARY TABLESPACE TABLESPACE temporá ria que
Obs Importante: armazena os segmentos temporá rios.
Alguns procedimentos (scripts) devem ser executados QUOTA inteiro define o espaço da TABLESPACE para o
apó s a instalaçã o do Oracle Server (como usuá rio SYS) usuá rio que está sendo criado (nú mero inteiro em K ou M
a) CATALOG.SQL Cria visõ es do dicioná rio de dados. bytes).
b) CATEXP.SQL Cria visõ es do dicioná rio UNLIMITED o espaço na TABLESPACE fica sem limite
de dados para o uso do Export/Import. c) CATPROC.SQL para o usuá rio. PROFILE arquivo_profile define o arquivo de
Cria tabelas e visõ es adicionais do dicioná rio de profile do usuá rio.
dados para a opçã o Ex:
procedural do Oracle. SVRMGR>CREATE USER ALUNO1
Tais procedimentos podem demandar de muito tempo, IDENTIFIED BY aluno1
pois formam muitas estruturas de dados. DEFAULT TABLESPACE TS_Treina TEMPORARY
O ARQUIVO DE PARÂ METROS: ESTUDANDO OS TABLESPACE Temp QUOTA 5M ON
PARÂ METROS TS_Treina PROFILE default; Obs:
O arquivo de parâ metros Oracle possui diversos O Oracle possui dois usuá rios especiais: o SYS e o
parâ metros que devem ser conhecidos pelo DBA: SYSTEM. O SYS é o usuá rio para colocar/tirar o BD do “ar” O
Db_name nome do banco de dados (obrigató rio) usuá rio SYSTEM é o usuá rio administrador do BD.
Control_files nome/localizaçã o dos control files ALTERANDO UM USUÁ RIO DO BANCO DE DADOS ORACLE
rollback_segments nome dos segmentos de rollback alocados Comando: ALTER USER Sintaxe:
para a instâ ncia. db_block_size tamanho do bloco Oracle (em ALTER USER nome_usuá rio IDENTIFIED BY
bytes) senha/EXTERNALLY DEFAULT TABLESPACE
shared_pool_size parâ metro que define nome_tablespace
a shared pool (para comando SQL TEMPORARY TABLESPACE nome_tablespace_temporaria
compartilhados) QUOTA inteiro/UNLIMITED ON nome_tablespace PROFILE
db_block_buffers nú mero de blocos armazenados arquivo_profile
na SGA DEFAULT ROLE nome_role/ALL [EXCEPT
log_buffer nú mero de bytes alocados para o redo log buffer nome_role]/NONE Onde:
na SGA log_files nú mero de redo log´s que podem ser abertos. Nome_usuá rio nome do usuá rio a ser alterado. BY senha
Log_checkpoint_interval define a freqü ência dos checkpoints senha do usuá rio
Max_dump_file_size tamanho má ximo de blocos para os EXTERNALLY usa como senha a senha do
arquivos de trace. Log_archive_start Habilita ou desabilita o sistema operacional. DEFAULT TABLESPACE identifica a
modo de arquivamento (archivelog mode) Log_archive_dest TABLESPACE default para os objetos do usuá rio.
localizaçã o dos archives redo log files TEMPORARY TABLESPACE TABLESPACE temporá ria
Log_archive_format formato dos archives redo log files que armazena os segmentos
temporá rios.
QUOTA inteiro define o espaço da TABLESPACE para o Obs: A opçã o WITH ADMIN OPTION dá ao usuá rio o
usuá rio que está sendo criado (nú mero inteiro em K ou M “poder” de conceder privilégios (que ele possui) a outros
bytes). usuá rios.
UNLIMITED o espaço na TABLESPACE fica sem limite para COMANDO REVOKE
o usuá rio. PROFILE arquivo_profile define o arquivo de profile O comando REVOKE retira (revoga) o privilégio concedido
do usuá rio. através do GRANT. Sintaxe:
DEFAULT ROLE nome_role define a role (conj. de REVOKE {privilégio | role } FROM {usuá rio | role |
privilégios) default do usuá rio. Ex: PUBLIC }; Exemplos:
SVRMGR> ALTER USER aluno1 1)REVOKE SELECT ANY TABLE FROM manoel;
IDENTIFIED BY aluno1 2)REVOKE UPDATE FROM joaquim;
QUOTA 6M ON TS_Treina; AGRUPANDO PRIVILÉ GIOS: “ROLE”
DELETANDO UM USUÁ RIO Tendo em vista que o Oracle possui uma infinidade de
Comando: DROP USER Sintaxe: privilégios e que a quantidade e diversidade de perfis de
DROP USER nome_usuá rio CASCADE Onde: usuá rios em um banco de dados também é grande, a
Nome_usuá rio nome do usuá rio a ser deletado. administraçã o dos privilégios de todos eles (usuá rios) seria
CASCADE deleta todos os objetos do esquema do usuá rio um tarefa no mínimo bastante trabalhosa. Visando dirimir
que está sendo deletado, antes de deletar o usuá rio. este problema existe o objeto Oracle denominado ROLE. Em
Ex: uma ROLE podemos agrupar diversos privilégios e conceder
SVRMGR>DROP USER aluno1 CASCADE; Obs: aos usuá rios, nã o mais os privilégios e sim as ROLES.
se o usuá rio está conectado ele nã o pode ser deletado
antes
do fim da conexã o.
As Visõ es (VIEW’s) USER_USERS, ALL_USERS, DBA_USERS,
USER_TS_QUOTAS E DBA_TS_QUOTAS sã o visõ es do
dicioná rio de dados com informaçõ es sobre os usuá rios.
PRIVILÉ GIOS
Nem todos os usuá rios do Oracle podem acessar todas as
tabelas do Banco de Dados. Para conceder ou revogar
privilégios de acesso/manipulaçã o aos usuá rios o DBA utiliza
os comando GRANT e REVOKE.
Podemos conceder/revogar diversos tipos de privilégios,
dependendo do usuá rio. Se um usuá rio final irá somente Exemplo:
consultar Tabelas, Visõ es O DBA concederá somente 1)CREATE ROLE admin_salarios;
privilégios de consulta (SELECT). Entretanto para um 2)GRANT SELECT, INSERT, UPDATE,DELETE ON
desenvolvedor o DBA deverá dar, além de privilégios de T_SALARIOS
consulta, outros privilégios (por exemplo, privilégios de TO admin_salarios;
Criação/Alteraçã o de tabelas, visõ es, etc.) 3)GRANT SELECT,INSERT, UPDATE, DELETE ON
Um privilégio de sistema é um privilégio poderoso que, se T_COMISSOES
concedido ao usuá rio, dará ao mesmo o direito de executar
TO admin_salarios;
uma operação em nível de banco de dados. Cabe portanto ao
4)GRANT admin_salarios to USUARIO_A, USUARIO_B,
DBA a tarefa de definir quais usuá rios do Banco terã o tais
USUARIO_C, ...
privilégios (poderão ser outros administradores e/ou
No exemplo acima, os usuá rios A, B e C receberam os
desenvolvedores de aplicaçõ es).
privilégios da ROLE admin_salarios (que Seleciona, Insere,
Exemplo:
Altera e Elimina dados das Tabelas T_SALARIOS e
Um usuá rio com privilégio SELECT ANY TABLE pode
T_COMISSOES). Obs.:
consultar qualquer tabela do banco.
- O Comando REVOKE (revoga privilégios) também é
Um usuá rio com o privilégio ALTER DATABASE pode
utilizado com ROLES. As ROLES DBA, CONNECT e RESOURCE
alterar a estrutura física do banco, incluindo novos arquivos.
sã o ROLES padrã o do Oracle.
Um privilégio de objetos do BD administra uma operaçã o
O DBA pode, por exemplo, revogar a ROLE RESOURCE de
do banco de dados sobre um objeto específico do BD (uma
determinados usuá rios (concedendo aos mesmos somente
tabela, uma visão, ...).
alguns privilégios, de tal ROLE).
Exemplo:
Exemplo:
Um usuá rio com privilégio de SELECT na tabela SALÁ RIOS,
1)REVOKE UPDATE ON T_COMISSOES FROM
pode consultar a mesma.
admin_salarios;
Um outro usuá rio com privilégio de UPDATE, na tabela
2)REVOKE USUARIO_B FROM admin_salarios;
SALARIOS, poderá alterar a mesma
VISÕ ES (VIEW’S) DO DICIONÁ RIO DE DADOS
(açã o que nã o poderá ser realizada pelo usuá rio com
O dicioná rio de dados Oracle possui diversas visõ es que
privilégio de SELECT apenas).
estã o divididas em categorias: Categoria Descriçã o
COMANDO GRANT
DBA_XXX Visõ es do DBA, com informaçõ es de qualquer
Concede privilégios aos usuá rios Oracle cadastrados.
definição de objeto do BD.
Sintaxe:
USER_XXX Visõ es que podem ser acessadas por qualquer
GRANT <privilégio> to { usuá rio | role | public } [ WITH
usuá rio, dando informaçõ es de seus objetos.
ADMIN OPTION ]; Exemplos:
ALL_XXX Visõ es que podem ser acessadas por qualquer
1) GRANT CREATE SESSION, CREATE TABLE TO JOAO;
usuá rio, com informaçõ es de todos os objetos que ele pode
2) GRANT SELECT ANY TABLE TO manoel;
acessar.
3)GRANT SELECT, INSERT, UPDATE, DELETE ON T_Salario
TO joaquim;
Obs:
Todas as tabelas e visõ es do DD podem ser acessadas MODOS DE ARQUIVAMENTO ORACLE
pelo usuá rio SYS. Para ver as visõ es use os comandos O Oracle pode trabalhar em dois modos de arquivamento:
DESCRIBE e SELECT. ARCHIVELOG e NOARCHIVELOG.
Lista de algumas Visõ es:
V$SESSION Mostra as sessõ es logadas.
USER_USERS Usuá rio conectado.
ALL_USERS Todos os usuá rios conectados e outras No modo ARCHIVELOG o Oracle além de usar o sistema
colunas. circular de preenchimento no Redo Log files, ele copia, antes
DBA_USERS Todas as informaçõ es dos usuá rios. de fazer a troca, para os Archives Redo Log files (passo
USER_TS_QUOTAS Limite que o usuá rio tem (Quota) na administrado pelo processo de segundo plano ARCH (ver
TABLESPACE. DBA_TS_QUOTAS Todas as quotas de todos os definição deste processo background no início da apostila).
usuá rios. NOARCHIVELOG
DBA_DATAFILES DATAFILES e TABLESPACES do
BD.
DBA_TABLES Tabelas do DBA
ALL_TABLES Todas as tabelas.
DBA_ROLE_PRIVS Tabela com os privilégios.
DBA_AUDIT_TRAIL Conjunto de trilhas de auditoria.
DBA_EXP_FILES Descrição dos arquivos exportados.
DBA_ROLES As roles do BD.
DBA_SEGMENTS Informaçõ es sobre os segmentos do BD.
DBA_TABLESPACE Tablespaces do BD. Já no modo NOARCHIVELOG o Oracle somente faz as
DBA_ROLLBACK_SEGS Segmentos de Rollback. trocas, nã o armazenando em outros arquivos.
V$DATAFILE Infomaçõ es sobre os DATAFILES do BD. HABILITANDO/DESABILITANDO O MODO DE
V$PARAMETER Parâ metros de inicialização do BD. ARQUIVAMENTO
V$LOG_HISTORY Informaçõ es sobre o 1)Para ver o modo atual do BD usar o comando ARCHIVE
Log de transaçõ es do BD. LOG LIST Exemplo:
SVRMGR>ARCHIVE LOG LIST;
BACKUP E RECOVERY DO BANCO DE DADOS 2)Os parâ metros LOG_ARCHIVE_START,
Métodos de Backup Oracle: Backup completo (full) ou LOG_ARCHIVE_DEST e LOG_ARCHIVE_FORMAT, sã o os
parcial. Pode ser feito ONLINE ou OFFLINE. parâ metros do “parameter file” que devem ser alterados
BACKUP COMPLETO (“FULL”) OFFLINE para passar o modo para ARCHIVELOG (quando de um novo
Copiar através de comando do sistema operacional os STARTUP).
arquivos do BD Oracle: datafiles, redo log files, control files e Ex:
parameter file. LOG_ARCHIVE_START = TRUE
Passos: LOG_ARCHIVE_DEST = diretó rio (ou nome do dispositivo).
a)Selecionar os arquivos relevantes para o Backup; LOG_ARCHIVE_FORMAT=nome_de_arquivo
b)Dar um “Shutdown” na instâ ncia Oracle, Incluir no nome do arquivo “%s” para ser anexado no
c)“Backupear” (copiar) todos os datafiles, redo log files, nome o nú mero da seqü ência de log (log sequence number).
control file(s) e parameter file(s) usando comandos do 3)Para trocar o modo de arquivamento automaticamente
Sistema Operacional; usa-se o comando ALTER SYSTEM: Ex: SVRMGR>ALTER
d)Reinicializar a instâ ncia Oracle (Startup). Ex: SYSTEM ARCHIVE LOG START TO
SVRMGR>CONNECT INTERNAL SVRMGR>SHUTDOWN ‘/caminho/nome_arquivo’ Onde:
NORMAL /caminho/nome_arquivo É o nome do diretó rio/arquivo
SVRMGR>HOST CP <ARQUIVOS_ORACLE> onde será arquivado os archives redo log files.
<DIRETÓ RIO_DE_BACKUP> SVRMGR>STARTUP Para desabilitar o modo de
Arquivamento (NOARCHIVELOG):
Obs: A)Alterar o parâ metro LOG_ARCHIVE_START do arquivo
- Para saber quais os nomes dos arquivos a serem de parâ metros: LOG_ARCHIVE_START = FALSE
copiados consultar as visõ es: DBA_DATAFILES, V$LOGFILE Daí, na pró xima inicializaçã o do BD o modo de
(coluna MEMBER) Usar o comando SHOW PARAMETER arquivamento será NOARCHIVELOG. B)Para parar
CONTROL_FILES para ver o nome dos Control Files. automaticamente:
RESTAURANDO (RECOVERY) DO BD SVRMGR>CONNECT SYSTEM/MANAGER;
Passos: SVRMGR>ALTER SYSTEM ARCHIVE LOG STOP;
a) Tirar o BD do “ar” (executar um BACKUP ONLINE PARCIAL
SHUTDOWN ABORT, Usar o comando ALTER TABLESPACE para preparar a
para sair mais rá pido). TABLESPACE para o início da có pia:
b) Restaurar o mais recente dos Backup’s ALTER TABLESPACE nome_tablespace BEGIN/END
completo, incluindo todos os arquivos: datafiles, redo log BACKUP Onde:
files e control files. BEGIN BACKUP Início do Backup com a Tablespace
c)Inicializar a instâ ncia novamente. Online. END BACKUP Fim do Backup com a Tablespace
Online. Ex:
Obs: SVRMGR>ALTER TABLESPACE TS_Treina BEGIN BACKUP;
Se for necessá rio editar o arquivo de parâ metros para SVRMGR>HOST cp $ORACLE_HOME/dbs/treina.dbf
indicar o novo caminh do(s) control file(s), se necessá rio (em /tmp/dir_backup/treina.dbf SVRMGR>ALTER TABLESPACE
caso de perda de disco). TS_Treina END BACKUP;
Por default, o BD fica no modo NOARCHIVELOG
Obs: trocas através da rede e, assim, aperfeiçoar as performances
- No Oracle Server para Windows NT usamos a interface destas aplicaçõ es.
grá fica do mesmo, o que facilita muito as atividades do DBA Por outro lado a linguagem PL/SQL permite chamar os
em relaçã o ao BACKUP/RECOVER. procedimentos externos, quer dizer dos procedimentos
O comando “ cp “ utilizado acima é um comando de có pia escritos em outra linguagem (de terceira geração,
do sistema UNIX. geralmente a linguagem C).
Logo apó s copia-se os Control files com o comando ALTER Uma das principais vantagens da linguagem PL/SQL é
DATABASE BACKUP CONTROLFILE. permitir que você escreva programas que ficam
Exemplo: armazenados no banco de dados e que podem ser
SVRMGR>ALTER DATABASE BACKUP CONTROLFILE reutilizados por qualquer aplicaçã o/usuá rio que acesse o
2> TO ‘/tmp/dir_backup/ctrltreina.ctl’; banco de dados. Segundo Thomas Kyte, um dos maiores
Copiar também o(s) arquivo(s) de parâ metro(s) , usando especialistas em Oracle do mundo, PL/SQL é a forma mais
comandos do sistema operacional. rá pida de processar dados em Bancos de Dados Oracle.
Além dos arquivos acima copiados, convém também ao Entenda "processar dados" como nã o apenas submeter
DBA, copiar outros arquivos importantes de um servidor de instruçõ es SQL (UPDATE, SELECT, INSERT e DELETE) para o
BD: Banco de Dados, mas sim, efetuar transaçõ es que consistem
Arquivos específicos de aplicaçõ es, como os executá veis, de vá rias estruturas de decisã o, loops e processamentos mais
có digo-fonte, arquivos de configuraçã o, dentre outros. complexos.
Os arquivos de configuraçã o para o SQL*Net Como qualquer linguagem de programaçã o, em PL/SQL
(TNSNAMES.ORA, LISTENER.ORA, SQLNET.ORA, etc.) também é possível escrever có digo bom ou ruim. Para nã o
escrever có digo ruim, é necessá rio entender bem a estrutura
EXPORT/IMPORT/LOAD DO ORACLE do có digo PL/SQL, os detalhes de sua implementaçã o e até
Os utilitá rios EXPORT e IMPORT do Oracle servem para mesmo como ele interage com có digo SQL.
mover dados de/para BD Oracle. O Export grava dados de um
BD Oracle para arquivos do sistema operacional. Já o Import lê Princípio da linguagem PL/SQL
os dados de arquivos criados pelo Export de volta para o BD A linguagem PL/SQL permite definir um conjunto de
Oracle. O Export serve também para a criaçã o de có pias comandos contidos naquilo que se chama um "bloco" PL/SQL.
suplementares de BD visando aumentar a flexibilidade da Um bloco PL/SQL pode, ele mesmo, conter sub blocos.
recuperação. A sintaxe PL/SQL é simples e legível.
Temos diversos modos de “exportar”:
O tratamento dos erros
Modo Descrição PL/SQL oferece um meio de identificar e de tratar os
Tabela Exporta tabelas especificadas. eventuais erros com a ajuda do mecanismo das exceçõ es.
Usuá rios Exporta todos os objetos de um Em casa de erro, este é transmitido automaticamente
usuá rio. transmitido à um bloco EXCEPÇÃ O que permite de tratá -la.
Banco de Dados completo Exporta todos os objetos PL/SQL define em standards um grande nú mero de exceçõ es
do BD. (quer dizer que PL/SQL pré define um grande nú mero de
Quando da “importaçã o” alguns privilégios o usuá rio tipos de erros). Além do mais, é possível definir suas
“importador” deve possuir: CREATE TABLE e TABLESPACE pró prias exceçõ es, o que oferece numerosas possibilidades.
QUOTA ou UNLIMITED TABLESPACE, INSERT TABLE, ALTER
TABLE. BANCO DE DADOS36
Obs: Um banco de dados é uma ferramenta para coletar e
No Oracle somente usuá rios com privilégio organizar informaçõ es. Os bancos de dados podem
EXP_FULL_DATABASE podem exporta o BD armazenar informaçõ es sobre pessoas, produtos, pedidos ou
completo. qualquer outra coisa. Muitos bancos de dados começam
como uma lista em um programa de processamento de texto
PL/SQL30 ou planilha. Conforme a lista cresce, começam a aparecer
A linguagem PL/SQL é uma linguagem L4G (deve-se redundâ ncias e inconsistências nos dados. Os dados se
entender este termo uma linguagem de quarta geraçã o), que tornam difíceis de entender no formato de lista, e há
fornece uma interface processual ao SGBD Oracle. A limitaçõ es nas maneiras de pesquisar ou puxar subconjuntos
linguagem PL/SQL integra perfeitamente a linguagem SQL lhe de dados para analisar. Quando esses problemas começam a
trazendo uma dimensã o processual. aparecer, é conveniente transferir os dados para um banco
Com efeito, a linguagem SQL é uma linguagem declarativa de dados criado por um sistema de gerenciamento de banco
nã o processual que permite exprimir solicitaçõ es em uma de dados (SGBD).
linguagem relativamente simples. Em contrapartida, ela nã o Um banco de dados pode ser formado por um conjunto
integra nenhuma estrutura de controle que permita, por de tabelas, que estejam relacionadas entre si. Um banco de
exemplo, executar um ciclo interativo. dados pode conter mais de uma tabela. Por exemplo, um
Assim a linguagem PL/SQL permite manipular de maneira sistema de rastreamento de inventá rio que usa três tabelas
complexa os dados contidos no banco de dados Oracle nã o é três bancos de dados, mas um banco de dados que
transmitindo um bloco de programaçã o ao SGBD ao invés de contém três tabelas. A menos que ele tenha sido criado
enviar uma solicitação SQL. Desta maneira, os tratamentos sã o especificamente para usar dados ou có digo de outra fonte.
diretamente realizados pelo sistema do banco de dados. Isto
tem como consequência, principalmente reduzir o nú mero de Tipos de SGBD
Os Sistemas de Gerenciamento de Banco de Dados –
30 Fonte: http://br.ccm.net/contents/873-pl-sql-introducao-a-linguagem-pl- SGBD sã o softwares que proporcionam armazenamento e
sql http://www.fabioprado.net/2011/10/plsql-o-que-e-e-quando-usar.html 36 recuperaçã o de dados com segurança. É um conjunto de
Fonte: https://support.office.com/pt-br/article/No
%C3%A7%C3%B5esb%C3%A1sicas-do-banco-de-dados-a849ac16-07c7-4a31-
9948- 3c8c94a7c204?CorrelationId=14eb69b5-b34a-4da4-8879-83b9b2d15ed2&ui=pt-
BR&rs=pt-BR&ad=BR
ferramentas que facilitam as operaçõ es e os resultados com
segurança. 37
Fonte: https://support.office.com/pt-pt/article/Adicionar-definir-alterar-
Sã o diversos os fornecedores de SGBD. Entre os mais ouremover-a-chave-prim%C3%A1ria-07b4a84b-0063-4d56-8b00-
conhecidos estã o o Oracle, o SQL Server, o MySQL, o PostGre, 65f2975e4379?ui=pt-PT&rs=pt-PT&ad=PT
Microsoft Access (para projetos mais simples) e muitos Tipos de dados mais comuns em SGBD
outros. Um SGBD deve cumprir o seguinte:
- Linguagem de Modelagem, definindo o esquema com Tipo de Armazena
o qual os bancos de dados sã o construídos. Usando o modelo dados
relacional é generalizada.
- As estruturas de dados, como campos, registros, Texto Caracteres alfanuméricos
arquivos ou objetos devem ser manipulados pelo SGBD, e Use para texto, ou texto e nú meros
armazenado em um meio de armazenamento permanente. que nã o sã o usados em cá lculos (por
- Query Language, que permite a recuperaçã o de exemplo, a identificaçã o de um
dados, analisar e modificar considerando-se os privilégios de produto).
acesso dos usuá rios.
Nú mero Valores numéricos (valores inteiros
- Mecanismos transacionais, que garantir o ou fracioná rios).
cumprimento da ACID (Atomicidade, Consistência, Use para armazenar nú meros a
Isolamento, Durabilidade - Atomicidade, Consistência,
serem usados em cá lculos, exceto
Isolamento e Durabilidade), garantindo também a integridade
valores monetá rios (use Moeda como
dos dados.
tipo de dados para valores monetá rios).
O que compõe um banco de dados Inteiro Apenas valores numéricos inteiros.
(Muito usado em campos que sã o chave
Tabelas primá ria com ou sem numeraçã o
Uma tabela de banco de dados é semelhante na aparência automá tica).
a uma planilha, pois os dados sã o armazenados em linhas e Data/Hora Datas e horas.
colunas. Como resultado, geralmente é bem fá cil importar
Use para armazenar valores de
uma planilha em uma tabela de banco de dados. A principal
data/hora. Observe que cada valor
diferença entre armazenar os dados em uma planilha e
armazenado inclui um componente de
armazená -los em um banco de dados é a maneira como os
data e um componente de hora.
dados sã o organizados.
Para obter maior flexibilidade de um banco de dados, os Moeda Valores monetá rios.
dados precisam ser organizados em tabelas de forma que nã o Use para armazenar valores
ocorram redundâ ncias. Por exemplo, se você armazenar monetá rios (moeda).
informaçõ es sobre funcioná rios, cada funcioná rio deverá ser
Sim/Nã o Valores Boolean.
inserido apenas uma vez em uma tabela que esteja
Use para campos Verdadeiro/Falso,
configurada apenas para manter dados de funcioná rios. Os
que podem conter um de dois valores
dados sobre produtos serã o armazenados em suas pró prias
possíveis: Sim/Nã o ou
tabelas, e os dados sobre as filiais serã o armazenados em
Verdadeiro/Falso, por exemplo.
outra tabela. Esse processo é chamado normalizaçã o.
Chave primária37
Registros
Uma chave primá ria consiste num campo ou conjunto de
Cada linha em uma tabela é denominada um registro. Os
campos da tabela que fornece ao SGBD um identificador
registros sã o os locais onde os itens individuais de
exclusivo para cada linha. Numa base de dados relacional, as
informaçõ es são armazenados. Cada registro consiste em um
informaçõ es são divididas em tabelas baseadas em assuntos
ou mais campos.
separados. Em seguida, as relaçõ es de tabela e as chaves
Outra maneira de descrever registros e campos é
primá rias são utilizadas para indicar ao SGBD como associar
visualizar um catá logo de cartõ es de biblioteca no estilo
novamente as informaçõ es. Os SGBD utiliza os campos de
antigo. Cada cartã o do arquivo corresponde a um registro no
chave primá ria para associar rapidamente os dados a partir
banco de dados. Cada informaçã o em um cartã o individual
de vá rias tabelas e combinar os dados de forma ló gica.
(autor, título e assim por diante) corresponde a um campo no
Este método funciona, tendo em conta que, uma vez
banco de dados.
definida a chave primá ria, é possível utilizá -la em outras
tabelas para voltar a fazer referência à tabela utilizando a
Campos
chave primá ria. Por exemplo, um campo ID do Cliente na
Os campos correspondem à s colunas da tabela. Por
tabela Clientes também poderá ser apresentado na tabela
exemplo, você pode ter uma tabela denominada
Encomendas. Na tabela Clientes, trata-se da chave primá ria.
"Funcioná rios" em que cada registro (linha) contém
Na tabela Encomendas, denomina-se chave externa. Uma
informaçõ es sobre um funcioná rio diferente, e cada campo
chave externa, simplesmente indicada, trata-se da chave
(coluna) contém um tipo de informaçã o diferente, como o
primá ria de outra tabela.
nome, sobrenome, endereço e assim por diante. Os campos
devem ser designados com um determinado tipo de dados,
seja texto, data ou hora, nú mero ou algum outro tipo.
chave primá ria emprega mais do que uma coluna, também
é designada por chave composta.

Chave estrangeira (fazer tabela no word)


A chave estrangeira é uma chave primá ria de outra tabela.

1- Chave primá ria e 2- chave estrangeira


Frequentemente, um nú mero de identificaçã o exclusivo,
como, por exemplo, um nú mero de ID ou um nú mero de
série ou có digo, funciona como chave primá ria numa Exemplo de chave estrangeira (note que a chave
tabela. Por exemplo, poderá ter uma tabela Clientes, na estrangeira é uma chave primá ria em outra tabela)
qual cada cliente tenha um nú mero de ID de cliente Quando duas ou mais tabelas estã o relacionadas há
exclusivo. O campo de ID de cliente corresponde à chave campos comuns entre elas, este campo é definido como
primá ria. chave primá ria quando ele define o identificador
Um bom candidato a chave primá ria apresenta vá rias exclusivo de uma tabela, e chave estrangeira quando o
características. Em primeiro lugar, identifica de forma campo trá s informaçõ es que estã o armazenadas em
exclusiva cada linha. Em segundo lugar, nunca está vazio outra tabela. Há casos em que uma chave primá ria
nem é nulo: contém sempre um valor. Em terceiro lugar, também pode ser uma chave estrangeira (ao mesmo
raramente é alterado (idealmente, nunca). O SGBD utiliza tempo), isso ocorre quando há um relacionamento N:N.
os campos de chave primá ria para associar rapidamente A coluna Có digo do Fornecedor da tabela Produtos é uma
dos dados provenientes de vá rias tabelas. chave estrangeira porque é também a chave primá ria da
Um exemplo de uma escolha pouco adequada para uma tabela Fornecedores.
chave primá ria seria um nome ou endereço. Ambos contêm
informaçõ es que poderiam ser alteradas com o decorrer do Relacionamento.31
tempo.
Deverá especificar sempre uma chave primá ria para O que são relações tabela
uma tabela. O SGBD cria automaticamente um índice para a Em um banco de dados relacional, as relaçõ es permitem
chave primá ria, que permite ajudar a tornar mais rá pidas que você evite dados redundantes. Por exemplo, se você
as consultas, bem como outras operaçõ es. Os SGBD estiver desenvolvendo um banco de dados que irá rastrear
também asseguram, que cada registro apresenta um valor informaçõ es sobre livros, será necessá rio ter uma tabela
no campo de chave primá ria e que é sempre exclusivo. chamada Títulos, que irá armazenar as informaçõ es sobre
Se nã o souber qual o campo ou conjunto de campos que cada livro, tais como o título do livro, a data de publicaçã o e o
possa constituir uma chave primá ria adequada, considere a editor. Também há informaçõ es sobre o editor que talvez
utilizaçã o de uma coluna com o tipo de dados Numeraçã o você deseje armazenar, tais como o nú mero de telefone, o
Automá tica. Este tipo de identificador nã o inclui fatos (nã o endereço e o có digo postal do editor. Se você quisesse
contém quaisquer informaçõ es fatuais que descrevam a armazenar todas essas informaçõ es na tabela de títulos, o
linha que representa). É recomendado utilizar nú mero de telefone do editor seria duplicado para cada título
identificadores que nã o incluam fatos, uma vez que os que ele publicasse.
respectivos valores nã o são alterados. Uma chave primá ria A melhor solução é armazenar as informaçõ es do editor
que contenha fatos sobre uma linha (por exemplo, um somente uma vez em uma tabela separada, Editores. Assim,
nú mero de telefone ou o nome de um cliente) tem maior você poderá colocar um ponteiro na tabela Títulos para
probabilidade de ser alterada, uma vez que as pró prias referir a uma entrada na tabela Editores.
informaçõ es fatuais podem ser alteradas. Para certificar-se de que seus dados não estã o fora de
sincronismo, é possível reforçar a integridade referencial
entre as tabelas Títulos e Editores. As relaçõ es de integridade
referencial ajudam a garantir que as informaçõ es em uma
tabela correspondem às informaçõ es em outra tabela. Por
exemplo, cada título na tabela Títulos deve estar associado a
um editor específico na tabela Editores. Um título nã o pode
ser adicionado ao banco de dados para um editor que nã o
existe no banco de dados.

Exemplo de chave primá ria na tabela produtos Um dos objetivos de um bom design de banco de dados é
remover a redundâ ncia de dados (dados duplicados). Para
1. Frequentemente, uma coluna com o tipo de dados alcançar esse objetivo, divida os dados em vá rias tabelas
Numeraçã o Automá tica constitui uma chave primá ria baseadas em tó picos para que cada fato seja representado
adequada, uma vez que permite assegurar que não existem apenas uma vez. Depois, forneça ao SGBD os meios para
dois IDs de Produto idênticos. reunir as informaçõ es divididas — faça isso colocando
Em determinados casos, poderá pretender utilizar dois campos em comum em tabelas que sejam relacionadas. Para
ou mais campos que, em conjunto, forneçam a chave realizar essa etapa corretamente, entretanto, você deve
primá ria de uma tabela. Por exemplo, uma tabela Detalhes primeiro compreender as relaçõ es entre as tabelas e depois
da Encomenda que armazene itens de linha para especificar essas relaçõ es no banco de dados.
encomendas utilizaria duas colunas na respectiva chave
primá ria: ID da Encomenda e ID do Produto. Quando uma
31 Fonte: https://support.microsoft.com/en-us/kb/304466/pt-br
Depois de criar uma tabela para cada assunto em seu
banco de dados, você deverá fornecer ao SGBD os meios
pelos quais ele reunirá novamente essas informaçõ es
quando for necessá rio. Isso é feito colocando-se campos em
comum nas tabelas que sã o relacionadas e definindo-se
relaçõ es entre as tabelas. Em seguida, você pode criar
consultas, formulá rios e relató rios que exibam informaçõ es
de vá rias tabelas de uma só vez. Por exemplo, o formulá rio
mostrado aqui inclui informaçõ es retiradas de vá rias tabelas:

IDFuncionario usado como chave primá ria na tabela


Funcioná rios e como chave estrangeira na tabela pedidos

1. Có digoDoFuncioná rio aparece em ambas as tabelas


— como uma chave primá ria ...
2. ...e como uma chave estrangeira.

Tipos de relações tabela


Uma relaçã o trabalha correspondendo dados nas colunas
chave, geralmente as colunas com o mesmo nome em ambas
as tabelas. Na maioria dos casos, as relaçõ es correspondem a
chave primá ria de uma tabela, que fornece um identificador
Tela de pedidos exibindo de uma só vez informaçõ es de exclusivo para cada linha, à entrada na chave estrangeira da
quatro tabelas outra tabela. Por exemplo, as vendas podem ser associadas
aos títulos específicos vendidos criando uma relaçã o entre a
1.As informaçõ es desse formulá rio são originá rias da coluna título_id na tabela Títulos (a chave primá ria) e a
tabela Clientes... coluna título_id na tabela Vendas (a chave estrangeira).
2....da tabela Pedidos...
3....da tabela Produtos... Há três tipos de relaçõ es de tabela.
4....e da tabela Detalhes do Pedido.
Uma relação um-para-muitos
O nome do cliente na caixa Cobrar é recuperado da tabela Considere um banco de dados de controle de pedidos que
Clientes; os valores de Có digo do Pedido e Data do Pedido vêm inclua uma tabela Clientes e uma tabela Pedidos. Um cliente
da tabela Pedidos; o nome do Produto vem da tabela pode fazer qualquer nú mero de pedidos. Assim, para
Produtos; os valores de Preço Unitá rio e Quantidade vêm da qualquer cliente representado na tabela Clientes, pode haver
tabela Detalhes do Pedido. Essas tabelas sã o vinculadas umas vá rios pedidos representados na tabela Pedidos. A relaçã o
à s outras de vá rias formas para trazer as informaçõ es de todas entre a tabela Clientes e a tabela Pedidos é, portanto, uma
para o formulá rio. relaçã o umpara-muitos.
No exemplo anterior, os campos das tabelas precisam Para representar uma relaçã o um-para-muitos em um
estar coordenados de forma que mostrem informaçõ es sobre design de banco de dados, tome a chave primá ria do lado
o mesmo pedido. Tal coordenaçã o é realizada usando-se "um" da relaçã o e adicione-a como um campo ou campos
relaçõ es de tabelas. Uma relaçã o de tabela funciona pela adicionais à tabela no lado "muitos" da relação. Nesse caso,
correspondência de dados em campos chave - geralmente um por exemplo, adicione um novo campo — o campo Có digo da
campo com o mesmo nome em ambas as tabelas. Na maioria tabela Clientes — à tabela Pedidos e nomeie-o como Có digo
dos casos, esses campos correspondentes sã o a chave do Cliente. O SGBD poderá entã o usar o nú mero do Có digo do
primá ria de uma tabela, que fornece um identificador Cliente na tabela Pedidos para localizar o cliente correto
exclusivo para cada registro, e uma chave estrangeira da outra para cada pedido.
tabela. Podese, por exemplo, associar funcioná rios aos
pedidos pelos quais sã o responsá veis criando-se uma relaçã o Uma relação muitos-para-muitos
de tabela entre os campos Có digoDoFuncioná rio nas tabelas Considere a relaçã o entre uma tabela Produtos e uma
Funcioná rios e Pedidos. tabela Pedidos. Um ú nico pedido pode incluir mais de um
produto. Por outro lado, um ú nico produto pode constar em
vá rios pedidos. Assim, para todos os registros da tabela
Pedidos, pode haver vá rios registros na tabela Produtos.
Além disso, para cada registro na tabela Produtos, pode
haver muitos registros na tabela Pedidos. Esse tipo de
relaçã o é denominado relação muitos-para-muitos porque
com relaçã o a todos os produtos pode haver vá rios pedidos,
e para todos os pedidos pode haver vá rios produtos. Observe
que para detectar relaçõ es muitos-para-muitos existentes
entre as tabelas é importante considerar ambos os lados da
relaçã o.
Para representar uma relaçã o muitos-para-muitos, você um registro com uma referência a outro registro que nã o
deve criar uma terceira tabela, geralmente chamada de existe — por exemplo, um registro de pedido que faça
tabela de associaçã o, que divide a relaçã o muitos-para- referência a um registro de cliente que nã o existe.
muitos em duas relaçõ es um-para-muitos. Insira a chave
primá ria de cada uma das duas tabelas na terceira tabela. Quando você cria um banco de dados, divide as
Como resultado, a terceira tabela registra cada ocorrência, informaçõ es em tabelas, cada uma com uma chave primá ria.
ou instâ ncia, da relaçã o. Por exemplo, a tabela Pedidos e a Depois, você adiciona chaves estrangeiras a tabelas
tabela Produtos possuem uma relaçã o muitos-para-muitos relacionadas que façam referência a essas chaves primá rias.
que é definida criando-se duas relaçõ es um-para-muitos com Esses pares chave estrangeira-chave primá ria formam a base
a tabela Detalhes do Pedido. Um pedido pode ter muitos das relaçõ es de tabelas e consultas de vá rias tabelas. É
produtos, e cada produto pode aparecer em muitos pedidos. importante, entretanto, que essas referências chave
estrangeira-chave primá ria permaneçam sincronizadas. A
Uma relação um-para-um integridade referencial ajuda a garantir que as referências
Em uma relaçã o um-para-um, cada registro na primeira permaneçam sincronizadas e depende das relaçõ es de tabelas.
tabela pode ter somente um registro correspondente na
segunda tabela, e cada registro na segunda tabela pode ter Noções básicas sobre integridade referencial
somente um registro correspondente na primeira tabela. Quando você cria um banco de dados, divide as
Esse tipo de relaçã o não é comum porque, geralmente, as informaçõ es em vá rias tabelas baseadas em tó picos para
informaçõ es relacionadas dessa maneira sã o armazenadas minimizar a redundâ ncia de dados. Forneça, entã o, ao SGBD
na mesma tabela. A utilizaçã o de uma relaçã o um-para-um é os meios necessá rios para reunir os dados novamente
recomendada para dividir uma tabela com muitos campos, colocando campos em comum em tabelas relacionadas. Por
isolar parte de uma tabela por motivos de segurança ou exemplo, para representar uma relação um-para-muitos, tome
armazenar informaçõ es que se apliquem somente a um a chave primá ria da tabela "um" e adicione-a como campo
subconjunto da tabela principal. Quando você identificar adicional na tabela "muitos". Para reunir os dados novamente,
esse tipo de relação, ambas as tabelas devem compartilhar o SGBD pega o valor na tabela "muitos" e procura o valor
um campo em comum. correspondente na tabela "um". Dessa forma, os valores na
Por que criar relações de tabela? tabela "muitos" fazem referência aos valores correspondentes
na tabela "um".
Você pode criar relaçõ es de tabela explicitamente usando Suponha que você tenha uma relaçã o um-para-muitos
a janela Relaçõ es ou arrastando um campo do painel Lista de entre Expedidores e Pedidos e você deseje excluir um
Campos. O Office Access 2007 usa relaçõ es de tabelas para que Expedidor. Se o expedidor que você deseja excluir tiver
elas possam ser unidas quando for necessá rio utilizá -las em pedidos na tabela Pedidos, esses pedidos se tornarã o "ó rfã os"
um objeto de banco de dados. Há vá rias razõ es que justificam quando você excluir o registro Expedidor. Os pedidos ainda
a criaçã o de relaçõ es de tabelas antes da criaçã o de outros conterã o um có digo de expedidor, mas ele nã o será mais
objetos do banco de dados, como formulá rios, consultas e vá lido, porque o registro ao qual ele faz referência nã o existe
relató rios. mais.
O objetivo da integridade referencial é evitar ó rfã os e
- As relaçõ es de tabela informam os designs de manter as referências em sincronia, para que esta situaçã o
consulta hipotética nunca ocorra.
Para trabalhar com registros de mais de uma tabela, você Imponha a integridade referencial habilitando-a para
geralmente deve criar uma consulta que associe as tabelas. A uma relaçã o de tabela (consulte Impor a integridade
consulta faz a correspondência dos valores no campo de chave referencial para obter instruçõ es passo a passo). Depois que
primá ria da primeira tabela com um campo de chave ela é imposta, o SGBD rejeita qualquer operação que possa
estrangeira na segunda tabela. Por exemplo, para retornar violar a integridade referencial dessa relaçã o de tabela. Isso
linhas que listem todos os pedidos de cada cliente, construa significa que o SGBD rejeitará ambas atualizaçõ es que
uma consulta que faça a associaçã o da tabela Clientes com a alterem o destino de uma referência e exclusõ es que
tabela Pedidos com base no campo Có digo do Cliente. Na removam o destino de uma referência. Entretanto, é possível
janela Relaçõ es, você pode especificar manualmente os que você venha a ter uma necessidade perfeitamente vá lida
campos a serem associados. Entretanto, se você já tiver uma de alterar a chave primá ria de um expedidor que possua
relaçã o definida entre as tabelas, o SGBD fornece a associaçã o pedidos na tabela Pedidos. Nesses casos, o que você
padrã o, com base na relaçã o de tabela existente. Além disso, realmente precisa é que o SGBD atualize automaticamente
se você usar um dos assistentes de consulta, o SGBD usa as todas as linhas afetadas como parte de uma ú nica operaçã o.
informaçõ es coletadas das relaçõ es da tabela já definidas para Dessa forma, o SGBD garante que a atualizaçã o seja
apresentá -lo opçõ es informadas e para pré-definir totalmente realizada, de forma que o banco de dados nã o
configuraçõ es de propriedade com os valores padrã o fique inconsistente, com algumas linhas atualizadas e outras
adequados. nã o. Por esse motivo, o SGBD oferece suporte à opção
Propagar Atualizaçã o dos Campos Relacionados. Quando
- As relaçõ es de tabela informam os designs de você impõ e a integridade referencial e escolhe a opção
formulá rio e relató rio Propagar Atualizaçã o dos Campos Relacionados, e depois
Quando você cria um formulá rio ou relató rio, o SGBD usa atualiza uma chave primá ria, o SGBD atualiza
as informaçõ es coletadas das relaçõ es de tabela já definidas automaticamente todos os campos que fazem referência à
para apresentá -lo opçõ es informadas e para pré-definir chave primá ria.
configuraçõ es de propriedade com os valores padrã o É possível também que você venha a ter a necessidade
adequados. vá lida de excluir uma linha e todos os registros relacionados
— por exemplo, um registro Expedidor e todos os pedidos
- As relaçõ es de tabelas sã o a base através da qual relacionados a ele. Por isso, o SGBD oferece suporte à opçã o
você pode garantir a integridade referencial para ajudar a Propagar Exclusã o dos Registros Relacionados. Quando você
evitar registros ó rfã os no banco de dados. Um registro ó rfã o é impõ e a integridade referencial e escolhe a opção Propagar
Exclusã o dos Registros Relacionados e depois exclui um consulta como fonte de registros para um formulá rio ou
registro no lado da chave primá ria da relaçã o, o SGBD relató rio.
automaticamente exclui todos os registros que fazem Uma consulta açã o, como o nome indica, executa uma
referência à chave primá ria. tarefa com os dados. As consultas açã o podem ser usadas para
criar novas tabelas, adicionar dados a tabelas existentes,
Formulários atualizar ou excluir dados.
À s vezes refere-se aos formulá rios como "telas de
entrada de dados". Eles sã o as interfaces usadas para Design de banco de dados32
trabalhar com os dados e frequentemente contêm botõ es de
comando que executam vá rios comandos. Você pode criar Certos princípios guiam o processo de design do banco de
um banco de dados sem usar formulá rios, simplesmente dados. O primeiro princípio é que informaçõ es duplicadas
editando seus dados nas folhas de dados da tabela. Contudo, (também denominadas dados redundantes) sã o ruins porque
a maioria dos usuá rios de bancos de dados prefere usar consomem espaço e aumentam a possibilidade de erros e
formulá rios para exibir, inserir e editar dados nas tabelas. inconsistências. O segundo princípio é que a correçã o e
Os formulá rios fornecem um formato fácil de usar para completitude das informaçõ es é importante. Se o banco de
trabalhar com os dados, e você também pode adicionar dados contiver informaçõ es incorretas, todos os relató rios que
elementos funcionais, como botõ es de comando. Você pode empregam informaçõ es do banco de dados também conterã o
programar os botõ es para determinar quais dados aparecem informaçõ es incorretas. Como resultado, todas as decisõ es
no formulá rio, abrir outros formulá rios ou relató rios, ou tomadas a partir desses relató rios serã o errô neas.
executar vá rias outras tarefas. Por exemplo, você pode ter Um bom design de banco de dados, portanto, é um que:
um formulá rio chamado "Formulá rio do Cliente" no qual - Divide as informaçõ es em tabelas baseadas em
você trabalha com dados de clientes. O formulá rio do cliente tó picos, visando reduzir a redundâ ncia de dados.
pode ter um botã o que abre um formulá rio de pedido no qual - Fornece ao SGBD os dados essenciais à reuniã o de
você pode inserir um novo pedido para esse cliente. informaçõ es nas tabelas, conforme necessá rio.
Os formulá rios também permitem controlar como outros - Ajuda a oferecer suporte e assegurar a precisã o e a
usuá rios interagem com os dados no banco de dados. Por integridade das informaçõ es.
exemplo, você pode criar um formulá rio que mostra apenas - Atende suas necessidades de processamento de
determinados campos e permite que apenas determinadas dados e de relató rios.
operaçõ es sejam executadas. Isso ajuda a proteger dados e a
garantir que os dados sejam inseridos corretamente. O processo do design

Relatórios O processo do design consiste nas seguintes etapas:


Os relató rios sã o usados para resumir e apresentar os
dados nas tabelas. Geralmente, um relató rio responde a uma
pergunta específica, como "Que valor recebemos de cada Determinar a finalidade do seu banco de dados
cliente este ano?" ou "Em quais cidades nossos clientes estã o Recomenda-se anotar a finalidade do banco de dados em
localizados?" Cada relató rio pode ser formatado para um papel — sua finalidade, como se espera usá -lo e quem o
apresentar as informaçõ es de maneira a melhor facilitar a usará . Com relação a um banco de dados pequeno e de
leitura. empresa caseira, por exemplo, você escreveria algo como "O
Um relató rio pode ser executado a qualquer momento e banco de dados cliente mantém uma lista de informaçõ es de
sempre refletirá os dados atuais no banco de dados. De clientes com a finalidade de produzir malas diretas e
maneira geral, os relató rios são formatados para serem relató rios". Se o banco de dados for mais complexo ou usado
impressos, mas também podem ser exibidos na tela, por diversas pessoas, como ocorre frequentemente em um
exportados para outro programa ou enviados como uma ambiente empresarial, a finalidade poderia ser contida em
mensagem de email. um simples pará grafo ou mais, devendo incluir quando e
como cada pessoa irá usar o banco de dados. A ideia é ter
Consultas uma declaração de missã o bem desenvolvida, à qual se possa
É nas consultas que reside o trabalho real de um banco de referir durante todo o processo de design. Ter uma
dados, e elas podem executar vá rias funçõ es diferentes. Sua declaraçã o como essa ajuda a focar nas metas no momento
funçã o mais comum é recuperar dados específicos das tabelas. da tomada de decisõ es.
Geralmente, os dados que você deseja ver estã o espalhados
em vá rias tabelas, e as consultas permitem exibi-los em uma Localizar e organizar as informações necessárias:
ú nica folha de dados. Além disso, como geralmente você nã o Reunir todos os tipos de informaçõ es que você possa desejar
deseja ver todos os registros de uma vez, as consultas gravar no banco de dados, como nome de produto e nú mero
permitem adicionar critérios para "filtrar" os dados até obter de pedido.
somente os registros desejados. Frequentemente as consultas Para localizar e organizar as informaçõ es requeridas,
servem como fonte de registros para formulá rios e relató rios. comece pelas informaçõ es existentes. Por exemplo, é
Certas consultas sã o "atualizá veis", o que significa que possível registrar os pedidos de compra em um livro razã o
você pode editar os dados nas tabelas base por meio da folha ou manter as informaçõ es do cliente em formulá rios de
de dados da consulta. Se estiver trabalhando em uma consulta papel em um gabinete de arquivos. Reú na esses documentos
atualizá vel, lembre-se de que as alteraçõ es estã o realmente e liste cada um dos tipos de informaçõ es mostrados (por
sendo feitas nas tabelas e nã o apenas na folha de dados da exemplo, cada caixa preenchida em um formulá rio). Se nã o
consulta. houver formulá rios, imagine que será necessá rio criar um
As consultas têm duas variedades bá sicas: consultas formulá rio para registrar as informaçõ es do cliente. Que
seleçã o e consultas açã o. Uma consulta seleçã o simplesmente informaçõ es você colocaria no formulá rio? Que caixas de
recupera os dados e os disponibiliza para uso. Você pode preenchimento você criaria? Identifique e liste todos esses
exibir os resultados da consulta na tela, imprimi-los ou copiá -
32 Fonte: https://support.office.com/pt-BR/article/Fundamentos-do-design-
los para a á rea de transferência. Ou você pode usar a saída da debanco-de-dados-1EADE2BF-E3A0-41B5-AEE6-D2331F158280
itens. Por exemplo, supondo que você atualmente mantém a geral, quando se deseja classificar, pesquisar, calcular ou criar
lista de clientes em cartõ es de índice. O exame desses cartõ es um relató rio com base em um item de informaçõ es, deve-se
demonstra que cada cartã o contém um nome, endereço, inserir esse item em seu pró prio campo.
cidade, estado, CEP e nú mero de telefone do cliente. Cada um Pense nas perguntas que você deseja que o banco de dados
desses itens representa uma coluna potencial em uma tabela. responda. Por exemplo, quantas vendas do produto em
À medida que prepara a lista, nã o se preocupe em destaque foram fechadas mês passado? Onde vivem seus
conseguir uma lista perfeita na primeira tentativa. Em vez melhores clientes? Quem é o fornecedor de seu produto de
disso, liste todos os itens que lhe vierem à mente. Se outras maior vendagem? A antecipaçã o dessas perguntas ajuda a que
pessoas usarem o banco de dados, peça sugestõ es também. você se concentre nos outros itens a serem registrados.
Você poderá refinar posteriormente a lista.
Em seguida, considere os tipos de relató rios ou de listas Dividir as informações em tabelas: Dividir os itens de
de distribuiçã o a serem produzidos com o banco de dados. informaçõ es em entidades ou tó picos principais, como
Por exemplo, você poderá gerar um relató rio de vendas de Produtos ou Pedidos. Cada tó pico torna-se entã o uma tabela.
produto que apresente as vendas por regiã o, ou um relató rio Para dividir as informaçõ es em tabelas, escolha as maiores
de resumo de inventá rio mostrando os níveis de inventá rio entidades ou tó picos. Por exemplo, apó s localizar e organizar
do produto. É igualmente possível gerar cartas modelo para informaçõ es relativas a um banco de dados de venda de
enviar aos clientes, que divulguem um evento de vendas ou produto, a lista preliminar deve ter a seguinte aparência:
que ofereçam um brinde. Crie o relató rio ideal e imagine sua
aparência. Que informaçõ es você colocaria no relató rio?
Liste todos os itens. Faça o mesmo com a carta formulá rio e
com todos os relató rios cuja criação você antevê.

Itens de informaçõ es manuscritas e agrupados em


assuntos

As maiores entidades mostradas aqui sã o os produtos, os


fornecedores, os clientes e os pedidos. Assim, há sentido em
Pensar nos relató rios e listas de distribuiçã o a serem começar pelas seguintes tabelas: uma de fatos sobre produtos,
criados ajuda na identificaçã o dos itens necessá rios ao banco uma de fatos sobre fornecedores, uma de fatos sobre clientes,
de dados. Por exemplo, supondo que você dê aos clientes a e uma de fatos sobre pedidos. Embora essas tabelas nã o
chance de optar por (ou nã o) por atualizaçõ es perió dicas via completem a lista, sã o um ponto de partida. Continue e refinar
email, e que deseja imprimir uma listagem dos que optaram essa lista até ter um design que funcione bem.
pela opçã o. Para registrar essas informaçõ es, adicione uma Ao examinar pela primeira vez a lista de itens, você talvez
coluna "Enviar email" à tabela do cliente. É possível configurar se sinta tentado a colocá -los todos em uma ú nica tabela, em
o campo como Sim ou Nã o com relação a todos os clientes. vez de ter quatro, como mostrado na ilustraçã o anterior.
A necessidade de enviar mensagens de email aos clientes Você saberá aqui por que isso nã o é recomendado. Pense um
sugere que um outro item seja registrado. Apó s saber se o momento na tabela mostrada a seguir:
cliente deseja receber mensagens de email, será também
necessá rio saber o endereço de email para os quais as
mensagens serã o enviadas. Portanto, é necessá rio registrar
um endereço de email para cada um dos clientes.
Há sentido em construir um protó tipo de cada relató rio ou
listagem de saída, e pensar nos itens necessá rios à produçã o
do relató rio. Por exemplo, ao examinar uma carta formulá rio,
algumas coisas podem vir à sua mente. Para incluir uma
saudaçã o adequada — por exemplo, a sequência de caracteres Exemplo de tabela de produtos e fornecedores
"Sr.", "Srta." ou "Sra.", que inicia uma saudaçã o, será preciso
criar um item de saudaçã o. Da mesma forma, é possível Nesse caso, cada linha contém informaçõ es sobre o
começar normalmente uma carta com “Prezado Sr. Silva”, em produto e seu fornecedor. Como pode haver vá rios produtos
vez de “Prezado Edmundo Silva”. Isso quer dizer que você de um mesmo fornecedor, o nome e o endereço do
deseja armazenar regularmente o sobrenome em separado do fornecedor deverã o ser repetidos inú meras vezes. Isso
nome. consome espaço em disco. Gravar as informaçõ es do
Um ponto essencial a ser lembrado é que todas as partes fornecedor uma ú nica vez em uma tabela Fornecedores
da informaçã o devem ser quebradas em suas partes ú teis separada e, em seguida, vincular essa tabela à tabela
menores. No caso de nome, para disponibilizar prontamente o Produtos, é uma solução muito melhor.
sobrenome, quebre-o em duas partes — Nome e Sobrenome. Um segundo problema com esse design advém da
Para classificar um relató rio pelo ú ltimo nome, por exemplo, é necessidade de se modificarem as informaçõ es sobre o
ú til armazenar separadamente o sobrenome do cliente. Em
fornecedor. Por exemplo, supondo seja necessá rio alterar o regiõ es. Semelhantemente, o có digo de endereçamento postal
endereço de um fornecedor. Como o endereço aparece em tem mais sentido que o CEP se você pretende armazenar
vá rios lugares, você talvez altere acidentalmente o endereço endereços internacionais.
em um local, porém se esqueça de alterá -lo nos outros.
Gravar o endereço do fornecedor em apenas um local resolve A lista a seguir mostra algumas dicas sobre a
esse problema. determinaçã o de colunas.
Ao criar seu banco de dados, tente sempre registrar cada - Nã o inclusã o de dados calculados
fato apenas uma vez. Quando se pegar repetindo a mesma Na maior parte dos casos, o resultado de cá lculos nã o deve
informaçã o em mais de um local, como o endereço de ser armazenado em tabelas. Em vez disso, é possível fazer com
determinado fornecedor, coloque a informaçã o em uma que o SGBD realize cá lculos quando se deseja exibir o
tabela separada. resultado. Por exemplo, supondo que haja um relató rio de
Finalmente, suponhamos que haja apenas um produto Produtos do Pedido que exiba o subtotal de unidades do
fornecido pela Coho Winery, e que você deseje excluir o pedido por categoria de produto no banco de dados. Contudo,
produto, retendo, porém, o nome do fornecedor e as nã o há coluna de subtotal de Unidades no Pedido em nenhuma
informaçõ es de endereço. Como excluir o registro do tabela. Em vez disso, a tabela de Produtos inclui uma coluna
produto sem também perder as informaçõ es do fornecedor? Unidades do Pedido que armazena as unidades do pedido com
Isso nã o é possível. Como cada registro contém fatos sobre relaçã o a cada um dos produtos. Usando esses dados, o SGBD
um produto, assim como fatos sobre o fornecedor, nã o é calcula o subtotal cada vez que o relató rio é impresso. O
possível excluir um sem eliminar o outro. Para manter esses pró prio subtotal nã o pode ser armazenado na tabela.
fatos de maneira distinta, separe essa tabela em duas: uma
tabela de informaçõ es sobre o produto, e uma outra tabela - Armazenar as menores partes ló gicas das informaçõ es
de informaçõ es sobre o fornecedor. A exclusã o do registro do Você pode ficar tentado a ter um ú nico campo para nomes
produto deve eliminar apenas os fatos sobre o produto, nã o completos, ou para nomes de produtos juntamente com
os fatos sobre o fornecedor. descriçõ es de produto. Se você combinar mais de um tipo de
Apó s a seleçã o do tó pico a ser representado na tabela, as informação em um só campo, será difícil recuperar
colunas da tabela só devem armazenar fatos sobre esse posteriormente os fatos individuais. Tente quebrar as
tó pico. Por exemplo, a tabela de produto só deve armazenar informaçõ es em partes ló gicas, por exemplo, criando campos
fatos sobre produtos. Como o endereço do fornecedor é um distintos para nome e sobrenome, ou por nome, categoria e
fato sobre o fornecedor, e nã o um fato sobre o produto, descriçã o de produto.
pertence à tabela do fornecedor.

Transformar informações em colunas: Opte pelas


informaçõ es que deseja armazenar em cada uma das tabelas.
Cada item torna-se um campo que é exibido como coluna da
tabela. Por exemplo, uma tabela Funcioná rios pode incluir
campos como Sobrenome e Data de Contrataçã o.
Para determinar as colunas de uma tabela, opte pelas
informaçõ es que você necessita controlar sobre o tó pico
registrado na tabela. Por exemplo, com relação à tabela
Cliente, Nome, Endereço, Cidade-Estado-CEP, Email para
envio de correspondência, Saudaçã o e Endereço de email
constituem uma lista de colunas que é um bom começo. Cada Lista de itens de informaçõ es durante o processo de
registro da tabela contém o mesmo conjunto de colunas, de Design
modo que é possível armazenar informaçõ es sobre o Nome,
Endereço, Cidade-Estado-CEP, Email para envio de Apó s refinar as colunas de dados de cada tabela, você
correspondência, Saudaçã o e endereço de email de todos os estará pronto para escolher a chave primá ria de cada tabela.
registros. Por exemplo, a coluna de endereço contém os
endereços dos clientes. Cada registro contém dados sobre Especificar as chaves primárias: Escolher a chave
um cliente, e o campo de endereço contém o endereço do primá ria de todas as tabelas. A chave primá ria é uma coluna
cliente. usada unicamente para identificar cada linha. Um exemplo
Apó s determinar o conjunto inicial de colunas de cada pode ser Có digo de Produto ou Có digo de Pedido.
tabela, você poderá refinar as colunas. Por exemplo, é Toda tabela deve incluir uma coluna ou conjunto de
recomendado armazenar o nome do cliente em duas colunas colunas que identifica com exclusividade cada linha
separadas: o nome e o sobrenome, de modo que se possa armazenada na tabela. Trata-se, em geral, de um nú mero de
classificar, pesquisar e indexar apenas nessas duas colunas. Da identificação exclusivo, como o nú mero de identificaçã o de
mesma forma, o endereço na verdade consiste em cinco um funcioná rio ou um nú mero de série. Na terminologia de
componentes distintos: endereço, cidade, estado, CEP e banco de dados, essas informaçõ es sã o denominadas chave
país/regiã o. É igualmente recomendado armazená -los em primá ria da tabela. O SGBD usa os campos de chave primá ria
colunas diferentes. Se você deseja realizar uma operaçã o de para associar rapidamente os dados de vá rias tabelas e
pesquisa, filtro ou classificaçã o por estado, por exemplo, será passar a você as informaçõ es consolidadas.
necessá rio armazenar a informaçã o de estado em uma coluna Se já houver um identificador exclusivo para a tabela,
separada. como um nú mero de produto que identifica exclusivamente
Verifique se o banco de dados conterá somente cada produto do seu catá logo, você poderá usar esse
informaçõ es de origem doméstica, ou se, além disso, conterá identificador como chave primá ria da tabela — porém,
informaçõ es internacionais. Por exemplo, se você planeja apenas se os valores da coluna forem sempre diferentes com
armazenar endereços internacionais, deve haver uma coluna relaçã o a todos os registros. Nã o é possível duplicar valores
de Regiã o em vez de Estado, porque essa coluna aceita os em uma chave primá ria. Por exemplo, nã o use nomes de
estados domésticos e as regiõ es de outros países/outras pessoas como chave primá ria, porque nomes nã o são
exclusivos. É fá cil encontrar duas pessoas com o mesmo
nome em uma mesma tabela.
A chave primá ria deve sempre conter um valor. Se o
valor de uma coluna pode se tornar sem alocaçã o ou
desconhecido (valor faltante) em dado momento, nã o poderá
ser usado como componente de chave primá ria.
Escolha sempre uma chave primá ria cujo valor nã o se
altere. Em um banco de dados que utiliza mais de uma tabela,
a chave primá ria de uma tabela pode ser usada como
referência em outras tabelas. Se a chave primá ria se alterar, a
alteraçã o precisa também ser aplicada a todos os locais em
que a chave é citada. Usar uma chave primá ria que nã o se
altera reduz a possibilidade de que a chave primá ria fique
fora de sincronia com outras tabelas que fazem referência a Itens e informaçõ es durante o processo de design
ela.
Em geral, um nú mero exclusivo arbitrá rio é usado como
Configurar as relações de tabelas: Observar cada uma
chave primá ria. Por exemplo, é possível atribuir um nú mero
das tabelas e decidir como os dados em determinada tabela
exclusivo de pedido a todos os pedidos. A finalidade do
estã o relacionados aos dados de outras tabelas. Adicionar
nú mero de pedido é identificá -lo. Apó s atribuído, ele nã o é
campos a tabelas ou criar novas tabelas para esclarecer as
mais alterado.
relaçõ es, se necessá rio.
Se você nã o estiver visando a uma coluna ou conjunto de
Agora que as informaçõ es estã o divididas em tabelas, há
colunas que possam consistir em chave primá ria adequada,
necessidade de uma forma de reunir as informaçõ es
pense em usar uma coluna que tenha um tipo de dados de
novamente, com um sentido. Por exemplo, o formulá rio a
Auto Incremento (Onde os nú meros de cada registro sã o
seguir engloba informaçõ es de vá rias tabelas.
gerados automaticamente). Quando o tipo de dados de Auto
Incremento é usado, o SGBD atribui automaticamente um
valor a você. Esse identificador é isento de fatos; nã o contém
informaçõ es factuais que descrevam a linha que
representam. Os identificadores isentos de fatos são ideais
para se usar como chave primá ria porque nã o se alteram.
Uma chave primá ria que contenha fatos a respeito de uma
linha — nú mero de telefone ou nome de cliente, por exemplo
— tem mais probabilidade de se alterar porque as pró prias
informaçõ es factuais podem se modificar.

Formulá rio de pedido

Mostrando a tabela produtos em um campo de chave 1.As informaçõ es desse formulá rio sã o originá rias da
primá ria tabela Clientes
2....da tabela Funcioná rios...
1. Um conjunto de colunas para o tipo de dados de Auto 3....da tabela Pedidos...
Incremento consiste, em geral, em uma chave primá ria 4....da tabela Produtos...
adequada. Jamais dois có digos de produto sã o idênticos. 5....e da tabela Detalhes do Pedido.
Em alguns casos, é preferível usar dois ou mais campos Os SGBD sã o um sistemas de gerenciamento de banco de
que, juntos, forneçam a chave primá ria para uma tabela. Por dados relacionais. Em um banco de dados relacional, as
exemplo, uma tabela de Detalhes do Pedido que armazene informaçõ es são divididas em tabelas distintas, baseadas em
itens de linha de pedidos usaria duas colunas em sua chave tó picos. Sã o entã o utilizadas as relaçõ es de tabelas para
primá ria: Có digo de Pedido e Có digo de Produto. Quando uma reunir informaçõ es, à medida que se tornem necessá rias.
chave primá ria emprega mais de uma coluna, é também
denominada chave composta.
Criando uma relação um-para-muitos
Com relaçã o ao banco de dados de vendas de produto, é
Examine este exemplo: as tabelas Fornecedores e
possível criar uma coluna de Auto Incremento para cada uma
Produtos do banco de dados de pedidos de produto. Um
das tabelas, para servir como chave primá ria:
fornecedor pode fornecer qualquer nú mero de produtos.
Có digoDoProduto para a tabela Produtos, Có digoDoPedido
Consequentemente, para qualquer fornecedor representado
para as tabelas Pedidos, Có digoDoCliente para a tabela
na tabela Fornecedores pode haver vá rios produtos
Clientes e Có digoDoFornecedor para a tabela Fornecedores.
representados na tabela Produtos. A relaçã o entre a tabela
Fornecedores e a tabela Produtos é, portanto, uma relaçã o
umpara-muitos.
Observe que para detectar relaçõ es muitos-para-muitos entre
as tabelas é importante considerar ambos os lados da relaçã o.
Os tó picos das duas tabelas — pedidos e produtos — têm
uma relaçã o muitos-para-muitos. Isso representa um
problema. Para entender o problema, imagine o que
aconteceria se você tentasse criar a relaçã o entre duas tabelas
adicionando o campo Có digo do Produto à tabela Pedidos.
Para ter mais de um produto por pedido, é necessá rio mais de
um registro na tabela Pedidos por pedido. Você repetiria as
informaçõ es do pedido em cada uma das linhas relativas a um
ú nico pedido — o que resultaria em um design ineficaz que
poderia resultar em dados imprecisos. O mesmo problema é
enfrentado quando se coloca o campo Có digo do Pedido na
Conceito um para muitos tabela Produtos — haveria mais de um registro na tabela
Produtos para cada produto. Como resolver esse problema?
Para representar uma relaçã o um-para-muitos em um A soluçã o é criar uma terceira tabela, em geral
design de banco de dados, tome a chave primá ria do lado denominada tabela de junçã o, que divide as diversas relaçõ es
"um" da relaçã o e adicione-a como coluna ou colunas muitos-paramuitos em duas relaçõ es um-para-muitos. Insira a
adicionais à tabela do lado "muitos" da relaçã o. Nesse caso, chave primá ria de cada uma das duas tabelas em uma terceira
por exemplo, a coluna Có digo do Fornecedor da tabela tabela. Consequentemente, a terceira tabela registra todas as
Fornecedores é adicionada à tabela Produtos. O SGBD pode, ocorrências ou instâ ncias da relaçã o.
em seguida, usar o nú mero do có digo do fornecedor da
tabela Produtos para localizar o fornecedor correto de todos
os produtos.
A coluna Có digo do Fornecedor da tabela Produtos é
denominada chave estrangeira. A chave estrangeira é uma
chave primá ria de outra tabela. A coluna Có digo do
Fornecedor da tabela Produtos é uma chave estrangeira
porque é também a chave primá ria da tabela Fornecedores.

Relacionamento muitos para muitos

Cada registro da tabela de Detalhes do Pedido representa


um item de linha do pedido. A chave primá ria da tabela
Detalhes do Pedido consiste em dois campos — as chaves
estrangeiras das tabelas Pedidos e Produtos. Usar somente o
campo Có digo do Pedido nã o funciona como chave primá ria
dessa tabela, porque um ú nico pedido pode conter vá rios itens
de linha. O Có digo do Pedido repete-se em cada item de linha
em um pedido, de modo que o campo nã o possa conter
Lista de itens e informaçõ es durante o processo de design valores ú nicos. Usar apenas o campo Có digo do Produto não
funciona também, porque um mesmo produto pode surgir em
As bases para a associaçã o de tabelas relacionadas são diversos pedidos diferentes. Em conjunto, porém, os dois
fornecidas pelo estabelecimento da uniã o de chaves campos podem sempre produzir um valor ú nico para cada
primá rias com chaves estrangeiras. Quando nã o se está certo registro.
sobre quais tabelas devem compartilhar uma coluna comum, No banco de dados de vendas de produto a tabela Pedidos
identificar uma relaçã o um-para-muitos assegura que as e a tabela Produtos nã o estã o relacionadas entre si de forma
duas tabelas envolvidas exigirã o verdadeiramente uma direta. Em vez disso, sã o relacionadas indiretamente através
coluna compartilhada. da tabela Detalhes do Pedido. A relaçã o muitos-para-muitos
entre pedidos e produtos é representada no banco de dados
Criando uma relação muitos-para-muitos por meio de duas relaçõ es um-para-muito:
Examine a relaçã o entre a tabela Produtos e a Tabela A tabela Pedidos e a tabela Detalhes tem uma relaçã o
Pedido. umpara-muitos. Todos os pedidos podem ter mais de um
Um ú nico pedido pode incluir mais de um produto. Por item de linha, porém todo item de linha é conectado a apenas
outro lado, um ú nico produto pode constar em vá rios pedidos. um pedido.
Assim, para todos os registros da tabela Pedidos pode haver A tabela Produtos e a tabela Pedidos tem uma relaçã o
vá rios registros na tabela Produtos. E para cada registro na umpara-muitos. Cada produto pode ter vá rios itens de linha
tabela Produtos pode haver registros na tabela Pedidos. Esse associados a ele, mas cada item de linha se refere a apenas
tipo de relaçã o é denominado relaçã o muitos-para-muitos um produto.
porque com relaçã o a todos os produtos pode haver vá rios Da tabela de Detalhes do Pedido, é possível determinar
pedidos, e para todos os pedidos pode haver vá rios produtos. todos os produtos em um pedido particular. É possível
também determinar que todos os pedidos de um produto Apó s ter as tabelas, campos e relaçõ es necessá rios, crie e
particular. preencha as tabelas com dados de exemplo e tente trabalhar
Apó s incorporar a tabela de Detalhes do Pedido, a lista de com as informaçõ es: criação de consultas, adiçã o de novos
tabelas e campos pode ter a seguinte aparência: registros, entre outros. Fazer isso ajuda a levantar os
problemas potenciais — por exemplo, pode ser necessá rio
adicionar uma coluna que se esqueceu de inserir durante a
fase de design, ou pode haver uma tabela que deva ser
dividida em duas tabelas para remover duplicaçã o.
Confirme se é possível usar o banco de dados para obter as
respostas desejadas. Crie rascunhos dos seus formulá rios e
relató rios, e veja se eles apresentam os dados esperados.
Procure por duplicaçõ es de dados desnecessá rias e, quando
encontrar alguma, altere o design para eliminá -la.
À medida que você faz experiências com o banco de dados
inicial, provavelmente descobrirá espaço para
melhoramentos. Seguem algumas coisas a serem verificadas:
- Você esqueceu alguma coluna? Se esqueceu, as
informaçõ es pertenciam a tabelas existentes? Se se trata de
informaçõ es sobre alguma outra coisa, será necessá rio criar
uma outra tabela. Crie uma coluna para cada item de
informação que necessita de controle. Se as informaçõ es não
podem ser calculadas a partir de outras colunas, é prová vel
que exijam uma outra coluna.
- Há alguma coluna desnecessá ria porque pode ser
calculada a partir de campos existentes? Se um item de
Lista de itens e informaçõ es durante o processo de design
informação puder ser calculado de outras colunas existentes
— um preço descontado calculado do preço de varejo, por
Criando uma relação um-para-um
exemplo — em geral é melhor fazer exatamente isso e evitar
Um outro tipo de relaçã o é a relaçã o um-para-um. Por
criar uma nova coluna.
exemplo, suponhamos que haja necessidade de registrar
- Informaçõ es duplicadas são repetidamente inseridas
algumas informaçõ es especiais e complementares de um
em uma das tabelas? Em caso afirmativo, talvez seja
produto, que serã o raramente usadas ou que se só aplicam a
necessá rio dividir a tabela em duas tabelas que tenham a
uns poucos produtos. Como essas informaçõ es nã o sã o
relaçã o umpara-muitos.
exigidas com frequência, e como armazenar informaçõ es na
- Existem tabelas com vá rios campos, um nú mero
tabela Produtos resultaria em espaço vazio para todos os
limitado de registros e vá rios campos vazios em registros
produtos aos quais elas nã o se aplicam, coloque essas
individuais? Se for o caso, pense em criar novamente a tabela
informaçõ es em uma tabela distinta. Assim como a tabela
de modo que passe a ter menos campos e mais registros.
Produtos, utilize o Có digoDoProduto como chave primá ria. A
- Todos os itens de informaçõ es foram quebrados em
relaçã o entre essa tabela complementar e a tabela Produto é
partes ú teis menores? Se for necessá rio criar relató rio,
uma relaçã o um-para-um. Para cada registro da tabela
classificar, pesquisar ou calcular um item de informaçã o,
Produto, existe apenas um registro correspondente na tabela
coloque esse item em sua pró pria coluna.
complementar. Quando essa relaçã o é identificada, ambas as
- Cada coluna contém um fato sobre o tó pico da
tabelas devem compartilhar um campo comum.
tabela? Quando uma coluna nã o contém informaçõ es sobre o
Quando a necessidade de uma relaçã o um-para-um é
tó pico da tabela é porque pertence a uma tabela diferente.
detectada no banco de dados, considere colocar as
- Todas as relaçõ es entre tabelas sã o representadas
informaçõ es das duas tabelas juntas em uma só tabela. Se
tanto por campos comuns como por uma terceira tabela? As
houver um motivo para nã o o fazer, talvez porque isso
relaçõ es um-para-um ou um-para-muitos requerem colunas
resulte em uma série de espaços vazios, a lista a seguir
comuns. As relaçõ es muitos-para-muitos requerem uma
mostra como representar a relaçã o no design:
terceira tabela.
Se as duas tabelas tiverem o mesmo tó pico, você poderá
provavelmente configurar a relação por meio da mesma
chave primá ria em ambas as tabelas. Refinando a tabela Produtos
Suponhamos que cada produto no banco de dados de
Se as duas tabelas tiverem tó picos diferentes com chaves
primá rias diversas, escolha uma das tabelas (qualquer uma) vendas de produto incida sobre uma categoria geral, como
bebidas, condimentos ou frutos do mar. A tabela Produtos
e insira a chave primá ria na outra tabela como chave
estrangeira. poderia incluir um campo que apresente a categoria de cada
produto.
A determinaçã o das relaçõ es entre tabelas ajuda a
Suponhamos que apó s examinar e refinar o design do
assegurar que se tenham as tabelas e colunas corretas.
Quando existe uma relaçã o um-para-um ou um-para-muitos, banco de dados você decida armazenar uma descrição de
categoria juntamente com o nome da categoria. Quando se
as tabelas envolvidas exigem o compartilhamento de uma
coluna ou colunas comuns. Quando existe uma relaçã o muitos- adiciona um campo Descriçã o de Categoria à tabela Produtos,
é preciso repetir todas as descriçõ es de categoria de cada
a-muitos, uma terceira tabela é necessá ria para representar a
relaçã o. produto que incida nessa categoria — o que nã o é uma boa
soluçã o.
Uma soluçã o mais adequada é transformar Categorias em
Refinar o design: Analisar o design com relação aos erros.
um tó pico novo para controle do banco de dados, com sua
Criar as tabelas e adicionar alguns novos registros de dados de
pró pria tabela e sua pró pria chave primá ria. Adicione entã o
exemplo. Observe se os resultados esperados das tabelas sã o
a chave primá ria da tabela Categorias à tabela Produtos
obtidos. Faça ajustes no design, conforme necessá rio.
como chave estrangeira.
As tabelas Categorias e Produtos têm uma relação nunca uma lista de valores. Por exemplo, nã o é possível ter um
umpara-muitos: uma categoria pode incluir mais de um campo denominado Preço, em que se insira mais de um Preço.
produto, porém um produto só pode pertencer a uma Quando se entende cada interseçã o de linhas e colunas como
categoria. uma célula, cada célula poderá manter apenas um valor.
No momento de examinar as estruturas da tabela, preste
atençã o a grupos repetidos. Por exemplo, considere uma Segunda forma normalizada
tabela contendo as seguintes colunas: A segunda forma normalizada requer que cada coluna
- Có digo do Produto nã ochave seja totalmente dependente de toda a chave
- Nome primá ria, nã o apenas de parte da chave. Essa regra aplica-se
- Có digo de Produto1 quando se tem uma chave primá ria que consiste em mais de
- Nome1 uma coluna. Por exemplo, supondo que haja uma tabela
- Có digo de Produto2 contendo as colunas a seguir, onde Có digo do Pedido e Có digo
- Nome2 do Produto formam a chave primá ria:
- Có digo de Produto3 - Có digo do Pedido (chave primá ria)
- Nome3 - Có digo de Produto (chave primá ria)
- Nome de Produto
Aqui, cada produto é um grupo separado de colunas que
diferem entre si apenas pela adiçã o de um algarismo ao final Esse design desrespeita a segunda forma normalizada,
do nome da coluna. Quando colunas numeradas dessa forma uma vez que o Nome do Produto é dependente do Có digo do
aparecerem, reexamine o design. Produto, mas nã o do Có digo do Pedido, portanto, nã o depende
de toda a chave primá ria. É preciso remover o Nome do
Esse tipo de design tem vá rias falhas. Com relaçã o aos Produto da tabela. Ele pertence a uma tabela diferente
iniciantes, força a colocaçã o de um limite superior no (Produtos).
nú mero de produtos. Tã o logo você exceda esse limite, será
preciso adicionar um novo grupo de colunas à estrutura da Terceira forma normalizada
tabela, o que é uma tarefa administrativa essencial. A terceira forma normalizada exige que nã o apenas todas
Um outro problema é que os fornecedores com nú mero as colunas nã o-chave sejam dependentes de toda a chave
de produtos inferior ao má ximo irã o desperdiçar espaço, primá ria, mas que as colunas nã o-chave sejam independentes
uma vez que as colunas adicionais estarã o vazias. A maior entre si.
falha com relaçã o a esse design é que isso torna vá rias Uma outra forma de dizer isso é que cada coluna nã o-
tarefas difíceis de desempenhar, como a classificaçã o ou chave seja dependente da chave primá ria e somente da chave
indexaçã o da tabela por có digo ou nome de produto. primá ria. Por exemplo, na hipó tese de haver uma tabela
Sempre que forem exibidos grupos repetidos, examine contendo as seguintes colunas:
detalhadamente o design, visando a dividir a tabela em dois. - Có digoDeProduto (chave primá ria)
No exemplo acima é melhor usar duas tabelas, uma para - Nome
fornecedores e uma para produtos, vinculadas por có digo de - SRP
fornecedor. - Desconto

Aplicar as regras de normalização: Aplicar as regras de Suponha que Desconto dependa do SRP (suggested retail
normalizaçã o de dados para examinar se as tabelas estã o price, preço a varejo sugerido). Essa tabela desrespeita a
corretamente estruturadas. Faça ajustes nas tabelas, terceira forma normalizada, porque uma coluna nã o chave,
conforme necessá rio. Desconto, depende de uma outra comuna nã o-chave, SRP. A
É possível aplicar as regras de normalizaçã o de dados independência da coluna significa que é possível alterar todas
(também chamadas simplesmente regras de normalizaçã o) as colunas nã o-chave sem afetar nenhuma outra coluna. Se
como pró xima etapa do design. Use essas regras para ver se você alterar um valor do campo SRP, Desconto seria
as tabelas estã o corretamente estruturadas. O processo de pertinentemente alterada, o que infringiria a regra. Nesse
aplicaçã o de regras ao design do banco de dados é caso, Desconto seria movida para uma outra tabela chaveada
denominado normalizaçã o de banco de dados, ou apenas em SRP.
normalizaçã o.
A normalização é muito mais ú til apó s a representaçã o de Hibernate33
todos os itens de informaçõ es e da obtençã o de um design
preliminar. A ideia é ajudar a assegurar que você distribua os O Hibernate é o framework que fornece ferramentas para
itens de informaçõ es pelas tabelas corretas. O que a o mapeamento relacional de objeto (ORM).
normalizaçã o nã o pode fazer é assegurar que se tenham Este tutorial demonstra o suporte para o framework do
todos os itens de dados corretos de início. Hibernate no IDE Eclipse e como criar os arquivos necessá rios
Aplique as regras em sequência, assegurando a cada do Hibernate. Depois de criar objetos Java e configurar a
etapa que o seu design chegue ao que é conhecido como aplicaçã o usar o Hibernate, você cria uma classe de teste para
"formas normalizadas". Cinco formas normalizadas sã o a inclusã o e exibição dos dados existentes no Banco de Dados.
amplamente aceitas — da primeira forma normalizada à
quinta forma normalizada. Este artigo se expande nas três NHibernate34
primeiras, porque elas são tudo o que se exige para a maior
parte dos bancos de dados. O Hibernate é um framework para o mapeamento
objetorelacional escrito na linguagem Java, mas também é
disponível em .Net como o nome NHibernate. Este programa

Primeira forma normalizada


33 Fonte: http://www.feltex.com.br/felix/tutorial-de-hibernate/
A primeira forma normalizada declara que a cada 34 Font
interseçã o de linha e coluna da tabela existe um valor ú nico e http://www.inf.ufsc.br/~frank/INE5612/Seminario2010.1/Hibernate.pdf
facilita o mapeamento dos atributos entre uma base relacional (presente na maioria dos SGDBs). Em especial, no
tradicional de dados relacionais e o modelo objeto de uma desenvolvimento de consultas e atualizaçõ es dos dados.
aplicaçã o, mediante o uso de arquivos (XML) para estabelecer Sua principal característica é a transformaçã o das classes
esta relaçã o. em Java para tabelas de dados (e dos tipos de dados para os
da SQL).
Hibernate é um software livre de có digo aberto O Hibernate gera as chamadas SQL e libera o libera o
desenvolvedor do trabalho manual da conversã o dos dados
OBJETIVOS resultante, mantendo o programa portá vel para quaisquer
- DIMINUIR COMPLEXIDADE ENTRE PROGRAMAS bancos de dados SQL, porém causando um pequeno dados
- LIBERA O DESENVOLVEDOR DO TRABALHO MANUAL SQL aumento no tempo de execuçã o.
DA CONVERSÃ O DOS DADOS Nas questõ es relacionadas para o gerenciamento de
transaçõ es e na tecnologia de acesso à base de dados acesso à
RESULTANTES base de dados sã o de responsabilidade de outros elementos
- MANTER O PROGRAMA PORTÁ VEL PARA QUAISQUER na infraestrutura do elementos na infraestrutura programa.
BANCOS DE DADOS SQL Apesar de existirem API no Hibernate para possuir operaçõ es
- UNIR OBJETOS AOS BANCOS DE DADOS RELACIONAIS de controle transacional, ele simplesmente delegará estas
- REDUZIR O TEMPO DE DESENVOLVIMENTO GASTO funçõ es para a infraestrutura na qual foi instalada (Servidor
COM de Aplicaçã o) (Servidor de Aplicaçã o) (Servidor de Aplicaçã o).
MANIPULAÇÃ O DE DADOS Mas o framework nã o é uma boa opção para framework
nã o é uma boa opçã o para todos os tipos de aplicaçã o.
LINGUAGEM UTILIZADA Sistemas que todos os tipos de aplicaçã o fazem uso extensivo
de stored procedures, triggers ou que implementam a maior
parte implementam a maior parte da ló gica da aplicação no
A HQL (Hibernate Query Language) é um dialeto SQL
banco de dados, contando com um modelo de objetos “pobre”
para o Hibernate. Ela é uma poderosa linguagem de consulta
nã o vai se beneficiar com o uso do Hibernate. Ele é mais
que se parece muito com a SQL, mas a HQL é totalmente
indicado para sistemas que contam com um modelo rico, onde
orientada a objeto, incluindo os paradigmas de herança,
a maior parte da a maior parte da ló gica de negó cios fica na
polimorfismo e encapsulamento.
pró pria aplicação, dependendo pouco de funçõ es específicas
No Hibernate, você pode escolher tanto usar a SQL
do banco de dados
quanto a HQL. Escolhendo a HQL, você poderá executar os
pedidos SQL sobre as classes de persistência do Java ao invés
de tabelas no banco de dados, aumentando, assim, a O Fluent NHibernate é uma biblioteca para auxilia na
distâ ncia entre o desenvolvimento da regras de negó cio e o realização dos mapeamentos das suas entidades com o banco
banco de dados. de dados. Por padrã o o NHibernate usa arquivos xml (.hbm)
para realizar esse mapeamento, porém criar esses arquivos
manualmente gera um bom trabalho, para isso foi criada o
Fluent NHibernate que podemos realizar esse mapeamento

HQL permite representar consultas em termos orientado a


objetos, usando objetos e suas propriedades.
Consultas em HQL permite retornar objetos. Pode -se
assim fazer uma pesquisa que retorne tuplas em forma de
objeto que está pronto para ser acessado, operado e
manipulado. Isto elimina a tarefa de ter que instanciar
objetos a partir do zero com o resultado de uma consulta
SQL.
HQL suporta consultas polimó rficas, ou seja, juntamente
com o objeto retornado em uma pesquisa, todos seus filhos
(objetos de subclasses) também sã o retornados.
É fá cil de aprender e implementar, pois sua sintaxe e as
características sã o muito semelhantes ao SQL
O objetivo do Hibernate é diminuir a complexidade entre
os programas, baseado no modelo orientado a objeto, que
precisam trabalhar com um banco de dados do modelo
pelo pró prio có digo sem precisar de usar os arquivos HBM. 35 A pesquisa SELECT * FROM T terá como resultado todos
os elementos de todas as linhas da tabela chamada T.
Veja abaixo a diferença entre criar um mapeamento XML e Partindo da mesma tabela T, a pesquisa SELECT C1 FROM T
um mapeamento usando o Fluent terá como resultado todos os elementos da coluna C1 da
tabela T. O resultado da pesquisa SELECT * FROM T WHERE
XML C1=1 será todos os elementos de todas as linhas onde o valor
de coluna
C1 é '1'.

Fluent

Palavras-chave em SQL

DML - Linguagem de Manipulação de Dados


O primeiro grupo é a DML (Data Manipulation Language -
Linguagem de manipulaçã o de dados). DML é um
subconjunto da linguagem da SQL que é utilizado para
realizar inclusõ es, consultas, alteraçõ es e exclusõ es de dados
presentes em registros. Estas tarefas podem ser executadas
NOÇÕES SOBRE SQL36 em vá rios registros de diversas tabelas ao mesmo tempo, os
comandos que realizam respectivamente as funçõ es acima
Structured Query Language, ou Linguagem de Consulta referidas sã o Insert, Select, Update e Delete.
Estruturada ou SQL, é uma linguagem de pesquisa - INSERT é usada para inserir um registro
declarativa para banco de dados relacional (base de dados (formalmente uma tupla) a uma tabela existente.
relacional). Muitas das características originais do SQL foram Ex: Insert into Pessoa (id, nome, sexo) value;
inspiradas na á lgebra relacional. - SELECT – O Select é o principal comando usado em
A linguagem é um grande padrã o de banco de dados. Isto SQL para realizar consultas a dados pertencentes a uma
decorre da sua simplicidade e facilidade de uso. Ela se tabela.
diferencia de outras linguagens de consulta a banco de dados - UPDATE para mudar os valores de dados em uma ou
no sentido em que uma consulta SQL especifica a forma do mais linhas da tabela existente.
resultado e nã o o caminho para chegar a ele. Ela é uma - DELETE permite remover linhas existentes de uma
linguagem declarativa em oposiçã o a outras linguagens tabela.
procedurais. Isto reduz o ciclo de aprendizado daqueles que É possível inserir dados na tabela AREA usando o INSERT
se iniciam na linguagem. INTO:
Embora o SQL tenha sido originalmente criado pela IBM, Insert into AREA (arecod, aredes) values (100,
rapidamente surgiram vá rios "dialetos" desenvolvidos por "Informá tica"), (200, "Turismo"), (300, "Higiene e Beleza");*
outros produtores. Essa expansão levou à necessidade de ser DDL - Linguagem de Definição de Dados
criado e adaptado um padrã o para a linguagem. Esta tarefa O segundo grupo é a DDL (Data Definition Language -
foi realizada pela American National Standards Institute Linguagem de Definiçã o de Dados). Uma DDL permite ao
(ANSI) em 1986 e ISO em 1987. utilizador definir tabelas novas e elementos associados. A
Embora padronizado pela ANSI e ISO, possui muitas maioria dos bancos de dados de SQL comerciais tem extensõ es
variaçõ es e extensõ es produzidos pelos diferentes proprietá rias no DDL.
fabricantes de sistemas gerenciadores de bases de dados. Os comandos bá sicos da DDL são poucos:
Tipicamente a linguagem pode ser migrada de plataforma - CREATE: cria um objeto (uma Tabela, por exemplo)
para plataforma sem mudanças estruturais principais. dentro da base de dados.
Outra aproximaçã o é permitir para có digo de idioma - DROP: apaga um objeto do banco de dados.
procedural ser embutido e interagir com o banco de dados. Alguns sistemas de banco de dados usam o comando
Por exemplo, o Oracle e outros incluem Java na base de ALTER, que permite ao usuá rio alterar um objeto, por
dados, enquanto o PostgreSQL permite que funçõ es sejam exemplo, adicionando uma coluna a uma tabela existente.
escritas em Perl, Tcl, ou C, entre outras linguagens. Outros comandos DDL: CREATE
Exemplo TABLE
CREATE INDEX
35 Fonte: http://www.leandroprado.com.br/2012/01/mapeamentos-com-
fluentnhibernate/
CREATE VIEW
36 Fonte: http://www.pedrofcarvalho.com.br/basico.pdf ALTER TABLE
ALTER INDEX O SQL possui operadores relacionais, que sã o usados para
DROP INDEX realizar comparaçõ es entre valores, em estruturas de
DROP VIEW controle.
Eles sã o:
DCL - Linguagem de Controle de Dados
O terceiro grupo é o DCL (Data Control Language -
Linguagem de Controle de Dados). DCL controla os aspectos
de autorizaçã o de dados e licenças de usuá rios para controlar
quem tem acesso para ver ou manipular dados dentro do
banco de dados.
Duas palavras-chaves da DCL:
- GRANT - autoriza ao usuá rio executar ou setar
operaçõ es.
- REVOKE - remove ou restringe a capacidade de um
usuá rio de executar operaçõ es.

DTL - Linguagem de Transação de Dados


- BEGIN WORK (ou START TRANSACTION,
dependendo do dialeto SQL) pode ser usado para marcar o - BETWEEN – Utilizado para especificar um intervalo
começo de uma transaçã o de banco de dados que pode ser de valores.
completada ou nã o. - LIKE – Utilizado na comparaçã o de um modelo e para
- COMMIT envia todos os dados especificar registros de um banco de dados. "Like" +
das mudanças permanentemente. extensã o % significa buscar todos resultados com o
- ROLLBACK faz com que as mudanças nos dados mesmo início da extensã o.
existentes desde o ú ltimo COMMIT ou ROLLBACK sejam - IN - Utilizado para verificar se o valor procurado está
descartadas. dentro de uma lista. Ex.: valor IN (1,2,3,4).
COMMIT e ROLLBACK interagem com á reas de controle Funções de Agregação
como transaçã o e locaçã o. Ambos terminam qualquer As funçõ es de soma se usam dentro de uma clá usula
transaçã o aberta e liberam qualquer cadeado ligado a dados. SELECT em grupos de registros para devolver um ú nico
Na ausência de um BEGIN WORK ou uma declaraçã o valor que se aplica a um grupo de registros.
semelhante, a semâ ntica de SQL é dependente da - AVG – Utilizada para calcular a média dos valores de
implementaçã o. um campo determinado.
- COUNT – Utilizada para devolver o nú mero de
DQL - Linguagem de Consulta de Dados registros da seleção.
Embora tenha apenas um comando, a DQL é a parte da SQL - SUM – Utilizada para devolver a soma de todos os
mais utilizada. O comando SELECT permite ao usuá rio valores de um campo determinado.
especificar uma consulta ("query") como uma descriçã o do - MAX – Utilizada para devolver o valor mais alto de
resultado desejado. Esse comando é composto de vá rias um campo especificado.
clá usulas e opçõ es, possibilitando elaborar consultas das mais - MIN – Utilizada para devolver o valor mais baixo de
simples às mais elaboradas. um campo especificado.
Sistemas de Banco de Dados que usam SQL
Cláusulas - Apache Derby
As clá usulas sã o condiçõ es de modificaçã o utilizadas para - Caché
definir os dados que deseja selecionar ou modificar em uma - DB2
consulta.
- Firebird
- FROM - Utilizada para especificar a tabela que se vai
- HSQLDB (banco de dados implementado em Java)
selecionar os registros.
- IDMS (banco de dados hierá rquico)
- WHERE – Utilizada para especificar as condiçõ es que
- IMS (banco de dados hierá rquico)
devem reunir os registros que serã o selecionados.
- Informix
- GROUP BY – Utilizada para separar os registros
- Ingres
selecionados em grupos específicos.
- InterBase
- HAVING – Utilizada para expressar a condiçã o que
- Microsoft Access
deve satisfazer cada grupo.
- Microsoft SQL Server
- ORDER BY – Utilizada para ordenar os registros
- MySQL
selecionados com uma ordem especifica.
- Oracle
- DISTINCT – Utilizada para selecionar dados sem
- PointBase Micro (banco de dados
repetiçã o.
relacional implementado em Java)
- PostgreSQL
Operadores Lógicos
- SQLite
- AND – E ló gico. Avalia as condiçõ es e devolve um
- LiteBase Mobile (dedicado à plataformas mó veis
valor verdadeiro caso ambos sejam corretos.
como:
- OR – OU ló gico. Avalia as condiçõ es e devolve um
Palm OS, Pocket PC, WinCE, Symbian)
valor verdadeiro se algum for correto.
- Sybase Adaptive Server Enterprise
- NOT – Negaçã o ló gica. Devolve o valor contrá rio da
- Teradata (primeiro RDBMS com arquitetura paralela
expressã o.
do mercado)
Gerenciando Tabelas: DDL - DATA DEFINITION
Operadores relacionais
LANGUAGE
Criando uma tabela: Gerenciando Índices: DDL - DATA DEFINITION
CREATE TABLE CLIENTES LANGUAGE
(ID VARCHAR(4) NOT NULL,
NOME VARCHAR(30) NOT NULL, CREATE INDEX EMPREGADOS_IDX ON
PAGAMENTO DECIMAL(4,2) NOT NULL); EMPREGADOS(NOME);
Deletando uma tabela:
DROP TABLE CLIENTES; CREATE UNIQUE INDEX EMPREGADOS_IDX ON
Alterando uma tabela, adicionando uma nova coluna: EMPREGADOS(NOME);
ALTER TABLE CLIENTES ADD COLUMN (TELEFONE
VARCHAR(10) NOT NULL); CREATE INDEX EMPREGADOS_IDX ON
Alterando uma tabela, modificando uma coluna: EMPREGADOS(NOME, PAGAMENTO);
ALTER TABLE CLIENTES MODIFY COLUMN
(TELEFONE VARCHAR(12)); DROP INDEX EMPREGADOS IDX;
Apagando os dados de uma tabela, retornando-a ao estado
de origem: Gerenciando Visões (views): DDL - DATA DEFINITION
TRUNCATE TABLE CLIENTES; LANGUAGE
Manipulando Dados: DML - DATA MANIPULATION
LANGUAGE CREATE VIEW MAIOR_PAGAMENTO_EMPREGADOS
Inserindo dados: AS
INSERT INTO EMPREGADOS VALUES ('1111', 'Joã o SELECT FROM EMPREGADOS
da Silva', 100.50); WHERE PAGAMENTO > 150;
Alterando dados:
UPDATE EMPREGADOS SET PAGAMENTO = 120 CREATE VIEW NOMES AS
WHERE ID = '1111'; SELECT NOME FROM EMPREGADOS;
Deletando dados:
DELETE FROM EMPREGADOS WHERE ID = '1111'; DROP VIEW NOMES;

COMMIT; Funções de Agregação:


ROLLBACK;
SAVEPOINT S1; COUNT - Retorna o nú mero de linhas
ROLLBACK TO S1;
SUM - Retorna a soma de uma coluna específica
AVG - Retorna o valor médio de uma coluna
Selecionando Dados: DQL - DATA QUERY LANGUAGE específica
MAX - Retorna o valor máximo de uma coluna
SELECT column1, column2, ... específica
FROM table1, table2, ... MIN - Retorna o valor mínimo de uma coluna
[ WHERE column1 = 'value1' específica
AND column2 = 'value2'
OR (column1 = 'value3' Exemplos:
AND column2 = 'value4')] SELECT AVG(PAGAMENTO) FROM EMPREGADOS;
[GROUP BY column1, column2, ...]
[HAVING function = 'value']
SELECT COUNT(*) FROM EMPREGADOS;
[ORDER BY column1, column2, ...];
Operadores Ló gicos:
SELECT COUNT(*) FROM EMPREGADOS;
SELECT CIDADE, AVG(PAGAMENTO) FROM
IS NULL
EMPREGADOS
BETWEEN
GROUP BY CIDADE
IN
HAVING AVG(PAGAMENTO) > 100;
LIKE
EXISTS
SELECT E.NOME, PE.PAGAMENTO
UNIQUE
FROM EMPREGADOS E, PAGAMENTO_EMPREGADOS
ALL and ANY
PE
Exemplos:
WHERE E.EID = PE.EID;
SELECT * FROM EMPREGADOS
WHERE PAGAMENTO BETWEEN 100 AND 150;
SELECT ID, NOME FROM EMPREGADOS
WHERE PAGAMENTO > (SELECT AVG(PAGAMENTO) SELECT NOME, PAGAMENTO
FROM EMPREGADOS); FROM EMPREGADOS
WHERE EID IN ('1111', '2222', '3333');
Controlando o Acesso aos Dados: DCL - DATA
CONTROL LANGUAGE
Negando Condições com o Operador NOT:
NOT EQUAL
GRANT SELECT, INSERT, UPDATE, DELETE ON
NOT BETWEEN
EMPREGADOS TD USER12;
NOT IN
REVOKE DELETE ON EMPREGADOS FROM USER12;
NOT LIKE
NOT EXISTS
NOT UNIQUE Exemplo: DECLARE @Contador int;
Quando uma variá vel é primeiramente declarada, seu
Exemplos: valor é definido como NULL.
SELECT * FROM EMPREGADOS Para atribuir um valor à uma variá vel, use a instruçã o SET.
WHERE PAGAMENTO NOT BETWEEN 100 AND 150; Este é o método preferido de atribuir um valor a uma
variá vel. Uma variá vel também pode ter um valor atribuído
SELECT NOME, PAGAMENTO sendo referenciado na lista selecionada de uma instrução
FROM EMPREGADOS SELECT.
WHERE EID NOT IN ('1111', '2222', '3333');
O comando GO sinaliza o final de um lote de instruçõ es
SELECT NOME FROM EMPREGADOS Transact-SQL para os utilitá rios do SQL Server. Sintaxe: GO
WHERE NOME NOT LIKE 'S%'; [contador] Onde:
Contador - É um nú mero inteiro positivo. O lote que
A seguir um resumo dos principais comandos e recursos precede GO será executado pelo nú mero de vezes
da linguagem T-SQL. especificado.
Variáveis GO nã o é uma instruçã o Transact-SQL; é um comando
reconhecido pelos utilitá rios sqlcmd e osql e pelo Editor de
A T-SQL suporta variá veis e você pode usá -las para có digos SQL Server Management Studio.
armazenar valores. GO é um comando de utilitá rio que nã o exige nenhuma
permissã o. Pode ser executado por qualquer usuá rio.
--Sintaxe: Uma instrução Transact-SQL nã o pode ocupar a mesma
linha que um comando GO.
---declaraçã o
DECLARE @variable data-type
---Atribuiçã o IF...ELSE é um controle condicional de fluxo bá sico usado
na T-SQL.
SET @variavel='valor'
Impõ e condiçõ es na execução de uma instrução
---Retornar valor
TransactSQL. A instruçã o que segue uma palavra-chave IF e
SELECT @variavel
sua condiçã o será executada se a condiçã o for satisfeita: a
---Exemplo
expressão Booleana retorna TRUE.
DECLARE @MeuNome varchar(20)
A palavra-chave opcional ELSE introduz outra instruçã o
SET @MeuNome='Macoratti'
que será executada quando a condiçã o IF nã o for satisfeita: a
SELECT @MeuNome
expressão Booleana retorna FALSE.
Sintaxe:
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]

Uma variá vel local Transact-SQL é um objeto que pode


conter um valor de dados de um tipo específico. As variá veis
em lotes e scripts sã o normalmente usadas:
Como um contador, para contar o nú mero de vezes que um
loop é executado ou controlar quantas vezes o loop é Uma construção IF...ELSE pode ser usada em lotes, em
executado; procedimentos armazenados e em consultas ad hoc. Quando
Para reter um valor de dados a ser testado por uma essa construçã o é usada em um procedimento armazenado,
instruçã o de controle de fluxo; ela normalmente é usada para testar a existência de algum
Para salvar um valor de dados a ser retornado por um parâ metro.
có digo de retorno de procedimento armazenado ou valor de
retorno de funçã o; BEGIN...END engloba uma série de instruçõ es
Uma instrução DECLARE inicializa uma variá vel TransactSQL de modo que um grupo de instruçõ es possa ser
TransactSQL por: executado.
Atribuiçã o de um nome. (O nome deve ter uma ú nica @ BEGIN e END sã o palavras-chave da linguagem de controle
como o primeiro caractere.) de fluxo.
Atribuiçã o de um tipo de dados fornecido por sistema ou Sintaxe:
definido pelo usuá rio e um tamanho. Para variá veis BEGIN
numéricas, precisã o e escala também são atribuídas. Para {
variá veis do tipo XML, uma coleçã o de esquema opcional sql_statement | statement_block
pode ser atribuída. }
Definiçã o do valor como NULL; END
Os blocos BEGIN...END podem ser aninhados.
Embora todas as instruçõ es Transact-SQL sejam vá lidas
em um bloco BEGIN...END, certas instruçõ es nã o devem ser
agrupadas no mesmo lote ou bloco de instrução. 2- Loop WHILE usando BREAK

A instrução WHILE repete uma instruçã o ou bloco de


instruçõ es desde que a condiçã o especificada permaneça
verdadeira.
Ela define uma condiçã o para a execuçã o repetida de uma
instruçã o ou um bloco de instruçõ es SQL. As instruçõ es serã o
executadas repetidamente desde que a condiçã o especificada
seja verdadeira.
A execuçã o de instruçõ es no loop WHILE pode ser
controlada internamente ao loop com as palavraschave
BREAK e CONTINUE.
WHILE Boolean_expression
{ sql_statement | statement_block |
BREAK | CONTINUE }

- Argumentos
Boolean_expression
É uma expressã o que retorna TRUE ou FALSE. Se a
expressã o booleana contiver uma instruçã o SELECT, a
instruçã o SELECT deverá ser incluída entre parênteses.
{sql_statement | statement_block}
É qualquer instruçã o Transact-SQL ou agrupamento de 3- Loop WHILE usando BREAK e CONTINUE
instruçõ es, conforme definido com um bloco de instruçõ es.
Para definir um bloco de instruçõ es, use as palavras-chave
BEGIN e END de controle de fluxo.
BREAK
Provoca uma saída do loop WHILE mais interno. Todas as
instruçõ es que apareçam depois da palavra-chave END, que
marca o final do loop, serã o executadas.
CONTINUE
Faz com que o loop WHILE seja reiniciado, ignorando
todas as instruçõ es depois da palavra-chave CONTINUE

Se dois ou mais loops WHILE estiverem aninhados, o


BREAK interno será encerrado para o pró ximo loop mais
externo. Todas as instruçõ es apó s o fim da primeira execuçã o
do loop interno e o loop mais externo seguinte serã o
reiniciadas.
Exemplos:

Dessa forma um programa poderá executar uma


instrução BREAK se, por exemplo, nã o houver outras linhas a
serem processadas. Uma restriçã o CONTINUE pode ser
1- Loop WHILE executada se, por exemplo, for necessá rio prosseguir com a
execuçã o do có digo.

A expressão CASE é usada para avaliar vá rias condiçõ es e


retornar um valor ú nico para cada condiçã o. Por exemplo, ela
permite mostrar um valor alternativo a ser exibido Transact-SQL explícita ou implícita iniciada em uma sessã o
dependendo do valor de uma coluna. Essa alteraçã o nos dados MARS se torna uma transaçã o de escopo de lote. Uma
é temporá ria. Portanto, nã o há nenhuma alteraçã o transaçã o de escopo de lote nã o confirmada ou revertida,
permanente nos dados. quando um lote é concluído, é revertida automaticamente
A expressão CASE consiste em: pelo SQL Server
A palavra-chave CASE. A característica de uma transaçã o e sua diferença para
O nome da coluna a ser transformada. uma execuçã o em lote é que ela pode desfazer todas as
As clá usulas WHEN que especificam as expressõ es a serem operaçõ es realizada desde o início da transaçã o usando a
pesquisadas e as clá usulasTHEN que especificam as instruçãoROLLBACK TRANSACTION.
expressõ es pelas quais substituí-las. Para indicar o início de uma transação usamos a instruçã o
Uma cláusula ELSE opcional que define a expressã o BEGIN TRANSACTION OU BEGIN TRAN
retornada, se nenhuma operaçã o de comparaçã o for avaliada Esta instruçã o marca o ponto inicial de uma transaçã o
como TRUE. local explícita. BEGIN TRANSACTION incrementa
A palavra-chave END. @@TRANCOUNT em 1.
Uma cláusula AS opcional que define um alias para a Para confirmar a execuçã o das operaçõ es realizadas na
expressã o CASE. transaçã o usamos a instruçã o COMMIT TRANSACTION OU
Um uso comum da expressã o CASE é substituir có digos ou COMMIT TRAN
abreviaçõ es por valores mais legíveis Exemplo: Esta instrução marca o término de uma transação
O exemplo seguinte usa a função CASE para alterar a implícita ou explícita que teve êxito. Se@@TRANCOUNT for
exibição de categorias dos produtos para torná -las mais igual a 1, COMMIT TRANSACTION transformará todas as
compreensíveis. modificaçõ es de dados executadas desde o início da
transaçã o em parte permanente do banco de dados, liberará
os recursos ocupados pela transaçã o e decrementará
@@TRANCOUNT para 0. Se@@TRANCOUNT for maior que
1, COMMIT TRANSACTION decrementará @@TRANCOUNT
apenas de 1 e a transaçã o continuará ativa.
Exemplo:

A expressão CASE tem dois formatos:


A expressão CASE simples compara uma expressã o com
um conjunto de expressõ es simples para determinar o
resultado.
O exemplo acima abre o banco de dados Agenda e inicia
A expressão CASE pesquisada avalia um conjunto de
uma transaçã o -BEGIN TRAN
expressõ es booleanas para determinar o resultado.
A seguir atualiza a coluna nome para 'Macorati' quando o
Os dois formatos dã o suporte a um argumento ELSE
Id for igual a 1
opcional.
Depois atualiza a coluna para 'Jose Carlos Macoratti'
CASE pode ser usada em qualquer instruçã o ou clá usula
quando o Id for igual a 1
que permita uma expressão vá lida.(Select,Update,Delete,etc.)
Ao final confirmamos as operaçõ es e encerramos a
transaçã o atualizando o banco de dados comCOMMIT TRAN
Uma transação (Transaction) é uma ú nica unidade de
trabalho. Se uma transaçã o tiver êxito, todas as modificaçõ es
Para desfazer as operaçõ es realizadas desde o início da
de dados feitas durante a transaçã o estarã o confirmadas e se
transaçã o usamos a instruçã o ROLLBACK TRANSACTION OU
tornarã o parte permanente do banco de dados. Se uma
ROLLBACK TRAN.
transaçã o encontrar erros e precisar ser cancelada ou
Esta instrução reverte uma transaçã o explícita ou
revertida, todas as modificaçõ es de dados serã o apagadas.
implícita ao começo da transação ou a um ponto de
SQL Server opera nos modos de transaçã o a seguir.
salvamento dentro da transaçã o. Você pode usar ROLLBACK
Transaçõ es de confirmação automá tica : Cada instrução
TRANSACTION para apagar todas as modificaçõ es de dados
individual é uma transação.
feitas desde o começo da transaçã o ou até um ponto de
Transaçõ es explícitas : Cada transação é iniciada
salvamento. Ela também libera recursos mantidos pela
explicitamente com a instruçã o BEGIN TRANSACTION e
transaçã o.
finalizada explicitamente com uma instruçã o COMMIT ou
ROLLBACK.
Transaçõ es implícitas : Uma transaçã o nova é iniciada
implicitamente quando a transaçã o anterior é concluída, mas
cada transação é explicitamente concluída com uma instruçã o
COMMIT ou ROLLBACK.
Transaçõ es de escopo de lote : Aplicá vel apenas a MARS
(Conjuntos de Resultados Ativos Mú ltiplos), uma transaçã o
Retornar um valor de status a um procedimento de
chamada ou lote para indicar êxito ou falha (e o motivo da
Exemplo: falha).
Quando um procedimento é executado pela primeira vez,
ele é compilado para determinar um plano de acesso ideal
para recuperar os dados. As execuçõ es subsequentes do
procedimento poderã o reutilizar o plano já gerado se ele
ainda estiver no cache de planos do Mecanismo de Banco de
Dados.
Um ou mais procedimentos podem ser executados
automaticamente quando o SQL Server é iniciado. Os
procedimentos devem ser criados pelo administrador do
sistema no banco de dados mestre e executados com função
de servidor sysadmin como um processo de segundo plano.
A instruçã o CREATE PROCEDURE nã o pode ser combinada
com outras instruçõ es Transact-SQL em um ú nico lote.
Exemplo:
A seguir temos um exemplo de como criar stored
Suponha que, por qualquer motivo, a segunda instruçã o de procedures ou procedimentos armazenados no SQL Server
atualizaçã o deve atualizar exatamente cinco linhas. usando o banco de dados Clientes.mdf e a tabela Contatos.
Se @@ROWCOUNT, que controla o nú mero de linhas Abra o DataBase Explorer e apó s expandir os objetos do
afetadas por cada instrução, for igual a cinco, a transaçã o será banco de dados Clientes.mdf clique com o botã o direito do
confirmada caso contrá rio ele será cancelada. mouse sobre o objeto Stored Procedures e selecione a
A declaraçã o ROLLBACK TRAN "desfaz" todo o trabalho opçã o Add New Stored Procedure;
desde a correspondente instruçã oBEGIN TRAN. Ela nã o vai
executar qualquer instruçã o de atualizaçã o.
Note que o Query Analyzer irá mostrar-lhe mensagens
indicando que linhas foram atualizadas, mas você pode
consultar o banco de dados para verificar se as modificaçõ es
realmente ocorreram.
Uma instrução ROLLBACK TRANSACTION nã o produz
nenhuma mensagem para o usuá rio. Se forem necessá rios
avisos em procedimentos armazenados ou Triggers, use as
instruçõ esRAISERROR ou PRINT. RAISERROR é a instruçã o
preferida para indicar erros.
Instruçõ es ROLLBACK TRANSACTION em procedimentos
armazenados nã o afetam instruçõ es subsequentes no lote que
chamou o procedimento; instruçõ es subsequentes no lote sã o
executadas. No editor do SQL Server vamos criar a stored procedure
exibeContatos que irá retornar todos os contatos
Instruçõ es ROLLBACK TRANSACTION em
Triggers finalizam o lote contendo a instruçã o que cadastrados na tabela Contatos.
ativou o trigger; instruçõ es subsequentes no lote sã o
executadas.

Procedimento armazenado ou Stored Procedure é uma


coleção de comandos SQL executados contra um banco de
dados que encapsula tarefas repetitivas, aceita parâ metros de Digite o comando conforme acima e clique no botã o Save
entrada e retorna um valor de status (para indicar aceitaçã o para salvar a stored procedure no banco de dados;
ou falha na execuçã o). A instrução SQL usada é: SELECT * from Contatos
O procedimento armazenado pode reduzir o trá fego na
rede, visto que os comandos são executados diretamente no Repita o procedimento agora para criar a stored
servidor. Além de melhorar a performance, criar mecanismos procedure SelecionaContatosPorIdade onde iremos retornar
de segurança entre a manipulação dos dados do Banco de todos os contatos com idade superior a uma idade definida.
Dados.
Para criar uma Stored Procedure usamos a instruçã o :
CREATE PROCEDURE que cria um procedimento armazenado
Transact-SQL ou CLR (Common Language Runtime) no SQL
Server.
Assim Procedimentos armazenados são semelhantes a
Observe que criarmos o parâ metro idade do tipo int para
procedimentos em outras linguagens de programaçã o no
ser usado na clá usula WHERE.
sentido de que podem:
O comando SQL usado é:
Aceitar parâ metros de entrada e retornar vá rios valores
SELECT * from Contatos WHERE idade > @ idade
no formulá rio de parâ metros de saída para o procedimento de
chamada ou lote.
Novamente repita o processo para criar a stored
Conter instruçõ es de programaçã o que executam
procedure selecionaContatosPorCidade que irá retornar os
operaçõ es no banco de dados, inclusive chamar outros
contados para uma determinada cidade;
procedimentos.
O que são metadados37
A grande maioria dos usuá rios da Tecnologia da
Informaçã o já utilizou algum tipo de metadados, mesmo nã o
tendo conhecimento do seu significado e até mesmo do seu
uso. Isto é normal, até porque a sua pró pria definição nã o é
Observe que criarmos o parâ metro cidade do tipo varchar
um consenso.
para ser usado na cláusula WHERE.
Na literatura sobre metadados, a definição mais
O comando SQL usado é:
encontrada é a de que eles representam "dados sobre dados".
SELECT * from Contatos WHERE cidade = @ cidade
Metadado é uma abstraçã o do dado, capaz, por exemplo,
Ao final teremos as stored procedures criadas no banco de
de indicar se uma determinada base de dados existe, quais sã o
dados e prontas para uso conforme a figura abaixo:
os atributos de uma tabela e suas características, tais como:
tamanho e/ou formato [4]
Tabela 1: Nível de Gerenciamento do Conhecimento

Estas diferentes interpretaçõ es fazem parte de uma


hierarquia evolucioná ria da gestã o de conhecimento que está
ilustrado pela figura 1. As organizaçõ es que estã o no mais
baixo nível, apenas gerenciam dados brutos. As mais evoluídas
sã o capazes de administrar seus recursos de informaçã o em
nível de informaçã o, conhecimento ou sabedoria.
Desta forma, pode-se afirmar que o Metadado é o principal
componente dentro de um Ambiente de Data Warehouse.

Categorias básicas
Assim como a grande variedade de conceitos que se tem
em relaçã o a metadados, a sua taxonomia nã o poderia ser
diferente. A forma mais evidente, mas nã o deixando de ser
uma visão simplista, é que se pode dividir os metadados em
duas categorias básicas: metadados técnico e metadados de
negó cios.
Metadados técnicos: descriçã o dos dados necessá rios
para as diversas ferramentas que precisem armazenar,
manipular ou movimentar dados. Essa ferramenta pode se
tratar de um banco de dados relacional, ferramentas
Recurso a ser Definiçã o de
Está gio Computer Aided Sotfware Engineering (CASE), ferramentas
administrado Metadado de pesquisa em banco de dados, ferramentas On-line
Informaçã o Analitical Processing (OLAP), entre outras.
Valores do necessá ria para Metadados de negó cios: descriçã o de dados necessá rios
Dados administrar o
dado pelos usuá rios de negó cios, para entender o contexto do
recurso do dado negó cio e o significado dos dados. Atualmente existem
ferramentas só para efeito de documentaçã o. Quando
metadados for rotineiramente usado para gerar regras de
negó cios executá veis, a definiçã o de metadados será a
representaçã o de instruçõ es de regra de negó cios de acordo
com o esquema de classificaçã o que pode ser transformado
Informaçã o em sistemas de informaçã o do negó cio.
Valores do necessá ria para
Informaçã o dado e o contexto administrar o Repositórios de metadados
da informaçã o recurso da Atualmente, o conceito predominante para o suporte à
informaçã o administraçã o da informaçã o é o de repositó rio de
metadados, ou seja, uma tecnologia capaz de tratar as
Informaçã o
informaçõ es relativas aos dados (metadados), inclusive
Valores do
necessá ria para aquelas relacionadas ao contexto em que eles sã o utilizados.
dado, contexto da Metadados nã o eram utilizados na primeira geraçã o de
administrar as Data Warehouses, principalmente porque os usuá rios
Conhecimento informaçã o e tinham pressa em colher os resultados da nova tecnologia, e
regras e políticas de instrução de concentraram seus esforços apenas em carregar seus dados.
regra À medida que os usuá rios e administradores dos Data
negó cio da Warehouses evoluem na sua utilização, é possível notar cada
de negó cio organização. vez mais ênfase no assunto, o que faz com que os metadados
Valores do estejam se tornando uma ferramenta importante para
dado, contexto da Informaçã o melhor uso dos Data Warehouses.
informação, O repositó rio de metadados possibilita a visualizaçã o
necessá ria para
instrução de regra integrada de todo o ambiente de dados das empresas,
de negó cio administrar o
executá vel, comportamento da
Sabedoria
monitoraçã o organizaçã o de 37 Fonte: http://www.linhadecodigo.com.br/artigo/298/introducao-
ametadados.aspx
das acordo com suas
regras de negó cio e regras e políticas de
regras métricas de negó cio.
avaliaçã o
explicitando através de modelos os inter-relacionamentos relacional ,etc.). As características principais deste modelo
existentes entre os dados e as associaçõ es destes com os sã o:
processos funcionais, bases de dados, fluxos de informaçõ es, • É derivado do modelo conceitual
infra-estruturas de processamento / comunicação, etc. • Possui entidades associativas em
Ferramentas existentes no mercado permitem criar um lugar de
ambiente tecnoló gico para a gestã o da informaçã o nas relacionamentos n:m
empresas. Este repositó rio permite que os metadados sejam • Define as chaves primá rias das entidades
capturados de forma automatizada com o auxílio de • Define as chaves estrangeiras entre as entidades
scanners, a partir de inventá rios realizados sobre os • Normalização até a 3a. forma normal
sistemas gerenciadores de banco de dados, linguagens de • Adequado ao padrã o de nomenclatura adotado pela
programaçã o, etc. Uma vez armazenados, os metadados empresa
podem ser utilizados para, também de modo automá tico, • As Entidades e atributos sã o documentados em um
disponibilizar diretó rios de informaçã o, emitir relató rios e Dicioná rio de Dados
alimentar ferramentas Computer Aided Sotfware O principal produto da fase de projeto ló gico é o modelo
Engineering (CASE), entre outras facilidades. relacional.

3- Modelo Físico – Este modelo representa a


Figura 1: Repositó rio de Metadados implementaçã o do modelo ló gico considerando algum tipo
particular de tecnologia de banco de dados e os requisitos
Projeto de Banco de Dados38 nã o funcionais (desempenho, disponibilidade, segurança)
O projeto de banco de dados é fundamental para o sucesso que foram identificados pelo analista de requisitos. As
na implementaçã o da tecnologia de banco de dados em uma características principais deste modelo sã o :
empresa. Para pequenos sistemas muitas vezes o responsá vel • Elaborado a partir do modelo ló gico
pelo projeto parte diretamente para a criaçã o do banco de • Pode variar segundo a tecnologia usada para
dados físico e em seguida a criaçã o das tabelas, colunas e implementaçã o do banco de dados
índices. Porém quando se pensa em um banco de dados para • Possui tabelas físicas (log , lider , etc.)
uma empresa grande, dependendo do tamanho do projeto é • Possui colunas físicas (replicaçã o)
fundamental um bom processo de projeto de banco de dados No modelo físico, a linguagem SQL (Structured Query
para que se possa garantir que o usuá rio terá todos os seus Language), é a linguagem padrã o para definiçã o,
requisitos de informaçã o atendidos na forma de informaçõ es manipulação e controle de uso das estruturas de dados.
disponíveis no banco de dados, além de outras consideraçõ es Existem muitos Sistemas Gerenciadores de Banco de
já vistas anterioremente tais como disponibilidade, Dados disponíveis no mercado. Como exemplo, podemos
desempenho e confiabilidade do banco de dados. citar o PostgreSQL e o MySQL, que tem có digo aberto e sã o
Um projeto de banco de dados é caracterizado por um gratuitos. Também existe o Oracle, DB2, Sybase SQL Server,
processo que possui fases distintas e com aspectos diferentes Informix e Microsoft SQL Server, que sã o pagos e nã o
mas que tem como objetivo final a implementaçã o de um possuem có digo aberto, sendo bastante usados em
banco de dados que atenda à s necessidades de informação do corporaçõ es.
usuá rio e aos requisitos nã o funcionais de disponibilidade,
desempenho e confiabilidade esperados. Sistemas de Gerenciamento de Bancos de Dados -
SGBDs
As Três fases que fazem parte de um projeto de banco de Como vimos na aula passada, o SGBD é um software
dados: responsá vel pelo armazenamento e gerenciamento de
1 - Modelo conceitual – Representa os conceitos do grandes volumes de dados estruturados de acordo com o
negó cio e as associaçõ es existentes entre estes conceitos. modelo de dados implementado pelo SGBD e com recursos
Também sã o representados os atributos assim como as regras para acesso e atualização das informaçõ es.
de negó cio que regulam as associaçõ es e conceitos do negó cio.
Este modelo é independente da tecnologia de implementaçã o Vantagens:
usada para o banco de dados e por isto é a etapa mais - Rapidez na manipulação e no acesso à informaçã o;
adequada para o envolvimento do usuá rio que nã o precisa ter - Reduçã o do esforço humano (desenvolvimento e
conhecimentos técnicos. As características principais deste utilização);
modelo sã o: - Disponibilizaçã o da informaçã o no tempo necessá rio;
• Visã o Geral do negó cio - Distribuição de informaçõ es geograficamente;
• Facilidade de entendimento entre usuá rios e - Controle de redundâ ncia e de inconsistência de
desenvolvedores informaçõ es;
• Possui somente as entidades, relacionamentos e - Compartilhamento de dados;
atributos principais - Aplicaçã o automá tica de restriçõ es de integridade; -
Os principais produtos da fase de projeto conceitual sã o: Controle de acesso e segurança dos dados; - Redução de
O diagrama de entidade e relacionamentos, também problemas de integridade.
conhecido por modelo de entidade relacionamentos; Lista de
Regras de Restriçã o de Integridade. DICIONÁ RIO DE DADOS
Um dicioná rio de dados é um documento que descreve as
2- Modelo Ló gico – Representa as estruturas de dados a informaçõ es representadas no modelo de dados,
serem implementadas e suas características considerando os descrevendo informaçõ es de suas entidades e seus atributos
limites impostos pelo modelo de dados usado para (tamanho, tipos de dado, obrigatoriedade e definiçã o). O
implementaçã o do banco de dados. (banco de dados dicioná rio de dados é usado para documentar os dados da
hierá rquico , banco de dados de rede, banco de dados empresa e facilitar a comunicaçã o e entendimento entre
38 Fonte: https://sites.google.com/site/uniplibancodedados1/aulas/aula-3-- analista de sistemas e seus usuá rios, além de servir de
projeto-de-banco-de-dados
ferramenta para avaliaçã o de modelos de dados pelos compor uma tabela no banco de dados. É importante
analistas de dados corporativos que tem a responsabilidade considerar que conceitos diferentes devem ser representados
de manter o modelo de dados corporativo sem redundâ ncias, como entidades e relacionamentos diferentes. Isto significa
completo e de fá cil manutençã o. Algumas ferramentas CASE que nã o devemos misturar conceitos, assuntos, representando
geram dicioná rio de dados automaticamente a partir das todos como apenas uma ú nica entidade.
informaçõ es existentes no catá logo do banco dados. Determinar os Atributos de cada Entidade: Definir quais
Quando uma organizaçã o constró i um dicioná rio de dados informaçõ es devem ser mantidas em cada entidade. Por
de dimensão empresarial, o intuito deve ser o de padronizar exemplo, a entidade Clientes poderia ter um atributos para o
precisamente definiçõ es semâ nticas a serem adotadas na CPF Do Cliente, outro para o Nome Do Cliente e assim por
empresa toda; portanto, ele deve incluir tanto definiçõ es diante.
semâ nticas como de representação para elementos de dados, Determinar o identificador de cada Entidade
sendo que os componentes semâ nticos focam na criação Determinar, em cada entidade, qual(is) atributo(s)
precisa do significado dos elementos de dados, e de outro será (ã o) utilizado(s) como identificador de cada ocorrência
lado, as definiçõ es de representaçã o indicam como os na entidade.
elementos de dados são armazenados em uma estrutura de Determinar os Relacionamentos:
computador de acordo com seu tipo, ou seja, se sã o dados do Determinar as associaçõ es existentes entre as entidades
tipo inteiro, caracter ou formato de data. do modelo de dados, identificando de que forma as entidades
se relacionamento e representando os relacionamentos
Modelo de um Dicionário de Dados entre as entidades, detalhando a cardinalidade entre os
relacionamentos. A cardinalidade especifica o nú mero de
Veja um exemplo de dicioná rio de dados: vezes que uma ocorrência de uma entidade pode estar
Propriedades dos campos da tabela CURSOS associada a ocorrências da outra entidade. Por exemplo,
Clientes podem Fazer Vá rios Pedidos, entã o existe um
relacionamento do tipo Um-para-vá rios entre a tabela
Tipos de Dados: Clientes (lado um) e a tabela Pedidos (lado vá rios).
Os dados podem assumir vá rios tipos de dados, que irã o Normalizar a Estrutura do Banco de Dados:
variar dependendo do Sistema de Gerenciamento de Banco de Antes de inserir muitos dados, ou até mesmo antes de
dados que estiver em uso pela empresa: Abaixo seguem inserir qualquer dado, verificar se a estrutura contém
alguns tipos: redundâ ncia de atributos nas entidades, eliminando a
possibilidade de inconsistência nos dados causada por
• char: Caracter (string de valor fixo): O valor anomalias de atualizaçã o devido a redundâ ncia de atributos.
armazenado é uma string. Isto, normalmente, pode ser obtido através do processo de
• Varchar: Caracter (string de valor variá vel): O valor Normalização.
armazenado é uma string.
• integer: Nú mero inteiro é o tipo padrã o e o tamanho Projeto EXEMPLO:
do conjunto que pode ser representado. Vamos ver do início ao fim cada conceito de uma
• float: Nú mero em ponto flutuante de precisã o modelagem de dados, tomando por exemplo a implantaçã o
simples. Sã o conhecidos normalmente como nú meros reais. de um banco de dados em uma escola.
• double: Nú mero em ponto flutuante de precisã o
dupla Sistema de Controle Acadêmico
• Date: Tipo data
Objetivos
Diferença entre char e varchar: - Descriçã o do Problema
O campo char quando armazena um valor, completa com Atualmente os alunos sã o cadastrados em fichas de papel
espaços em branco o que nã o está sendo utilizado. Por guardadas em pastas. Isso acarreta dificuldade no resgate de
exemplo, criando um campo com 10 caracteres, você informaçõ es e fragilidade das mesmas. O ideal, será um
armazena o valor 'A' e também vai armazenar mais nove banco de dados organizado de tal forma que as fichas dos
espaços em branco depois. Por causa desta característica o alunos serã o identificadas com facilidade através do nú mero
tipo de dados CHAR é chamado de tipo de dados com tamanho de matrícula, assim como outras informaçõ es como
fixo. Já o tipo varchar, armazena SOMENTE a quantidade de professores, disciplinas, notas dos alunos, gerando assim
caracteres que foram especificados na sua criaçã o, ou seja, ele relató rios diversos como por exemplo o boletim do aluno,
gravará o valor 'A' sem os espaços em branco depois. que hoje é feito no aplicativo Word.

EXEMPLO DE UM PROJETO DE BANCO DE DADOS - Objetivo do Projeto de Banco de Dados


Para que um projeto de banco de dados seja bem sucedido, O objetivo do banco de dados será armazenar os dados
sã o necessá rias diversas etapas. dos alunos, possibilitando consultas á geis que retornem as
Etapas no projeto de um Banco de dados: informaçõ es de maneira rá pida e prá tica, através de emissã o
- Determinar qual o objetivo do projeto de Banco de de relató rios diversos ou consultas na web.
Dados: Isto ajuda na determinaçã o de quais os dados devem - Entidades necessá rias
ser armazenados. É fundamental ter bem claro qual o objetivo Identificamos vá rias entidades contendo todos os dados
a ser alcançado com o banco de dados. É fazer o importantes para controlar uma escola.
acompanhamento das despesas, pedidos dos clientes, multas Eis a lista de Entidades:
de transito, a evoluçã o das vendas ou outro objetivo qualquer. - cursos – Para cadastrar os cursos oferecidos pela
- Determinar as Entidades necessá rias: Apó s escola
definirmos os objetivos do Banco de Dados, as informaçõ es - aluno – Para cadastrar os alunos matriculados na
devem ser definidas e separadas em assuntos diferentes, tais escola, bem como seus dados pessoais
como "Clientes", "Empregados", "Pedidos", pois cada um irá - professor – Para cadastrar os professores que
lecionam na instituiçã o, bem como seu dados pessoais
- disciplinas – Para cadastrar as disciplinas que os - Cada aluno deve se matricular em pelo menos uma
alunos irã o cursar disciplina e no máximo em 3 disciplinas
- turmas – Para cadastrar as turmas abertas para os
cursos oferecidos Inicialmente fazemos um esboço do projeto, construindo
- Determinar os atributos de cada entidade um diagrama de conjuntos. Posteriormente construímos o
Eis a lista de relacionamentos modelo de entidades e relacionamentos. Assim devemos
- cursos (codigo, nomedocurso, duracao, construir um Diagrama de Conjuntos para o domínio do
datapublicacao) problema Universidade.
- aluno (matricula, nome, endereco, bairro, cep, O diagrama de conjunto nos ajuda a identificar as
telefone, pai, mae, email) informaçõ es que sã o importante para o domínio do problema
- professor (matricula, nome, endereco, bairro,cep, e também nos ajuda a compreender a forma como estas
telefone, email) informaçõ es se relacionam.
- disciplinas (codigo, descricao) Diagrama de Conjuntos
- turma (codigo, descricao)
Criar o Dicioná rio de Dados de cada uma das entidades
( veremos a seguir )
- Determinar o identificador de cada entidade ( vamos
ver adiante )
- Determinar os Relacionamentos ( vamos ver
adiante ) - Normalizar a Estrutura do Banco de Dados:

Fases do Projeto de Banco de Dados – Um exemplo


prático

O Projeto Conceitual de Banco de Dados


Diagrama de Entidade e Relacionamentos
Nessa fase trabalhamos com requisitos de informaçã o e
regras de negó cio do domínio do problema.
Nã o nos preocupamos com aspectos físicos do banco de
dados ou da tecnologia utilizada.
Buscamos o entendimento do negó cio junto aos usuá rios.
A pró xima fase seria o projeto do logico dos dados com a
É importante se situar no domínio do problema pois ele elaboraçã o do modelo de dados relacional composto por
delimita o escopo do projeto de banco de dados. Ele tabelas e colunas. Este modelo é derivado do diagrama de
estabelece a fronteira do que deve estar no banco de dados e o entidade e relacionamentos.
que está fora do banco de dados.
O modelo relacional representa as entidades e
relacionamentos como tabelas onde cada tabela deve ter
O domínio do problema pode ser bem simples ou bastante uma chave primá ria.
amplo e complexo. Quando for grande e complexo, o projeto Os relacionamentos entre as tabelas sã o representados
de banco de dados pode ser feito por etapas, cada etapa através de chaves estrangeiras que sã o usadas para
abrangendo um conjunto de requisitos, e assim podemos relacionar as tabelas do banco de dados.
projetar conceitualmente o banco de dados para um domínio
complexo em etapas, dividindo um problema grande em
ALUNO
problemas menores e mais fá ceis de se interpretar. Esta
RA NOME ENDERECO TELEFONE
abordagem é conhecida como dividir para conquistar e pode
ser usada também no projeto conceitual do banco de dados.
DISCIPLINA
CÓ DIGO NOME CARGA_HORARIA
Independente da complexidade do domínio do problema,
todo domínio possui requisitos de informaçã o e regras de
MATRICULA
negó cio que devem ser identificados e interpretados pelo
analista de sistemas a fim de serem corretamente RA CODIGO DATA_MATRICULA
representadas no modelo conceitual de dados.
As regras de negó cio devem ser respeitadas no modelo.
Vamos ver um exemplo simples, com domínio simples que Por exemplo, “Um aluno poderá se matricular em uma
você conhece bem. mesma disciplina no máximo 4 vezes.”. Esta regra de negó cio
deve ser respeitada para garantir a integridade do banco de
dados. As regras de negó cio podem ser representadas por
Domínio do Problema: Em uma universidade, alunos
anotaçõ es no diagrama de entidade e relacionamentos.
matriculam-se em disciplinas. O banco de dados para este
O modelo pode ser evoluído na medida em que o
processo de negó cio deve fornecer as seguintes informaçõ es:
ambiente de negó cio muda. Por exemplo, os alunos precisam
agora ser representados de acordo com o curso que pode ser
- Para cada aluno, RA, nome, endereço, telefone e e-
um curso de graduaçã o ou um curso de pó s-graduaçã o. Entã o
mail de contato.
existem dois tipos de alunos, os alunos de graduação e os
- Para cada disciplina, codigo, nome e carga horá ria da
alunos de pó s-graduaçã o.
disciplina
- Para cada matricula, RA do aluno, codigo da
No Projeto Físico pode-se:
disciplina e data da matricula
- Definir os recursos de hardware: Qual a melhor primá ria da tabela e, em seguida, remover essa coluna da
configuraçã o de servidor, rede e sistema operacional para tabela principal e criar uma nova tabela com esses dados. Por
implementaçã o do banco de dados. exemplo, considere a tabela ALUNOS_CURSOS a seguir.
Definir o melhor SGBD a ser utilizado: Dependendo da ALUNOS_CURSOS = { ID_ALUNO + ID_CURSO + NOTA +
plataforma a ser usada (mainframe, cliente-servidor), DESCRICAO_CURSO }
integraçã o do banco de dados com outros bancos de dados Nessa tabela, o atributo DESCRICAO_CURSO depende
em outros ambientes, interface com outros sistemas e até a apenas da chave primá ria ID_CURSO. Dessa forma, a tabela
cultura da empresa. nã o está na 2FN. Para tanto, cria-se uma nova tabela chamada
Para projetos pessoais, como consultor ou desenvolvedor CURSOS que tem como chave primá ria ID_CURSO e atributo
autonomo, a indicaçã o de SGBD é para o PostgreSQL, por ser DESCRICAO retirando, assim, o atributo DESCRICAO_CURSO
robusto, está vel, bom desempenho, boa documentaçã o, da tabela ALUNOS_CURSOS.
grande comunidade através da Internet e Licença free e ALUNOS_CURSOS = {ID_ALUNO + ID_CURSO + NOTA}
open-source para todos os usos. CURSOS = {ID_CURSO + DESCRICAO}
Como sistema operacional para o servidor a indicaçã o vai 3FN - 3ª Forma Normal:para estar na 3FN, é preciso estar
para o Linux Debian. na 2FN. Além disso, os atributos nã o chave de uma tabela
Como sistema operacional para os clientes a indicação vai devem ser mutuamente independentes e dependentes
para o Linux Ubuntu. unicamente e exclusivamente da chave primá ria (um
Verificar a estimativa do crescimento do banco, também atributo B é funcionalmente dependente de A se, e somente
conhecida como volumetria, e preparar-se para isso em se, para cada valor de A só existe um valor de B). Para atingir
termos de capacidade armazenamento dos discos do servidor. essa forma normal, é preciso identificar as colunas que sã o
funcionalmente dependentes das outras colunas nã o chave e
Primeira, segunda e terceira formas Normais (1FN, extraí-las para outra tabela. Considere, como exemplo, a
2FN e 3FN)39 tabela FUNCIONARIOS a seguir.
Normalizaçã o é um processo a partir do qual se aplicam FUNCIONARIOS = { ID + NOME + ID_CARGO +
regras a todas as tabelas do banco de dados com o objetivo de DESCRICAO_CARGO }
evitar falhas no projeto, como redundâ ncia de dados e mistura O atributo DESCRICAO_CARGO depende exclusivamente
de diferentes assuntos numa mesma tabela. de ID_CARGO (atributo nã o chave) e, portanto, deve-se criar
Ao projetar um banco de dados, se temos um modelo de uma nova tabela com esses atributos. Dessa forma, ficamos
entidades e relacionamentos e a partir dele construirmos o com as seguintes tabelas:
modelo relacional seguindo as regras de transformaçã o FUNCIONARIOS = { ID + NOME + ID_CARGO }
corretamente, o modelo relacional resultante estará , CARGOS = { ID_CARGO + DESCRICAO }
provavelmente, normalizado. Mas, nem sempre os modelos
que nos deparamos sã o implementados dessa forma e, quando
isso acontece, o suporte ao banco de dados é dificultado.
Em ambos os casos, é necessá rio aplicar as técnicas de
normalizaçã o, ou para normalizar (segundo caso citado), ou
apenas para validar o esquema criado (primeiro caso citado).
Aplicando as regras descritas a seguir, é possível garantir um
banco de dados mais íntegro, sem redundâ ncias e
inconsistências.
Existem 3 formas normais mais conhecidas:
1FN - 1ª Forma Normal:todos os atributos de uma tabela
devem ser atô micos, ou seja, a tabela nã o deve conter grupos
repetidos e nem atributos com mais de um valor. Para deixar
nesta forma normal, é preciso identificar a chave primá ria da
tabela, identificar a(s) coluna(s) que tem(êm) dados repetidos
e removê-la(s), criar uma nova tabela com a chave primá ria
para armazenar o dado repetido e, por fim, criar uma relaçã o
entre a tabela principal e a tabela secundá ria. Por exemplo,
considere a tabela Pessoas a seguir.
PESSOAS = {ID+ NOME + ENDERECO + TELEFONES}
Ela contém a chave primá ria ID e o atributo TELEFONES é
um atributo multivalorado e, portanto, a tabela nã o está na
1FN. Para deixá -la na 1FN, vamos criar uma nova tabela
chamada TELEFONES que conterá PESSOA_ID como chave
estrangeira de PESSOAS e TELEFONE como o valor
multivalorado que será armazenado.
PESSOAS = { ID + NOME + ENDERECO }
TELEFONES = { PESSOA_ID + TELEFONE }
2FN - 2ª Forma Normal:antes de mais nada, para estar na
2FN é preciso estar na 1FN. Além disso, todos os atributos nã o
chaves da tabela devem depender unicamente da chave
primá ria (nã o podendo depender apenas de parte dela). Para
deixar na segunda forma normal, é preciso identificar as
colunas que nã o sã o funcionalmente dependentes da chave

39 Fonte:
http://www.dsc.ufcg.edu.br/~pet/jornal/maio2011/materias/recapitulando.
htm l
Visão Geral da Arquitetura do PostgreSQL40 sistemas com grande nú mero de transaçõ es concorrentes
mesmo no Postgres que utiliza o protocolo de bloqueios
multiversã o (MVCC - MultiVersion Concurrency Control).

O PostgreSQL oferece algumas clá usulas relativamente


simples que permitem este tipo de controle no caso de
consultas no banco de dados: FOR UPDATE, FOR SHARE e
NOWAIT.

O uso de consultas com a clá usula FOR UPDATE obriga o


servidor a bloquear os registros consultados para leitura e
escrita durante o transcorrer da transaçã o. Desta forma se
garante que o que está sendo visualizado corresponde ao que
está armazenado no banco de dados.

Por sua vez, a clá usula FOR SHARE efetua bloqueio de


escrita, mas permite que leituras sejam feitas aos dados
consultados.
Edição de SQL e Funções no PSQL
O psql é a principal interface dos desenvolvedores com o Em resumo, a clá usula FOR UPDATE restringe os acessos
PostgreSQL. No entanto, editar có digos no psql pode ser uma aos dados consultados, enquanto que a FOR SHARE
tarefa onerosa. As consultas e funçõ es podem ser extensas e explicitamente autoriza acessos de leitura aos dados
o trabalho se tornar cansativo e improdutivo. Existem consultados. O tipo de transação é que determina se e quando
algumas opçõ es que podem ajudar a trabalhar melhor com utilizar estas cláusulas.
os có digos, sem precisar sair do PSQL, que abordamos
resumidamente aqui. É importante salientar que ambas as clá usulas se referem
apenas os dados que sã o recuperados na consulta.
- Executando arquivos TXT salvos previamente.
Adicionalmente, a clá usula NOWAIT pode ser utilizada
A maneira que mais utilizo para trabalhar com funçõ es e tanto com FOR UPDATE quanto com FOR SHARE, e força a
SQL é executar arquivos txt salvos previamente. Gosto de ter ocorrência de erro caso o servidor tenha de esperar para a
scripts para as necessidades básicas em seus respectivos obtençã o de bloqueios nos dados consultados. Desta forma,
lugares, que possam ser reutilizados, e tem sido bem ú til sacrifica-se a transaçã o para que nã o se perca tempo na fila de
trabalhar desta forma. Edite o seu SQL no editor que achar espera por bloqueios.
melhor e salve-o. Para executa-lo, utilize a sintaxe:
As clá usulas UNION, INTERSECT e EXCEPT até o momento
\i (nome do arquivo como có digo SQL) nã o sã o compatíveis com FOR UPDATE e FOR SHARE.

- Editar có digo SQL usando o Editor Padrã o Para os pró ximos exemplo, serã o utilizadas as seguintes
tabelas:
Neste caso, o sistema abre o editor padrã o definido para
o postgresql. Caso nã o exista um editor definido, o postgres CREATE TABLE pai (codpai integer,nomepai varchar(50));
perguntará , dentre os disponíveis, qual você deseja utilizar. CREATE TABLE filho (codpai integer,codfilho
No meu caso, utilizo o nano (http://www.nano-editor.org/). integer,nomefilho varchar(50));
É um editor bem simples e fácil de usar, que apresenta boas
teclas de atalho. Exemplos:

Agora é editar seus scripts, consultas e funçõ es de dentro 1 - Sintaxe simples com FOR UPDATE.
do psql!
SELECT * FROM pai FOR UPDATE;
OOPS! Alterando o Editor Padrã o!
2 - Sintaxe simples com FOR SHARE.
Já ia me esquecendo! Altere o editor padrã o utilizando a EXPLAIN SELECT * SELECT * FROM pai
sintaxe abaixo: FROM pai FOR SHARE; FOR UPDATE
NOWAIT;
\set PSQL_EDITOR (caminho do editor) 3 - Uso de FOR SHARE
em consulta com 5 - Uso de FOR
Select - Clá usulas FOR UPDATE, FOR SHARE e NOWAIT junção. UPDATE em
Influenciar nos mecanismos de bloqueio do banco de transaçã o de
dados nem sempre é um processo intuitivo. No entanto, pode SELECT * atualização.
ser bastante ú til para garantia da confiabilidade de resultados FROM pai p, filho f
e para ajustes de desempenho. WHERE p.codpai = BEGIN;
f.codpai SELECT * FROM pai
A existência de bloqueios sobre os dados acessados FOR SHARE; FOR UPDATE;
durante o acesso concorrente nã o pode ser ignorada em UPDATE pai SET
4 - Uso de NOWAIT. nomepai = nomepai '
40 Fonte: http://postgresqlbr.blogspot.com.br/2010/02/select-clausulas- Father';
forupdate-for-share-e.html
COMMIT; cuidado na nomenclatura e c
r dos campos, pois utiliza a x _
clá usula LIKE. ( c
Comandos de $ m
Manipulação de 1 - Recuperar 1 d
DATA/ HORA informaçõ es dos , ;
O PostgreSQL índices. $
manipula campos tipo 2 end if;
data e hora com muita A dica é utilizar a ) END;
desenvoltura. Apresenta pg_indexes, visã o de $$ LANGUAGE plpgsql;
ainda o tipo de dados sistema mais amigá vel >
timestamp que engloba para saber se o índice 4 - Testando tudo
data e hora no mesmo existe: 0
campo. As principais s
funçõ es de manipulação t
select * from e
h
de datas sã o: pg_indexes; l
e
e
n
- current_date 2 - Criar uma c
- current_time funçã o parametrizada que t
R
- current_timestamp indica se os índices E
- now() existem. Observem que T r
- timeofday() utilizei a linguagem SQL, e U e
- date_part nã o Pl/ PgSql. Poderia R t
- date_trunc utilizar qualquer outra N i
- extract liguagem, mas a ló gica n
seria similar. ' d
Estas funçõ es podem O e
ser utilizadas na inserçã o, -- Verifica se existe o K x
atualizaçõ es e exclusã o índice. Retorna ZERO se o '
dos dados, como será índice nã o for encontrado ; (
exemplificado nos CREATE OR REPLACE '
pró ximos posts. FUNCTION retindex(in e t
tabela varchar, in campo l e
Criaçã o de Índices com varchar) RETURNS bigint s s
Procedures no AS $$ e t
PostgreSQL... select count(*) from e
Vamos ver se consigo pg_indexes where func_cmd := 'CREATE '
ajudar. Esta é uma dú vida tablename = $1 and INDEX ' || $1 || '_IDX ,
do Juliano Fischer: indexdef like '%' || $2 || ON ' || $1 || ' (' '
'%' || $2 || ')'; c
"Ola, estou com um $$ E 1
problema em uma LANGUAGE SQL; X '
implementaçã o e creio E )
que pode me ajudar. 3 - Criar função C ;
Preciso criar um parametrizada que cria o U
índice caso o mesmo nã o T s
subprograma armazenado
exista, e que utilize a E e
que crie um indice,se já
funçã o anterior. l
existir, informar o usuario,
Linguagem Pl/ PgSQL. f e
cado contratio, crie um
u c
indice.
-- Verifica e cria novo n t
criaIndice(campo,tabe índice se for o caso c
_ c
la);" CREATE OR REPLACE
c r
FUNCTION criaindex
m i
Nã o é tã o difícil! A (tabela varchar, campo
d a
soluçã o está abaixo, mas varchar) RETURNS
; i
cuidado pois o meu có digo VARCHAR AS $$ DECLARE
n
pode e deve ser func_cmd VARCHAR;
R d
melhorado. Nomes de BEGIN
E e
parâ metros, métodos e i
T x
variá veis e bons f
comentá rios podem ser U
r R (
adicionados.
e N '
t t
Além disso, o exemplo e
i f
só verifica um campo e s
n u
exige que se tenha t
d n
e necessá rio colocar o cli_cidade, cli_sexo,
' tamanho máximo que o cli_email) Select * from clientes
, texto pode ter, exemplo values (1,'Luis where cli_codigo >= 2
varchar(2), nesse caso o Alexandre', 'Tupã ', and cli_codigo
' texto poderá ter no 'M','le.boyago@gmail.com' <= 5 and cli_cidade =
c má ximo 2 caracteres. ); ‘Tupã ’;
1
' Abaixo vejamos alguns Ou Select * from clientes
) exemplos desde a criação where cli_codigo >= 2
; da base de dados até Insert into clientes and cli_codigo
comandos para seleçõ es. values (1,'Luis <= 5 and cli_cidade =
Alexandre', 'Tupã ', ‘Tupã ’ and cli_sexo = ‘F’;
Sql server Para criaçõ es gerais 'M','le.boyago@gmail.com'
SQL Server via T-SQL ); Select * from clientes
O MS SQL Server é um utilizamos o comando where cli_codigo >= 2
SGBD (Sistema Create que tem como and cli_codigo
Gerenciador de Banco de funçã o criar bases de Visualizar, consultar, <= 5 and cli_cidade =
Dados Relacional) dados e tabelas. pesquisar, selecionar ‘Tupã ’ and cli_sexo =
desenvolvido pela [SELECT]: ‘F’ order by cli_nome;
Microsoft, suai criaçã o foi Sintaxe geral para Drop
dada a partir de uma criaçã o de Bases de Select cli_codigo, Elimina uma tabela,
parceria com a Sybase, sta Dados: cli_nome, cli_cidade, seus dados, atributos e
parceria durou até 1994, cli_sexo from clientes; referências.
com o lançamento da create database Ex.: drop table clientes
versã o para Windows NT NomeBase; Ou
e desde entã o a Microsoft Alter
mantém a manutençã o do Para a criaçã o uma Select * from clientes; Este comando permite
produto. O Microsoft SQL tabela é necessá rio além inserir/eliminar atributos
* significa tudo
Server é software de utilizar os comandos nas tabelas já
bastante flexível e bá sicos incluir os existentes.
Clá usula Order By
robusto, podendo ser atributos da tabela: Ex: alter table
utilizado em pequenas clientes add
A cláusula Order By
aplicaçõ es (versõ es Create table cli_email varchar
muda a ordem de
express) até mesmo a nome_tabela( (30); alter table
apresentação do resultado
aplicaçõ es com milhõ es de Atributo 1 clientes drop
da pesquisa e possibilita
usuá rios e computadores Atributo 2 cli_email; --apaga
colocar também em
acessando grandes ...) este atributo
ordem ascendente ou
quantidades de dados a modificar estrura
descendente.
partir da Internet ao das colunas:
Veja um exemplo para
mesmo tempo. Suas criação de uma tabela Ex.: Select * from
linguagens de consulta alter table clientes
para armazenar clientes order by
primá rias sã o T-SQL e modify cli_email
informaçõ es de cliente: cli_nome;
ANSI SQL. varchar (40);
create
Por ser um banco de Update
table Restriçã o Where
dados relacional, as Este comando permite
cliente (quando)
tabelas devem ficar alterar os dados da
s
contidas dentro de uma tabela Ex: update
( codig Com where é possivel
base de dados, clientes set cli_sexo =
o int restringir os dados
iniciaremos a explicaçã o 'M'; update clientes set
identit (tuplas) que serã o
dos comandos a partir da cli_sexo = 'F' where
y(1,1) listados, ou seja, efetuar
criação de uma base de cli_codigo =2; update
not uma condiçã o para que o
dados e suas tabelas. clientes set cli_cidade
null, mesmo apareça na
Lembrando que, as = 'Lajeado', cli_nome =
nome listagem
informaçõ es contidas nas 'Giulia
varchar(30) not null,
tabelas devem possuir Santos' where
cidade Operadores ló gicos
tipos específicos para seu cli_codigo =3;
varchar(20) null, = igual, > maior, >=
armazenamento:
data_nasc char(1) maior ou igual, < menor,
not null, Delete
Integer – Para <= menor ou igual
Primary Key(codigo) Este comando permite
nú meros inteiros; exluir registros das
); Ex.:
Float ou Real – tabelas
Utilizado para Select * from clientes
Inserir dados na tabela Ex: delete from
Nú meros Reais; where cli_codigo >= 2;
cliente; clientes; --exclui todos os
DateTime – Votado a registros da tabela
datas e horas Select * from clientes
Insert into clientes where cli_codigo >= 2
VarChar(XX) – delete from clientes
(cli_codigo, cli_nome, and cli_codigo
Utilizado para textos, where cli_sexo = 'F';
entre os parênteses é <= 5;
delete from clientes valor_minimo from ,cli_cidade, cli_sexo,
where cli_cidade like clientes; cli_email, cli_salario from Com constraint
'C%'; clientes; Alter table clientes
select max(cli_salario) Add constraint
Truncate as salario_minimo Lower chave_estrang_cidade
Este comando elimina from clientes Esta função sql foreign key
de forma irreversível where converte para minú sculas (cli
todos os dados da tabela c todos os caracteres _
Ex: truncate table l Ex: select cli_codigo, c
clientes; i upper(cli_nome) as Nome, o
Funçõ es de Agregaçã o _ cli_cidade, cli_sexo, d
Avg c lower(cli_email), c
Este comando calcula o cli_salario from clientes; i
o valor médio de uma d d
determinada coluna i Agrupar por. )
Ex: select g Agrupar dados para
avg(cli_salario) as o qualquer banco de r
media_salarial from dados e
clientes; i Ex.: select cli_sexo as f
n Sexo, count(cli_sexo) e
( as quantos from r
Count
1 clientes group by e
Este comando conta as
, n
linhas de uma tabela cli_sexo;
3 c
Ex: select
) e
count(cli_codigo) from Resultado: Retorna
s
clientes; quantos clientes sã o do
L sexo masculino e quantos
i c
select count(*) as sã o do sexo feminino. i
quantidade_registros k
d
from clientes; e Média a
select AVG (cli_salario) d
Sum – from clientes group by e
Este comando calcula cli_sexo; s
a somató ria de todos os P
valores de uma coluna r Neste exemplo acima (
Ex: select ó irá retornar a media c
sum(cli_salario) as x salarial agrupando por i
valor_total from i sexo d
clientes; m _
o c
Tabela de Cidades --
select sum(cli_salario) para evitar o
a d
as valor_total from redundâ ncia de dados
clientes where CREATE table cidades i
Esta função sql retorna g
cli_sexo = 'F'; (
um valor “pró ximo a” o
Min cid_codigo
alguma palavra ou )
Esta função sql retorna int
numero digitado, para isso
o valor mínimo identity(1,
utiliza de caractere o
encontrado em uma 1) not
coringa “%” n
coluna null,
Ex: select cli_nome
Ex: select cid_nome
from like ‘ana%’; - ele d
min(cli_salario) as varchar(3
retorna todos os clientes e
valor_minimo from 0),
que iniciem seus nomes l
clientes; select primary key
com ana e
min(cli_salario) as (cid_codigo)
select cli_nome from t
salario_minimo from
like ‘%ana%’; - ele retorna e
clientes );
todos os clientes que
where Chave Estrangeira
tenham em seus nomes as R
cli_codigo in(1,3) --foreign key
letras ana exemplo Ana E
Lucia, Mariana S
Max Efetua ligaçõ es entre T
Funçõ es escalares de
Esta função sql retorna as tabelas. Implementa R
Texto
o valor má ximo integridade dos dados. I
Upper
encontrado em uma Alter table clientes C
Esta funçã o sql
coluna Add foreign key T
converte para maiú sculas
Ex: select (cli_codcid) references
todos os caracteres
max(cli_salario) as cidades on update CASCADE;
Ex: select cli_codigo,
(cid_codigo);
upper(cli_nome)
Para apagar uma c Ex.: Insert into clientes
chave estrangeira h (cli_nome, cli_cidade, c
alter table clientes a cli_sexo, cli_email, l
drop FOREIGN key r cli_salario, cli_codcid, i
chave_estrang_cidade; ( cli_indicador) _
3 values ('Selvino n
Union - Union All 0 Santos', o
) 'Lajeado','M','selvino@info m
Auto Incremento tarde.com.br',50,1,’xzxzxz e
Preenche n xzx’);
automaticamente o o v
t Assim como no em a
conteú do de um campo
qualquer SGBD voltado a r
inteiro, toda vez que um
n linguagem SQL os c
novo registro for inserido
u comados sã o muito h
na tabela.
l a
semelhantes, a seguir
l r
create table clientes veremos alguns comandos
, (
( bá sicos.
3
c c 0
l Criar uma base de
l )
i i dados (criar um banco ,
_ _ de dados)
c c c
o i create database l
d d locadora; i
i a _
g d Criar uma tabela c
o e chamada clientes e i
filmes d
i v a
n a c d
t r r e
c e
i h a v
d a t a
e r e r
n ( c
t 2 t h
i 0 a a
t ) b r
y , l (
( e 2
1 c 0
, l c )
1 i l ,
) _ i
s e cli_sexo char(1)
n e n );
o x t
t o e create table filmes
s (
n c f
u h (
l i
a l
l r c
, _
( l c
1 i o
c ) _
l d
, c i
i o
_ g
primary key d
n o
(cli_codigo) i
o ); g
m i
o
e n
t
Veja que para inserir i
v ,
você nã o precisa mais n
a t
r colocar o có digo. f
,
i SQL Server Abrindo o SQL Server Analysis Services,
l Management Studio Management Studio Reporting Services e
_ O SQL Server Para abrir o SQL Integration Services. O
n Management Studio é um Server Management Pesquisador de Objetos
o ambiente integrado para Studio inclui informaçõ es de
m acessar, configurar, No menu Iniciar, todos os servidores aos
e gerenciar, administrar e aponte para Todos os quais está conectado. Ao
desenvolver todos os Programas, aponte para abrir o
v componentes do SQL Microsoft SQL Server Management Studio, você
a Server. O SQL Server 2014 e clique em SQL é solicitado a conectar o
r Management Studio Server Management Pesquisador de Objetos à s
c combina um amplo grupo Studio. configuraçõ es utilizadas
h de ferramentas grá ficas O SQL Server na ú ltima vez. Você pode
a com diversos editores de Management Studio nã o é clicar duas vezes em
r script avançados para dar instalado por padrã o. Se o qualquer componente de
( acesso ao SQL Server para Management Studio nã o Servidores Registrados e
3 os desenvolvedores e estiver disponível, instale- conectar-se a ele, mas nã o
0 administradores de todos o executando a Instalaçã o. é necessá rio registrar um
) os níveis de habilidade. O Management Studio nã o servidor para fazer a
, O SQL Server está disponível com o SQL conexã o.
Management Studio Server Express. O A janela de
f combina os recursos do Management Studio documentos é a maior
i Enterprise Manager, Express está disponível parte do Management
l Query Analyzer e Analysis como um download Studio. As janelas de
_ Manager, incluídos em gratuito do Centro de documentos podem
g versõ es anteriores do SQL Download da Microsoft, conter editores de
e Server, em um ú nico mas tem uma interface de consulta e janelas de
n ambiente. Além disso, o usuá rio diferente do que navegador. Por padrã o, é
e SQL Server Management está descrito neste exibida a pá gina de
r Studio trabalha com todos tutorial. Resumo, conectada à
o os componentes do SQL Na caixa de diá logo instâ ncia do Mecanismo
Server, como Reporting Conectar ao Servidor, de Banco de Dados no
v Services, Integration verifique as configuraçõ es computador atual.
a Servicese SQL Server padrã o e depois clique em
r Compact 3.5 SP2. Conectar. Para fazer a Exibindo janelas
c Desenvolvedores terã o conexã o, a caixa de adicionais
h uma experiência familiar e diá logo Nome do servidor Para exibir a
a os administradores de deve conter o nome do janela de
r banco de dados terã o um computador em que o SQL Servidores
( ú nico utilitá rio Server está instalado. Se o Registrados
1 abrangente que combina Mecanismo de Banco de No menu
5 ferramentas grá ficas Dados for uma instâ ncia Exibir, clique
) fá ceis de usar com nomeada, a caixa Nome do em Servidores
, sofisticadas capacidades Servidor também deverá Registrados.
de script. conter o nome da A janela de Servidores
fil_preco numeric(4,2) - Para acessar o SQL instâ ncia no formato Registrados será exibida
); Server Management <computer_name>\<insta acima do Pesquisador de
Studio nce_name>. Objetos. Servidores
Inserir dados na tabela Na barra de Registrados relaciona
cliente; ferramentas, clique em Componentes do servidores gerenciados
Iniciar, aponte para Todos Management Studio frequentemente. Você
Insert into clientes os Programas, aponte O Management Studio pode adicionar ou
(cli_codigo, cli_nome, para Microsoft SQL Server apresenta informaçõ es em remover servidores dessa
cli_cidade, cli_sexo, SQL Server 2008 e clique janelas dedicadas a tipos lista. Os ú nicos servidores
cli_email) values (1,'Luis em SQL Server específicos de relacionados serã o as
Alexandre', 'Tupã ', Management Studio. informaçõ es. Informaçõ es instâ ncias do SQL Server
'M','le.boyago@gmail.com' Com o SQL Server de banco de dados sã o no computador em que
); Management Studio, o exibidas no Pesquisador você estiver executando o
desenvolvedor e o de Objetos e janelas de Management Studio.
Ou administrador de banco documentos. Se seu servidor nã o
de dados podem Pesquisador de aparecer em Servidores
Insert into clientes desenvolver ou Objetos é uma exibição de Registrados, clique com o
values (1,'Luis administrar quaisquer á rvore de todos os objetos botã o direito do mouse
Alexandre', 'Tupã ', componentes do de banco de dados em um em Mecanismo de Banco
'M','le.boyago@gmail.com' Mecanismo de Banco de servidor. Isso pode incluir de Dados e clique em
); Dados. os bancos de dados do Atualizar Registro do
Mecanismo de Banco de Servidor Local.
Dados do SQL Server,
Transact-SQL funcionalidades que as em um banco de dados quantas vezes o loop é
outras variaçõ es nã o tem SQL Server. Por exemplo, executado;
Para muitos SQL é e vice-versa. quando você escreve uma Para reter um valor de
igual em qualquer banco A linguagem SQL, procedure no Query dados a ser testado por
de dados. E quem acha comumente referenciada Analyzer, você está uma instruçã o de controle
isso nã o está de todo como padrã o SQL usando a linguagem de fluxo;
errado. ANSI/ISO e administrada TransactSQL. Quando você Para salvar um valor
Pra quem nã o sabe pelo National Committee usa os comandos CREATE de dados a ser retornado
SQL é um acrô nomo para on Information TABLE, CREATE VIEW, por um có digo de retorno
Structured Query Technology Standards CREATE PROCEDURE ou de procedimento
Language ou em (NCITS), é a linguagem manipula dados em um armazenado ou valor de
português Linguagem de universal utilizada pelos banco de dados SQL retorno de funçã o;
consulta estruturada. SGBDs para acessar e Server usando os Uma instrução
SQL é a linguagem manipular dados e objetos comandos INSERT, DECLARE inicializa uma
utilizada nos bancos de em um banco de dados. SELECT, DELETE e variá vel TransactSQL por:
dados e apesar de ser No entanto, como os UPDATE, você está usando Atribuiçã o de um
padronizada pela ANSI e fabricantes estã o livres a linguagem TransactSQL. nome. (O nome deve ter
ISO ela possui muitas para fazer suas pró prias A seguir um resumo uma ú nica @ como o
variaçõ es e cada uma com adaptaçõ es, esta possui dos principais comandos e primeiro caractere.)
sua peculiaridade como: vá rios “dialetos”. Muitos recursos da linguagem T- Atribuiçã o de um tipo
PL/SQL (Oracle) SGBDs, entre eles o SQL SQL. de dados fornecido por
T Server, utilizam o mesmo sistema ou definido pelo
- tipo de dialeto como sua Variáveis usuá rio e um tamanho.
S linguagem primá ria de Para variá veis numéricas,
Q acesso a dados. O padrã o A T-SQL suporta precisã o e escala também
L SQL possui vá rias versõ es variá veis e você pode usá - sã o atribuídas. Para
(cada uma tendo o ano em las para armazenar variá veis do tipo XML,
( que foi adotada), e o valores. uma coleçã o de esquema
M padrã o SQL-92 (adotado opcional pode ser
i em 1992) é o mais aceito --Sintaxe: atribuída.
c entre os SGBDs. ---declaração Definiçã o do valor
r O SQL Server possui DECLARE @variable como NULL;
o seu pró prio “dialeto” data-type Exemplo: DECLARE
s da linguagem ---Atribuiçã o @Contador int;
o SQL – o Transact-SQL (T- SET @variavel='valor' Quando uma variá vel é
f SQL). Ou seja, a linguagem ---Retornar valor primeiramente declarada,
t TransactSQL segue o SELECT @variavel seu valor é definido como
) padrã o SQL-92, mas ---Exemplo NULL.
adiciona alguns atributos DECLARE @MeuNome Para atribuir um valor
E (ou funcionalidades) que a varchar(20) à uma variá vel, use a
n tornam exclusiva ao SQL SET instrução SET.
t Server. Por exemplo, a @MeuNome='Macorat Este é o método
r clá usula TOP em um ti' preferido de atribuir um
e comando SELECT só SELECT @MeuNome valor a uma variá vel. Uma
existe no Transact-SQL. Se variá vel também pode ter
o você pegar a instruçã o a um valor atribuído sendo
u seguir e executá -la no referenciado na lista
t MySQL, verá que esta selecionada de uma
r gerará um erro. instruçã o SELECT.
a
s SELECT TOP 10 * O comando GO
… FROM <tabela> sinaliza o final de um lote
. de instruçõ es Transact-
Isto acontece porque a SQL para os utilitá rios do
Bom mas vamos clá usula TOP só existe na SQL Server. Sintaxe: GO
manter o foco vamos falar linguagem Transact-SQL, [contador] Onde:
de T-SQL (Transaction – que é exclusiva do SQL Contador - É um
SQL). Server. A instrução Uma variá vel local nú mero inteiro positivo. O
T-SQL é a variaçã o de correspondente para o Transact-SQL é um objeto lote que precede GO será
SQL de propriedade da MYSQL seria: que pode conter um valor executado pelo nú mero de
Microsoft e Sysbases de dados de um tipo vezes especificado.
Nã o significa que a SELECT * FROM específico. As variá veis em GO nã o é uma
Microsoft tem um SQL só <tabela> LIMIT 10 lotes e scripts sã o instruçã o Transact-SQL; é
dela. T-SQL (e todas as normalmente usadas: um comando reconhecido
variaçõ es de SQL) tem que Você usa o T-SQL para Como um contador, pelos utilitá rios sqlcmd e
seguir todo o padrã o Ansi criar, alterar e excluir para contar o nú mero de osql e pelo Editor de
e Iso, porém tem algumas objetos, bem como para vezes que um loop é có digos SQL Server
diferenças ou inserir ou consultar dados executado ou controlar Management Studio.
GO é um comando de BEGIN e END sã o SELECT deverá ser
utilitá rio que nã o exige palavras-chave da incluída entre parênteses.
nenhuma permissão. Pode linguagem de controle de {sql_statement |
ser executado por fluxo. statement_block}
qualquer usuá rio. Sintaxe: É qualquer instruçã o
Uma instruçã o BEGIN Transact-SQL ou
Transact-SQL nã o pode { agrupamento de
ocupar a mesma linha que sql_statement | instruçõ es, conforme
um comando GO. statement_block definido com um bloco de
} instruçõ es. Para definir
IF...ELSE é um END um bloco de instruçõ es,
controle condicional de use as palavras-chave
fluxo bá sico usado na T- BEGIN e END de controle
SQL. de fluxo.
Impõ e condiçõ es na BREAK
execução de uma Provoca uma saída do
instruçã o TransactSQL. A loop WHILE mais interno.
instruçã o que segue uma Todas as instruçõ es que
palavra-chave IF e sua apareçam depois da
condiçã o será executada palavra-chave END, que
3- Loop WHILE
se a condição for marca o final do loop,
usando BREAK e
satisfeita: a expressão serã o executadas.
CONTINUE
Booleana retorna TRUE. CONTINUE
A palavra-chave Os blocos BEGIN...END Faz com que o loop
opcional ELSE introduz podem ser aninhados. WHILE seja reiniciado,
outra instruçã o que será Embora todas as ignorando todas as
executada quando a instruçõ es Transact-SQL instruçõ es depois da
condiçã o IF nã o for sejam vá lidas em um palavra-chave CONTINUE
satisfeita: a expressão bloco BEGIN...END, certas
Booleana retorna FALSE. instruçõ es nã o devem ser Se dois ou mais loops
Sintaxe: agrupadas no mesmo lote WHILE estiverem
IF Boolean_expression ou bloco de instrução. aninhados, o BREAK
{ sql_statement | interno será encerrado
statement_block } A instrução WHILE para o pró ximo loop mais
[ ELSE repete uma instruçã o ou externo. Todas as
{ sql_statement | bloco de instruçõ es desde instruçõ es apó s o fim da
statement_block } ] primeira execução do loop Dessa forma um
que a condiçã o programa poderá executar
especificada permaneça interno e o loop mais
externo seguinte serã o uma instruçã o BREAK se,
verdadeira. por exemplo, nã o houver
Ela define uma reiniciadas.
Exemplos: outras linhas a serem
condiçã o para a execução processadas. Uma
repetida de uma instruçã o 1- Loop WHILE
restriçã o CONTINUE pode
ou um bloco de instruçõ es ser executada se, por
SQL. As instruçõ es serã o exemplo, for necessá rio
executadas repetidamente prosseguir com a
desde que a condição execução do có digo.
especificada seja
verdadeira.
A expressão CASE é
Uma construçã o A execuçã o de
usada para avaliar vá rias
IF...ELSE pode ser usada instruçõ es no loop WHILE
condiçõ es e retornar um
em lotes, em pode ser controlada
valor ú nico para cada
procedimentos internamente ao loop com
condiçã o. Por exemplo, ela
armazenados e em as palavraschave BREAK e
permite mostrar um valor
consultas ad hoc. Quando CONTINUE.
alternativo a ser exibido
essa construção é usada WHILE dependendo do valor de
em um procedimento Boolean_expression uma coluna. Essa
armazenado, ela { sql_statement | alteraçã o nos dados é
normalmente é usada statement_block | temporá ria. Portanto, nã o
para testar a existência de BREAK | CONTINUE } há nenhuma alteraçã o
2- Loop WHILE
algum parâ metro. usando BREAK permanente nos dados.
- Argumentos A expressã o CASE
BEGIN...END engloba Boolean_expression consiste em:
uma série de É uma expressã o que A palavra-chave CASE.
instruçõ es Transact- retorna TRUE ou FALSE. O nome da coluna a
SQL de modo que um Se a expressã o booleana ser transformada.
grupo de instruçõ es possa contiver uma instruçã o As clá usulas WHEN
ser executado. SELECT, a instrução que especificam as
expressõ es a serem modificaçõ es de dados transaçã o local explícita. desde o início da
pesquisadas e as feitas durante a transação BEGIN transaçã o usamos a
clá usulasTHEN que estarã o confirmadas e se TRANSACTION instruçã o ROLLBACK
especificam as expressõ es tornarã o parte incrementa TRANSACTION OU
pelas quais substituí-las. permanente do banco de @@TRANCOUNT em 1. ROLLBACK TRAN.
Uma cláusula ELSE dados. Se uma transaçã o Para confirmar a Esta instrução reverte
opcional que define a encontrar erros e precisar execuçã o das operaçõ es uma transaçã o explícita
expressã o retornada, se ser cancelada ou realizadas na transaçã o ou implícita ao começo da
nenhuma operaçã o de revertida, todas as usamos a instruçã o transaçã o ou a um ponto
comparaçã o for avaliada modificaçõ es de dados COMMIT TRANSACTION de salvamento dentro da
como TRUE. serã o apagadas. OU COMMIT TRAN transaçã o. Você pode usar
A palavra-chave END. SQL Server opera nos Esta instruçã o marca o ROLLBACK
Uma clá usula AS modos de transaçã o a término de uma transaçã o TRANSACTION para
opcional que define um seguir. implícita ou explícita que apagar todas as
alias para a expressã o Transaçõ es de teve êxito. modificaçõ es de dados
CASE. confirmaçã o automá tica : Se@@TRANCOUNT for feitas desde o começo da
Um uso comum da Cada instruçã o individual igual a 1, COMMIT transaçã o ou até um ponto
expressã o CASE é é uma transaçã o. TRANSACTION de salvamento. Ela
substituir có digos ou Transaçõ es explícitas : transformará todas as também libera recursos
abreviaçõ es por valores Cada transação é iniciada modificaçõ es de dados mantidos pela transaçã o.
mais legíveis Exemplo: explicitamente com a executadas desde o início Exemplo:
O exemplo seguinte instruçã o BEGIN da transaçã o em parte
usa a funçã o CASE para TRANSACTION e permanente do banco de
alterar a exibiçã o de finalizada explicitamente dados, liberará os
categorias dos produtos com uma instrução recursos ocupados pela
para torná -las mais COMMIT ou ROLLBACK. transaçã o e decrementará
compreensíveis. Transaçõ es implícitas : @@TRANCOUNT para 0.
Uma transaçã o nova é Se@@TRANCOUNT for
iniciada implicitamente maior que 1, COMMIT
quando a transação TRANSACTION
anterior é concluída, mas decrementará
cada transação é @@TRANCOUNT apenas
explicitamente concluída de 1 e a transação
com uma instrução continuará ativa.
COMMIT ou ROLLBACK. Exemplo:
Transaçõ es de escopo Suponha que, por
de lote : Aplicá vel apenas qualquer motivo, a
a MARS (Conjuntos de segunda instruçã o de
Resultados Ativos atualizaçã o deve atualizar
Mú ltiplos), uma transaçã o exatamente cinco linhas.
Transact-SQL explícita ou Se @@ROWCOUNT,
implícita iniciada em uma que controla o nú mero de
sessã o MARS se torna uma linhas afetadas por cada
A expressão CASE tem
transaçã o de escopo de instruçã o, for igual a
dois formatos:
lote. Uma transaçã o de cinco, a transação será
A expressã o CASE
escopo de lote nã o confirmada caso contrá rio
simples compara uma ele será cancelada.
expressã o com um confirmada ou revertida,
quando um lote é A declaraçã o
conjunto de expressõ es
concluído, é revertida ROLLBACK TRAN
simples para determinar o O exemplo acima abre
automaticamente pelo "desfaz" todo o trabalho
resultado. o banco de dados Agenda
SQL Server desde a correspondente
A expressã o CASE e inicia uma transação
A característica de instruçã oBEGIN TRAN. Ela
pesquisada avalia um -BEGIN TRAN
uma transaçã o e sua nã o vai executar qualquer
conjunto de expressõ es A seguir atualiza a
diferença para uma instruçã o de atualizaçã o.
booleanas para coluna nome para
execução em lote é que ela Note que o Query
determinar o resultado. 'Macorati' quando o
pode desfazer todas as Analyzer irá mostrar-lhe
Os dois formatos dã o Id for igual a 1
operaçõ es realizada desde mensagens indicando que
suporte a um argumento Depois atualiza a
o início da transação linhas foram atualizadas,
ELSE opcional. coluna para 'Jose Carlos
usando a mas você pode consultar o
CASE pode ser usada Macoratti'
instruçã oROLLBACK banco de dados para
em qualquer instruçã o ou quando o Id for igual a
TRANSACTION. verificar se as
clá usula que permita uma 1
Para indicar o início de modificaçõ es realmente
expressã o vá lida. Ao final confirmamos
uma transaçã o usamos a ocorreram.
(Select,Update,Delete,etc.) as operaçõ es e
instruçã o BEGIN Uma instrução
Uma transação encerramos a transaçã o
TRANSACTION OU BEGIN ROLLBACK
(Transaction) é uma atualizando o banco de
TRAN TRANSACTION nã o
ú nica unidade de trabalho. dados comCOMMIT TRAN
Esta instruçã o marca o produz nenhuma
Se uma transaçã o tiver Para desfazer as
ponto inicial de uma mensagem para o usuá rio.
êxito, todas as operaçõ es realizadas
Se forem necessá rios Aceitar parâ metros de
avisos em procedimentos entrada e retornar vá rios
armazenados ou Triggers, valores no formulá rio de
use as parâ metros de saída para
instruçõ esRAISERROR ou o procedimento de
Observe que criarmos
PRINT. RAISERROR é a chamada ou lote.
o parâ metro cidade do
instruçã o preferida para Conter instruçõ es de
tipo varchar para ser
indicar erros. programaçã o que
usado na clá usula WHERE.
Instruçõ es ROLLBACK executam operaçõ es no
O comando SQL usado
TRANSACTION em banco de dados, inclusive
é:
procedimentos chamar outros
SELECT * from
armazenados nã o afetam procedimentos.
Contatos WHERE
instruçõ es subsequentes Retornar um valor de
cidade = @ cidade
no lote que chamou o status a um procedimento
No editor do SQL Ao final teremos as
procedimento; instruçõ es de chamada ou lote para
Server vamos criar a stored procedures criadas
subsequentes no lote sã o indicar êxito ou falha (e o
stored procedure no banco de dados e
executadas. motivo da falha).
exibeContatos que irá prontas para uso
Instruçõ es Quando um
retornar todos os contatos conforme a figura abaixo:
ROLLBACK procedimento é executado
TRANSACTION pela primeira vez, ele é cadastrados na tabela
em compilado para Contatos.
Triggers determinar um plano de
finalizam o lote contendo acesso ideal para
a instruçã o que ativou o recuperar os dados. As
trigger; instruçõ es execuçõ es subsequentes
subsequentes no lote sã o do procedimento poderã o
executadas. reutilizar o plano já
gerado se ele ainda estiver Digite o comando
Procedimento no cache de planos do conforme acima e clique
armazenado ou Stored Mecanismo de Banco de no botã o Save para salvar
Procedure é uma coleçã o Dados. a stored procedure no
de comandos SQL Um ou mais banco de dados;
executados contra um procedimentos podem ser A instruçã o SQL usada é:
banco de dados que executados SELECT * from Contatos
encapsula tarefas automaticamente quando
repetitivas, aceita o SQL Server é iniciado. Os Repita o procedimento
parâ metros de entrada e procedimentos devem ser agora para criar a stored
retorna um valor de status criados pelo procedure
(para indicar aceitaçã o ou administrador do sistema SelecionaContatosPorIdad
falha na execução). no banco de dados mestre e onde iremos retornar
Criando um banco de
O procedimento e executados com funçã o todos os contatos com
idade superior a uma dados
armazenado pode reduzir de servidor sysadmin
o trá fego na rede, visto como um processo de idade definida.
Antes de começar:
que os comandos sã o segundo plano.
executados diretamente A instrução CREATE
no servidor. Além de Limitaçõ es e
PROCEDURE nã o pode ser
melhorar a performance, restriçõ es
combinada com outras
criar mecanismos de No máximo 32.767
instruçõ es Transact-SQL
segurança entre a bancos de dados podem
em um ú nico lote.
manipulaçã o dos dados do Observe que criarmos ser especificados em uma
Exemplo:
Banco de Dados. o parâ metro idade do tipo instâ ncia do SQL Server.
A seguir temos um
Para criar uma Stored int para ser usado na
exemplo de como criar
Procedure usamos a cláusula WHERE. Pré-requisitos
stored procedures ou
instruçã o : CREATE O comando SQL usado A instrução CREATE
procedimentos
PROCEDURE que cria um é: DATABASE deve ser
armazenados no SQL
procedimento executada em modo de
SELECT * from Contatos
Server usando o banco de
armazenado Transact-SQL WHERE idade > @ idade confirmaçã o automá tica
dados Clientes.mdf e a
ou CLR (Common (o modo padrã o de
tabela Contatos.
Language Runtime) no Novamente repita o gerenciamento de
Abra o DataBase
SQL Server. processo para criar a transaçõ es) e nã o é
Explorer e apó s expandir
Assim Procedimentos stored procedure permitida em uma
os objetos do banco de
armazenados sã o selecionaContatosPorCida transaçã o explícita ou
dados Clientes.mdf clique
semelhantes a de que irá retornar os implícita.
com o botã o direito do
procedimentos em outras mouse sobre o objeto contados para uma
linguagens de determinada cidade; Recomendaçõ es
Stored Procedures e
programaçã o no sentido selecione a O backup do banco de
de que podem: dados mestre deve ser
opção Add New Stored
feito sempre que um
Procedure;
banco de dados de usuá rio de transaçã o, na grade cria o banco de dados Se o banco de dados
for criado, modificado ou Arquivos de banco de Sales. Como a palavra- estiver envolvido em
descartado. dados , clique na célula chave PRIMARY nã o é envio de logs, remova o
Ao criar um banco de apropriada e digite o novo usada, o primeiro arquivo envio do logs.
dados, torne os arquivos valor. Para obter mais (Sales_dat) torna-se o Se o banco de dados
de dados tã o grandes informaçõ es, consulte Add arquivo primá rio. Como for publicado para
quanto possível, com base Data or Log Files to a nem MB nem KB é replicaçã o transacional,
na quantidade má xima de Database. especificado no parâ metro publicado ou com
dados que você espera ter Para alterar o SIZE do arquivo Sales_dat , assinatura para replicação
no banco de dados. agrupamento do banco de ele usa MB e é alocado em de mesclagem, remova a
dados, selecione a pá gina megabytes. O backup do replicaçã o do banco de
Segurança Opçõ es e depois marque banco de dados Sales_log é dados.
Permissõ es um agrupamento na lista. alocado em megabytes
Requer a permissã o Para alterar o modelo porque o sufixo MB é Recomendaçõ es
CREATE DATABASE no de recuperaçã o, selecione explicitamente declarado Pense em fazer um
banco de dados mestre, ou a pá gina Opçõ es e marque no parâ metro SIZE . backup completo do
requer a permissão um modelo de Transact-SQL banco de dados. Um banco
CREATE ANY DATABASE recuperação na lista. USE master ; de dados excluído só
ou ALTER ANY Para alterar opçõ es de GO poderá ser recriado por
DATABASE. banco de dados, selecione CREATE DATABASE meio da restauraçã o de
Para manter controle a pá gina Opçõ es e depois Sales um backup.
sobre o uso do disco em modifique as opçõ es de ON
uma instâ ncia do SQL banco de dados. Para ( NAME = Sales_dat, Segurança
Server, a permissã o para obter uma descriçã o de FILENAME = Permissõ es
criar bancos de dados cada opçã o, consulte 'C:\Program Para executar DROP
geralmente é limitada a Opçõ es ALTER DATABASE Files\Microsoft SQL DATABASE, a um mínimo,
algumas contas de logon. SET (Transact-SQL). Server\MSSQL13.MSSQLS um usuá rio deve ter
Para adicionar um ERVER\MSSQL\DATA\sal permissão CONTROL no
- Usando o SQL Server novo grupo de arquivos, edat.mdf' banco de dados.
Management Studio clique na pá gina Grupos ,
Para criar um banco de Arquivos . Clique em SIZE = 10, - Usando o SQL Server
de dados Adicionar e, em seguida, MAXSIZE = 50, Management Studio
No Pesquisador de digite os valores para o FILEGROWTH = 5 ) Para excluir um banco
Objetos, conecte-se a uma grupo de arquivos. LOG ON de dados
instâ ncia do Mecanismo Para adicionar uma ( NAME = Sales_log, No Pesquisador de
de Banco de Dados do SQL propriedade estendida ao FILENAME = Objetos, conecte-se a uma
Server e expanda-a. banco de dados, selecione 'C:\Program instâ ncia do Mecanismo
Clique com o botã o a pá gina Propriedades Files\Microsoft SQL de Banco de Dados do SQL
direito do mouse em Estendidas . Server\MSSQL13.MSSQLS Server e expanda-a.
Bancos de Dados e clique Na coluna Nome , ERVER\MSSQL\DATA\sal Expanda Bancos de
em Novo Banco de Dados. digite um nome para a elog.ldf', Dados, clique com o botã o
Em Novo Banco de propriedade estendida. SIZE = 5MB, direito do mouse no banco
Dados, digite um nome de Na coluna Valor , digite MAXSIZE = 25MB, de dados para excluí-lo e
banco de dados. o texto da propriedade FILEGROWTH = depois clique em Excluir.
Para criar o banco de estendida. Por exemplo, 5MB ) ; Confirme se o banco
dados aceitando todos os digite uma ou mais GO de dados correto está
valores padrã o, clique em instruçõ es que descrevem selecionado e depois
OK; do contrá rio, passe o banco de dados. Excluir Banco de clique em OK.
para as etapas opcionais a Para criar o banco de dados
seguir. dados, clique em OK. - Usando Transact-SQL
Para alterar o nome do Antes de começar Para
proprietá rio, clique em Usando Transact-SQL excluir um
(…) para selecionar outro Para criar Limitaçõ es e banco de
proprietá rio. um banco restriçõ es dados
System_CAPS_ICON_no de dados Conecte-
Bancos de dados de
te.jpg Observação Conecte- se ao
sistema nã o podem
A opçã o Usar se ao Mecanism
ser excluídos.
indexaçã o de texto Mecanism o de
completo sempre está o de Banco de
Pré-requisitos
marcada e esmaecida Banco de Dados.
Exclua todos os
porque, a partir do SQL Dados. Na barra Padrã o,
instantâ neos do banco de
Server 2008, todos os Na barra Padrã o, clique em Nova
dados que existam no
bancos de dados de clique em Nova Consulta.
banco de dados. Para
usuá rios sã o habilitados Consulta. Copie e cole o exemplo
obter mais informaçõ es,
para texto completo. Copie e cole o exemplo a seguir na janela de
veja Remover um
Para alterar os valores a seguir na janela de consulta e clique em
instantâ neo de banco de
padrã o dos arquivos de consulta e clique em Executar. O exemplo
dados (Transact-SQL).
dados primá rios e de log Executar. Este exemplo remove os bancos de
dados Sales e NewSales . remove o arquivo dos DBA´s, como dos operaçõ es (físicas e
Transact-SQL test1dat4. administradores de ló gicas), que o banco
USE master ; Transact-SQL sistemas, desenhistas e executa para realizar as
GO USE master; arquitetos de aplicaçã o e consultas e criar o
DROP DATABASE GO também dos conjunto de resultados
Sales, NewSales ; ALTER DATABASE desenvolvedores da desejados. O otimizador
GO AdventureWorks2012 aplicaçã o que extrairá as de consultas, que é um
REMOVE FILE informaçõ es do banco. mecanismo pertencente
Acompanhamento: test1dat4; É claro, que na questã o ao banco de dados, no
depois de excluir um GO de desempenho e na processo de otimizar uma
banco de dados otimizaçã o de consultas, consulta gera o plano de
Faça backup do banco *Fontes outros fatores necessitam execução.
de dados mestre. Se o : ser considerados, por Este processo leva em
mestre precisar ser https:// exemplo, a escolha do conta alguns
restaurado, todos os technet. sistema operacional e sua determinantes fatores,
bancos de dados que microso correta configuraçã o como ( Pilecki, 2007):
tiverem sido excluídos ft.com/ podem melhorar em torno As tabelas envolvidas
desde o ú ltimo backup do pt- de até 50% o desempenho e como é a condiçã o
mestre ainda terã o br/library/ms174173(v=s de um banco de dados. Há dos joins;
referências nas exibiçõ es ql.105).aspx também a necessida de A utilização de índices;
do catá logo do sistema e https://msdn.microsof identificar quais sã o as Os predicados de
poderã o gerar mensagens t.com/pt-br/library consultas mais lentas e pesquisa
de erro. http://www.macoratti ajustar o hardware que existentes nas
.net/14/02/sql_tsql1.h suportará o sistema como consultas; A lista
Excluir arquivos de tm um todo (Duarte, 2004). de colunas
dados ou de log de um Independente se o retornadas.
banco de dados Análise de sistema de banco de dados É importante destacar,
desempenho41 esteja sendo executado que em consultas
- Usando o SQL Server A performance de um em uma má quina, com o complexas, o otimizador
Management Studio banco está relacionada hardware mais potente do de consulta não avaliará
Para excluir arquivos principalmente no tempo mercado, o desempenho todas as possibilidades
de dados ou de log de um de resposta de suas poderá sofrer influências possíveis, mas sim,
banco de dados operaçõ es tentando negativas através de tentará encontrar um
No Pesquisador de atender a expectativa do consultas mal escritas, plano que seja bom para
Objetos, conecte-se a uma usuá rio (Murara, 2008). inadequadas, chamadas determinadas consultas.
instâ ncia do Mecanismo No mundo corporativo também por consultas de Isto se deve, porque o
de Banco de Dados do SQL atual, a informação tem fuga ( Pilecki, 2007). custo às vezes de avaliar
Server e expanda-a. um valor crucial nas Segundo Craig Mullins, todas as possibilidades
Expanda Bancos de atividades de todas as 80% dos problemas de para gerar o melhor plano
Dados, clique com o botã o empresas, por isso, deve- desempenho em um pode comprometer o
direito do mouse no banco se haver sempre uma banco de dados, sã o ganho de desempenho,
de dados do qual deseja preocupaçã o no causados por có digos SQL por isso é de suma
excluir o arquivo e depois desempenho dos sistemas ineficientes, mas existem importâ ncia entender este
clique em Propriedades. de banco de dados outros fatores que processo e suas limitaçõ es
Selecione a pá gina utilizados, até mesmo implicam na lentidã o de (Pilecki, 2007).
Arquivos . para reduzir o consultas em um banco de O SQL Server busca as
Na grade Arquivos de investimento de hardware dados, tais como informaçõ es de sua base
bancos de dados , e software, minimizar o (Gervazoni, 2005): de duas formas, através de
selecione o arquivo a ser tempo de resposta, - A falta, table scan, onde é feito
excluído e, depois, clique principalmente na busca desatualização ou uma varredura por toda a
em Remover. de informaçõ es, índices mal tabela, ou por uso de
Clique em OK. melhorando a criados; índices (Gervazoni, 2005).
produtividade no trabalho - A estrutura e Mesmo que a tabela
e aumentando a baixa acessada tenha ou nã o
- Usando Transact-SQL
credibilidade e os bons comunicação na índices criados, o SQL
Para excluir arquivos
negó cios das empresas. rede utilizada; - Server guarda as
de dados ou de log de um
A preocupação no Memó ria estatísticas de cada
banco de dados
desempenho de um banco insuficiente no campo, principalmente
Conecte-se ao servidor; - A falta
de dados deve mobilizar dos mais acessados,
Mecanismo de Banco e desatualizaçã o
todas as pessoas porque para montar seu
de Dados. de estatísticas e
envolvidas na construçã o plano de execuçã o o
Na barra Padrã o, etc.
de um sistema. Esta otimizador utiliza-se
clique em Nova
responsabilidade é tanto destas estatísticas.
Consulta.
Isto porque, antes do
Copie e cole o exemplo 41 Fonte: otimizador do SQL Server,
a seguir na janela de
http://www.linhadecodigo.com.br/
Plano de execução optar por utilizar ou nã o
consulta e clique em
artigo/2412/analise- O plano de execuçã o um índice de uma tabela,
Executar. Este exemplo dedesempenho-entre-os-bancos-de- determina a sequência de este consulta as
dados-sql-sever-x-oracle.aspx
estatísticas dos campos a operaçã o. O Oracle analisa desenvolvedores e Figura 2. O
fim de encontrar o método as clá usulas From e administradores de diagrama de
mais rá pido para trazer as Where da consulta, e em banco de dados, entidade
informaçõ es desejadas, seguida, como o SQL verifiquem se as relacionamento
pois mesmo com a correta Server, o seu otimizador estatísticas estã o sendo
criação de um índice, pode gera os planos de atualizadas Para que as tabelas
acarretar em um nã o execução e verifica qual é periodicamente. nã o fossem criadas
rendimento no momento o plano que possui o junto com outras
da consulta (Gervazoni, menor custo para obter o Ambiente de testes tabelas de sistemas
2005). resultado desejado. Como o intuito deste existentes, tanto na
O otimizador de Um dos fatores que trabalho é realizar instalaçã o do SQL
consulta do SQL Server, se podem influenciar a alguns testes de Server como no Oracle,
baseia em custo, este tenta escolha do plano de performance, entre o estas foram projetadas
gerar o plano de execução execução do Oracle são as SQL Server e o Oracle, em cima dos conceitos
com o menor custo Hints (dicas), realizando algumas de table space para o
estimado. Esta estimativa determinadas pelos consultas de diferentes Oracle e de filegroups
é baseada nas estatísticas desenvolvedores, assim, o níveis de dificuldades, para o SQL Server.
de dados disponível para otimizador nã o gerará um atualizaçõ es e remoçõ es Teve-se a
o otimizador quando este conjunto de planos de de dados, com o preocupaçã o de criar
avalia as tabelas execução, apenas utilizará objetivo de medir o todo o ambiente de
envolvidas na consulta. a dica inserida pelo tempo de resposta testes, para que este
Portanto é importante desenvolvedor. destes SGBD´s, se faz seja o mais semelhante
manter as estatísticas E também como o necessá rio detalhar para as duas
atualizadas, se nã o, o SQL Server, outro tipo como será o ambiente plataformas, assim, toda
otimizador nã o terá de influência que o de testes, o sistema a estrutura foi
informaçõ es necessá rias otimizador de consulta operacional utilizado, desenvolvida no Oracle,
para aperfeiçoar uma do Oracle pode sofrer, é hardware e dificuldade onde logo depois foi
consulta e neste caso será o valor das estatísticas encontradas. exportado um arquivo.
gerado um plano com de tabelas e índices, Na figura 2 está SQL com os có digos de
estimativas erradas pois esta, armazena representado o DER inserts para serem
(Pilecki, informaçõ es da (Diagrama de entidade corrigidos algumas
Na instalaçã o do SQL quantidade de registros, e relacionamento) onde peculiaridades
Server, existe a opçã o de blocos e tamanho médio se baseará a formulaçã o existentes de cada
criar e atualizar dos registros, entã o, dos có digos SQL banco (como o caso do
automaticamente as caso estas estatísticas utilizados para os testes comando to_date do
estatísticas, mas com esta estejam desatualizadas, e na tabela 1 a Oracle, para o
opção, as atualizaçõ es sã o o otimizador poderá configuraçã o do convert(datetime) do
realizadas depois que haja gerar planos computador e dos SQL Server) para serem
o acú mulo de algumas inadequados nã o sistemas utilizados. devidamente inseridos
modificaçõ es, e também auxiliando no processo no SQL Server.
leva em consideraçã o o de otimizaçã o das Tabela 1: Na populaçã o das
tamanho das tabelas em consultas Configuraçã o do tabelas foi desenvolvido
até 8Mb, acima deste (Ronconi,2005). computador e dos um script, como mostra a
valor, o intervalo Como visto SGBD´s figura 3, para cada tabela,
aumenta, mas estas anteriormente, tanto o nele foi utilizado um
atualizaçõ es podem ser otimizador do SQL comando pertencente a
realizadas manualmente Server, como o do linguagem Oracle, o
(Gervazoni, 2005). Oracle, se baseiam em Random, com este
Já o Oracle, possui uso de estatísticas para comando, pode-se gerar
algumas maneiras de gerar o melhor plano de vá rios valores aleató rios
acessar os dados de uma execução para uma para algumas colunas. Na
tabela, como a leitura determinada consulta. tabela 2 é detalhado as
seqü encial (full table Segue abaixo alguns dos tabelas e os nú meros de
scan), busca pelo motivos que levam a registros pertencentes a
identificador do registro atualizaçã o destas cada uma.
(ROWID scan), busca pelo estatísticas (Gervazoni,
índice (index scan, cluster 2005): Tabela 2. Nú mero
scan e hash scan) e busca - Inserçã o de inú meros de registros das
por amostragem registros; tabelas do teste
(sample table - A remoção de muitos
scan) registros;
(Ronconi,2005). - Quando a tabela for
Para determinar qual Será truncada;
a melhor maneira de E quando houver
realizar uma consulta, o muitas alteraçõ es nos Key
banco de dados Oracle values de índices.
examina quais as formas Portanto, é
disponíveis para a importante que os
tempo da primeira Os resultados dos testes, apresentados nas tabelas de
É importante execução com as demais; resultados, se apresentam em segundos.
mencionar a dificuldade Nã o será alterado os Abaixo na ta
bela 3, segue os códigos utilizados nos testes:
encontrada para replicar métodos de otimização
estes dados no SQL utilizados pelos pró prios Tabela 3. Comandos SQL utilizados nos testes.
Server, pois os arquivos otimizadores de cada
exportados do Oracle banco;
tiveram que ser divididos
em arquivos com 50 mil
registros, pois acima deste
valor o Management
Studio Express nã o
conseguia executar o
comando de insert nas
tabelas.
No final deste
processo, os dois bancos
possuíam o mesmo
nú mero e as mesmas
informaçõ es.

Tabela 4. Código SQL do Update

Tabela 5. Código SQL do delete

Figura 3. Script de
populaçã o da
tabela Empregado

Como forma de nã o
beneficiar nenhum dos Resultados alcançados
SGBD´s na realiazaçã o dos Seguindo os critérios de avaliação e códigos SQL´s
testes e obter resultados descritos acim
a, obtiveram
-se os seguintes resultados, que são
imparciais, foram detalhados na tabela 6.
seguidos alguns
parâ metros, como: Tabela 6. Resultado obtido pelo Oracle e SQL Server
No momento em que
um SGBD for testado, o
outro será desabilitado
para nã o interferir no
desempenho do primeiro;
Para cada teste
realizado, o
computador será
reiniciado;
A mesma consulta será
realizada três vezes
seguidas, tirando a sua
média, assim, pode-se A partir destes resultados, observa-se uma relativa
medir a diferença de superioridade do Oracle nas consultas 1, 2, 5 e 7, sendo mais
rá pido em 77.54%, 61.12%, 11.68% e 61.64%
respectivamente, em relaçã o ao SQL Server, no entanto, o SQL 4
Server obteve um resultado superior ao Oracle nas consultas Entretanto, nem seletividade é a
3, 4 e 5 com uma diferença percentual de 16.42%, 26.12% e sempre o otimizador porcentagem expressa
28.58% respectivamente. realiza com êxito seu através da fó rmula abaixo
Nota-se que nas sete consultas realizadas, o Oracle propó sito pelo fato das (Soukup e Delaney, 1999):
apresentou-se mais á gil em quatro, e nas que o SQL Server consultas não terem sido
teve um melhor desempenho, a diferença entre os dois SGBD´s escritas de forma
foi menor em comparaçã o as do Oracle. eficiente. Por este motivo,
Fica assim evidenciado, que os otimizadores de consultas deve-se conhecer as três
do Oracle e SQL Server possuem formas diferentes de fases que o otimizador
Se a relaçã o entre o
processar a mesma consulta, mas ambos suportaram bem os realiza durante a execução
nú mero de registros
testes e obtiveram resultados semelhantes confirmando a de um consulta. A seguir,
qualificados e o total de
qualidade de cada um. serã o descritas essas três
registros for baixa, o
Em relaçã o ao teste de update, que afetou 226.898 mil fases.
índice é altamente
registros, e de delete, que apagou 102.439 mil registros, o SQL seletivo e ú til, caso
Server obteve um desempenho bem mais significativo em Análise da consulta contrá rio o índice tem
relaçã o ao tempo apresentado pelo Oracle. Nesta primeira fase da pouca seletividade e nã o é
No update realizado, o sistema da Microsoft, foi 83.49% otimizaçã o, conforme ú til. O índice será ú til
mais rá pido e no teste do delete, O SQL Server novamente SOUKUP & DELANEY quando a relaçã o é de 5%
obteve um melhor resultado com 36.44%. (1999), o otimizador ou menos. Caso o índice
Assim sendo, em um balanço geral de todos os testes examina cada clá usula da tenha uma seletividade
realizados, o SQL Server foi o SGBD que apresentou um consulta e determina se maior de 5%,
melhor desempenho em relação ao Oracle. ela pode ser ú til na provavelmente nã o será
limitaçã o do volume de utilizado, ou ainda um
Otimização de dados que devam ser outro índice será
consultas42 percorridos, ou seja, se a escolhido ou a tabela será
O processamento de consultas, segundo SILBERSCHATZ et cláusula é ú til como percorrida através de uma
al. (1999), é uma atividade que permite extrair dados de um argumento de pesquisa varredura completa nos
banco de dados. Esta atividade inclui a tradução de consultas (SARG) ou como parte dos dados.
expressas em linguagens de alto nível do banco de dados em critérios de uniã o. Um índice é
expressõ es que podem ser implementadas no nível físico do Uma clá usula utilizada potencialmente ú til se sua
sistema de arquivos, otimizaçõ es, traduçõ es e avaliaçã o das como argumento de primeira coluna é usada
consultas. pesquisa é referida como no argumento de pesquisa
O custo do processamento de uma consulta é determinado sargable ou otimizá vel e e esse argumento
pelo acesso ao disco. Geralmente, há diversas estratégias pode fazer uso de um estabelece um limite
possíveis para processar uma determinada consulta, índice para recuperação inferior, um limite
principalmente se ela for complexa. A diferença entre uma mais rá pida. Uma SARG superior ou ambos, para
estratégia boa e uma ruim, em termos do nú mero de acessos limita uma pesquisa limitar a pesquisa. Além
de disco exigidos é frequentemente significativa e pode ser de porque especifica uma disso, se um índice
grande magnitude. Consequentemente, vale a pena gastar uma correspondência exata, contiver cada coluna
quantia significativa de tempo na seleçã o de uma estratégia um intervalo de valores referenciada em uma
boa para processar uma consulta. ou uma conjunçã o de dois consulta, mesmo que
Conforme DATE (2000), a otimizaçã o representa ao ou mais itens unidos pela nenhuma dessas colunas
mesmo tempo um desafio, visto que, a otimizaçã o é uma função ló gica AND. seja a primeira do índice,
exigência para os sistemas relacionais quando se espera um A utilizaçã o da este índice é considerado
desempenho que atinja níveis pré-determinados, e uma cláusula SARG pode fazer ú til.
oportunidade, já que a otimizaçã o é favorecida pelo fato das uso de um índice para a A criaçã o e utilizaçã o
expressõ es relacionais estarem em um nível semâ ntico recuperaçã o mais rá pida de índices sã o tarefas
adequado para que seja possível essa otimizaçã o. de uma informação. muito importantes para a
Para que o banco de dados apresente um bom Entretanto, uma obtençã o de um bom
desempenho é preciso partir do pressuposto da existência de expressão que nã o é desempenho, pois os
uma boa estrutura de banco de dados, adequadamente sargable nã o pode limitar índices podem acelerar
normalizada e que possua índices ú teis. Além disso, é preciso a pesquisa, portanto, um substancialmente a
escrever consultas de forma otimizada. No entanto, deve-se índice nã o é ú til para recuperaçã o e a seleção de
enfatizar a importâ ncia de se conhecer como o otimizador de essas expressõ es. dados.
consultas funciona para melhor formular uma consulta ou Soukup e Delaney
para entender quais índices podem ser criados. Deve-se Seleção do índice (1999) citam os dois tipos
escrever as consultas da maneira mais intuitiva e tentar Na segunda fase, o de índices suportados
otimizá -las apenas se seu desempenho nã o parecer otimizador de consultas pelo SQL Server: índices
suficientemente bom (SOUKUP & DELANEY, 1999). determina se existe um setorizados (ou
Para cada tabela envolvida na consulta SQL, o otimizador índice para cada agrupados) e índices nã o
do SQLServer avalia os argumentos de pesquisa e avalia até cláusulasargable, avalia a setorizados (ou nã o
que ponto o índice pode excluir linhas de uma seleção. Quanto utilidade do índice agrupados). Os dois tipos
mais linhas puderem ser excluídas, menor será o nú mero de determinando a de índices têm como base
linhas a serem processadas. seletividade da cláusula e a á rvore B (balanced) -
estima o custo para que significa á rvore
encontrar as linhas balanceada. A á rvore B
42 Fonte: qualificadas. A propicia rá pido acesso aos
http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=118
dados pesquisando em um determinar se um item os dados retornados nã o
valor-chave do índice e, Seleção da união de dados em particular permanecessem em
pelo fato de ser Nesta terceira fase corresponde a um valor memó ria cache,
balanceada, localiza da otimizaçã o de já existente, dividindo impedindo, dessa forma, a
qualquer registro consultas, se a consulta os dados existentes em execuçã o mais rá pida da
exigindo envolve vá rias tabelas grupos baseados em pró xima consulta a ser
aproximadamente o ou é uma auto-união, o alguma propriedade. Os realizada.
mesmo volume de otimizador de consultas dados com o mesmo
recursos, sendo a avalia a seleçã o de valor sã o colocados Banco de Dados
velocidade de união e seleciona a num hash bucket. Para Utilizado - PUBS
recuperação coerente, estratégia de uniã o com verificar se um novo - O banco de dados
pois o índice tem o mesmo o menor custo. O valor possui um utilizado para
alcance por toda a parte. otimizador pode utilizar correspondente nos implementaçã o das
A figura 1 exibe a três estratégias para dados existentes, consultas SQL está
á rvore padrã o B, a figura processar uniõ es: simplesmente baseado no banco de
2 exibe a á rvore B para uniõ es de loop examinase o bucket dados PUBS que
um índice setorizado e a 3 aninhado, uniõ es de quanto ao valor correto. acompanha o software
a á rvore B para um índice mesclagem e uniõ es por SQL Server.
nã o setorizado. hash. Experimentos A figura 4 abaixo,
- Uniã o de loop computacionais e exibe o Modelo
aninhado: Neste tipo de resultados Entidade-
união sã o processadas Com o objetivo de Relacionamento do banco
um conjunto de loops demonstrar a execuçã o e de dados PUBS:
que extraem uma linha monitoramento de
da primeira tabela e consultas SQL, bem como
usam essa linha para comprovar a otimizaçã o
percorrer a tabela mais obtida através das
interna e assim por técnicas estudadas, foram
Figura 1 - Á rvore B diante, até que o necessá rias vá rias
padrã o para um resultado que satisfaça implementaçõ es de
índice do SQL seja utilizado para consultas SQL. As
Server. percorrer a ú ltima consultas foram
tabela. O nú mero de construídas de maneiras
iteraçõ es através de diferentes, com o intuito
qualquer um dos loops de demonstrar a diferença
é igual ao nú mero de de desempenho entre uma
varreduras que devem e outra forma de
ser realizadas. O implementaçã o (WEBER,
conjunto de resultados 2002).
é reduzido à medida Para auxiliar o Figura 4 - Diagrama
que ele avança de uma monitoramento destas En
tabela para outra dentro consultas, foram tid
de cada iteraçã o no utilizadas as opçõ es ad
loop. STATISTICS IO e-
- Uniã o de eSHOWPLAN que fazem Re
mesclagem: Pode-se parte da ferramenta lac
Figura 2 - Á rvore B utilizar uma uniã o de Query Analyzer do io
para um índice mesclagem quando nas SQLServer. na
setorizado. duas tabelas a serem É importante salientar me
unidas existirem índices o ambiente onde estes nt
setorizados na coluna testes de validaçõ es das o
de uniã o. Geralmente, o consultas foram do
otimizador escolhe a realizados, pois os tempos ba
estratégia de uniã o de de execuçõ es das nc
mesclagem quando as consultas podem variar o
duas entradas de uniã o substancialmente de um de
(as tabelas a serem ambiente para outro. Para da
unidas) já estã o esse trabalho, o ambiente do
classificadas na coluna é composto de SGBD SQL s
união. Server 7.0, sistema PU
- Uniã o por operacional Windows ME, BS
hash: A uniã o por hash sendo executado em um
pode ser utilizada computador com Resultados Obtidos
quando nã o existe processador Pentium III, A seguir serã o
nenhum índice ú til na 1Ghz e 128 RAM. apresentados algumas
coluna de uniã o em Apó s cada consulta, técnicas que foram
Figura 3 - Á rvore B
nenhuma das entradas. houve a desconexã o do implementadas neste
para um índice nã o
O hash permite banco de dados para que trabalho e os resultados
setorizado.
com relaçã o a utilizaçã o índice setorizado em SOUKUP & DELANEY da clá usula WHERE
dessas técnicas de modo a consultas delimitadas (1999) afirmaram sobre devem ser avaliadas em
melhorar o desempenho por intervalo de valores ordem dos atributos no primeiro lugar. Dessa
de execuçã o das consultas. ele mantém os dados índice. Esta ordem deve forma, um subconjunto
Cláusula Where fisicamente ordenados ser observada, pois o menor de dados é
De acordo com os em uma tabela em índice só é ú til se os retornado, reduzindo os
testes efetuados e relaçã o à chave, critérios da consulta overheads da consulta.
confirmando o que PLEW facilitando assim a correspondem aos Ao analisar os
& STEPHENS (2000) busca por um intervalo atributos localizados resultados obtidos pelas
afirmam, deve-se utilizar, determinado de dados. mais à esquerda na consultas, verificou-se
sempre que possível, a Índice Nã o-Setorizado chave de índice. que, independente da
clá usula WHERE para SOUKUP & Um exemplo disso é ordem da condiçã o mais
limitar o nú mero de linhas DELANEY (1999) uma lista telefô nica, ou restritiva, o desempenho
retornadas pela consulta. propõ em a utilizaçã o de seja, ela está organizada foi idêntico, ou seja, o
Isto porque a utilização da um índice nã o- em ordem alfabética otimizador do SQL Server
clá usula WHERE evita que setorizado em consultas composta de sobrenome adota a mesma estratégia,
o SQL Server realize uma que sejam altamente e nome. Para localizar indiferentemente da
varredura total na tabela, seletiva (seletividade <= um nú mero forma em que são
impedindo, assim, tempo 5%). conhecendo-se o posicionadas as condiçõ es
de processamento Nos testes sobrenome basta seguir de restriçã o na
desnecessá rio. realizados percebeu-se a ordem alfabética para cláusula WHERE. >
Select* que a recuperaçã o de encontrar o nú mero Ansi Join X Join SQL-
Nã o deve-se usar dados usando índice desejado. No caso de 92
SELECT * para retornar nã o-setorizado envolve tentar localizar o Na tentativa de
todos os atributos se for vá rias leituras para nú mero conhecendo-se verificar se há diferença
necessá rio apenas dados determinar os dados a apenas o nome, será de desempenho ao utilizar
de alguns atributos, serem retornados. Se necessá rio percorrer a duas consultas que
conforme explicitado por esta consulta for lista, pois o nome retornam os mesmos
McGEHEE (2000). altamente seletiva o poderá estar em dados mas que sã o
A busca por todos nú mero de leituras será qualquer pá gina da lista. escritas de forma
atributos produz um menor e será menor Ordem das tabelas em diferente (ANSI Join e Join
trabalho adicional, já também o tempo de um junçã o SQL-92), pode-se concluir
que será necessá rio ler execuçã o dessa Conforme afirma que ambas as consultas
a pá gina de dados de consulta. PLEW & STEPHENS sã o equivalentes.
cada linha para obter os Índice de Cobertura (2000), dependendo Confirmando SOUKUP
valores dos atributos Em consultas onde como o otimizador & DELANEY(1999),
que nã o fazem parte do os atributos a serem analisa a consulta, a constatou-se que é gerado
índice, caso o mesmo retornados sejam fixos, ordem das tabelas na o mesmo plano de
exista. é muito ú til a inclusã o cláusula FROM pode execuçã o através do
Cláusulas Sargable destes como parte da fazer diferença, listando mecanismo empregado
Nã o deve-se utilizar chave do índice nã o- as tabelas menores pelo otimizador do SQL
clá usulas WHERE que setorizado. Com isso, primeiro. Isto porque, Server para ambas as
nã o sejam sargable. nã o há necessidade de avaliando as tabelas consultas, resultando em
Clá usulas nã o-sargable leituras adicionais para menores em primeiro tempos de execuçã o
podem evitar que um obtençã o dos outros lugar, um subconjunto iguais. Predicado IN X
índice seja aproveitado atributos mencionados menor de dados é Operador OR
para melhorar o na consulta, retornado, reduzindo os Segundo PLEW &
desempenho da confirmando o que overheads da consulta. STEPHENS (2000), deve-
consulta, pois essas SOUKUP & DELANEY Analisando os se evitar o uso do
clá usulas nã o limitam a (1999) afirmaram. resultados obtidos pelas operador OR e no seu
pesquisa, ou seja, toda Clá usula Order By consultas, verificou-se lugar utilizar o predicado
linha deve ser PLEW & STEPHENS que, independente da IN, aumentado assim o
avaliada(SOUKUP & (2000) sugerem que a ordem das tabelas em desempenho da consulta.
DELANEY, 1999). cláusula ORDER BY deve uma junçã o, o Pode-se constatar
Através dos testes ser evitada, a menos que desempenho foi através dos testes
realizados foi possível seja realmente necessá rio. idêntico, ou seja, o efetuados que o
confirmar a veracidade Nos testes otimizador do SQL otimizador do SQL Server
dos fatos descritos acima. realizados usando esta a Server adota a mesma avalia e executa tanto o
Índice Setorizado cláusula supracitada estratégia, operador OR como o
SOUKUP & percebeu-se que ela indiferentemente da predicado IN da mesma
DELANEY (1999) representa umoverhead forma em que são forma e com o mesmo
afirmam que é adicional na consulta, posicionadas as tabelas tempo de execução.
importante usar índice degradando o na cláusulaFROM. Dessa forma, a
setorizado em consultas desempenho da mesma. Condiçã o mais restritiva afirmação de PLEW &
delimitadas por Ordem dos atributos em uma junçã o STEPHENS nã o tem
intervalo de valores. do índice Segundo PLEW & comprovaçã o neste
Isso ocorre porque Os testes realizados STEPHENS (2000), as ambiente.
quando usamos um confirmam o que condiçõ es mais restritivas Clá usula Group By
Deve-se avaliar adote uma estratégia um desses métodos armazenar qualquer
com cuidado diferente daquela pode variar para instrução SELECT como
a escolhida por ele. determinada consulta. uma view. Alguns
utilizaçã o Com base nas Clá usula Not In X exemplos comuns de
da clá usula execuçõ es das consultas Clá usulas Not Exists / views sã o:
GROUP BY (PLEW & analisadas, ficou evidente Left Outer Join - Um subconjunto
STEPHENS, 2000). o fato de que o otimizador A utilização da de registros ou
A utilizaçã o da nem sempre escolhe a cláusula NOT IN numa colunas de uma tabela
clá usula GROUP BY melhor estratégia de consulta acarreta um base.
envolve grandes união. Isto porque, na loop aninhado, - Uma união de
operaçõ es de primeira consulta, onde o resultando em um baixo duas ou mais tabelas
classificaçã o, fazendo com otimizador escolhe a desempenho da base.
que o tempo de resposta estratégia de uniã o, o consulta. Por isso, deve- - Uma associaçã o
da consulta seja tempo de execução ficou se utilizar em seu lugar de duas ou mais
prejudicado. em 11 segundos mais uma das seguintes tabelas base.
Cláusula Having lento que o melhor tempo cláusulas: NOT EXISTS - Um resumo
PLEW & STEPHENS de resposta que é de 5s, ou LEFT OUTER JOIN estatístico de uma
(2000) afirmam que a obtido através da checando a condiçã o tabela base.
utilizaçã o da clá usula estratégia de uniã o por NULL, conforme afirma - Um subconjunto
HAVING deve ser evitada, hash para esta consulta McGEHEE (2000). de outra view ou
pois acreditam que a em particular. Abaixo, na tabela 1, alguma combinaçã o de
mesma provoca um Isso ocorreu porque um quadro comparativo views e tabelas base.
overhead adicional, através da utilização da das técnicas de consultas
aumentando o tempo de estratégia de uniã o por SQL analisadas: Este exemplo cria a
execução da pesquisa. hash, os acessos às tabelas view dbo.EmployeeView
Foi constatado, envolvidas nas leituras no banco de dados
através da execuçã o das sã o reduzidas a apenas Northwind.
consultas, que tanto um acesso, enquanto que A view exibe duas
quando se utiliza a tanto na estratégia colunas da tabela
clá usula HAVINGcomo traçada pelo otimizador Employees
quando nã o se utiliza, o como na estratégia de (Funcioná rios).
desempenho é igual para união de loop aninhado,
ambas consultas, inclusive os acessos à s tabelas sã o USE Northwind
retornando o mesmo superiores, pois ambas GO
plano de execuçã o. estratégias realizam CREATE VIEW
Stored Procedures vá rias iteraçõ es que dbo.EmployeeView
A utilizaçã o de stored extraem uma linha da AS
procedures primeira tabela e a utiliza SELECT LastName,
(procedimentos para percorrer a tabela Firstname
armazenados) melhora o mais interna e assim por FROM Employees
desempenho de consultas diante, acarretando num
em um ambiente de rede, tempo maior de execuçã o.
SELECT * from
visto que os mesmos já Deve-se portanto, EmployeeView
estã o précompilados e testar todas as estratégias
contém um plano de de seleçã o de uniã o e nã o
Vantagens das Views
execução guardado na deixar isso por conta do
As views oferecem
memó ria (GUNDERLOY & otimizador.
diversas vantagens,
JORDEN, 2001). Clá usula Distinct
incluindo focalizar os
Pelo fato das consultas A clá usula DISTINCT
dados para os usuá rios,
nã o terem sido provoca um overhead
Tabela 1 - mascarar a complexidade
executadas em um adicional na consulta,
Tabela de dos dados, simplificar o
ambiente de rede, no qual conseqü entemente
técnicas de gerenciamento de
o tempo gasto para degrada o desempenho
otimizaçã o. permissõ es e organizar
recompilar a consulta nã o da mesma. Por isso,
dados para serem
armazenada nã o se deve-se utilizá -la com
O que são Views43 exportados para outros
mostra evidente, os extremo cuidado,
As views permitem aplicativos.
resultados foram os apenas em casos onde
realmente seja armazenar uma
mesmos para as consultas
consulta predefinida Focalizar os dados
analisadas. necessá rio. McGEHEE,
como um objeto no para os usuá rios
Seleçã o de Uniã o 2000)
banco de dados para As views criam um
O otimizador, Join X Subconsulta
uso posterior. As ambiente controlado que
geralmente, adota a Se puder escolher
tabelas consultadas em permite o acesso a dados
melhor estratégia de entre a utilizaçã o de
uma view sã o chamadas específicos enquanto
processar uniõ es (loop uma JOIN ou de uma
tabelas base. Com outros dados ficam
aninhado, mesclagem ou subconsulta, é
algumas exceçõ es, você ocultos. Dados
hash) em uma consulta. interessante testar os
pode nomear e desnecessá rios,
Entretanto, pode-se dois métodos, pois o
confidenciais ou
sugerir que o mesmo desempenho de cada
43 Fonte: Alfamídia inadequados podem ser
deixados fora de uma complexas. Outras CREATE VIEW especificar nomes de
view. consultas podem usar proprietá rio.nome_da_ colunas se:
Os usuá rios podem esses resultados view [(coluna [,n ])] Quaisquer colunas da
manipular a exibição dos resumidos. As views [WITH {ENCRYPTION view derivam de uma
dados em uma view da também permitem o | SCHEMABINDING | expressão aritmética, de
mesma forma que em uma particionamento dos VIEW_ uma funçã o interna ou de
tabela. Além disso, com as dados. Você pode colocar ME uma constante.
permissõ es apropriadas e partiçõ es individuais em TA Quaisquer colunas de
algumas restriçõ es, eles computadores separados. DA tabelas que serã o
podem modificar os dados Organizar dados para TA} associadas
produzidos pela view. serem exportados [,n compartilharem o mesmo
para outros ]] nome.
Mascarar a aplicativos AS Quando você cria
complexidade do Você pode criar uma inst views, é importante
banco de dados view com base em uma ruç testar a instruçã o
As views isolam do consulta complexa que ã o_ SELECT que define a
usuá rio a complexidade associe duas ou mais sele view para garantir que
do design do banco de tabelas e, depois, exportar ct o SQL Server retorne o
dados. Isso permite que os os dados para outro [WITH CHECK conjunto de resultados
desenvolvedores alterem aplicativo para aná lise OPTION] esperado. Depois de
o design sem afetar a adicional. escrever e testar a
interaçã o do usuá rio com Para executar a instrução SELECT e
o banco de dados. Além Criando views instrução CREATE verificar os resultados,
disso, os usuá rios podem Você pode criar VIEW, você deverá ser crie a view.
ver uma versã o mais views usando o Create participante do cargo de
amigá vel dos dados View Wizard administradores do Restrições às definições
usando nomes mais fá ceis (Assistente para criaçã o sistema (sysadmin), do de views
de compreender do que os de views), o SQL Server cargo de proprietá rio Ao criar views,
nomes abreviados Enterprise Manager do banco de dados considere as
geralmente usados nos (Gerenciador (db_owner) ou do cargo restriçõ es a seguir:
bancos de dados. corporativo do SQL de administrador de A instruçã o CREATE
Consultas complexas, Server) ou o Transact- linguagem de definiçã o VIEW nã o pode incluir as
incluindo consultas SQL. As views só podem de dados (db_ddladmin) cláusulas COMPUTE ou
distribuídas a dados ser criadas no banco de ou deverá ter a COMPUTE BY.
heterogêneos, também dados atual. permissã o CREATE A instruçã o CREATE
podem ser mascaradas VIEW. VIEW nã o pode incluir a
através de views. O Criando uma view Você também palavra chave INTO.
usuá rio consulta a view Quando você cria deverá ter a permissã o A instruçã o CREATE
em vez de escrever a uma view, o Microsoft® SELECT em todas as VIEW só poderá incluir a
consulta ou executar um SQL Server verifica a tabelas ou views à s cláusula ORDER BY se a
script. existência de objetos quais a view faz palavra-chave TOP for
aos quais a definiçã o da referência. Para evitar usada.
Simplificar o view faz referência. O situaçõ es em que o As views nã o podem
gerenciamento de nome da view deve proprietá rio de uma fazer referência a tabelas
permissõ es de seguir as regras dos view e o proprietá rio temporá rias.
usuá rios identificadores. A das tabelas subjacentes As views nã o podem
Em vez de conceder especificaçã o do nome sejam diferentes, fazer referência a mais de
permissão para que os do proprietá rio da view recomenda-se que o 1.024 colunas.
usuá rios consultem é opcional. usuá rio dbo possua A instruçã o CREATE
colunas específicas em Você deve todos os objetos de um VIEW nã o pode ser
tabelas base, os desenvolver uma banco de dados. Ao criar combinada com outras
proprietá rios de bancos convençã o de nomeaçã o o objeto, especifique instruçõ es Transact-SQL
de dados podem conceder consistente para fazer a sempre o usuá rio dbo em um ú nico lote.
permissõ es para que os distinçã o entre views e como o nome do Este é um exemplo
usuá rios consultem dados tabelas. Por exemplo, proprietá rio; caso de view que cria uma
somente através de views. você poderia adicionar contrá rio, o objeto será coluna (Subtotal)
Isso também protege as a palavra view como um criado com o seu nome (Subtotal), que calcula
alteraçõ es no design das sufixo para cada objeto de usuá rio como o os subtotais de um
tabelas base subjacentes. de view criado. Isso proprietá rio do objeto. pedido com base nas
Os usuá rios podem permite que você Especifique o colunas UnitPrice
continuar a consultar a diferencie facilmente conteú do de uma view (Preço unitá rio),
view sem interrupçã o. objetos semelhantes usando uma instruçã o Quantity (Quantidade) e
(tabelas e views) ao SELECT. Com algumas Discount (Desconto).
Melhorar o consultar a view limitaçõ es, as views USE Northwind
desempenho INFORMATION_SCHEM podem ser tã o GO
As views permitem A.TABLES. complexas quanto você CREATE VIEW
que você armazene os desejar. Você deverá dbo.OrderSubtotalsView
resultados de consultas (OrderID,
Subtotal) novamente ou executando selecionadas em uma Usar a opçã o WITH
AS a instruçã o ALTER VIEW. instrução CREATE ENCRYPTION
SELECT OD.OrderID, Alterando views VIEW, a lista de colunas Você pode
SUM(CONVERT A instruçã o ALTER é interpretada apenas criptografar as entradas
(money, VIEW altera a definiçã o de quando você cria a view da tabela syscomments
(OD.UnitPrice*Quantit uma view, incluindo views pela primeira vez. Para que contêm o texto da
y*(1- indexadas, sem afetar os ver as novas colunas na instrução CREATE VIEW
Discount)/100))*100) disparadores ou view, você deve alterá - especificando a opçã o
FROM [Order Details] procedimentos la. WITH ENCRYPTION na
OD armazenados definição de view. Antes
GROUP BY OD.OrderID dependentes. Isso permite Descartando views de criptografar uma
GO manter as permissõ es da Se nã o precisar mais view, certifique-se de
view. Essa instrução está de uma view, você que a sua definição
Este exemplo consulta sujeita às mesmas poderá remover sua (script) seja salva em
a view para ver os restriçõ es que a instruçã o definição do banco de um arquivo. Para
resultados. CREATE VIEW. Se dados executando a descriptografar o texto
descartar uma view e criá - instrução DROP VIEW. de uma view, você deve
SELECT * FROM la novamente, você deverá Ao descartar uma view, descartá -la e criá -la
OrderSubtotalsView reatribuir permissõ es a você remove sua novamente ou alterá -la
ela. definição e todas as e usar a sintaxe original.
Frequentemente, você ALTER VIEW permissõ es atribuídas a Neste exemplo, dbo.
cria views para fornecer proprietá rio.nome_da_ ela. Além disso, se os [Order Subtotals View]
um modo conveniente de view usuá rios consultarem é criada usando a opçã o
examinar informaçõ es de [(coluna [,...n ])] qualquer view que faça WITH ENCRYPTION
duas ou mais tabelas [WITH {ENCRYPTION referência à view para ocultar a definiçã o
associadas em um local | SCHEMABINDING | descartada, eles de view.
central. VIEW_ME receberã o uma
Neste TADA mensagem de erro. No USE Northwind
exemplo, TA} entanto, descartar uma GO
ShipStatusView [,...n]] tabela que faça CREATE VIEW dbo.
associa as AS referência a uma view [Order Subtotals
tabelas instru nã o descarta View]
Customers (Clientes) e çã o_se automaticamente a WITH ENCRYPTION
Orders (Pedidos). lect view. Você deve AS
[WITH CHECK descartá la SELECT OrderID,
USE Northwind OPTION] explicitamente. Sum(CON
GO Se você usar a opção A permissão para VERT(money,
WITH CHECK OPTION, descartar uma view é (UnitPrice*Q
CREATE VIEW
WITH atribuída ao uantity*(1Dis
dbo.ShipStatusView
ENCRYPTION, WITH proprietá rio da view e é count)/100))
AS
SCHEMABINDING ou intransferível. Esse é o *100) AS
SELECT OrderID,
WITH padrã o. No entanto, o Subtotal
ShippedDate,
VIEW_METADATA administrador do FROM [Order Details]
ContactName
sistema ou o GROUP BY OrderID
FROM Customers c
O exemplo a seguir proprietá rio do banco Modificando dados
INNER JOIN Orders o
altera EmployeeView para de dados pode através de views
ON c.CustomerID =
adicionar a coluna descartar qualquer As views nã o
O.CustomerID
Extension (Extensã o). objeto especificando o mantêm uma có pia
WHERE RequiredDate
nome do proprietá rio separada dos dados. Em
< ShippedDate
USE Northwind na instrução DROP vez disso, elas mostram
GO VIEW. o conjunto de
SELECT * FROM
ALTER VIEW resultados de uma
ShipStatusView
dbo.EmployeeView Ocultando definiçõ es consulta em uma ou
OrderID ShippedDate
AS de views mais tabelas base.
ContactName
SELECT LastName, Como os usuá rios Portanto, sempre que
FirstName, Extension podem exibir a você modifica dados em
Alterando e definição de uma view uma view, a tabela base
descartando views FROM Employees
usando o SQL Server é que é realmente
Frequentemente, você Enterprise Manager, modificada.
altera as views em Se você definir uma
view com uma instruçã o consultando Com algumas
resposta a solicitaçõ es de INFORMATION_SCHEM restriçõ es, você poderá
informaçõ es adicionais SELECT * e, depois,
alterar a estrutura das A.VIEWS ou inserir, atualizar ou
feitas pelos usuá rios ou a consultando a tabela do excluir livremente
alteraçõ es na definiçã o da tabelas subjacentes
adicionando colunas, as sistema syscomments, dados de tabelas
tabela subjacente. Você talvez você deseje através de uma view.
pode alterar uma view novas colunas nã o
aparecerã o na view. ocultar certas definiçõ es Em geral, a view deve
descartando-a e criando-a de views. ser definida em uma
Quando todas as
colunas são ú nica tabela e não deve
incluir funçõ es de views e como as views FROM Customers c CLUSTERED é
agregadas ou clá usulas permitem aperfeiçoar o INNER JOIN Orders o atualizado.
GROUP BY na instruçã o desempenho através do ON
SELECT. armazenamento dos c.CustomerID=o.Custo Diretrizes para a
resultados de consultas merID criação de views
Especificamente, as complexas e do INNER JOIN [Order indexadas
modificaçõ es feitas com o particionamento dos Details] od O otimizador de
uso de views: dados. ON o.OrderID = consultas determina
Nã o podem afetar Quando views que od.OrderID automaticamente se
mais de uma tabela associam diversas tabelas GROUP BY uma consulta se
subjacente. Você pode e avaliam expressõ es CompanyName beneficiará do uso de
modificar views derivadas complexas são aninhadas GO uma view indexada. Isso
de duas ou mais tabelas, dentro de outra view, ocorre mesmo que a
mas cada atualização ou poderá ser difícil Se os usuá rios tiverem consulta nã o faça
modificaçã o pode afetar determinar a origem problemas de referência à view
apenas uma tabela. imediata de qualquer desempenho ao indexada. Como prá tica
Nã o podem ser feitas problema de desempenho. executarem a consulta a geral, deixe que o
em certas colunas. Portanto, convém seguir para listar os itens otimizador de consultas
O SQL Server nã o considerar a criaçã o de mais vendidos da empresa determine quando usar
permite que você altere definiçõ es de views Ernst Handel, a origem do views indexadas.
uma coluna que seja o separadas, em vez de problema nã o estará Usando o Index
resultado de um cá lculo, aninhar views. imediatamente aparente. Tuning Wizard
como as colunas que (Assistente para ajuste
contêm valores No exemplo a SELECT * de índice), você pode
calculados, funçõ es seguir, FROM melhorar
internas ou funçõ es TopSalesView dbo.TopSalesView significativamente sua
agregadas de registros. consulta um WHERE capacidade de
Poderã o ocasionar subconjunto de registros CompanyName = determinar a melhor
erros se afetarem colunas de TotalPurchaseView. 'Ernst Handel' combinaçã o de índices e
à s quais a view não faz Usando views views indexadas para
referência. USE Northwind indexadas otimizar o desempenho
Por exemplo, você GO Você pode criar de consultas.
receberá uma mensagem CREATE VIEW índices em views. Uma Crie views indexadas
de erro se inserir em uma dbo.TopSalesView view indexada quando:
view um registro que AS armazena o conjunto de A melhoria de
esteja definido em uma SELECT * resultados de uma view desempenho em termos
tabela com colunas à s FROM no banco de dados. da maior velocidade na
quais a view nã o faz dbo.TotalPurchaseVie Devido ao tempo rá pido recuperaçã o dos
referência e que nã o w de recuperação, é resultados compensa o
permitem NULLs nem WHERE Subtotal > possível usar views maior custo de
contêm valores padrã o. 50000 indexadas para manutenção.
Serã o verificadas se a GO melhorar o desempenho Os dados subjacentes
opção WITH CHECK A definição de consultas. nã o sã o atualizados
OPTION tiver sido de view com freqü ência.
especificada na definiçã o Criando uma view As consultas
da view. dbo.TopSalesView indexada executam uma
A opção WITH CHECK oculta a Crie uma view quantidade significativa
OPTION força todas as complexidade da consulta indexada de associaçõ es e
instruçõ es de modificaçã o subjacente usada para implementando um agregaçõ es que
de dados que são criar TotalPurchaseView, índice UNIQUE processam vá rios
executadas na view a que associa três tabelas CLUSTERED em uma registros ou sã o
obedecer a certos base. view. Os resultados da executadas
critérios. Esses critérios view são armazenados freqü entemente por
sã o especificados na USE Northwind nas pá ginas do nível vá rios usuá rios.
instruçã o SELECT que GO folha do índice de Restriçõ es à criaçã o de
define a view. Se os CREATE VIEW agrupamento. views indexadas
valores alterados dbo.TotalPurchaseVie Depois de criar o Ao criar views
estiverem fora do w índice UNIQUE indexadas, considere
intervalo da definiçã o da AS CLUSTERED, você as restriçõ es a seguir:
view, o SQL Server SELECT poderá criar outros O primeiro índice
rejeitará as modificaçõ es. CompanyName, índices nessa view. Uma criado em uma view deve
Sum(CONVERT(mone view indexada reflete ser um índice de
Otimizando o y, automaticamente as agrupamento exclusivo.
desempenho com o (UnitPrice*Quantity*( modificaçõ es efetuadas Você deve criar a view
uso de views 1- nos dados das tabelas com a opção
Esta seção descreve as Discount)/100))*100) base. À medida que os SCHEMABINDING.
consideraçõ es sobre o AS Subtotal dados sã o alterados, o
desempenho para o uso índice UNIQUE
A view pode fazer dependências no SQL banco de
referência a tabelas base, Server Enterprise dados, (A) o N
mas nã o a outras views. Manager para certificar- cabeçalho de o
Você deve usar nomes se de que não existam uma tabela r
de duas partes para fazer dependências de um contém os m
referência a tabelas e objeto que você planeja atributos. a
funçõ es definidas pelo descartar. (B) o l
usuá rio. Nunca exclua entradas modelo do atributo é o i
As conexõ es da tabela do sistema conjunto de valores z
subseqü entes syscomments. Se o seu permitidos. a
devem ter aplicativo exigir que a (C) o ç
as definição nã o esteja cabeçalho de uma ã
mesmas visível para outras tabela contém o
configuraçõ es de opçõ es pessoas, inclua a opção instâ ncias.
para usar a view WITH ENCRYPTION com a (D) o (C) Decomposição
indexada. instrução CREATE VIEW domínio do atributo é (D) Agregaçã o
Você deve usar a ou ALTER VIEW. a sua descriçã o. (E) Associaçã o
propriedade Certifique-se de salvar a (E) o corpo
IsIndexable da função definição do script antes da tabela contém 05. (COREN-SP -
OBJECTPROPERTY para de criptografá -lo. relacionamentos Administrador de Banco
certificarse de que Avalie qualitativos. de Dados - VUNESP
possa indexar uma cuidadosamente se você /2013) Em um banco de
view. deve criar views baseadas 03. (TCE-RO - dados relacional, o
em views. Elas podem Técnico em Informática conceito de instâ ncia
Prá ticas ocultar complexidades e - CESGRANRIO /2007) A representa o conjunto
recomendadas poderiam ser a origem de chave candidata que é (A) de
As prá ticas problemas de escolhida pelo projetista usuá rios vá lidos em
recomendadas a seguir desempenho. do banco de dados como determinado
devem ajudá -lo a usar e de significado principal momento.
gerenciar views em seus Q para a identificaçã o de (B) de
bancos de dados: u entidades, dentro de um valores vá lidos de
Você deve desenvolver e conjunto de entidades, é a cada atributo.
uma convençã o de s chave: (C) dos
nomeação consistente t (A) do sistema. atributos que admitem
para fazer a distinçã o õ (B) do modelo. valores nulos.
entre views e tabelas. e (C) relacional. (D) (D) dos
Especifique dbo s primá ria. dados armazenados
como o proprietá rio (E) biunívoca. em determinado
quando criar views. O 01. (TRF - 4ª REGIÃO instante.
dbo deve ser - Técnico Judiciário - 04. (Petrobras - (E) dos
proprietá rio de todos os Informática FCC/2010) Engenheiro de atributos que formam
objetos aos quais a Num banco de dados Equipamento Júnior - as chaves primá rias de
definiçã o de view faz relacional, CESGRANRIO /2012) todas as tabelas.
referência. Isso torna (A) as tuplas Qual processo aplicado a R
desnecessá rio necessitam de um esquema relacional e
especificar o nome do informaçõ es em todas as tem por um de seus s
proprietá rio quando colunas. objetivos minimizar as p
você consulta a view (B) quando um redundâ ncias em um o
porque o proprietá rio campo chave de uma banco de dados s
do banco de dados é o tabela Y é inserido como relacional? t
proprietá rio padrã o. O um campo na tabela X, A a
proprietá rio do banco diz-se que ele é uma chave ) s
de dados também tem primá ria na tabela X.
permissão em todos os (C) um registro é um P 1. Resposta: E
objetos subjacentes do atributo de uma tabela. i Correto! Podem existir
banco de dados, (D) uma coluna é v campos nulos.
evitando, assim, uma instâ ncia de uma o 2. Resposta: A
possíveis cadeias de tabela. t "Na representaçã o
propriedades (E) os registros nã o e grá fica os nomes de
interrompidas. precisam conter a atributos são
Verifique as informaçõ es em todas as m representados no
dependências dos colunas. e cabeçalho da tabela."
objetos antes de n
descartá los do banco de 02. (MF - Analista de t 3. Resposta: D
dados. Execute o Finanças e Controle - o - Chave Candidata:
procedimento ESAF/2013) Atributo ou grupamento
armazenado do sistema No Modelo B de atributos que têm a
sp_depends ou exiba as Relacional de ) propriedade de
identificar unicamente no Hadoop. Assim, ele O componente de
uma ocorrência da oferece suporte a todos metaloja é o catá logo do INSERT OVERWRITE
entidade. Pode vir a ser os principais tipos sistema Hive, que TABLE employee
uma chave Primá ria. A primitivos (por armazena metadados SELECT
chave candidata que exemplo, nú meros sobre a tabela TRANSFORM (empID,
nã o é chave primá ria inteiros, flutuaçõ es, subjacente. Estes name, salary, address,
também chama-se sequências) e tipos metadados sã o department)
chave Alternativa. A complexos (por especificados durante a USING 'python
chave candidata deve exemplo, mapas, listas, criaçã o da tabela e sã o employee_mapper.py'
possuir, como estruturas). O Hive reutilizados sempre que AS (empID, name,
propriedade, a oferece suporte às é feita referência à salary, city)
unicidade e a consultas expressas em tabela na HiveQL. A FROM employee_data;
irredutibilidade. HiveQL (Hive Query metaloja distingue o
Language), uma Hive como uma soluçã o Em geral, o Hive é uma
04. Resposta: B linguagem declarativa tradicional de ó tima interface para
A normalizaçã o de similar à SQL e, warehousing em qualquer pessoa
dados é uma série de portanto, pode ser comparaçã o aos envolvida no mundo de
passos que se seguem entendido facilmente sistemas similares de bancos de dados
no projeto de um banco por qualquer pessoa processamento de relacionais, embora os
de dados, que permitem familiarizada com a dados que sã o detalhes da
um armazenamento SQL. Essas consultas sã o construídos em implementaçã o
consistente e um compiladas arquiteturas similares subjacente nã o sejam
eficiente acesso aos automaticamente nas ao MapReduce, como a completamente ocultos.
dados em bancos de tarefas do MapReduce Pig Latin. Ainda é preciso se
dados relacionais. Esses que sã o executadas preocupar com algumas
passos reduzem a usando Hadoop. Além O exemplo a seguir diferenças em termos da
redundâ ncia de dados e disso, a HiveQL permite mostra exemplos das melhor maneira para
as chances dos dados se que os usuá rios instruçõ es de HiveQL que especificar as junçõ es
tornarem realizem o plug in de descrevem as operaçõ es para o melhor
inconsistentes. scripts customizados de para criar uma tabela, desempenho e alguns
MapReduce nas carregar dados e recursos ausentes de
05. Resposta: D consultas. consultar o conteú do das linguagem. O Hive oferece
A instâ ncia de uma A HiveQL oferece tabelas. a capacidade de fazer plug
relaçã o é o conjunto de suporte à s instruçõ es de in de có digos
linhas, também Linguagem de Definiçã o Instruções de HiveQL customizados para
denominadas tuplas ou de Dados (DDL), que que descrevem as situaçõ es que nã o se
registros, distintas podem ser usadas para operações para criar uma ajustam à SQL, bem como
entre si, que compõ em a criar, eliminar e alterar tabela, carregar dados e muitas ferramentas para
relaçã o em um dado as tabelas de um banco consultar o conteúdo das manipular as entradas e
momento. de dados. Ela permite tabelas. saídas. Ele sofre algumas
que os usuá rios limitaçõ es, como a falta de
HIVE44. carreguem dados de CREATE TABLE suporte à s instruçõ es
fontes externas e employee (empID INT, UPDATE ou DELETE,
O projeto Apache insiram os resultados name STRING, salary INSERT em linhas ú nicas,
Hive é uma soluçã o de das consultas em BIGINT) e tipos de dados de data
data warehousing de tabelas do Hive por ROW FORMAT ou horá rio, já que elas são
software livre meio do carregamento e DELIMITED tratadas como sequências.
construída pela Equipe inserçã o de instruçõ es FIELDS TERMINATED
de Infraestrutura de de Linguagem de BY '\t'
Dados do Facebook no Manipulaçã o de Dados STORED AS TEXTFILE;
ambiente Hadoop. O (DML), LOAD DATA INPATH
principal objetivo do respectivamente. No "employee_data" INTO
projeto é levar entanto, atualmente a TABLE employee;
conceitos de bancos de HiveQL nã o oferece SELECT * FROM
dados relacionais (por suporte à atualizaçã o e employee WHERE
exemplo, tabelas, exclusão de linhas das salary > 100000 SORT
colunas, partiçõ es) e um tabelas existentes (em BY salary DESC;
subconjunto de SQL ao particular, as instruçõ es
mundo desestruturado INSERT, UPDATE e O Hive também
do Hadoop, ao mesmo DELETE INTO), o que oferece suporte à
tempo em que mantém permite o uso de manipulação de dados por
a extensibilidade e a mecanismos bastante meio de funçõ es criadas
flexibilidade desfrutada simples para lidar com pelos usuá rios.
operaçõ es simultâ neas
44 de leitura e gravaçã o
https://imasters.com.br/artigo/24 O Hive oferece suporte
sem precisar
486/software-livre/utilize- aos dados de manipulação
linguagensparecidas-com-a-sql- implementar protocolos
por meio de funções
para-a-estrutura-domapreduce/? de bloqueio complexos.
trace=1519021197&source=single
criadas por usuários.
Tecno declarar outras duas editores de có digo, além
tags: <head> e <body>. de ser compatível com
logias Essas duas tags são praticamente todos os
web: "irmã s", pois estã o no idiomas do mundo. É o
HTML mesmo nível que usaremos no curso.
hierá rquico em relação <html>
5, CSS à sua tag "pai", que é <head>
3, <html>. <title>Mirror
XML <html> Fashion</title>
<head></head> <meta
1.1, <body></body> charset="utf-8">
Json </html> </head>
(ECM A tag <head> <body>
A tag <head>
A404
contém informaçõ es </body>
), sobre nosso documento </html>
Angul Note a sintaxe. Uma que são de interesse A tag <body>
tag é definida com somente do navegador, A tag <body> contém o
ar.js caracteres < e >, e seu e não dos visitantes do corpo do nosso
1.6.x, nome (H1 no caso). nosso site. São documento, que é exibido
Node. Muitas tags possuem informaçõ es que nã o pelo navegador em sua
conteú do, como o texto serã o exibidas na á rea janela. É necessá rio que o
js do título ("Mirror do documento no <body> tenha ao menos
6.11. Fashion"). Nesse caso, navegador. um elemento "filho", ou
3, para determinar onde o A especificaçã o seja, uma ou mais tags
conteú do acaba, usamos obriga a presença da tag HTML dentro dele.
REST; uma tag de fechamento de conteú do <title> <html>
com a barra antes do dentro do nosso <head>
nome: </h1>. <head>, permitindo <title>Mirror
Algumas tags podem especificar o título do Fashion</title>
Introdução a HTML e receber atributos nosso documento, que <meta charset="utf-
CSS45 dentro de sua definiçã o. normalmente será 8">
O HTML é um Sã o parâ metros usando exibido na barra de </head>
conjunto de tags a sintaxe de título da janela do <body>
responsá veis pela nome=valor. Para navegador ou na aba do <h1>A Mirror
marcação do conteú do de definir uma imagem, documento. Fashion</h1>
uma pá gina no navegador. por exemplo, usamos a Outra configuraçã o </body>
No có digo que vimos tag <img> e, para muito utilizada, </html>
antes, as tags são os indicar qual imagem principalmente em Nesse exemplo,
elementos a mais que carregar, usamos o documentos cujo usamos a tag <h1>,
escrevemos usando a atributo src: conteú do é escrito em que indica um título.
sintaxe <nomedatag>. <img um idioma como o
Diversas tags sã o src="../imagens/casa_ português, que tem A instrução DOCTYPE
disponibilizadas pela de_praia.jpg"> caracteres como O DOCTYPE nã o é uma
linguagem HTML e cada Repare que a tag acentos e cedilha, é a tag HTML, mas uma
uma possui uma img não possui configuraçã o da instrução especial. Ela
funcionalidade específica. conteú do por si só . codificação de indica para o navegador
No có digo de antes, Nesses casos, nã o é caracteres, chamado de qual versã o do HTML deve
vimos por exemplo o necessá rio usar uma tag encoding ou charset. ser utilizada para
uso da tag <h1>. de fechamento como Podemos configurar renderizar a pá gina.
Ela representa o título antes no h1. qual codificaçã o Utilizaremos<!DOCTYPE
principal da pá gina. queremos utilizar em html>, que indica para o
<h1>Mirror Estrutura de um nosso documento por navegador a utilizaçã o da
Fashion</h1> documento HTML meio da configuraçã o de versã o mais recente do
Um documento charset na tag <meta>. HTML - a versã o 5,
HTML vá lido precisa Um dos valores mais atualmente.
seguir obrigatoriamente comuns usados hoje em Há muitos
a estrutura composta dia é o UTF-8, também comandos
pelas tags <html>, chamado de Unicode. complicados
<head> e <body> e a Há outras nessa parte
instrução <!DOCTYPE>. possibilidades, como o de DOCTYPE que eram
Vejamos cada uma delas: latin1, muito usado usados em versõ es
A tag <html> antigamente. anteriores do HTML e do
Na estrutura do O UTF-8 é a XHTML. Hoje em dia, nada
nosso documento, antes recomendaçã o atual para disso é mais importante. O
de tudo, inserimos uma encoding na Web por ser recomendado é sempre
45 Fonte: tag <html>. Dentro amplamente suportada usar a ú ltima versã o do
http://www.caelum.com.br/apostil dessa tag, é necessá rio em navegadores e
a-html-css-javascript/
HTML, usando a
declaraçã o deDOCTYPE navegaçã o do usuá rio pelo A tag <img> define projeto e como ele pode
simples: documento. uma imagem em uma acessá-las, como se
<!DOCTYPE html> pá gina HTML e fosse o índice do site.
Pará grafos necessita de dois Esse índice, nã o por
Tags HTML Quando exibimos atributos preenchidos: coincidência, é
O HTML é composto qualquer texto em src e alt. O primeiro convençã o adotada
de diversas tags, cada uma nossa pá gina, é aponta para o local da pelos servidores de
com sua funçã o e recomendado que ele imagem e o segundo, pá ginas Web. Se
significado. O HTML 5, seja sempre conteú do um texto alternativo desejamos que uma
entã o, adicionou muitas de alguma tag filha da para a imagem caso determinada pasta seja
novas tags, que veremos tag <body>. A marcaçã o essa nã o possa ser servida como um site e
ao longo do curso. mais indicada para carregada ou dentro dessa pasta
Nesse textos comuns é a tag de visualizada. existe um arquivo
momento, pará grafo: O HTML 5 chamado index.html,
vamos focar <p>Nenhum item na introduziu duas novas esse arquivo será a
em tags sacola de tags específicas para pá gina inicial a menos
que representam compras.</p> imagem: <figure> que alguma
títulos, pará grafo e ênfase. Se você tiver vá rios e<figcaption>. A tag configuraçã o determine
pará grafos de texto, use <figure> define uma outra pá gina para esse
Títulos vá rias dessas tags <p> imagem com a fim.
Quando queremos para separá -los: conhecida tag <img>. Dentro da pasta do
indicar que um texto é um <p>Um pará grafo de Além disso, permite site, no mesmo nível
título em nossa pá gina, texto.</p> adicionar uma legenda que o index.html, é
utilizamos as tags <p>Outro pará grafo para a imagem por meio recomendado que sejam
deheading em sua de texto.</p> da tag <figcaption>. criadas mais algumas
marcação: <figure> pastas para manter
<h1>Mirror Marcaçõ es de ênfase <img separados os arquivos
Fashion.</h1> Quando queremos src="img/produto1.pn de imagens, as folhas de
<h2>Bem-vindo à dar uma ênfase g" alt="Foto do estilo CSS e os scripts.
Mirror Fashion, sua loja diferente a um trecho produto"> Para iniciar um projeto,
de roupas e de texto, podemos <figcaption>Fuzz teríamos uma estrutura
acessó rios.</h2> utilizar as marcaçõ es de Cardigan por R$ de pastas como a
As tags de heading sã o ênfase. Podemos deixar 129,90</figcaption> demonstrada na
tags de conteú do e vã o de um texto "mais forte" </figure> imagem a seguir:
<h1> a <h6>, seguindo a com a tag <strong> ou
ordem de importâ ncia, deixar o texto com uma A estrutura dos
sendo <h1> o título "ênfase acentuada" com arquivos de um
principal, o mais a tag <em>. Também há projeto
importante, e <h6> o a tag <small>, que Como todo tipo de
título de menor diminui o tamanho do projeto de software,
importâ ncia. texto. existem algumas
Utilizamos, por Por padrã o, os recomendaçõ es quanto
exemplo, a tag <h1> para navegadores à organizaçã o dos
o nome, título principal da renderizarã o o texto arquivos de um site.
pá gina, e a tag <h2>como dentro da tag <strong> Nã o há nenhum rigor
subtítulo ou como título em negrito e o texto técnico quanto a essa
de seçõ es dentro do dentro da tag <em> em organizaçã o e, na
documento. itá lico. Existem ainda as maioria das vezes, você
A ordem de tags <b> e <i>, que vai adaptar as
importâ ncia, além de atingem o mesmo recomendaçõ es da
influenciar no tamanho resultado visualmente, maneira que for melhor
padrã o de exibiçã o do mas as tags <strong> e para o seu projeto.
texto, tem impacto nas <em> sã o mais Como um site é um
ferramentas que indicadas por definirem conjunto de pá ginas
processam HTML. As nossa intençã o de Web sobre um assunto,
ferramentas de indexação significado ao conteú do, empresa, produto ou
de conteú do para buscas, mais do que uma qualquer outra coisa, é
como o Google, Bing ou simples indicaçã o comum todos os
Yahoo! levam em visual. Vamos discutir arquivos de um site
consideraçã o essa ordem melhor a questã o do estarem dentro de uma
e relevâ ncia. Os significado das tags só pasta e, assim como
navegadores especiais mais adiante. um livro, é
para acessibilidade <p>Compre suas recomendado que exista
também interpretam o roupas e acessó rios na uma "capa", uma pá gina
conteú do dessas tags de <strong>Mirror inicial que possa indicar
maneira a diferenciar seu Fashion</strong>.</p> para o visitante quais
conteú do e facilitar a sã o as outras pá ginas
Imagens que fazem parte desse
Estilizando com CSS propriedade é separada Usando esse atributo style
Quando escrevemos o por um sinal de ponto e nã o parece que fizemos
HTML, marcamos o vírgula ";" da seguinte isso. Justamente por isso
conteú do da pá gina com maneira: nã o se recomenda esse
tags que melhor b tipo de uso na prá tica,
representam o significado a mas sim os que veremos a
daquele conteú do. Aí c seguir.
quando abrimos a pá gina k A tag style
no navegador é possível g A outra maneira de se
perceber que o navegador r utilizar o CSS é declarando
mostra as informaçõ es o suas propriedades dentro
com estilos diferentes. u de uma tag<style>.
Um h1, por exemplo, n Como estamos
fica em negrito numa d declarando as
fonte maior. Pará grafos de - propriedades visuais de
texto são espaçados entre c um elemento em outro
si, e assim por diante. Isso o lugar do nosso
quer dizer que o l documento, precisamos
navegador tem um estilo o indicar de alguma
padrã o para as tags que r maneira a qual elemento
usamos. Mas, claro, pra : nos referimos. Fazemos
fazer sites bonitõ es vamos isso utilizando um seletor
querer customizar o y CSS. É basicamente uma
design dos elementos da e forma de buscar certos
pá gina. l elementos dentro da
Antigamente, isso era l pá gina que receberã o as
feito no pró prio HTML. Se o regras visuais que
quisesse um título em w queremos.
vermelho, era só fazer: ; No exemplo a seguir,
<h1><font usaremos o seletor que
o c
color="red">Mirror pega todas as tags p e
Fashion anos o altera sua cor e
90</font></h1> l background:
Além da tag font, o <!DOCTYPE html>
vá rias outras tags de r <html>
estilo existiam. Mas isso é : <head>
passado. Tags HTML para <meta charset="utf-
estilo sã o má prá tica hoje b 8">
em dia e jamais devem ser l <title>Sobre a
usadas. u Mirror Fashion</title>
Em seu lugar, surgiu o e <style>
CSS, que é uma outra ; p{
linguagem, separada do background-color:
HTML, com objetivo ú nico O elemento que yellow;
de cuidar da estilizaçã o da receber essas color: blue;
pá gina. A vantagem é que propriedades será exibido }
o CSS é bem mais robusto com o texto na cor azul e </style> elementos pelo nome de
que o HTML para com o fundo amarelo. </head> sua tag, e aplicamos certas
estilizaçã o, como Essas propriedades <body> propriedades CSS apenas
veremos. Mas, podem ser declaradas de <p> neles.
principalmente, escrever três maneiras diferentes. O conteú do desta
formataçã o visual Atributo style tag será exibido em azul Arquivo externo
misturado com conteú do A primeira delas é com fundo amarelo! A terceira maneira de
de texto no HTML se como um atributo style no </p> declararmos os estilos do
mostrou algo bem pró prio elemento: <p> nosso documento é com
impraticá vel. O CSS <p style="color: blue; <strong>Também< um arquivo externo,
resolve isso separando as background-color: /strong> será exibido em geralmente com a
coisas; regras de estilo yellow;"> azul com fundo amarelo! extensã o .css. Para que
nã o aparecem mais no O conteú do desta tag </p> seja possível declarar
HTML, apenas no CSS. será exibido em azul com nosso CSS em um arquivo
</body>
2.11 - Sintaxe e fundo amarelo no à parte, precisamos
</html>
inclusã o de CSS navegador! indicar em nosso
O có digo anterior da
A sintaxe do CSS tem </p> documento HTML uma
tag <style> indica que
estrutura simples: é uma Mas tínhamos acabado ligaçã o entre ele e a folha
estamos alterando a cor e
declaraçã o de de discutir que uma das de estilo.
o fundo de todos os
propriedades e valores grandes vantagens do CSS Além da melhor
elementos com tag p.
separados por um sinal de era manter as regras de organizaçã o do projeto, a
Dizemos que
dois pontos ":", e cada estilo fora do HTML. folha de estilo externa traz
selecionamos esses
ainda as vantagens de o t no nosso exemplo a
manter nosso HTML mais r - "Helvetica". Caso o
limpo e do : f navegador nã o encontre
reaproveitamento de uma a também essa fonte, ele
mesma folha de estilos y m solicita qualquer fonte
para diversos e i que pertença à família
documentos. l l "sans-serif", declarada
A indicação de uso de l y logo a seguir, e a utiliza
uma folha de estilos o : para exibir o texto, nã o
externa deve ser feita w importa qual seja ela.
dentro da tag <head> do ; s Temos outras
nosso documento HTML: e propriedades para
<!DOCTYPE html> } r manipular a fonte, como a
<html> i propriedade font-style,
<head> Propriedades f que define o estilo da
<meta charset="utf- tipográficas e fontes ; fonte que pode ser:
8"> Da mesma maneira normal (normal na
<title>Sobre a que alteramos cores, } vertical), italic (inclinada)
Mirror Fashion</title> podemos alterar o texto. eoblique (oblíqua).
<link Podemos definir fontes h2 {
rel="stylesheet" com o uso da propriedade font-family: sans- Alinhamento e
href="estilos.css"> fontfamily. serif; decoração de texto
</head> A propriedade font- } Já vimos uma série de
<body> family pode receber seu propriedades e
<p> valor com ou sem aspas. p{ subpropriedades que
O conteú do desta No primeiro caso, font-family: determinam o estilo do
tag será exibido em azul passaremos o nome do monospace; tipo (fonte). Vamos
com fundo amarelo! arquivo de fonte a ser } conhecer algumas
</p> utilizado, no ú ltimo, É possível, e muito maneiras de alterarmos as
<p> passaremos a família da comum, declararmos o disposiçõ es dos textos.
<strong>Também< fonte. nome de algumas fontes Uma das propriedades
/strong> será exibido em Por padrã o, os que gostaríamos de mais simples, porém
azul com fundo amarelo! navegadores mais verificar se existem no muito utilizada, é a que
</p> conhecidos exibem texto computador, permitindo diz respeito ao
</body> em um tipo que que tenhamos um alinhamento de texto: a
</html> conhecemos como "serif". controle melhor da forma propriedade text-align. p {
E dentro do arquivo As fontes mais conhecidas como nosso texto será text-align: right;
estilos.css colocamos (e comumente utilizadas exibido. Normalmente, }
apenas o conteú do do CSS: como padrã o) sã o "Times" declaramos as fontes mais O exemplo anterior
p{ e "Times New Roman", comuns, e existe um grupo determina que todos os
dependendo do sistema de fontes que sã o pará grafos da nossa
c operacional. Elas sã o consideradas "seguras" pá gina tenham o texto
o chamadas de fontes por serem bem populares. alinhado para a direita.
l serifadas pelos pequenos Em nosso projeto, Também é possível
o ornamentos em suas vemos que as fontes nã o determinar que um
r terminaçõ es. têm ornamentos. Entã o elemento tenha seu
: Podemos alterar a vamos declarar essa conteú do alinhado ao
família de fontes que propriedade para todo o centro ao definirmos o
b queremos utilizar em documento por meio do valor center para a
l nosso documento para a seu elemento body: body { propriedade text-align, ou
u família "sans-serif" (sem font-family: "Arial", entã o definir que o texto
e serifas), que contém, por "Helvetica", sans-serif; deve ocupar toda a
; exemplo, as fontes "Arial" } largura do elemento
e "Helvetica". Podemos Nesse caso, o aumentando o
b também declarar que navegador verificará se a espaçamento entre as
a queremos utilizar uma fonte "Arial" está palavras com o valor
c família de fontes disponível e a utilizará justify. O padrã o é que o
k "monospace" como, por para renderizar os textos texto seja alinhado à
g exemplo, a fonte de todos os elementos do esquerda, com o valor left,
r "Courier". nosso documento que, por porém é importante
o h cascata, herdarã o essa lembrar que essa
u 1 propriedade do elemento propriedade propaga-se
n body. em cascata.
d { Caso a fonte "Arial" É possível configurar
- nã o esteja disponível, o também uma série de
c f navegador verificará a espaçamentos de texto
o o disponibilidade da com o CSS: p {
l n pró xima fonte declarada,
line-height: 3px; /* valor. Existem vá rias melhor depois - há até os algarismos de dez a
tamanho da altura de cada maneiras de definir cores uma sintaxe bem simples quinze, usamos letras de A
linha */ letter-spacing: quando utilizamos o CSS. pra isso: a F. Nessa sintaxe,
3px; /* tamanho do A primeira, mais h3 { portanto, podemos
espaço entre cada letra */ simples e ingênua, é color: rgb(255, 200, utilizar nú meros de 0-9 e
word-spacing: 5px; /* usando o nome da cor: h1 0); letras de A-F.
tamanho do espaço { color: red; } Há uma conta por trá s
entre cada } Essa sintaxe funciona dessas conversõ es, mas
palavra */ nos browsers mais seu editor de imagens
text-indent: 30px; /* h modernos mas nã o é a deve ser capaz de fornecer
tamanho da margem 2 mais comum na prá tica, ambos os valores para
da primeira por questõ es de você sem problemas. Um
linha do texto */ { compatibilidade. O mais valor 255 vira FF na
} comum é a notaçã o notação hexadecimal. A
b hexadecimal, que cor #F2EDED, por
Imagem de fundo a acabamos usando no exemplo, é equivalente a
A propriedade c exercício anterior ao rgb(242, 237, 237), um
background-image k escrever #F2EDED. Essa cinza claro.
permite indicar um g sintaxe tem suporte Vale aqui uma dica
arquivo de imagem para r universal nos quanto ao uso de cores
ser exibido ao fundo do o navegadores e é mais hexadecimais, toda vez
elemento. Por exemplo: u curta de escrever, apesar que os caracteres
h1 { n de ser mais enigmá tica. presentes na composiçã o
background-image: d h da base se repetirem,
url(sobre- : 3 estes podem ser
background.jpg); simplificados. Entã o um
} y { nú mero em hexadecimal
Com essa declaraçã o, o e 3366FF, pode ser
navegador vai requisitar l b simplificado para 36F.
um arquivo sobre- l a
background.jpg, que deve o c Listas HTML
estar na mesma pasta do w k Nã o sã o raros os casos
arquivo CSS onde consta ; g em que queremos exibir
essa declaraçã o. r uma listagem em nossas
} o pá ginas. O HTML tem
Bordas O difícil é acertar a u algumas tags definidas
As propriedades do exata variaçã o de cor que n para que possamos fazer
CSS para definirmos as queremos no design. Por d isso de maneira correta. A
bordas de um elemento isso, é bem incomum : lista mais comum é a lista
nos apresentam uma série usarmos cores com seus nã o-ordenada.
de opçõ es. Podemos, para nomes. O mais comum é # <ul>
cada borda de um definir a cor com base em F <li>Primeiro item da
elemento, determinar sua sua composiçã o RGB. 2 lista</li>
cor, seu estilo de exibiçã o RGB é um sistema de E <li>
e sua largura. Por cor bastante comum aos D Segundo item da
exemplo: body { border- designers. Ele permite E lista:
color: red; border-style: especificar até 16 milhõ es D <ul>
solid; border-width: 1px; de cores como uma ; <li>Primeiro item
} combinaçã o de três cores da lista aninhada</li>
Para que o efeito da base: Vermelho (Red), } <li>Segundo item
cor sobre a borda surta Verde (Green), Azul No fundo, porém, é a da lista aninhada</li>
efeito, é necessá rio que a (Blue). Podemos escolher mesma coisa. Na notaçã o </ul>
propriedadeborder-style a intensidade de cada um hexadecimal (que começa </li>
tenha qualquer valor desses três canais bá sicos, com #), temos 6 <li>Terceiro item da
diferente do padrã o none. numa escala de 0 a 255. caracteres. Os primeiros 2 lista</li>
Conseguimos fazer Um amarelo forte, por indicam o canal Red, os </ul>
também comentá rios no exemplo, tem 255 de Red, dois seguintes, o Green, e Note que, para cada
CSS usando a seguinte 255 de Green e 0 de Blue os dois ú ltimos, Blue. Ou item da lista nã o-
sintaxe: /* deixando o (255, 255, 0). Se quiser seja, RGB. E usamos a ordenada, utilizamos uma
fundo ridículo */ body um laranja, basta diminuir matemá tica pra escrever marcaçã o de item de
{ background: gold; um pouco o verde (255, menos, trocando a base lista<li>. No exemplo
} 200, 0). E assim por numérica de decimal para acima, utilizamos uma
diante. hexadecimal. estrutura composta na
Cores na Web No CSS, podemos Na base hexadecimal, qual o segundo item da
Propriedades como escrever as cores tendo os algarismos vã o de zero lista contém uma nova
background-color, color, como base sua a quinze (ao invés do zero lista. A mesma tag de item
border-color, entre outras composiçã o RGB. Aliá s, no a nove da base decimal de lista <li> é utilizada
aceitam uma cor como CSS3 - que veremos comum). Para representar
quando demarcamos uma cada uma e como elas padding-left) e o terceiro
lista ordenada. diferem entre si. valor será m
<ol> aplicado abaixo do a
<li>Primeiro item da Padding elemento (equivalente r
lista</li> A propriedade a padding-bottom) p { g
<li>Seg padding é utilizada para padding: 10px 20px i
undo definir uma margem 15px; n
item da interna em alguns } -
lista</li elementos (por margem Se passados l
> interna queremos dizer a quatro valores, e
<li>Terc distâ ncia entre o limite do serã o f
eiro elemento, sua borda, e seu aplicados t
item da respectivo conteú do) e respectivamente a
lista</li tem as subpropriedades padding-top, padding- Há ainda uma maneira
> listadas a seguir: padding- right, paddingbottom e de permitir que o
<li>Quarto item da top padding-right padding-left. Para facilitar navegador defina qual
lista</li> padding-bottom padding- a memorização dessa será a
left ordem, basta lembrar que dimensã o
<li>Quinto item da
os valores são aplicados da propriedade
lista</li> Essas propriedades
em sentido horá rio. p { padding ou margin
</ol> aplicam uma distâ ncia
padding: 10px 20px conforme o espaço
As listas ordenadas entre o limite do elemento
15px 5px; disponível na tela:
também podem ter sua e seu conteú do acima, à
} definimos o valorauto
estrutura composta por direita, abaixo e à
Margin para a margem ou o
outras listas ordenadas esquerda
A propriedade espaçamento que
como no exemplo que respectivamente. Essa
margin é quisermos.
temos para as listas nã o- ordem é importante para
bem No exemplo a seguir,
ordenadas. Também é entendermos como
parecida com definimos que um
possível ter listas funciona a shorthand
a propriedade elemento nã o tem
ordenadas aninhadas em property do padding.
padding, exceto que ela nenhuma margem acima
um item de uma lista Podemos definir todos
adiciona espaço apó s o ou abaixo de seu conteú do
nã oordenada e vice-versa. os valores para as e que o navegador define
Existe um terceiro tipo subpropriedades do limite do elemento, ou
seja, é um espaçamento uma margem igual para
de lista que devemos padding em uma ú nica ambos os lados de acordo
utilizar para demarcar um propriedade, chamada além do elemento em si.
Além das com o espaço disponível:
glossá rio, quando listamos exatamente de padding, e p { margin: 0 auto;
seu comportamento é subpropriedades listadas
termos e seus significados. }
descrito nos exemplos a a seguir, há a shorthand
Essa lista é a lista de Dimensõ es
property margin que se
definiçã o. seguir:
comporta da mesma É possível determinar
<dl> Se passado somente
maneira que a shorthand as dimensõ es de um
<dt>HTML</dt> um valor para a
property do padding vista elemento, por exemplo: p
<dd> propriedade padding, esse
no tó pico anterior. { background-color: red;
HTML é a mesmo valor é aplicado
margin-top height: 300px;
linguagem de em todas as direçõ es. p {
m width: 300px;
marcação de textos padding: 10px; a }
utilizada para } r Todos os pará grafos
exibir textos como Se passados dois g do nosso HTML ocuparã o
pá ginas na valores, o primeiro será i 300 pixels de largura e de
Internet. </dd> aplicado acima e abaixo n altura, com cor de fundo
<dt>Navegador</dt> (equivalente a passar o - vermelha.
<dd> mesmo valor para r
Navegador é o paddingtop e padding- i Links HTML
software que requisita bottom) e o segundo será g Quando precisamos
um documento aplicado à direita e à h indicar que um trecho de
HTML esquerda (equivalente ao t texto se refere a um outro
através do protocolo mesmo valor para
conteú do, seja ele no
HTTP e exibe seu paddingright e padding- m mesmo documento ou em
conteú do em uma left). p { a outro endereço,
janela. padding: 10px 15px; r
utilizamos a tag de â ncora
</dd> } g
<a>.
</dl> Se passados três i
Existem dois
valores, o primeiro será n
diferentes usos para as
Espaçamento e aplicado acima -
â ncoras. Um deles é a
margem (equivalente a padding- b
definição de links:
Utilizamos a top), o segundo será o
t <p>
propriedade padding para aplicado à direita e à
t Visite o
espaçamento e margin esquerda (equivalente a
o site da
para marge m. Vejamos passar o mesmo valor
m <a
parapadding-right e
href="http://www.caelum listas com ul etc. E ainda #cabecalho { color: v
.com.br">Caelum</a>. vamos ver vá rias outras. white; e
</p> Mas é claro que nã o text-align: center; r
Note que a â ncora está existe uma tag diferente } t
demarcando apenas a para cada coisa do O seletor acima fará i
palavra "Caelum" de todo universo. O conjunto de com que o elemento do c
o conteú do do pará grafo tags do HTML é bem vasto nosso HTML que tem o a
exemplificado. Isso mas é também limitado. atributo id com valor l
significa que, ao clicarmos Invariavelmente você "cabecalho" tenha seu -
com o cursor do mouse na vai cair algum dia num texto renderizado na cor a
palavra "Caelum", o cená rio onde nã o branca e centralizado. l
navegador redirecionará o consegue achar a tag certa Note que nã o há nenhuma i
usuá rio para o site da para aquele conteú do. indicaçã o para qual tag a g
Caelum, indicado no Nesse caso, pode usar as propriedade será aplicada. n
atributohref. tags <div> e <span> que Pode ser tanto uma :
Outro uso para a tag funcionam como coringas. <div>quanto um <p>, até
de â ncora é a demarcaçã o Sã o tags sem nenhum mesmo tags sem conteú do m
de destinos para links significado especial mas como uma <img>, desde i
dentro do pró prio que podem servir para que essa tenha o atributo d
agrupar um certo d
documento, o que id com o valor
l
chamamos de bookmark. conteú do, tanto um bloco "cabecalho".
e
<p>Mais informaçõ es da pá gina quanto um Como o atributo id
;
<a pedaço de texto. deve ter valor ú nico no
href="#info">aqui</a E, como vamos ver a documento, o seletor deve
width: 94px;
>.</p> seguir, vamos poder aplicar suas propriedades
}
<p>Conteú do da estilizar esses divs e spans declaradas somente
No exemplo anterior, o
pá gina...</p> com CSS customizado. Por à quele ú nico elemento e,
elemento pai rodape é
padrã o, eles nã o têm estilo por cascata, a todos os
selecionado pelo seu
<h2 id="info">Mais algum. seus elementos filhos.
id. O
informaçõ es sobre o Seletor hierá rquico
estilo será
assunto:</h2> CSS: Seletores de ID e Podemos ainda utilizar aplicado apenas
<p>Informaçõ es...</p> filho um seletor hierá rquico nos elementos
De acordo com o Já vimos como que permite aplicar estilos img filhos do elemento
exemplo acima, ao selecionar elementos no aos elementos filhos de com id=rodape.
clicarmos sobre a palavra CSS usando simplesmente um elemento pai:
"aqui", demarcada com o nome da tag: p { color: # Fluxo do documento
um link, o usuá rio será red; r e float
levado à porçã o da pá gina } o Suponhamos que, por
onde o bookmark "info" é Apesar de simples, é d
uma questã o de design, a
visível. Bookmark é o uma maneira muito a
imagem da família Pelho
elemento que tem o limitada de selecionar. À s p
deva vir ao lado do
atributo id. vezes nã o queremos pegar e
pará grafo e conforme a
É possível, com o uso todos os pará grafos da imagem abaixo:
de um link, levar o usuá rio pá gina, mas apenas algum i
a um bookmark presente determinado. m
em outra pá gina. Existem, portanto, g
<a maneiras mais avançadas
{ Isso nã o acontece por
href="http://www.caelum de selecionarmos um ou
padrã o. Repare que,
.com.br/curso/wd43/#co mais elementos do HTML
m observando as tags HTML
ntato"> usando os seletores CSS.
a que usamos até agora, os
Entre em contato Vamos ver seletores CSS
r elementos da pá gina são
sobre o curso quase que ao longo do
g desenhados um em cima
</a> curso todo, inclusive
i do outro. É como se cada
O exemplo acima fará alguns bem avançados e
n elemento fosse uma caixa
com que o usuá rio que modernos do CSS3. Por
- (box) e o padrão é
clicar no link seja levado à enquanto, vamos ver mais
r empilhar essas caixas
porçã o da pá gina indicada 2 bá sicos além do seletor
i verticalmente. Mais pra
no endereço, por nome de tag.
g frente vamos entender
especificamente no ponto Seletor de ID
h melhor esse algoritmo,
onde o bookmark É possível aplicar
t mas agora o importante é
"contato" seja visível. propriedades visuais a um : que ele atrapalha esse
elemento selecionado pelo
nosso design.
Elementos valor de seu atributo id. 3 Temos um problema: a
estruturais Para isso, o seletor deve 5 tag <figure> ocupa toda a
Já vimos muitas tags iniciar com o caractere "#" p largura da pá gina e
para casos específicos: seguido do valor x aparece empilhada no
títulos com h1, pará grafos correspondente. ; fluxo do documento, nã o
com p, imagens com img, permitindo que outros
elementos sejam de um projeto que adota Características do XML
adicionados ao seu lado. os novos padrõ es é similar Codigo XML
Este problema pode ou compará vel com a Estimulado pela descrevendo um
ser solucionado por meio manutenção de um insatisfaçã o com os Curriculum Vitae:
da propriedade float. Esta projeto que prevê formatos existentes
propriedade permite que compatibilidade total com (padronizados ou não), o <?xml version="1.0"
tiremos um certo navegadores já obsoletos World Wide Web encoding="UTF-8"?>
elemento do fluxo vertical como o Internet Explorer Consortium (W3C) <curriculo>
do documento o que faz 7 e o Firefox 3. começou a trabalhar em <InformacaoPessoal
com que o conteú do Em nosso projeto, meados da década de >
abaixo dele flua ao seu vamos adotar os padrõ es 1990 em uma linguagem <DataNascimento>
redor. Na prá tica, vai fazer do HTML5 e vamos de marcaçã o que 23-07-
exatamente o layout que conhecer e utilizar combinasse a flexibilidade 68</DataNascimento>
queremos. algumas de suas da SGML com a <Nomecompleto>...
Em nosso exemplo, o novidades quanto à simplicidade da HTML. O </Nomecompleto>
conteú do do pará grafo melhoria da semâ ntica de principio do projeto era <Contatos>
tentará fluir ao redor da conteú do e novas criar uma linguagem que <Morada>
nossa imagem comfloat. propriedades de CSS que pudesse ser lida por <Rua>R.Topazi
Perceba que houve uma nos permite adicionar software, e integrar-se o</Rua>
perturbaçã o do fluxo efeitos visuais antes com as demais linguagens. <Num>111</N
HTML, pois agora a nossa impossíveis. Ainda assim, Sua filosofia seria um>
imagem parece existir nosso projeto será incorporada por vá rios <Cidade>nome
fora do fluxo. parcialmente compatível princípios importantes: _cidade</Cidade>
com navegadores <Pais>nome_pa
O futuro e presente obsoletos por conta da * Separaçã o do ís</Pais>
da Web com o HTML5 técnica Progressive conteú do da </Morada>
Nos ú ltimos anos, Enhancement. formataçã o <Telefone>9999-
muito tem se falado sobre * Simplicidade e 9999</Telefone>
a pró xima versã o do Legibilidade, tanto
HTML, o HTML5. Esse para humanos quanto <CorreioEletronico>email
projeto é um grande para computadores @email.com</CorreioElet
esforço do W3C e dos * Possibilidade de ronico>
principais browsers para criação de tags sem </Contatos>
atender a uma série de limitaçã o <Nacionalidade>br
necessidades do O que é XML46 * Criaçã o de asileiro</Nacionalida
desenvolvimento da Web arquivos para de>
como plataforma de XML (eXtensible validaçã o de estrutura <Sexo>M</Sexo>
sistemas distribuídos e Markup Language) é uma (Chamados DTDs) </InformacaoPessoa
informaçã o recomendaçã o da W3C * Interligaçã o de l>
descentralizada. Algumas para gerar linguagens de bancos de dados <objetivo>Atuar na
novidades sã o marcaçã o para distintos area de TI</objetivo>
importantes para a necessidades especiais. * Concentraçã o na <Experiencia>
marcação de conteú do, É um subtipo de SGML estrutura da <Cargo>Suporte
outras para a estilizaçã o (acrô nimo de informaçã o, e nã o na tecnico</Cargo>
com o CSS nível 3 (CSS3) e Standard Generalized sua aparência
outras novidades sã o Markup Language, ou <Empregador>Empresa,
importantes para Linguagem Padronizada O XML é considerado Cidade
interaçã o avançada com o de Marcaçã o Genérica) um bom formato para a Estado</Empregador>
usuá rio com novas capaz de descrever criaçã o de documentos </Experiencia>
funcionalidades do diversos tipos de dados. com dados organizados de <Formacao>Superior
navegador com Seu propó sito principal é forma hierá rquica, como Completo</Formacao
JavaScript. a facilidade de se vê frequentemente em >
Apesar da compartilhamento de documentos de texto </curriculo>
especificaçã o ainda nã o informaçõ es através da formatados, imagens
estar completa e existirem Internet. Entre linguagens vetoriais ou bancos de
diferenças entre as Receita de Pão
baseadas em XML dados.
implementaçõ es adotadas incluem-se XHTML
pelos diferentes Este exemplo
(formato para pá ginas Pela sua portabilidade,
navegadores ainda hoje, o demonstra a sintaxe
Web), RDF,SDMX ,SMIL, um banco de dados pode
mercado está tomando flexível do XML sendo
MathML (formato para através de uma aplicação
uma posiçã o bem usada para descrever uma
expressõ es matemá ticas), escrever em um arquivo
agressiva quanto à adoçã o receita de pã o:
NCL, XBRL, XSIL e SVG XML, e um outro banco
dos novos padrõ es e hoje (formato grá fico vetorial). distinto pode ler entã o
muitos projetos já sã o <?xml version="1.0"
estes mesmos dados.
iniciados com os novos encoding="iso-8859-
padrõ es. 1"?>
46 Fonte: Exemplos
Em alguns casos, os http://www.portaleducacao.com.b <receita nome="pã o"
esforços de manutençã o r/informatica/artigos/4395/o- tempo_de_preparo="5
que-exml Curriculum Vitae
minutos" uma formataçã o leve de 10/23/aprenda-angularjs-com-
estes-
tempo_de_cozimento="1 troca de dados. Para seres 5-exemplos-praticos/
hora"> humanos, é fácil de ler e Um nú mero é similar a
<titulo>Pã o escrever. Para má quinas, é um nú mero em C ou Java,
simples</titulo> fá cil de interpretar e exceto quando nã o se usa
<ingredientes> gerar. Está baseado em os nú meros octais ou
<ingrediente um subconjunto da Uma array é uma hexadecimais.
quantidade="3" linguagem de coleçã o de valores
unidade="xícaras">Farinh programaçã o JavaScript, ordenados. O array
a</ingrediente> Standard ECMA-262 3a começa com [ (conchete
<ingrediente Ediçã o -Dezembro - 1999. de abertura) e termina
quantidade="7" JSON é em formato texto e com ] (conchete de
unidade="gramas">Ferme completamente fechamento). Os valores
nto</ingrediente> independente de sã o separados por ,
<ingrediente linguagem, pois usa (vírgula).
convençõ es que sã o Espaços em branco
quantidade="1.5" familiares à s linguagens C podem ser inseridos em
e familiares, incluindo C+ quanlquer parte dos
unidade="xícaras" +, C#, Java, JavaScript, símbolos. Exceto
estado="morna">Á gua</i Perl, Python e muitas pequenos detalhes de
ngrediente> outras. Estas codificação, a linguagem é
<ingrediente propriedades fazem com Um valor (value, na completamente descrita.
quantidade="1" que JSON seja um formato imagem acima) pode ser
unidade="colheres de ideal de troca de dados. uma cadeia de caracteres AngularJS54
chá ">Sal</ingrediente> JSON está constituído (string), ou um nú mero,
</ingredientes> em duas estruturas: ou true ou false, ou null, Você provavalemente
<instrucoes> - Uma coleçã o de ou um objeto ou uma ouviu sobre AngularJS – o
<passo>Misture pares nome/valor. Em array. Estas estruturas empolgante framework
todos os ingredientes, e vá rias linguagens, isto é podem estar aninhadas. open source desenvolvido
dissolva bem.</passo> caracterizado como um pela Google, que muda a
<passo>Cubra com object, record, struct, maneira que pensamos
um pano e deixe por uma dicioná rio, hash table, sobre as aplicaçõ es web.
hora em um local keyed list, ou arrays Temos muita coisa escrita
morno.</passo> associativas. sobre isso, mas eu ainda
<passo>Misture - Uma lista nã o encontrei algo que
novamente, coloque numa ordenada de valores. Na fosse escrito para
bandeja e asse num maioria das linguagens, desenvolvedores que
forno.</passo> isto é caracterizado como preferem exemplos
</instrucoes> uma array, vetor, lista ou rá pidos e prá ticos. Isto
</receita> sequência. muda hoje. Abaixo você
Uma string é uma irá encontrar o bá sico da
Estas sã o estruturas coleçã o de nenhum ou construçã o de blocos de
Onde temos na
de dados universais. mais caracteres Unicode, aplicativos Angular –
primeira linha
Virtualmente todas as envolvido entre aspas Models (Modelos), Views
linguagens de duplas usando barras (Vistas), Controllers
<Receita invertidas como caracter
programaçã o modernas as (Controladores), Services
nome="pã o" de escape. Um caracter
suportam, de uma forma (Serviços) e Filters
tempo_de_preparo="5 está representando como
ou de outra. É aceitavel (Filtros) – explicados em 5
minutos" um simples caracter de
que um formato de troca exemplos prá ticos que
tempo_de_cozimento="1 string. Uma cadeia de
de dados que seja você pode editar
hora"> caracteres é parecida com
independente de diretamente no
linguagem de uma cadeia de caracteres navegador*. Se você
"Receita" é o nome em C ou Java.
programaçã o se baseie preferir abri-los no seu
principal para o seu
nestas estruturas. editor de có digos favorito,
documento. Note que a
Em JSON, os dados sã o pegue o arquivo zip.
semelhança entre XML e
apresentados desta Complementar a este
HTML é grande, na 1ª
forma: artigo, leia o Guia
linha abrimos a tag
Um objeto é um Definitivo para se
Receita e na ú ltima linha
conjunto desordenado de aprender AngularJS em
fechamos a mesma, como
pares nome/valor. Um um dia, pois nele
em HTML e assim se
objeto começa com encontramos melhores
estende por todo o
{ (chave de abertura) e prá ticas para o
exemplo.
termina com } (chave de desenvolvimento das
fechamento). Cada nome é aplicaçõ es Angular. Se
JSON
seguido por : (dois você iniciar por este
pontos) e os pares tutorial mais direto,
JSON (JavaScript nome/valor sã o seguidos recomendo que você os
Object Notation - Notaçã o por , (vírgula).
54
Fonte:
http://javascriptbrasil.com/2013/
veja e depois refaça todos
de Objetos JavaScript) é
elemen
tos filhos. Chega de teoria! Agora vamos ver algum
os exemplos embasados sua pá gina antes do
nas melhores prá ticas fechamento da tag body.
mostradas no Guia Google’s CDN é 1. Menu de Navegação
Definitivo. Ex: criar um recomendado para um
namespace para aplicaçã o, carregamento mais Para o primeiro exemplo, nós vamos construir um menu de
evitando as variá veis rá pido: navegação que destaca a entrada selecionada. O exemplo usa
globais. somente Diretivas do Angular, e é a mais simples aplicação
possível de uso do framework. Click em no botão “Edit” para
O que é AngularJS? ver o código fonte. Ele está pronto para experimentação!
O AngularJS lhe dá um
De forma básica, grande nú mero de
AngularJS é um Diretivas que permitem a
framework que liga seu associaçã o de elementos
HTML (views) com HTML com os Modelos.
objetos JavaScript Elas sã o atributos que
(models). Quando seus iniciam com ng- e podem
modelos mudam, a pá gina ser adicionadas a
é atualizada qualquer elemento. O
automaticamente. O mais importante atributo
contrá rio também é vá lido que você deve incluir em
– um modelo, associado qualquer pá gina, se você
com um campo de texto, é for usar o Angular, é o ng-
atualizado quando o app:
conteú do do campo é
alterado. O Angular
manuseia toda essa ‘cola’
do có digo, entã o você nã o Isso pode ser
precisa atualizar adicionado a um elemento
manualmente o HTML ou que engloba o resto da
escutadores (listeners) pá gina, como o elemento
para os eventos, como body ou uma div externa.
você faz com jQuery. O Angular olha para ele
Como aliá s, nenhum quando a pá gina é
destes exemplos incluem carregada e
jQuery! automaticamente analisa
Para usar o AngularJS, todas as Diretivas que
você tem que incluí-lo na enxerga nos

No código acima, nós estamos usando as Diretivas Angular


para definir e ler a variável ativa. Quando isso muda, causa no
HTML uma at ualização automática. Na terminologia Angular,
esta variável é chamada um modelo. Está disponível para todas
as diretivas no escopo atual, e pode ser acessada nos seus
controladores (mais sobre estes no próximo exemplo). Se você
já utilizou templates JavaS
cript antes, você é familiar com a
sintaxe {{var}}. Quando o framework ve esta string, ele a
substitui com o conteúdo da variável. Essa operação é repetida
toda hora que a variável for modificada.

2. Editor Inline

Para nosso segundo exemplo, nós vamosiar umcr simples


editor inline
– clicando no parágrafo vamos mostrar um tooltip
(dica) com um campo de texto. Nós vamos usar um
controlador que vai inicializar os modelos e declarar 2
métodos para alternar a visibilidade do tooltip. Controladores
são funçõesregulares do JavaScript que são executadas
automaticamente pelo Angular, e que são associadas com sua
página usando a diretiva-controller:
ng

có digo.
Quando a funçã o controladora é executada, ela pega o
objeto especial $scope como um parâ metro, adicionando A ligação ng-repeat (docs) é outra propriedade útil do
propriedades ou funçõ es para torná -los disponíveis para o framework. Ela permite que você faça um loop em um array de
View. Usando o ng-model ligado no campo de texto, faz com item e gere um marcador para eles. Quando um item é
que o Angular atualize esta variá vel quando o valor do campo deletado, isso é atualizado de forma inteligente.
muda (fazendo com que re-renderizemos o pará grafo com o
valor). 4. Busca Instantânea

3. Formulário de Este exemplo vai permitir aos usuários filtrarem uma lista
Pedido de itens digitando dentro de um campo de texto. Este é um
outro ponto onde o Angular brilha, e é um perfeito caso de uso
Neste exemplo, nó s vamos criar um formulá rio com um para escrever um filtro customizado. Para fazer isso
preço total atualizado em tempo real, usando outra das ú teis entretanto, nós primeiro temosque transformar nossa
propriedades do Angular – os Filtros. Filtros permitem que aplicação em um módulo. Módulos são uma forma de se
você modifique os modelos e possa os encadear juntos usando organizar aplicações JavaScript dentro de componentes - auto
o caracter barra vertical | . No exemplo ebaixo, eu estou suficientes que podem ser combinados de formas novas e
usando o currency filter, para tornar um nú mero em um preço interessantes. O Angular depende desta técnica para o
isolamento docódigo e requer que sua aplicação siga isso
corretamente formatado, completo com um símbolo dó lar e
antes de criar um filtro. Há apenas duas coisas que você precisa
centavos. Você pode facilmente criar seus pró prios filtros,
fazer para tornar sua aplicação um módulo: 1. Usar a função
como você verá no exemplo #4.
angular.module (“name”, []) chamada em seu JS. Isso irá
Eles sãoeobjetos
instanciar retornarque
umpodem
novo ser usados
módulo; m sua
e aplicação
2. Passar o nome do
para se comunicar
módulo como valorcom o servidor,
da diretiva
-app. uma APIum
ng Criando oufiltro
outraque
fonte
é de
dados. No nosso caso, nós vamos escrever um serviço que
comunica com API do Instagram e retorna um array com as
mais populares fotos do momento. Note que para este código
funcionar , teremos que incluir um arquivo adicional Angular.js
na página:
Isso inclui o módulo ngResource para um simples trabalho
com API’s AJAX (o módulo é exposto como a variável $resource
no código). Este arquivo é automaticamente incluso no editor
abaixo.
tã o simples com chamar o método filter () no objeto retornado
pelo mó dulo angular.module (“name”, []) 55
REST e a evolução da arquitetura de software

prá tico de
disponibilizaçã o de
conteú do hipermídia na
É o acrô nimo para o Internet.
termo em inglês Ao longo dos anos, por
Representational State um lado o conteú do da
Transfer, ou Transferência web se tornou mais rico e
de Estado multimídia com a
Representacional. introdução de imagem,
animaçõ es, áudio e vídeo
etc. Por outro, sua
55
Fonte: interatividade cresce em
ritmo acelerado, tornando
http://blog.mhavila.com.br/2007/
07/07/rest-e-a-evolucao- a web um canal de
daarquitetura-de-software/ interaçã o, aplicaçõ es e
O termo foi introduzido serviços cada vez mais
por Roy Thomas Fielding amplo.
— um dos principais As aplicaçõ es na web
autores da especificação também deram os
HTTP e autoridade em primeiros passos com o
arquitetura de redes de protocolo Common
computadores — no ano Gateway Interface (CGI)
de 2000, em sua tese de até chegarem à era atual
doutorado (Ph.D.): dos Web Services (WS), da
Architectural Styles and Arquitetura Orientada a
the Design of Network- Serviços (Service-
based Software Oriented Architecture –
Architectures, SOA) e seu uso nos
Universidade da sistemas de
Califó rnia, Irvine, EUA. O Gerenciamento de
capítulo 5 da tese versa Processos de Negó cio
sobre Representational (Business Process
State Transfer (REST). Management – BPM).
De 2000 até agora, o Assim, a web deixa de
conceito vem se difundido ser a camada de mais alto
e se popularizando como nível de abstraçã o na
um estilo de arquitetura pilha das aplicaçõ es
de software moderno para Internet (WWW → HTTP
sistemas hipermídia → TCP/IP). Acima dela se
distribuídos, em especial posicionam sistemas
as aplicaçõ es na World complexos que tem a web
Wide Web (WWW, ou como “mera” base de
simplesmente web “para infraestrutura. Neste topo
os íntimos”). entram princípios e
Filtros seguem a filosofia do AngularJS – cada pedaço de O conceito de REST e mecanismos como REST,
có digo que você escreve deve ser auto-suficiente, testá vel e os sistemas RESTful WS, SOA e AJAX, bem
reutilizá vel. Você pode usar este filtro em todas as (aderentes aos princípios como os frameworks de
suas Views de REST) refletem, em aplicaçã o web de alto
e até mesmo combiná -lo com outros através do minha opiniã o, uma das nível — baseados em
encadeamento. muitas facetas do componentes — como
aumento da abstraçã o e Java EE (JSF → JSP →
5. Grade Alternável complexidade na Servlets), Microsoft .NET
arquitetura das aplicaçõ es Framework e o Zend
Outra interaçã o UI (user interface) popular é mudar entre via Internet. Framework do PHP 5.
modelos diferentes de layout (grid ou lista) *grid = grade* Desde que a web Isso me traz à mente a
com o click de um botã o. Isto é muito fá cil de se fazer no surgiu no início da década comparaçã o com o que li
Angular. Em adição, eu vou introduzir outro importante de 1990 — criada por Tim tempos atrá s. A
conceito – Services. Berners-Lee no CERN — constataçã o — que entã o
até hoje, acompanhamos me impressionou — de
seu aumento de que os mecanismos de
abrangência e Mapeamento Objeto-
complexidade. Surgiu Relacional e frameworks
como um meio simples e de persistência como o
Hibernate estavam Node.js47. olanode.js e de três m
fazendo a linguagem SQL minutos do seu tempo. u
se tornar commodity, Node.js é uma n
vista como uma camada plataforma para Escreva o seguinte d
de “baixo nível” na desenvolvimento de có digo no seu arquivo: o
interaçã o com bancos de aplicaçõ es server-side !
dados. Concordo. Eis aí baseadas em rede var http =
mais um exemplo do utilizando JavaScript e o require('http'); Caso você prefira
aumento no nível de V8 JavaScript Engine, ou http.createServer(functio retornar algum html
abstraçã o e complexidade seja, com Node.js n(req,res) vá lido para o navegador,
dos sistemas. podemos criar uma { res.writeHead(200, basta alterar 'text/plain'
variedade de aplicaçõ es { 'Content-Type': para 'text/html' no có digo
REST em Java Web utilizando apenas 'text/plain; charset=utf- acima e utilizar uma tag
có digo em JavaScript. 8' }); res.end('Olá html legal como <h2>,
Para intergrar a futura Uma importante mundo!'); }).listen(3000); como foi feito a seguir:
plataforma Java EE 6, em diferença está no fato do console.log('Servidor var http =
fevereiro de 2007 foi Node ser single threaded. iniciado em require('http');
proposta a nova Embora isso possa localhost:3000. Ctrl+C http.createServer(functio
especificaçã o JSR 311 – parecer uma desvantagem para encerrar…'); n(req,res) {
JAX-RS: The Java API for em um primeiro res.writeHead(200,
RESTful Web Services, momento, o que Para executar o seu { 'Content-Type':
Java Community Process percebemos ao programa Node basta o 'text/html; charset=utf-
(JCP). A JSR 311 teve sua desenvolver com Node.js é seguinte comando no seu 8' }); res.end('<h2> Olá
versã o final lançada em que isso simplifica terminal: mundo! </h2>');
2008-10-10. extremamente a $ node olanode.js }).listen(3000);
Implementaçõ es de construçã o da aplicaçã o, e Para testar seu
Web Services RESTful por Node.js utilizar uma servidor você pode console.log('Servidor
em Java: abordagem nã o acessar localhost:3000 no iniciado em
- Jersey, obstrutiva, essa diferença seu navegador ou utilizar localhost:3000. Ctrl+C
implementaçã o de vai ser imperceptível na linha de comando com o para encerrar…’);
referência para JSR 311, maioria dos casos. comando curl (em uma
parte do projeto de nova instâ ncia do
software livre Glassfish V8 JavaScript Engine. terminal) como mostrado
em java.net. Veja a seguir:
também A java REST É o interpretador de $
framework : Jersey (em JavaScript open source
inglês), por Christian implementado pelo c
Rivasseau, 2007-11-17. Google em C++ e utilizado u
- JSR 311 project pelo Chrome. r
at Java.net. l
- JBoss RESTeasy Instalando o Node.js.
(resteasy.sf.net) – JAX- h
RS: implementaçã o de A instalaçã o do Node.js t
JSR-311. RESTful Web é extremamente simples t
Services para Java graças ao fato de o V8 p
usando anotaçõ es. JavaScript Engine ser : Agora basta voltar ao
- Apache CFX – An completamente / seu navegador e ver o
Open Source Service multiplataforma, tudo que / resultado.
Framework. RESTful você precisa fazer é visitar 0
Services: JAX-RS (JSR- a pá gina oficial do Node.js, . Orientado a eventos e
311), HTTP Binding, clicar em “INSTALL” e 0 não obstrutivo.
JAX-WS Provider and seguir as instruçõ es. .
Dispatch. 0 Orientado a eventos.
- Axis2/Java – O web server ‘Olá . Quando estamos
RESTful Web Services mundo!’ 0 desenvolvendo com
Support, Apache : Node.js devemos utilizar
Software Foundation. Nosso primeiro 3 uma abordagem orientada
- Restlet – exemplo é um servidor 0 a eventos, isso quer dizer
Lightweight REST que retorna a string ‘Olá 0 que o desenvolvedor
framework for Java. mundo’ para qualquer 0 precisa conhecer os
- Gomba – Java requisiçã o. Para fazer isso / eventos que serã o
RESTful web services. utilizando Node você vai emitidos em diferentes
- JRA – Java REST precisar de criar um > momentos da execuçã o e
Annotations, em arquivo JavaScript que também saber como ouvi-
Codehaus. pode ser chamado O los para executar as
l operaçõ es necessá rias.
47 https://tableless.com.br/o-que- á Um bom exemplo de
nodejs-primeiros-passos-com-
node-js/
orientaçã o a eventos está
na construção de que estamos servindo na imprimeFrase que Mani
interfaces de usuá rio. porta 3000. imprime o valor de uma
Muitas vezes utilizamos determinada variá vel no pulação
elementos como por console. Como e
exemplo os botõ es que ao Não obstrutivo. dependemos da leitura da visualiz
serem clicados emitem Todos os recursos frase na fonte de dados
um evento do tipo click ao presentes no Node.js e para imprimir o valor, ação de
qual podemos ouvir e também a maioria das passamos a função que dados:
executar alguma bibliotecas feitas para ele imprime como parâ metro linguag
operaçã o. adotaram um padrã o nã o para a funçã o de leitura
No nosso exemplo obstrutivo de escrever para que possamos em R
anterior utilizamos esse có digo, isso quer dizer que executar essa função 3.4.2 e
conceito quando em Node.js você quando a leitura for R
chamamos método listen geralmente vai conseguir concluída. Esse tipo de
do objeto do tipo web função que é passada
Studio
estruturar seu có digo de
server e passamos como uma maneira que como parâ metro dessa 5.1,
parâ metro a porta 3000, operaçõ es que nã o maneira é chamada de OLAP,
com isso fizemos que a dependem de nada que callback.
nossa aplicaçã o ouvisse ao Ao executar este
MS
está sendo executado
evento que é emitido possam ser executadas de exemplo com Node.js ou Excel
sempre que alguém faz forma independente. qualquer mecanismo 2013;
uma requisiçã o no Para mostrar um JavaScript você vai
localhost:3000 e a nossa pouco como isso funciona, perceber que a frase “Olá ”
resposta foi servir a string vamos um programa que será impressa antes da
ou a pá gina html. Este escreve duas frases no outra frase mesmo
evento é chamado terminal, porém uma estando posicionada LINGUAGEM R48.
request. dessas frases precisa ser depois no có digo, isso se
Para ilustrar estes carregada da memó ria deve ao fato de sua A Microsoft adquiriu a
conceitos, podemos antes de ser impressa. execuçã o nã o depender de fornecedora Revolution
escrever o nosso exemplo nada enquanto a execuçã o Analytics, que é líder de
anterior em uma sintaxe var frase; da outra frase depende de softwares e serviços para
alternativa da seguinte uma operaçã o que leva 3 a linguagem de
forma: segundos. programaçã o R de có digo
carregaFrase =
Este é um exemplo aberto. O interesse da
function
var http = extremamente simples de Microsoft em adquirir este
(callback)
require('http'); como criar um có digo nã o serviço reflete o interesse
{ setTimeout(fun
obstrutivo, portanto use da comunidade, de forma
ction() {
var server = sua imaginaçã o para que a linguagem R tem
//Simula leitura da
http.createServer(); imaginar cená rios em que sido popularizada com o
frase no banco de
isso pode ser ú til. passar dos anos. Além da
dados.
Observe que no nosso Microsoft, houveram
server.on('request', frase = "Minha frase
primeiro exemplo com contribuiçõ es da Oracle,
function(req,res) { obstrutiva";
Node.js tanto a função on que tem contribuído com
res.writeHead(200, callback();
quanto a funçã o pacotes R, além de
{ 'Content-Type': }, 3000)
createServer podem fornecer o Oracle R
'text/html; }
receber uma funçã o de Enterprise como um
charset=utf-8'
callback. componente da Oracle
}); imprim Advanced Analytics.
res.end('<h2> Olá eFrase Devido ao presente
mundo! </h2>'); = suporte oferecido por
}); functio grandes corporaçõ es,
n () temos que o R oferece um
server.listen(3000); { cons valor comercial
ole.log( significativo para o
console.log('Servidor frase); mercado.
iniciado em }
localhost:3000. Ctrl+C Por que devemos
para carregaFrase(imprime utilizar o R?
encerrar…’); Frase);
A linguagem R foi
Dessa forma podemos console.log(“Olá "); criada com base na
ver claramente a maneira linguagem de
em que o Node.js opera Nesse exemplo foi programaçã o S, criada na
para servir a sua pá gina. criada uma funçã o década de 70. O R foi
Utilizamos o método on chamada carregaFrase criado como uma
do nosso objeto server cujo objetivo é ler uma
para ouvir ao evento 48
determinada frase de uma
https://www.devmedia.com.br/tra
request e fazer as fonte de dados, e uma balhando-com-a-linguagem-
operaçõ es. E definimos outra funçã o chamada r/33275
alternativa de có digo já que o R é um conjunto mais utilizados. O R já vem pacotes ggplot2 e o dply.
aberto por volta dos anos integrado de facilidades com uma grande O ggplot2 é uma
90, sendo utilizada por de software voltado para quantidade de pacotes implementaçã o da
cientistas, estatísticos e, manipulação de dados e pré-instalados, mas ainda gramá tica de grá ficos para
mais recentemente, exibiçã o grá fica. Duas das assim, muitas vezes, a linguagem R, que
cientistas de dados como maiores empresas precisamos adicionar implementa um sistema
um meio conveniente para presentes no mercado, pacotes mais específicos, o de condicionamento
a aná lise explorató ria de Facebook e FourSquare, que pode ser realizado de multidimensional e uma
dados interativos. Ao utilizam a linguagem R duas possíveis formas: interface consistente para
contrá rio do que se tanto para recomendaçõ es que sã o através de linha o mapeamento dos dados
imagina sobre a quanto para modelagem de comando, ou acessando a atributos estéticos. Já o
linguagem R, ela nã o é de comportamentos dos o link “pacotes” presente dply é utilizado como uma
limitada a apenas sessõ es usuá rios. no menu superior e, em ferramenta rá pida e
iterativas, pois devido ao A linguagem R é uma seguida, selecionando a consistente para
fato de ser uma linguagem linguagem de opçã o de “instalar trabalharmos com
de programaçã o, os programaçã o pacotes”. conjuntos de dados como
scripts podem ser criados dinamicamente tipada, ou Ao tentarmos instalar objetos. Para instalarmos
e empacotados como seja, podemos modificar um novo pacote, antes é os pacotes utilizaremos
bibliotecas. As soluçõ es os tipos de dados contidos apresentada uma janela funçõ es do pró prio R,
com base em scripts em variá veis em na qual temos os espelhos utilizando as linhas de
fornecem resultados mais programas que já estejam de onde podemos realizar comando.
consistentes e confiá veis em execução, com isso, o download. Basta Podemos fazer da
do que os fluxos de temos uma melhoria na selecionar o que melhor seguinte forma:
trabalho tradicionais, que hora de programarmos, lhe convier, o que no
requerem uma grande pois nã o precisaremos nosso caso, foi entre as install.packages("dply
quantidade de interaçõ es realizar conversõ es dos opçõ es presentes no r")
manuais com uma tipos de dados. Brasil. install.packages("ggpl
interface grá fica de Apó s instalarmos os ot2")
usuá rio. Trabalhando com o R. pacotes, precisamos
Essa linguagem, carregar os pacotes para Com estes pacotes
muitas vezes, nã o é Para que possamos trabalhamos com eles. Ao instalados precisaremos
considerada como uma trabalhar com o R, carregá -los, caso estes agora referenciá -los
linguagem de precisaremos inicialmente tenham dependências, dentro do script no qual
programaçã o, sendo mais fazer o download do estas serã o carregadas eles serã o utilizados. As
comparada a um produto instalador, o qual sem que precisemos nos expressõ es R podem ser
estatístico especializado, podemos fazer a partir do preocupar com sua inseridas em um
como é o caso do SAS. Este site oficial. No pacote instalaçã o. Para que interpretador de linha de
é um tema amplamente principal sã o possamos instalar os comando, de forma que já
discutido quando se disponibilizadas versõ es pacotes através de linha obtemos uma resposta
considera a manipulaçã o de linha de comando de comando, fazemos isso imediata, como podemos
de dados usando planilhas baseadas em texto, que é o da seguinte forma: observar no exemplo a
do Excel ou um banco de r.exe, e o Rscript.exe, que library(nome do pacote) seguir;
dados relacional como o foi projetado para ser
servidor SQL. A linguagem usado em scripts e Ao criarmos uma mean(c(8, 9, 3, 4))
R é mais usada para arquivos de lote CMD. variá vel, esta será seguida
manipulaçã o de conjuntos Além disso também é do símbolo “<”, que indica Neste nosso primeiro
de dados de tamanho disponibilizado o que as informaçõ es exemplo temos a
médio, aná lises RGui.exe, que nos fornece passadas no lado direito utilização de duas
estatísticas e produçã o de uma interface de comando do símbolo serã o funçõ es: c() e mean().
documentos e e uma interface grá fica gravadas para esta
apresentaçõ es centradas para um melhor variá vel. Um exemplo A funçã o c() combina
em dados. Além disso, nos aproveitamento. Para uma simples, seria a criaçã o de todos os seus argumentos
fornece uma ampla melhor experiência, um vetor no qual num só vetor R, que é
variedade de modelagens baixaremos também o utilizaremos a funçã o c() parecido a uma matriz em
lineares e nã o lineares, Rstudio, que é a IDE para indicar que será linguagens de
testes estatísticos utilizada para a linguagem realizado um programaçã o. Já a funçã o
clá ssicos, aná lise de séries R. Para realizarmos o agrupamento de dados em mean() retorna a média
temporais, clustering, download basta forma de vetor, como aritmética dos valores
além de ser altamente acessarmos o site oficial. podemos ver a seguir: presentes no vetor, o que
extensível. Um dos pontos Com o intuito de um no nosso caso seria
fortes do R é a facilidade melhor aproveitamento vetor<-c(1, 2, 3, 4, 5, 6, retornado o valor 6.
que podemos ter com uma em relaçã o ao 7, 8, 9, 10) Para que possamos
melhor qualidade em entendimento do ver alguns dos recursos
relaçã o a plotagens bem funcionamento do R, Seguiremos agora com presentes nos pacotes que
desenhadas, inclusã o de trataremos aqui algumas a instalaçã o dos pacotes instalamos podemos
símbolos matemá ticos e de suas funçõ es bá sicas, que serã o necessá rios utilizar o seguinte
de fó rmulas, quando estas assim como, apresentar para o decorrer do nosso comando:
passam a ser necessá rias, alguns de seus pacotes artigo, que serã o os
data(package='ggplot2 função summary é podem ser utilizadas ao Como podemos observar,
') utilizada para apresentar invés das chamadas de o RStudio possibilita um
os resultados da operação. funçõ es complexas. A aumento ainda mais
Para que possamos Por ú ltimo, para seguir, veremos um expressivo do R como um
ver os conjuntos de dados adicionarmos uma linha, exemplo que mostra como ambiente interativo para
presentes no pacote, apresentando o declínio podemos criar um aná lises estatísticas, além
devemos utilizar a funçã o gradual realizado pela histograma com um de também aumentar a
head(), como podemos função, utilizamos a gradiente de cor com capacidade do R para
ver a seguir, onde função abline(), que pode apenas quatro linhas de apresentar, de forma mais
primeiro especificamos o aplicar uma ou mais có digo. A plotagem gerada simples, os conceitos
pacote e em seguida, a linhas sobre a plotagem. é um histograma que complexos usando
funçã o desejada: Para isso passamos para indica o nú mero de expressõ es simples ou
ela três parâ metros, que classificaçõ es que mesmo interaçõ es.
library(ggplot2) sã o a fó rmula utilizada - aparecem no conjunto de
head(mpg) no nosso caso, dados. Trabalhando com o R
mediaLinear -, uma cor Muito poucos estã o a em lotes.
Temos vá rios para a linha, e por fim, a zero ou 10, enquanto que
conjuntos de dados espessura, como podemos a maioria está em torno Como bem sabemos, o
disponíveis, onde um ver um exemplo a seguir: dos 5,9. Dessa forma, R não está limitado a
deles é o movies, que podemos ver que há um apenas execução
contém dados referentes a abline(medialinear, nú mero maior de valores interativa. Podemos ver
filmes, como o título, ano, col=’blue’, lwd=’6’) pró ximos à média, que que Scripts que envolvem
categoria, dentre outras aparece em vermelho, uma série de chamadas de
informaçõ es. Outro Muitas vezes com a enquanto a cor varia função também podem ser
conjunto de dados é o linguagem R podemos gradualmente para verde executados com ele, onde
mpg, que apresenta a realizar a mesma tarefa de nas extremidades inferior estes scripts sã o salvos
economia de combustível maneiras diferentes, como e superior do intervalo, com uma extensã o do tipo
para 38 modelos de ao usar o pacote grá fico onde há menos ".R" por convençã o. Na
carros. Um outro exemplo do ggplot2 para criar um classificaçõ es. Para que Figura 4, apresentada
simples que podemos ver estilo diferente do possamos apresentar este acima, pode ser gerada
seria a execuçã o de uma apresentado exemplo precisamos que o através da criaçã o de um
regressã o linear, de forma anteriormente. Dito isso, nosso có digo seja script, que podemos
que precisaríamos criaremos um novo parecido com o chamar de filmesTeste.R,
especificar apenas as exemplo utilizando o apresentado a seguir. contendo o có digo como
colunas x e y como método geom_smooth que podemos ver de acordo
argumentos da nossa faz o cá lculo de regressã o Listagem 2. Criando com o exemplo.
funçã o plot(), como linear internamente, como um exemplo de
mostra o seguinte podemos ver no exemplo: histograma para Criando pacote com o
exemplo onde utilizamos classificação de filmes. R Studio.
o conjunto de dados do Exemplo de dispersão
mpg: dos pontos com o método library(ggplot2) library(ggplot2)
stat_smooth(). ggplot(movies, ggplot(movies,
plot(mpg$displ, aes(x=rating)) + aes(x=rating)) +
mpg$hwy) library(ggplot2) geom_histogram(aes(f geom_histogram(aes(f
ggplot(mpg, ill ill = ..Quantidade..)) +
Ao executarmos a aes(displ, = ..count..)) + scale_fill_gradient("Qu
funçã o plot() uma nova hwy)) + scale_fill_gradient("qu antidade", low =
tela é apresentada geom_point() antidade", low = "green", high =
contendo o grá fico linear + "green", high = "bl
referente ao efeito do stat_smooth(method="me "blue") u
deslocamento do motor dialinear") e
(displ) por milhagem de O RStudio também "
gá s (hwy). Claro que estamos pode ser utilizado para )
Para expressarmos o apresentando os recursos criar documentos HTML
modelo linear, podemos apenas com a aplicaçã o ou mesmo PDF’s e g
fazer isso com apenas principal do R, mas se apresentar templates g
duas linhas de có digo, começarmos a utilizar o R HTML. Ele simplifica s
como podemos ver a em conjunto com R Studio processos comuns como a a
seguir: teremos muito mais exportaçã o de imagens e a v
interaçã o no importação e exportaçã o e
mediaLinear<-lm(hwy desenvolvimento. O de arquivos de dados. Ele (
~ displ, mpg) RStudio torna o trabalho fornece visibilidade para '
summary(mediaLinea com R ainda mais fá cil, de uma grande quantidade f
r) forma a nos oferecer de informaçõ es sobre o i
A funçã o lm() é uma teclas de atalho, ambiente e os comandos l
funçã o de modelo linear, conclusõ es de có digo, executados do R de forma m
assim como aná lise de gerenciamento de janelas, bastante interativa e
regressã o linear. Já a e interaçõ es grá ficas que durante uma sessã o. s
. tipagem está tica. As l Tabelas que poderã o
p conversõ es de tipo de y conter milhares de
n dados ocorrem de forma r registros, com muitos
g automá tica. Isso ocorre, ) gigabytes, ou até mesmo
' devido ao fato disso poder alguns terabytes de dados,
) ser extremamente ú til, m sã o manipuladas
mas também confuso. No o (BARBIERI, 2001).
nosso pró ximo exemplo, v A modelagem
Como podemos utilizaremos o booleano i dimensional produz um
observar, temos o mesmo True, de forma a e modelo conceitual
có digo apresentado na avaliarmos se a s dimensional, formado por
Listagem 2, com a informação é 1 ou nã o, tabelas Fato e tabelas
diferença de que temos sendo que estaremos % Dimensã o. Para auxiliar a
aqui a introdução do incluindo tantos valores > modelagem, Scheeren
método ggsave(), o qual é inteiros quanto decimais, % (2009) sugere a utilização
utilizado para que como podemos ver a de diagramas de classes.
possamos salvar a seguir: filter(year == 2005 & Segundo Italiano e
imagem em um arquivo Comedy == 1 & length Esteves (2004b), a etapa
que chamamos de mean(c(9.0, 9, 8, > 115) %>% de modelagem
filmes.png. Esta imagem é TRUE)) select(title, rating) dimensional é composta
criada ao chamarmos o por alguns passos, cujo
script usando o O que nos retorna um Como podemos ver, objetivo é representar as
Rscript.exe, em ambiente valor de 6.75. Como temos que os dados foram necessidades de aná lise e
Windows. Uma podemos perceber, o R faz apresentados no formato de informaçõ es do
observaçã o a ser feita aqui necessariamente o que de linhas e colunas, de usuá rio:
é que dependendo do queremos que ele faça, forma que podemos - definir fatos e
ambiente que esteja sendo contanto que tenhamos utilizar a sintaxe do dplyr métricas – neste passo é
utilizado, precisaremos um có digo bem escrito. para mapas utilizando definido o que deve ser
especificar o caminho que Além disso, o R é utilizado conceitos do SQL, além de avaliado no DW. Definida
contenha o executá vel do de forma interativa podermos utilizar essa a á rea de negó cios que
Rscript. O comando a ser envolvendo o cruzamento biblioteca com base em está sendo modelada,
utilizado é apresentado a de dados que nos ajuda a dados relacionais baseado deve ser respondida a
seguir: identificar o có digo em dados do SQL Server. seguinte questã o: “O que
problemá tico. Além disso, Hoje, temos que a estamos avaliando?”. A
Rscript.exe filmes.R. as bibliotecas de terceiros linguagem R conta com resposta desta pergunta é
podem esconder muitos mais de 5000 pacotes a lista de fatos. Com isso,
Ao utilizarmos a detalhes de baixo nível da disponíveis para foi possível identificar
linguagem R, podemos linguagem. A biblioteca utilização de forma grat. dois fatos: Faturamento e
muitas vezes nos dplyr utiliza um operador Trá fego de Documentos.
sentirmos frustrados, (%>%) para transmitir os Modelagem Depois de encontrar os
como programadores, resultados de uma funçã o, dimensional e análise de fatos, foram identificadas
devido a simplicidade que como podemos ver no requisitos para sistemas as métricas para cada fato;
o R oferece em muitas das exemplo a seguir, onde o analíticos, ferramentas - definir as
situaçõ es, como por conjunto de dados de ETL e OLAP.49 dimensõ es de negó cios –
exemplo, ao utilizarmos a filmes é filtrado para apó s a identificação dos
funçã o c(), que além de selecionar apenas filmes A etapa de modelagem fatos e métricas que serã o
ser curta e nã o descritiva, de comédia com mais de dimensional é armazenados no DW, são
apresenta resultados 120 minutos de duração e considerada uma das mais definidas as dimensõ es
consistentes, de forma que foram lançados no importantes e é um dos relacionadas à s métricas,
que este é apresentado ao ano de 2005. O título e a fatores críticos de sucesso que serão utilizadas para
lado de um array, [1], classificação desses filmes em um projeto de DW. Ela a avaliaçã o dos fatos. A
devido ao fato de seu serã o exibidos, como possibilita que o usuá rio questã o deste passo é:
resultado ser também um podemos ver de acordo obtenha as informaçõ es “Como as métricas serã o
vetor de comprimento e o com o exemplo. em uma forma muito analisadas?”;
numeral 1 indica que o pró xima do seu - definir a
índice de valor é exibido. Exemplo de filtro de entendimento, com vá rias granularidade das
A linguagem R nã o tem, no filmes. perspectivas possíveis. A informaçõ es em cada
entanto, noção de valores normalização e a nã o dimensã o – apó s a
primitivos independentes, l redundâ ncia sã o definição das dimensõ es
de forma que um valor em i dispensadas na de negó cio, deve ser
particular é um ú nico b modelagem dimensional, definido o nível de detalhe
elemento contido dentro r com o intuito de se obter (granularidade) mais
de um vetor. Com relaçã o a estruturas mais á geis. baixo que será avaliado. O
aos tipos de dados r seguinte questionamento
49 Referências - Business
utilizados, estes sã o y deve ser realizado ao
Intelligence: um sistema de apoio a
importantes, mas nã o ( decisões gerenciais - usuá rio: “Qual o nível de
explicitamente chamados d André Amaral Muszinski, Silvia de detalhe desejado?”. Para o
como em linguagens de p Castro Bertagnolli fato Faturamento a
granularidade é mensal, para se manter o histó rico sempre online e
para o fato Trá fego é destas alteraçõ es no DW. contivesse todas as
diá ria; Modelos A tabela Fato será informaçõ es dos sistemas
- definir a Dimensionais composta por métricas e de processamento de
hierarquia de Faturamento e chaves para cada uma das transaçõ es online (Online
agrupamento das Trá fego. dimensõ es. A chave Transaction Processing -
informaçõ es – é primá ria da tabela Fato OLTP), incluindo dados
necessá rio definir as Conforme ilustrado na será composta por histó ricos (DELANEY;
possibilidades de Figura 1, todos os fatos atributos que AGARWAL, 2006). Porém,
agrupamento foram modelados correspondem a chaves esta infra-estrutura seria
(sumarizaçã o) das utilizando o esquema estrangeiras, satisfazendo reorganizada e
informaçõ es desejadas estrela, proposto por as restriçõ es impostas estruturada de forma a
pelo usuá rio, Kimball (2002). Além de pela integridade de oferecer rapidez e
especificando estes ser o esquema de entidade (obrigatoriedade eficiência em consultas,
agrupamentos em cada modelagem mais e unicidade da chave aná lises e suporte à
uma das dimensõ es de conhecido e utilizado em primá ria) e pela decisã o. Em geral, o DW é
negó cio. Este passo deve bases de dados de suporte integridade referencial. armazenado em um banco
responder a seguinte à decisão (MACHADO, A finalizaçã o da de dados separado da
questã o: “Como se espera 2004), ele possui modelagem dimensional é base operacional. Esta
agrupar ou sumarizar as excelente desempenho a condiçã o necessá ria separaçã o evita a perda de
informaçõ es?”. A nas consultas, pois reduz para iniciar o projeto desempenho no processo
dimensã o tempo do fato o nú mero de joins. Outra físico do banco de dados, operacional da empresa
Trá fego possui a seguinte vantagem do esquema conforme apresenta a (BARBALHO, 2003). Os
hierarquia: Ano -> estrela é a facilidade com pró xima seçã o. tomadores de decisã o
Semestre -> Trimestre -> que o usuá rio nã o técnico necessitam de
Mês -> Dia. Para o fato consegue visualizar as Data Warehouse. informaçõ es concisas e
Faturamento, a dimensão aná lises do negó cio confiá veis, sobre
tempo possui a hierarquia (MACHADO, 2004). Um data warehouse operaçõ es atuais,
a seguir: Ano -> Semestre Optou-se pela criaçã o (DW) é um conjunto de tendências e mudanças.
-> Trimestre -> Mês. de um DM para cada dados produzido para As informaçõ es de
Apó s a identificaçã o de aplicaçã o da organização oferecer suporte à tomada interesse para a empresa
todos os elementos NeoGrid. Por esse motivo, de decisõ es. Ele é um sã o constantemente
necessá rios para a estes dois fatos serã o repositó rio de dados fragmentadas com o uso
modelagem, através de armazenados em apenas atuais e histó ricos de de diferentes sistemas
entrevistas e aná lise dos um DM. possível interesse aos operacionais e fontes
modelos Fonte das Um importante gestores de toda a externas, e assim os
Informaçõ es, Fonte dos atributo da tabela organizaçã o. Os dados, gestores tomam decisõ es
Dados e Dimensã o é a sua chave normalmente, são com informaçõ es parciais,
Entidade- primá ria. Por questõ es de estruturados de modo a na melhor das hipó teses.
Relacionamento, foram desempenho, não serã o estarem disponíveis em O DW supera este
definidos os modelos utilizadas chaves um formato pronto para obstá culo acessando,
esquematizados pela compostas ou atividades de integrando e organizando
figura abaixo. concatenadas. Para cada processamento analítico os principais dados
tabela Dimensão foi (processamento analítico operacionais de uma
definido que sua chave online, mineraçã o de forma consistente,
primá ria será um nú mero dados, consultas, geraçã o confiá vel e prontamente
inteiro atribuído de relató rios, outras disponível, onde for
seqü encialmente. Kimball aplicaçõ es de suporte à necessá rio (TURBAN et. al,
(2002) sugere que sejam decisã o). Portanto, um 2009). Um data
utilizadas chaves DW é uma coleção de warehouse une bancos de
genéricas (artificiais), dados orientada por dados de toda uma
também chamadas de assunto, integrada, empresa. Já um Data Mart
surrogate keys. Um dos variá vel no tempo e nã o- (DM), normalmente é
principais motivos para a volá til, que proporciona menor e se concentra em
criaçã o de chaves suporte ao processo de um assunto ou
genéricas é que o DW, por tomada de decisõ es da departamento específico.
manter as informaçõ es gerência (LARSON; Um Data Mart é um
histó ricas, nã o pode ficar AGARWAL, 2006). Os DWs subconjunto de um DW,
vulnerá vel a problemas de contêm uma grande que normalmente consiste
duplicaçã o de chaves variedade de dados que em uma ú nica á rea
durante novas cargas de apresentam uma imagem temá tica (ex.: marketing,
dados. Outra importante coerente das condiçõ es da vendas, operaçõ es). Em
razã o para o uso de empresa em um um DM pode existir mais
chaves genéricas, é que determinado ponto no de um fato e a utilizaçã o
em caso de alteraçõ es de tempo. A idéia por trá s do de dimensõ es comuns a
atributos nos sistemas conceito foi criar uma eles (MACHADO, 2004).
transacionais, as chaves infra-estrutura de banco Os DMs sã o uma soluçã o
genéricas serã o a base de dados que estivesse menos cara, capazes de
serem substituídos por Cada arquitetura de de um DW utilizam a A implementaçã o
um DW ou de DW tem aplicaçõ es arquitetura e os dados do combinada tem o
complementá -lo. Eles específicas para as quais DW; (ii) visã o de propó sito de integrar a
podem ser dependentes sua eficiência é maior (ou empreendimento – o DW arquitetura top down com
ou independentes de um menor), e assim oferece os concentra todos os a bottom up. Nessa
DW. benefícios máximos para a negó cios da empresa; (iii) abordagem efetua-se a
Arquiteturas de Data organizaçã o (BALLARD et. controle e centralizaçã o modelagem de dados do
Warehouse A escolha da al, 2006). de regras – garante a DW de visão macro, sendo
arquitetura e sua A decisã o de qual existência de um ú nico o passo seguinte a
implementaçã o sã o arquitetura implementar conjunto de aplicaçõ es implementaçã o de partes
decisõ es gerenciais do pode causar impactos ETL (Extract, Transform desse modelo. Essas
projeto. Estes fatores quanto ao sucesso do and Load). Machado partes sã o escolhidas por
estã o relacionados à infra- projeto de um DW. (2004) destaca as processos ou atividades
estrutura disponível Diversos fatores seguintes desvantagens: da á rea de interesse e
(banco de dados, influenciam a escolha da (i) implementaçã o muito constituem os DMs. Cada
ferramentas OLAP e ETL, arquitetura e longa; (ii) alta taxa de DM pode ser gerado a
processamento paralelo, implementaçã o, entre elas risco – nã o existem partir do macromodelo de
particionamento de o tempo para execução do garantias para o dados do DW e integrado
dados), ao ambiente de projeto, a necessidade investimento neste tipo de ao modelo físico do DW
negó cios (porte da urgente de um DW, o ambiente; (iii) (MACHADO, 2004).
empresa), escopo de retorno do investimento a expectativas relacionadas
abrangência desejado, ser realizado, a velocidade ao ambiente – a demora Modelagem
assim como a capacidade dos benefícios da do projeto e a falta de dimensional
da equipe interna de TI e utilização das retorno podem induzir O projeto de DW se
dos recursos informaçõ es, a limitaçã o expectativas nos usuá rios. baseia no conceito de
disponibilizados para de recursos, a satisfação Devido ao custo e modelagem dimensional
investimento (MACHADO, do usuá rio executivo, a tempo necessá rios em (ou multidimensional),
2004). De acordo com compatibilidade com uma implementaçã o top que compreende um
Ballard et. al (2006), as sistemas existentes e os down, a implementaçã o sistema baseado em
principais arquiteturas recursos necessá rios à bottom up vem se recuperaçã o que suporta
utilizadas são: implementaçã o de uma tornando muito popular. acessos com alto volume
- arquitetura de arquitetura (KIMBALL, O propó sito é construir de consultas. A
Data Warehouse 2002). um DW incremental a representaçã o dos dados é
Empresarial (Enterprise partir do desenvolvimento estruturada como um
Data Warehouse – EDW) – Tipos de de DMs independentes. cubo, transmitindo a ideia
é considerada a que Implementação Ela é bastante utilizada, de mú ltiplas dimensõ es.
suporta toda ou maior Vá rios tipos de pois possui um retorno de A maior vantagem da
parte dos requisitos ou implementaçã o de investimento muito multidimensionalidade é
necessidades. Ela possui arquiteturas de DW rá pido (KIMBALL, 2002). que ela permite que os
grande grau de acesso e a podem ser usados. Kimball (2002) destaca as dados sejam organizados
utilizaçã o das informaçõ es Segundo Machado (2004), seguintes vantagens da de acordo com a
é para todos os os tipos de abordagem bottom up: preferência de cada
departamentos de uma implementaçã o mais implementaçã o rá pida, usuá rio (ou á rea de
empresa; utilizadas em empresas retorno rá pido e enfoque negó cio). Apresentaçõ es
- arquitetura de sã o: top down, bottom up inicial nos principais diferentes dos mesmos
Data Mart Independente – e uma combinaçã o das negó cios. Já Machado dados podem ser
é um DW projetado para duas. (2004) destaca as providenciadas de modo
uma unidade estratégica A implementaçã o top seguintes desvantagens: rá pido e fá cil (ITALIANO;
de negó cios ou um down é conhecida como (i) perigo de DMs legados: ESTEVES, 2004a). O
departamento, mas cuja padrã o inicial do conceito um dos maiores perigos modelo multidimensional
fonte nã o é um EDW. Eles de DW. no DW é a criaçã o de DMs é baseado em três tipos de
sã o fá ceis de construir, Ela requer maior independentes. A soluçã o estruturas (REIS;
porém envolvem altos planejamento e trabalho pode nã o considerar a TEIXEIRA; ARAÚ JO,
custos, redundâ ncia de de definiçõ es conceituais arquitetura de forma 2009):
dados e nã o permitem de tecnologias completos global. Desse modo, os - fatos – a tabela
uma visã o global da antes de iniciar o projeto DMs independentes de fatos é a tabela central
empresa; de DW. Neste tipo de transformam-se em DM do modelo e contém os
- arquitetura de arquitetura constró i-se, legados, que podem valores (numéricos) que
Data Mart Dependente em primeiro lugar, o EDW inviabilizar futuras se deseja analisar,
(Integrados) – é um e depois se extrai os dados integraçõ es; (ii) geralmente, contendo um
subconjunto criado a para os DMs (INMON, dificuldade em obter a grande volume de dados.
partir do EDW. Ele tem a 2005). visão do A tabela fato possui
vantagem de usar um A abordagem top empreendimento; (iii) chaves externas, que se
modelo de dados down, proposta por coordenaçã o de mú ltiplas relacionam com suas
consistente e apresentar Inmon (2005), apresenta equipes e iniciativas; e (iv) tabelas de dimensõ es, e
dados de qualidade. como vantagens: (i) procedimentos de ETL campos numéricos que
herança de arquitetura – mais complexos. sã o os valores (medidas)
todos os DMs originados que serã o analisados;
- dimensõ es – as esquema estrela, neste Excel ou até uma fila de projeto foi utilizada a
tabelas de dimensõ es esquema os dados das mensagens (TURLEY; ferramenta Integration
representam um aspecto dimensõ es estã o KASPRZAK; CAMERON, Services, que faz parte do
do negó cio que está sendo distribuídos em mú ltiplas 2007). pacote SQL Server. O
analisado. Sua chave tabelas. O processo de ETL é Integration Services é a
primá ria serve para As estruturas das um componente essencial ferramenta de ETL da
manter a integridade dimensõ es possuem de qualquer projeto soluçã o de BI da
referencial na tabela fato à níveis, onde cada nível de centrado em dados. Langit Microsoft. Ela permite
qual está relacionada. uma dimensão deve ter (2008) classifica o desenvolver graficamente
Uma dimensã o oferece ao correspondência com uma processo em três etapas: todo o fluxo do processo.
usuá rio um grande coluna na tabela da (i) extraçã o, com leitura Além de facilitar o
nú mero de combinaçõ es e dimensã o. Os dados sã o de uma ou mais fontes de desenvolvimento, permite
intersecçõ es para analisar classificados (ordenados) dados; (ii) transformaçã o, uma melhor compreensã o
os dados, possibilitando por grau de detalhe e sã o onde dados anteriormente do processo, tornando
diversas formas de organizados em uma extraídos sã o convertidos menos complexas as
visualizar os dados; estrutura hierá rquica na forma em que precisam futuras manutençõ es.
- medidas – sã o (ITALIANO; ESTEVES, estar, para que sejam
atributos numéricos 2004b). colocados em um DW ou
armazenados na tabela de em um banco de dados; Processo ETL do Fato
fatos, que representam o Integração de dados e (iii) e carga dos dados no Trá fego.
desempenho de um processos de ETL DW.
indicador em relaçã o às Um grande objetivo do É comum que as Todos os dados foram
dimensõ es que participam DW é integrar dados de organizaçõ es possuam importados dos
desse fato. mú ltiplos sistemas. A sistemas transacionais servidores de bancos de
integraçã o de dados desenvolvidos por dados de produção (3
A modelagem compreende três grandes diferentes equipes e, que servidores SQL Server
multidimensional é um processos que, quando no seu desenvolvimento, 2008). Nã o foi necessá ria
processo que envolve implementados tenham adotado a importaçã o de arquivos
algumas etapas cujo corretamente, permitem diferentes convençõ es na ou de qualquer outro tipo
objetivo é levantar e que eles sejam codificação de variá veis, de estrutura de
representar as disponibilizados a um nomes dos atributos das armazenamento.
necessidades de aná lise e conjunto de ferramentas tabelas, diferentes tipos O primeiro passo foi
de informaçõ es dos de Extraçã o, de dados ou formatos de desenvolver os processos
usuá rios de determinado Transformaçã o e Carga datas. Ao extrair os dados de ETL das dimensõ es e,
departamento ou á rea de (ETL), aná lise e ao dos diferentes sistemas, posteriormente, os
negó cios (REIS; TEIXEIRA; ambiente de data deve ser definido um processos dos fatos. A
ARAÚ JO, 2009). Para warehousing (LANGIT, formato ú nico para o DW tabela de fatos referência
Ballard et. al (2006), 2008). Já os processos e realizar as as tabelas de dimensõ es
existem três tipos bá sicos compreendem: (i) acesso transformaçõ es através de chaves
de modelos aos dados (a capacidade necessá rias em cada caso estrangeiras e por este
multidimensionais: de acessar e extrair dados (TURLEY; KASPRZAK; motivo deve sempre ser a
- esquema estrela de qualquer fonte), (ii) CAMERON, 2007). ú ltima tabela a ser
– cada dimensã o é federação de dados (a Componente essencial atualizada durante o
formada por apenas uma integraçã o das de qualquer projeto processo de ETL
tabela nã o padronizada. O visualizaçõ es de negó cios centrado em dados, as (integridade referencial).
fato de suas tabelas nã o em diversos data stores) e tecnologias de extraçã o, No desenvolvimento
estarem normalizadas, (iii) captura de alteraçõ es transformaçã o e carga dos pacotes ETL, foram
resultará em uma menor (com base na (ETL) sã o consideradas o utilizados componentes
quantidade de tabelas no identificação, captura e “coraçã o” da parte técnica para conexõ es a bancos de
modelo do DM, mas como entrega das alteraçõ es do processo de data dados (OLE DB), execuçã o
consequência poderá feitas nas fontes de dados warehousing (TURBAN et. de scripts SQL e captura
causar redundâ ncia dos da empresa). al, 2009). Durante esta de alteraçõ es nas fontes
dados, fato característico O ETL é extremamente etapa sã o definidos os de dados.
neste tipo de soluçã o; importante na integraçã o processos necessá rios Na dimensã o
- esquema multi- de dados e também no para transformar o LOCALIZACAO_REMET
estrela – este esquema é DW, pois seu objetivo é modelo Fonte em um ENTE, os dados de
baseado no esquema carregar dados integrados modelo Dimensional CNPJ e razã o social sã o
estrela, com uma tabela e limpos. Os dados usados (BARBIERI, 2001). Esta monitorados na base
para cada dimensã o, nestes processos podem etapa é um grande desafio transacional. Caso algum
porém existem mú ltiplas ser oriundos de qualquer para os gestores de TI, destes valores seja
tabelas de fatos, unidas fonte: uma aplicaçã o de pois os processos de ETL alterado, o processo
através das dimensõ es; mainframe, uma aplicaçã o costumam consumir cerca realiza a atualizaçã o
- esquema floco de ERP (Enterprise Resource de 70% do tempo de um destes no DW. A figura a
neve – neste esquema as Planning), uma projeto (TURBAN et. al, seguir apresenta a
tabelas das dimensõ es ferramenta de CRM 2009). execuçã o do ETL da
estã o padronizadas para (Relationship Conforme apresentado dimensã o
eliminar a redundâ ncia Management), um arquivo no Trabalho de Conclusão LOCALIZACAO_REMETEN
dos dados. Diferente do texto, uma planilha do de Curso I, durante este TE. Foram analisados
105.404 registros, O OLAP (Online da informaçã o. O roll up (ou drill up) é o contrá rio. Ele ocorre
atualizados 647 membros Analytical Processing) é quando o usuá rio agrupa os dados, diminuindo o nível de
e incluídos 10.529 novos um conjunto de detalhamento da informação; (ii) slice e dice - o slice é quando
registros na dimensã o. ferramentas e técnicas um membro em particular de uma dimensão é selecionado,
que permite realizar a formando uma espécie de “fatia” (slice) do cubo original. O
exploraçã o dos dados de dice seleciona vá rios membros de vá rias dimensõ es formando
um DW, utilizando os um subcubo. Tanto o slice quanto o dice são formas
recursos de modelagem, particulares de filtro; e (iii) pivot - é o â ngulo pelo qual os
aná lise e visualizaçã o de dados sã o visualizados. Permite a troca de linhas por colunas
grandes conjuntos de em uma tabela ou modificação da posiçã o das dimensõ es em
dados. O OLAP ajuda a um grá fico.
Subprocesso
analisar de forma mais A aplicaçã o dessas operaçõ es (visõ es) sobre um modelo
responsá
eficiente a quantidade de multidimensional cria uma visã o no formato cubo, conhecida
vel pela
dados crescente como Decision Cube (BARBALHO, 2003).
dimensã o
armazenados pelas
LOCALIZ
organizaçõ es Desenvolvimento de Aplicações
ACAO_RE
transformando-os em Apó s adquirir dados e informaçõ es de diversas fontes e
METENT
informação (JACOBSON; organizá -los em um data warehouse, iniciou-se o
E.
MISNER, 2007). desenvolvimento da soluçã o de aná lise de negó cios.
Relató rios e consultas A aná lise de negó cios é um conjunto de ferramentas e
Esta etapa do projeto
fazem parte das técnicas que permitem reunir, armazenar, analisar e fornecer
gerou dois pacotes de
atividades mais antigas de acesso aos dados, com o objetivo de ajudar os usuá rios a
software, com dois
OLAP e BI. O OLAP tomarem melhores decisõ es comerciais e estratégicas
grandes processos ETL ,
possibilita que o usuá rio (TURBAN et. al, 2009). Para realizar a aná lise de negó cios
um para cada fato.
produza facilmente seus foram desenvolvidos os seguintes recursos: (i) geraçã o de
Nenhuma informação foi
pró prios relató rios e cubos OLAP para permitir consultas analíticas com visõ es
sumarizada neste
aná lise tendências e multidimensionais; (ii) relató rios na Web pré-formatados com
processo. A tabela do fato
desempenho diariamente as consultas mais utilizadas; e (iii) consultas e aná lise ad hoc.
Trá fego, por exemplo,
(TURBAN et. al, 2009). Os O primeiro passo nesta etapa foi iniciar o desenvolvimento
possui um registro para
sistemas OLAP oferecem dos dois cubos (sendo que, cada fato gerou um cubo). Através
cada registro na tabela
uma alternativa aos do Analysis Services (ferramenta para desenvolvimento OLAP
fonte.
sistemas transacionais, da Microsoft), foram definidas as tabelas fato e suas
Finalizado o produzindo uma visã o dos dimensõ es exibida na figura abaixo. A linguagem utilizada foi
desenvolvimento dos
dados orientados à a MDX (Multidimensional Expressions), linguagem criada pela
processos de extraçã o, aná lise, além de uma Microsoft e que hoje é utilizada na maioria das ferramentas
transformaçã o e carga das
navegaçã o rá pida e OLAP. Esta linguagem é uma extensã o do SQL, que permite
dimensõ es e fatos, foram flexível (LARSON; acesso à s mú ltiplas dimensõ es.
criadas duas rotinas (uma
AGARWAL, 2006). Um
para cada fato) sistema OLAP apresenta
responsá veis pela
as seguintes
execução dos processos características: (i)
ETL e processamento dos
esquema otimizado para
cubos (nesta ordem). que as consultas
Todos os processos de
realizadas pelos usuá rios
ETL sã o executados no sejam retornadas
servidor onde está
rapidamente; (ii) geraçã o
armazenado o DW. de relató rios complexos
Finalizado o projeto de
de uma forma simples;
ETL do DW, iniciou-se o (iii) utilizaçã o interativa
desenvolvimento dos
com os usuá rios, ou seja,
cubos. as consultas nã o
necessitam estar pré- Cubo Trá fego no Analysis Services.
Processamento definidas; e (iv) permite a
Analítico Online redundâ ncia de dados Com a estrutura bá sica do cubo projetada, foram definidas
(OLAP) para otimizaçã o de as métricas e as agregaçõ es necessá rias. Para cada dimensão,
consultas. foram definidos os atributos que serã o visualizados pelos
Kimball (2002) classifica os sistemas OLAP em três tipos: usuá rios, e também, criadas as suas hierarquias.
(i) OLAP multidimensional (MOLAP) – é implementado A tabela da dimensão TEMPO nã o precisou ser preenchida
através de um DW multidimensional. Os dados sã o manualmente. O Analysis Services possui um wizard para a
organizados em uma estrutura de cubos; (ii) OLAP relacional criaçã o de dimensõ es do tipo TEMPO. Apó s definir as datas
(ROLAP) – é implementado sobre um banco de dados inicial e final necessá rias, foi gerado um script para a carga
relacional; e (iii) OLAP híbrido (HOLAP) – combina atributos desta tabela. A hierarquia da dimensã o TEMPO é apresentada
de MOLAP e ROLAP. na figura a seguir.
Ballard et. al (2006) destaca as principais operaçõ es
utilizadas nas ferramentas OLAP: (i) drill down e roll up - sã o
operaçõ es que movimentam a visão dos dados (cubo) ao longo
das hierarquias de uma dimensão. O drill down ocorre quando
o usuá rio desagrupa os dados, aumentando o nível de detalhe
Como é uma
Hierarquia da dimensã o TEMPO. Dashboard do ferramenta amplamente
faturamento utilizada na NeoGrid, o
Durante o desenvolvimento dos cubos, também foram através da Excel será a ferramenta
definidos e ajustados os labels dos fatos, métricas, atributos e Web. que será conectada aos
dimensõ es, além da ordem de visualizaçã o das informaçõ es. cubos e permitir que os
Assim, estes objetos sã o visualizados pelo usuá rio final com Embora a interface diretores da empresa
nomes mais significativos do ponto de vista do usuá rio Web seja fá cil de utilizar, (administradores de nível
conforme a ilustraçã o abaixo. ela possui algumas superior - decisõ es
limitaçõ es. Todos os estratégicas), possam
relató rios sã o pré- realizar aná lises mais
formatos, permitindo avançadas.
uma manipulaçã o
limitada das dimensõ es.
Apesar de o projeto
priorizar o uso da Web,
para o caso de aná lises
mais sofisticadas, sã o
necessá rias algumas
Atributos do usuá rio, hierarquia ferramentas específicas,
e tabela da dimensã o que incorporam,
REGIÃ O_REMETENTE. inclusive, métodos e
Inicialmente, os série de relató rios prá ticas diferentes
dados do fato Trá fego (utilizando a ferramenta (BARBIERI, 2001). Para
(agora cubo Trá fego) Microsoft Reporting isso, percebe-se a
seriam agrupados por dia Services), integrados à necessidade de utilizar
alguma ferramenta que Acesso aos
(uma ú nica entrada com Intranet da corporação cubos
o total e tamanho total (Microsoft SharePoint), conecte a base
multidimensional e através do
dos documentos que permitem aos Excel.
trafegados por parceiros usuá rios de nível de permita aná lises de
comerciais durante o conhecimento negó cios mais avançadas.
As planilhas sã o as Durante o
dia). Porém, durante o (administradores de desenvolvimento da
desenvolvimento, os nível médio - decisõ es principais ferramentas
do usuá rio final para a aplicaçã o, surgiu a
usuá rios perceberam que tá ticas) a obtençã o de oportunidade de realizar
poderiam utilizar as relató rios e realizar programaçã o de
aplicaçõ es de suporte à um teste em “produçã o”, e
consultas para gerar aná lises destes. Um verificar a eficiência da
extratos analíticos do primeiro exemplo foi a decisã o (TURBAN et. al,
2009). Neste contexto, o soluçã o. O faturamento,
trá fego dos clientes. Este criação de um relató rio referente à aplicação
processo geralmente que permitiu a aná lise do Microsoft Excel tem sido
amplamente adotado Mercador, do mês de
gera uma carga excessiva volume de documentos outubro havia diminuído
no banco de dados trafegados (Figura 7), e como uma ferramenta
eficiente e fá cil de usar comparado com o mês de
transacional, além de ser um dashboard que setembro. Depois de
realizado apenas pelo possibilitou um melhor para a manipulaçã o de
dados. Ele evoluiu para realizada a carga dos
DBA através de scripts acompanhamento do dados de produçã o, foi
SQL. faturamento da empresa. além de uma simples
ferramenta para cá lculo possível analisar os
Apó s finalizar os relató rios e estabelecer
cubos, foi projetada a de dados, ao ponto de
agora ser usado como alguns relacionamentos.
visualização dos dados. Ao contrá rio do que se
Ela torna as aplicaçõ es de uma ferramenta
sofisticada e flexível para pensava, o aumento no
suporte à decisão mais volume de documentos
atraentes e coleta, aná lise e
sintetizaçã o de dados de trafegados nã o aumenta
compreensíveis aos proporcionalmente o
usuá rios, permitindo mú ltiplas fontes.
Por estes motivos, o faturamento (o que deixou
uma melhor diretores e gerentes
interpretaçã o dos dados. Excel é uma ferramenta
que se integra às preocupados).
As ferramentas visuais Com os relató rios
podem ajudar a principais soluçõ es de BI
do mercado. Sua principal gerados (Figura 10), foi
identificar relaçõ es, como possível analisar o
por exemplo, tendências. função é como ferramenta
de visualizaçã o de dados faturamento dos “Top
A visualização de 400” clientes ao longo dos
aná lise de negó cio com acesso a cubos.
Relató rio através da Empresas como Microsoft, ú ltimos 6 meses.
através da Web facilita o Web. Analisando o faturamento
seu uso, pois não é SAP, MicroStrategy e até
mesmo a Oracle, dos meses anteriores, foi
necessá ria a instalaçã o identificado um erro
de nenhum software disponibilizam plugins
para que o Excel conecte operacional nas tabelas de
adicional (sem falar nas preço e de cobrança.
atualizaçõ es de versõ es). aos seus cubos.
Como a descoberta da
Assim, foi criada uma
informaçã o foi rá pida, É a estrutura que Opçõ es: permite a Comando
apó s algumas correçõ es, compõ e a tela do configuraçã o de opçõ es
foi possível gerar as programa. de mostrar ou ocultar na
faturas novamente, sem 1) Barra de Faixa de Opçõ es.
gerar perdas para a Ferramentas de - Ocultar a Faixa
NeoGrid. Até o presente Acesso Rá pido: de Opçõ es
momento, nã o existiam Sã o ícones de atalho Automaticamente: Oculta
maneiras de comparar (ou configurados no canto a Faixa de Opçõ es e com
relacionar) o faturamento superior esquerdo da um clique na parte Grupos.
ou trá fego de documentos tela, para agilizar o superior do aplicativo As guias são as “abas”
ao longo do tempo. O acesso a comandos volta a exibí-la. que englobam grupos
ú ltimo relató rio deste tipo comumente utilizados. - Mostrar Guias: e comandos.
havia levado mais de dois Os ícones padrã o sã o: Mostra somente as guias Os comandos sã o os
meses para ser finalizado. da Faixa de Opçõ es. botõ es que realizam
Clicando em uma das funçõ es específicas
guias, mostra os presentes em cada grupo.
comandos. Os grupos organizam
- Mostrar Guias e comandos
A – Botã o do
Comandos: Mostra as característicos.
Excel: possibilita a
guias e da Faixa de Opçõ es Por exemplo, temos na
realizaçã o de funçõ es
e comandos o tempo todo. Guia “Pá gina Inicial” os
com a janela como
5) Minimizar: reduz grupos Á rea de
Restaurar, Mover,
a janela a um botã o na Transferência, Fonte,
alterar o Tamanho,
barra de tarefas do Alinhamento, Nú mero,
Minimizar, Maximizar e
sistema operacional. Estilo, Células e Ediçã o.
Relató rio de Fechar (Alt+F4).
6) Maximizar ou Cada guia possui
utilização do B – Salvar:
Restaurar: sua funçã o vá rios grupos e vá rios
portal quando criamos um
depende do estado atual botõ es de comandos.
Mercador. documento e desejamos
da janela. Se ela estiver No grupo Á rea de
EXCEL 2013. gravá -lo no computador
maximizada, ou seja, Transferência, temos os
ou em outro dispositivo
ocupando toda a á rea da botõ es de comandos
Excel é um programa de armazenamento.
tela do computador, este Colar, Recortar, Copiar,
de planilhas do sistema C – Desfazer
botã o transforma-se no Pindel de Formataçã o e o
Microsoft Office, (Ctrl+Z): Desfaz as
Restaurar, que volta a botã o mostrar, que exibe
desenvolvido para ú ltimas açõ es realizadas.
janela ao tamanho todas as opçõ es que
formatar pastas de D – Refazer anteriormente compõ em esse grupo.
trabalho (um conjunto de (Ctrl+Y): Refaz a ú ltima determinado pelo usuá rio. Essa termologia é
planilhas) para analisar açã o. Se ela estiver com importante para
dados e tomar decisõ es de E – Persolnalizar tamanho alterado, o botã o
negó cios mais bem a Barra de Ferramentas entendermos os
transforma-se no enunciados das questõ es
informadas. de Acesso Rá pido: Com Maximizar, que faz com
A indicação do Excel é ela determinamos quais de concursos pú blicos e
que a janela ocupe a maior também nos localizarmos
para pessoas e empresas os ícones que farã o parte á rea possível da tela.
que desejam manter desta barra, habilitando durante a prá tica do
7) Fechar: finaliza o programa.
controles contá beis, ou desabilitando para documento. 9) Caixa de nomes,
orçamentos, controles de mostrar ou ocultar,
8) Faixa de opçõ es: cancelar, inserir, inserir
cobranças e vendas, fluxo respectivamente, é composta pela Barra de funçã o, barra de fó rmulas:
de caixa, relató rios, determinado ícone. Ferramentas de Acesso
planejamentos, 2) Barra de Logo abaixo da Faixa
Rá pido, Barra de Título, de Comandos temos:
acompanhamentos gerais Título: mostra o nome Botõ es de Ajuda, Opçõ es
(pontos eletrô nicos, da pasta e o nome do de Exibição da Faixa de
estoques, clientes, etc.), programa. O nome Opçõ es, Minimizar,
calendá rios, e muito mais. padrã o dos arquivos no Restaurar/Maximizar e
Até a versã o 2003 do Excel é “Pasta”. Esse Fechar, Guias e Comandos.
Excel os formatos de nome pode ser alterado A) Caixa de nomes:
gravaçã o de arquivos pelo usuá rio quando o nesta caixa fica a
utilizados eram .xls e arquivo é salvo. localizaçã o da célula ativa,
.xlt, atualmente utilizam 3) Ajuda do ou seja, aquela que está
os formatos .xlsx, xltx e Microsoft Excel (F1): Guias. marcada ou em uso no
xlsm (este com suporte a abre o assistente de momento.
macros). ajuda do Excel, no modo Além de exibir o nome
offline (apenas com a da célula, caso já saibamos
EXCEL 2013 ajuda instalada no para que célula desejamos
computador) ou online ir, basta digitar o nome na
Estrutura básica das (permitindo a pesquisa referida caixa e pressionar
pastas e planilhas. na Internet). a tecla ENTER. Com este
4) Opçõ es de procedimento, seremos
Exibiçã o da Faixa de
levados diretamente para fó rmulas recebem pois quando o conteú do
a célula digitada. automaticamente o sinal da célula se trata de uma
Outra funçã o da caixa fundamental e funçã o, a célula mostrará
de nomes é atribuir indispensá vel para que o apenas o resultado dela. Já
nomes diferentes às Excel considere como a barra de fó rmulas
células. Esse recurso é Quando estamos com função o que será inserido mostra o real conteú do da
muito ú til quando uma célula ativa e na fó rmula depois dele: o célula, seja texto, seja
trabalhamos com uma desejamos anular o sinal de “=” (igual). fó rmula.
planilha grande, por conteú do digitado dentro É possível procurar
exemplo. Para nã o dela, podemos usar o uma funçã o digitando seu
precisar lembrar qual a cancelar. O que foi nome e clicando em “Ir”;
coluna e linha de uma digitado será excluído e a selecionar uma categoria
célula para encontrá -la no célula voltará ao seu para localizar mais
meio de tantas outras sem estado original. facilmente a funçã o
percorrer toda a planilha - Inserir: desejada; ou clicar
a sua procura, podemos diretamente no seu nome.
dar um nome específico a Além de facilitar a Barra de fórmulas.
ela, como, por exemplo localizaçã o da funçã o, o
“total”. “Inserir funçã o” exibe a Continuando a
Para trocar o nome de sintaxe e uma breve estrutura de nossa pasta e
uma célula, basta: explicaçã o do que a funçã o planilhas, teremos, na
- Com a célula selecionada faz. ordem, o cabeçalho das
selecionada vá até a caixa Quando clicamos em colunas, das linhas que
de nomes e digite o nome O botã o inserir “OK”, a função escolhida é finalmente darã o origem
desejando. Pressione confirma a inclusã o de um inserida na célula e o à s céluas. Teremos entã o,
ENTER. Pronto! A célula já conteú do em uma célula. programa direciona o a planilha em si:
estará com seu nome Apó s escrevermos um usuá rio para a inserçã o
alterado. O mesmo texto e clicarmos nele, o dos argumentos da
procedimento pode ser texto será confimado função, implementando
realizado para atribuir um dentro da célula. explicaçõ es e oferecendo
nome a um grupo de Nã o é necessá rio o uso os caminhos necessá rios
células. contínuo dos botõ es para a completa
Cancelar e Inserir, visto conclusã o:
que uma vez que o Planilha.
conteú do da célula nã o
esteja correto ou nã o seja Na figura a cima, o
desejado, pode ser canto marcado com uma
excluído facilmente com o seta mostra o local em que
auxílio das teclas “Del” ou podemos, com apenas um
“Backspace”. Quando clique, selecionar a
terminamos de digitar um planilha inteira.
Nome conteú do em uma célula e 10) Barras de
dado a um pressionamos “ENTER” ou rolagem: localizadas nas
grupo de clicamos em outra célula, extremidades direita e
células. este conteú do já é inferior da pá gina,
confirmado na célula. permitem rolar a
Clicando no drop - Inserir função: planilha na tela dando
down da caixa de Abre a janela “Inserir visibilidade a todo o seu
funçã o” que atua Argumentos da função.
nomes, serã o listados conteú do.
todos os nomes como assistente
atribuídos pelo na inserçã o e uso C) Barra de fó rmulas:
uusá rio nas células da de funçõ es.
planilha, permitindo o Tendo uma célula
deslocamento para ativa, podemos inserir
elas apenas com um dados nela também pela
clique: barra de fó rmulas. Ou seja,
clicamos da célula para
Nomes ativá -la, mas para uma
dados às melhor visualizaçã o,
digitamos o conteú do na Barras de Rolagem.
células da
planilha. barra de fó rmulas. Mas a
principal funçã o dessa 11) Botõ es de
barra é mostrar o navegaçã o:
B) Botõ es
conteú do real da célula,
Cancelar,Inserir e
Inserir funçã o:
Inserir função.
- Cancelar: A célula que estava
ativa e a barra de
encontrava entre as guias das planilhas. Permite também criar
uma có pia da planilha selecionada e movê-la para a ordem
determinada pelo usuá rio.
- Exibir có digo: abre o Visual Basic for
Applications para que có digos de programaçã o
sejam vinculados à planilha.
- Proteger Planilha: permite atribuir senhas
que impeçam a alteraçã o do conteú do da planilha
por terceiros. Protege e planilha e o conteú do de
células bloqueadas.
Botõesde navegação. - Cor da Guia: permite alterar a cor da guia
para destacar e organizar as planilhas.
Permitem navegar entre as planilhas existentes, indo para - Ocultar: esconte a planilha da lista de
a planilha anterior, para a próxima ou: visualizaçã o. Apó s usar este recurso, basta usar o
- Ctrl+ botão esquerdo do mouse: rola a visualização para Re-exibir para voltar a mostrar a planilha.
a primeira ou para a última planilha, dependendo do - Selecionar todas: agrupa todas as planilhas
navegador selecionado. permitindo formataçõ es e açõ es em conjunto
- Clique oc m o botão direito do mouse: abre a lista com os como, por exemplo, atribuir uma cor a todas as
nomes de todas as planilhas, facilitando seu acesso com apenas guias.
um clique:

Quando existem muitas planilhas para serem visualizadas,


aparecem no início e
no final da lista de
guias sinais de “...”
reticências, indicando sua
continuidade. Para exibir guias
Consulte todas as planilhas. que nã o estã o sendo visualizadas,
basta clicar nesses sinais.
12) Guias das planilhas
:

Cada planilha tem sua própria guia, ou seja, sua própria


aba, que recebe
seu nome e pode sofrer algumas formatações
como ter a cor da guia alterada.

exibida a seguinte tela:


Guia da planilha.

Clicando com o botão direito do mouse em uma guia é


possível:
- Inserir: abre a janela Inserir, que permite a inserção de
uma nova planilha em branco ou com outros objetos como
gráficos e macros.

Planilha”, que insere mais uma planilha automaticamente na


lista d
13) Barra de Status: mostra informaçõ es sobre a planilha
a forma de exibiçã o do documento (normal, layout da pá gina,
visualizaçã o de quebra de pá gina) e o controle do zoom.

Novas pastas.

Inserir. Para criar uma nova pasta, quando iniciamos o programa é

- Excluir: exclui a planilha selecionada.


- Renomear: permite alterar o nome da planilha ativa.
- Mover ou copiar: permite a locomoção da planilha dentro
da pasta de trabalho, deixando-a antes ou depois de
determinada planilha e alterando a ordem em que se
e salvar um outro arquivo
Tela Inicial Excel 2013. que tenha o conteú do
inicial mais as alteraçõ es
Com a tela inicial do Excel 2013 podemos escolher inicar realizadas, é possível
uma nova pasta clicando na opçã o: acionar as telas que vimos
através da guia “Arquivo”,
- Pasta de trabalho em branco - abrirá um opção “Salvar como”. Com
arquivo vazio para darmos início ao nosso ela sempre será possível
trabalho; escolher outro local, outro
- Em um dos modelos como “Amortizaçã o de nome e outro tipo para o
empréstimos”, “Cartã o de ponto” ou outros, o arquivo.
arquivo abrirá

indicados para a criaçã o de uma pasta com aparência Abrir arquivos.


profissional.
Apó s a abertura do programa, para dar incício a uma nova Para abrir arquivos
planilha, aciona-se, na guia Arquivo, que é a primeira no canto Salvar como. existentes, apó s a
superior esquerdo da abertura do programa,
Faixa de opçõ es, a opção Salvar. 1 e 2– Escolhemos o usamos a guia “Arquivo” e
Novo, conforme indicado local onde o arquivo será a opçã o “Abrir”. Com estes
na figura a seguir: gravado, clicando (1) na procedimentos, será
Outra forma de
pasta e (2) na subpasta de aberta uma tela com a
acionar o mesmo
destino. lista das pastas
comando, é clicando na
3 – Digitamos seu recentemente utilizadas,
guia Arquivo e depois na
nome ou mantemos para facilitar a sua
opção Salvar.
o nome padrã o. abertura com apenas um
Na primeira vez que
4 – Determinamos o clique em seu nome.
salvamos um arquivo
tipo do arquivo.
pelo ícone
Sã o vá rios os tipos de
Salvar, é aberta a tela a
arquivo que podemos
seguir:
escolher. O tipo do
arquivo determina qual
será a sua extensã o. A
extensã o é o conjunto de
três ou quatro letras
colocadas pelo programa
Nova pasta.
apó s seu nome e um .
(ponto). Por exemplo:
Apó s essas açõ es, Abrir –
material escrito.xlsx. No
continuamos a criação da Pastas de
exemplo, “material
nova pasta, como visto trabalho
escrito” é o nome do
anteriormente, ou seja, recentes.
arquivo e “.xlsx” é a
clicando sobre o modelo
extensã o. Ela serve de
que desejamos usar. Caso a pasta desejada
referência para sabermos
em qual programa um nã o esteja na lista das
Salvar arquivo. determinado arquivo foi pastas de trabalho
Salvar como. criado e em quais recentes, podemos clicar
A criação do arquivo é programas poderá ser no ícone “Computador” e
efetivada apó s seu aberto. procurá -la em uma das
Com a tela acima
salvamento, ou seja, sua A opçã o “Salvar”, em pastas da lista, ou pelo
vemos o conteú do da
gravaçã o em alguma todas as suas formas de botã o “Procurar”.
pasta atualmente
mídia de armazenamento, acesso (Ctrl+B, ícone
selecinada para gravaçã o.
como o HD do Salvar ou Arquvio, Salvar),
Clicando em “Procurar”,
computador ou um abre a janela Salvar como
será aberta uma tela onde
pendrive. apenas na primeira vez
é possível definir o local, o
Com o arquivo aberto, que é acionado para cada
nome e o tipo de arquivo
clique no ícone Salvar, ou arquivo. Depois que ele já
que guardará nosso
use as teclas de atalho está gravado, se for
trabalho.
Ctrl+B, conforme indicado acionada novamente, irá
na figura: gravar as alteraçõ es
efetuadas
automaticamente no Abrir – Procurar.
mesmo arquivo. Essa açã o
faz com que tenhamos Quando clicamos em
apenas o arquivo em sua “Procurar”, é aberta uma
forma mais atual. tela que dá acesso a todo o
Se a intensã o for conteú do do computador.
manter o arquivo original Nela, clicando nas pastas e
subpastas ou em Pincel de formatação 1 – Alinhar: alinha o
dispositivos de – Guarda a formatação do texto na célula conforme a
armazenamento e de rede texto selecionado para opção escolhida. Da
conectados a má quina, aplicar em outro ponto do esquerda para a direita,
seguimos o caminho que texto. Teclas de atalho podemos escolher:
nos leva a pasta de CTRL + SHIFT + C. Grupo - Alinhar em
trabalho desejada. Ao Edição: cima: alinha o texto à
encontrá -la, clicamos duas parte superior da célula.
vezes sobre seu ícone e - Alinhar no
será aberta. meio: alinha o texto de
forma que fique
Elaboração de tabelas centralizado entre a parte
e gráficos. Grupo fonte. superior e inferior da
célula.
Os recursos de ediçã o 1 – Fonte - Alinhar em
Grupo edição.
de uma planilha (Ctrl+Shift+F): permite a baixo: alinha o texto à
compreendem a digitaçã o, seleçã o de uma nova fonte parte inferior da célula.
1 – Soma: exibe a
os comandos para o texto. - Alinhar à
soma das células
Desfazer/Refazer, Repetir, 2 – Tamanho da esquerda: alinha o
selecionadas diretamente
os comandos dos grupos fonte (Ctrl+Shift+P): muda conteú do à esquerda da
apó s essas células.
Á rea de Transferência, o tamanho dos caracteres célula.
2 – Classificar e
Fonte, Alinhamento, do texto selecionado. - Centralizar:
filtrar: organiza os dados
Nú mero, Estilo Células e 3 – Aumentar centraliza o conteú do.
para que sejam mais
Edição, que encontramos tamanho fonte (Ctrl+>): - Alinhar à
facilmente analisados.
na guia Pá gina Inicial. aumenta o tamanho da direita: alinha o conteú do
3 – Localizar e
Iniciaremos com os fonte da palavra, letra ou à direita da célula.
Selecionar: localiza e
grupos Á rea de caracteres selecionados.
seleciona um texto
trasferência e Edição para 4 – Reduzir 2 – Orientaçã o:
específico, uma
depois tratarmos tamanho da fonte gira o texto na diagonal ou
formataçã o ou um tipo de
separadamente dos (Ctrl+<): reduz o tamanho na vertical. É uma ó tima
informaçã o na pasta de
grupos Fonte, da fonte da palavra, letra maneira de rotular
trabalho.
Alinhamento, Nú mero, ou caracteres colunas inteiras. Inclina o
4 – Preencher:
Estilo Células, que selecionados. texto no sentido anti-
continua um padrã o em
compreendem a 5 – Negrito horá rio, no sentido
uma ou mais células
formataçã o da planilha, (Ctrl+N): aplica negrito ao horá rio, na vertical, gira o
adjacentes.
propriamete dita. texto selecionado. texto para cima ou para
6 – Itá lico (Ctrl+I): baixo.
Grupo Área de aplica itá lico ao texto 3 – Quebrar texto
Transferência: selecionado. automaticamente: quebra
7 – Sublinhado o texto extralongo em
Possui os botõ es de (Ctrl+S): permite vá rias linhas para poder
comando para colar, sublinhar, ou seja, vê-lo integralmente:
recortar, copiar e pincel desenhar uma linha na
de formataçã o. Quando base da palavra
usamos os recursos de selecionada.
recortar e copiar, o Exemplo preencher. 8 – Bordas: aplica
conteú do recortado ou e configura bordas para as
copiado fica armazenado 5 – Limpar: exclui células selecionadas.
na memó ria RAM do todos os elementos da 9 – Cor de
computador, em uma á rea célula ou remove Preenchimento: aplica cor
denominada á rea de seletivamente a ao plano de fundo das
transferência. formataçã o, o conteú do ou células para destaca-las. Quebrar texto
Colar – aplica no os comentá rios. 10 – Cor da fonte: automaticamente.
documento um texto ou muda a cor do texto.
imagem que foi copiada Grupo Fonte: 4 – Diminuir
ou recortada. Teclas de Grupo Alinhamento: recuo: move o conteú do
atalho CTRL + V. Permite a formataçã o aproximando-o da borda
Recortar – retira do da fonte das palavras ou da célula.
documento e coloca na caracteres selecionados, 5 – Aumentar
á rea de transferência um mudando sua forma, recuo: move o conteú do
texto ou imagem tamanho e usando efeitos afastando-o da borda da
selecionada. Teclas de para realçar ou fazer célula.
atalho CTRL + X. indicaçõ es especiais no 6 – Mesclar e
Copiar – cria uma texto, como a aplicaçã o de centralizar: combina e
có pia do texto ou imagem itá lico, para indicar uma centraliza os conteú dos
selecionado e deixa na palavra em outro idioma, Grupo Alinhamento. das células selecionadas
á rea de transferência. ou sublinhado para em uma nova célula
Teclas de atalho CTRL + C. indicar um link. maior, ou seja, junta
vá rias células como se Formatar como tabela: representam (expressam) Superfície, Rosca, Bolhas e
fossem uma. formata rapidamente um dados numéricos. outros.
intervalo de células e o
converte em tabela, Uso de fórmulas e
escolhendo um estilo de funções.
tabela predefinido.
Estilo de célula: A principal funçã o do
formata rapidamente uma Excel é facilitar os cá lculos
célula escolhendo um dos com o uso de suas
estilos predefinidos. fó rmulas. A partir de
agora, estudaremos vá rias
Grupo Células: de suas fó rmulas. Para
Mesclar e centralizar. Seleção das iniciar, tenhamos em
células para mente que, para qualquer
Grupo Número: criação do fó rmula que será inserida
gráfico. em uma célula, devemos
utilizar o sinal de “=” no
2º) Escolher um tipo seu início. Esse sinal
de grá fico que represente oferece uma entrada no
adequadamente o que Excel que o faz diferenciar
Grupo células. desejamos. Temos que textos ou nú meros
tomar um cuidado comuns de uma fó rmula.
Inserir: insere linhas, especial na hora de
Grupo número.
células, colunas e escolher o tipo de grá fico, SOMAR.
tabelas. pois nem sempre ele
Escolhe como os
Excluir: exclui linhas, consegue representar o Se tivermos uma
valores de uma célula
células, colunas e que desejamos. Por isso, sequência de dados
serã o exibidos: como
tabelas. devemos ler atentamente numéricos e quisermos
percentual, moeda, data
Formatar: altera a a breve explicaçã o que realizar a sua soma, temos
ou hora. Os botõ es
altura da linha ou a aparece sob os tipos de as seguintes formas de
exibidos na imagem
largura da coluna, grá ficos para escolhermos fazê-la:
acima, respectivamente,
organiza planilhas ou o mais adequado:
transformam os nú meros
em: estilo da moeda, protege/oculta células.
percentual, milhar,
diminuem as casas Guia Inserir:
decimais e aumentam as
casas decimais. Grupo Gráficos:

Grupo Estilo: Soma simples.

Usamos, nesse
exemplo, a fó rmula
Aplicação do gráfico.
=B2+B3+B4.
Apó s o sinal de “=”
Os grá ficos podem ser: (igual), clicar em uma das
- Colunas: usados células, digitar o sinal de
para comparar valores em “+” (mais) e continuar
Grupo estilo. Grupo gráficos. diversas categorias. essa sequência até o
- Linhas: sã o ú ltimo valor.
Formataçã o Apó s selecionar usados para exibir
condicional: realça as Apó s a sequência de
células, podemos escolher tendências ao longo do células a serem somadas,
células desejadas, um dos tipos de grá ficos tempo.
enfatizando valores que clicar no ícone soma, ou
para serem criados na - Pizza: exibem a usar as teclas de atalho
temos a intençã o de planilha referente aos comparaçã o de valores em
ressaltar para o usuá rio, Alt+=.
dados ou em uma nova relaçã o a um total.
seja por representarem o A ú ltima forma que
planilha separadamente. - Barras:
resultado final de uma veremos é a funçã o soma
Para criarmos um comparam mú ltiplos
funçã o ou uma condiçã o. digitada. Vale ressaltar
grá fico: valores. que, para toda funçã o, um
Podemos usar, para essa - Área: mostram
formataçã o, estilo de início é fundamental:
1º) Selecionamos um as diferenças entre vá rios = nome da função (
fonte, de preenchimento, grupo de células que, conjuntos de dados ao
entre outros recursos. Por obrigatoriamente, têm longo de um período de
exemplo, se desejarmos que envolver dados tempo. 12 3 1-
que uma célula fique com numéricos. Somente com - Dispersão: Sinal de igual.
a cor da fonte em dados numéricos contidos compara pares de valores. 2 – Nome da função.
vermelho, sempre que seu nesta seleçã o será - Outros gráficos: 3 – Abrir parênteses.
valor for negativo, possível criar um grá fico, possibilita a criaçã o de Apó s essa sequência, o
podemos usar a pois os grá ficos grá ficos como Açõ es, Excel mostrará um
formataçã o condicional.
pequeno lembrete sobre a Exemplo de 5/100 – é o valor do
funçã o que usaremos, multiplicação. desconto dividido por 100
onde é possível clicar e (5%). Ou seja, você está
obter ajuda, também. Outra forma de multiplicando o endereço
Utilizaremos, no exemplo realizar a multiplicaçã o é do valor da compra por 5
a seguir, a funçã o = através da seguinte e dividindo por 100,
soma(B2:B4). função: gerando assim o valor do
=MULT(B2;C2) desconto.
multiplica o valor da Se preferir pode fazer
célula B2 pelo valor da o seguinte exemplo:
célula C2. =B2*5% Onde:
B2 – endereço do
Lembrete mostrado A B valor da compra
pelo Excel. * -
1 PRODUTO VALOR sinal de
No “lembrete” exibido 2 Feijã o 1,50 multipli
na figura acima, vemos caçã o
que apó s a estrutura DIVISÃO. 5% - o
digitada, temos que clicar valor da
em um nú mero, ou seja, Para realizarmos a porcent
em uma célula que contém divisão, procedemos de agem.
um nú mero, depois digitar Ajuda do Depois para saber o
forma semelhante à
“;” (ponto e vírgula) e Excel sobre Valor a Pagar, basta
subtraçã o e multiplicaçã o.
seguir clicando nos outros a função subtrair o Valor da
Clicamos no primeiro
nú meros ou células soma. Compra – o Valor do
nú mero, digitamos o sinal
desejadas. de divisã o que, para o Desconto, como mostra no
Aqui vale uma SUBTRAÇÃO. Excel é a “/” barra, e exemplo.
explicaçã o: o “;” (ponto e depois clicamos no ú ltimo
vírgula) entre as A subtraçã o será feita valor. No pró ximo
sentenças usadas em uma sempre entre dois valores, exemplo, usaremos a
funçã o indicam que por isso nã o precisamos fó rmula =B3/B2. MÁXIMO.
usaremos uma célula e de uma funçã o específica.
outra. Podem ser Tendo dois valores em
Mostra o maior valor
selecionadas mantendo a células diferentes,
em um intervalo de
tecla CTRL pressionada, podemos apenas clicar na
células selecionadas.
por exemplo. primeira, digitar o sinal de
Existem casos em que “-” (menos) e depois clicar
Exemplo de divisão. Na figura a seguir,
usaremos no lugar do “;” na segunda célula. Usamos
na figura a seguir a calcularemos a maior
(ponto e vírgula) os “:”,
fó rmula = B2B3. PORCENTAGEM. idade digitada no
dois pontos, que
intervalo de células de A2
significam que foi
Para aprender sobre até A5. A função digitada
selecionada uma
porcentagem, vamos será = má ximo (A2:A5).
sequência de valores, ou
seguir um exemplo: um
seja, de um valor até
cliente de sua loja fez uma
outro, ou de uma célula
compra no valor de
até outra. Exemplo de subtração. R$1.500,00 e você deseja
Dando continuidade, MULTIPLICAÇÃO. dar a ele um desconto de
se clicarmos sobre a
5% em cima do valor da
palavra “soma”, do nosso Para realizarmos a compra. Veja como ficaria Exemplo da função
“lembrete”, será aberta multiplicaçã o, a fó rmula na célula C2. máximo.
uma janela de ajuda no procedemos de forma
Excel, onde podemos semelhante à subtraçã o.
obter todas as Clicamos no primeiro Onde: “= má ximo” – é
informaçõ es sobre essa nú mero, digitamos o sinal o início da funçã o; (A2:A5)
funçã o. Apresenta de multiplicaçã o que, para – referese ao endereço
informaçõ es sobre a o Excel é o “*” asterisco, e dos valores onde você
Exemplo de
sintaxe, comentá rios e depois clicamos no ú ltimo deseja ver qual é o maior
porcentagem.
exemplos de uso da valor. No pró ximo valor. No caso a resposta
funçã o. Esses exemplo, usaremos a seria 10.
procedimentos sã o Onde:
fó rmula =B2*B3.
vá lidos para todas as MÍNIMO.
funçõ es, nã o sendo B2 – refere-se ao
exclusivos da funçã o endereço do valor da
Mostra o menor valor
“Soma”. compra
existente em um intervalo
* - de células selecionadas.
sinal de
Na figura a seguir,
multipli
calcularemos o menor
caçã o
salá rio digitado no
intervalo de A2 até A5. A Núm: é qualquer
funçã o digitada será = nú mero real que se
mínimo (A2:A5). deseja arredondar.
Núm_dígitos: é o
nú mero de dígitos para o Exemplo função abs.
qual se deseja arredondar
nú m.
DIAS 360.
Veja a mesma planilha
que usamos para
Retorna o nú mero de
arredondar os valores
dias entre duas datas com
para cima, com a função
base em um ano de 360
arredondar.para.baixo
Exemplo da função dias (doze meses de 30
aplicada:
mínimo. dias). Sua sintaxe é: =
DIAS360(data_inicial;da
Onde: “= mínimo” – é o ta_final) Onde:
início da funçã o; (A2:A5) – Data_inicial = a data
referese ao endereço dos de início de contagem.
valores onde você deseja Data_final = a data à
Função qual quer se chegar.
ver qual é o maior valor.
arredondar para No exemplo a seguir,
No caso a resposta seria
baixo e seus vamos ver quantos dias
R$622,00.
resultados. faltam para chegar até a
MÉDIA. data de 20/12/2012,
RESTO. tendo como data inicial o
A funçã o da média dia 02/06/2012. A função
Com essa funçã o utilizada será
soma os valores de uma
podemos obter o resto de =dias360(A2;B2):
sequência selecionada e
uma divisã o. Sua sintaxe é
divide pela quantidade de
a seguinte: = mod tipos de comparaçõ es.
valores dessa sequência.
(nú m;divisor) Onde: Para fins didá ticos,
Na figura a seguir, foi
Núm: é o nú mero para usaremos células A1 e A2,
calculada a média das
o qual desejamos supondo que estamos
alturas de quatro pessoas,
encontrar o resto. comparando valores
usando a funçã o = média
Divisor: é o nú mero digitados nessas duas
(A2:A4): Exemplo função
pelo qual desejamos células. Os tipos de
dividir o nú mero. dias360.
comparaçã o possíveis e
seus respectivos sinais
FUNÇÃO SE.
sã o:
o valor de A2
A funçã o se é uma
No lugar das células
função ló gica e
podem ser colocados
condicional, ou seja, ela
valores e até textos.
trabalha com condiçõ es
Exemplo de Valor_se_verdadeiro
para chegar ao seu
digitação = é o que queremos que
resultado.
da função apareça na célula, caso a
Sua sintaxe é:
MOD. condiçã o seja verdadeira.
Exemplo função média. = se (teste_ló gico;
Se desejarmos que
“valor_se_verdadeiro”;
Os valores do exemplo apareça uma palavra ou
Foi digitado “= média” “valor_se_falso”) Onde:
(depois foram acima serã o,
A1=A2 de → verifica se o valor de A1 é igual ao valor
selecionados os valores respectivamente: 1,5 e
A2
das células de A2 até A5). 1.
A1<>A2 → verifica se o valor de A1 é diferente do
Quando a tecla Enter for VALOR ABSOLUTO.
valor de A2
pressionada, o resultado A1>=A2 ao → verifica se o valor de A1 é maior ou igual
será automaticamente Com essa funçã o valor de A2
colocado na célula A6. podemos obter o valor A1<=A2 ao → verifica se o valor de A1 é menor ou igual
ARREDONDAR PARA absoluto de um nú mero. O
valor de A2
BAIXO. valor absoluto é o nú mero A1>A2 valor → verifica se o valor de A1 é maior do que o
Arredonda um sem o sinal. A sintaxe da
de A2
nú mero para baixo até funçã o é a seguinte: A1<A2 → verifica se o valor de A1 é menor do que
zero. =abs(nú m) Onde:
= se( = início da frase, dentro da funçã o,
ABS(núm)
funçã o. essa deve estar entre “”
ARREDONDAR.PARA. Núm: é o nú mero real (aspas).
Teste_lógico = é a
BAIXO(núm;núm_dígi cujo valor absoluto você
comparaçã o que se Valor_se_falso= é o
tos). deseja obter.
deseja fazer. que desejamos que
Vale lembrar que apareça na célula, caso a
podemos fazer vá rios
condiçã o proposta nã o C2= “Branca” → é a branca e o valor inferior “Sim” → é o
seja verdadeira. comparaçã o proposta (se a R$300,00. valor_se_verdadeiro.
Vamos observar a cor da cadeira é branca). A funçã o usada será : = “Não” → é o
alguns exemplos da “Sim”→ é o SE(E(C2= “Branca”; valor_se_falso.
função SE: valor_se_verdadeiro, pois D2<300; “Sim”; Nesse caso, apenas
Exemplos: é o que desejamos que “Nã o”) uma das condiçõ es tem
1. Os alunos serã o apareça na célula se a que ser satisfeita para que
aprovados se a média final condiçã o for verdadeira, a cadeira seja comprada.
for maior ou igual a 7. ou seja, se a cor da
A funçã o digitada será , cadeira for branca. SE com várias
na célula C2, =SE(B2>=7; “Não” → é o Exemplo função SE – condições.
“Aprovado”; valor_se_falso, pois é o E.
“Reprovado”). que desejamos que Podemos usar essa
Observe que, em cada apareça na célula se a Onde: variaçã o da funçã o SE
célula, B2 é substituído condiçã o for falsa, ou = SE(E( → é o início daquando vá rias condiçõ es
pela célula seja, se a cadeira nã o for função. forem ser comparadas.
correspondente à média branca. C2= “Branca” → é a Por exemplo: Se o
que queremos testar: primeira condição. aluno tiver média maior
3. Uma loja oferecerá D2<300 → é a segunda ou igual 9, sua mençã o
um desconto de 5% para condiçã o. será “Muito bom”; se sua
compras a cima de “Sim” → é o média maior ou igual 8,
R$1.000,00. valor_se_verdadeiro. sua menção será “Bom”;
A funçã o usada será = “Não” → é o se a média for maior ou
SE(A2>1000;A2-(A2-5%); valor_se_falso. igual 7, sua mençã o será
Exemplo 1 função SE. “Nã o haverá desconto”) Nesse caso, nã o serã o “Regular”, se nã o
compradas nenhuma das atender a esses critérios,
duas cadeiras, pois, a mençã o será
Onde:
apesar da primeira Insuficiente.
= SE( → é o início da
função. cadeira ser branca, ela A fó rmula usada
nã o tem o valor menor será : =SE(A2>=9; "Muito
B2>=7 → é a Exemplo 3 função SE.
que R$300,00. Bom";SE(A2>=8;"Bom";SE
comparaçã o proposta (se
a média é maior ou igual a Para aparecer “Sim” na (A2>=7;"Regular";"Insufic
Onde: iente")))
7). célula, as duas condiçõ es
= SE( → é o início da
“Aprovado”→ é o teriam que ser atendidas.
funçã o.
valor_se_verdadeiro, pois
A2>1000 → é a
é o que desejamos que
comparaçã o proposta (se
apareça na célula se a
a compra é maior que
condiçã o for verdadeira, FUNÇÃO SE + OU.
R$1,000,00).
ou seja, se o valor da
A2-(A2*5%)→ é o Exemplo
média for maior ou igual a Essa funçã o é usada
valor_se_verdadeiro, pois função SE
7. quando temos que
caso a condição seja com várias
“Reprovado” → é o satisfazer uma, entre
verdadeira, ou seja, caso condições.
valor_se_falso, pois é o duas condiçõ es. Por
o valor da compra seja
que desejamos que exemplo, a empresa
maior que R$1.000,00, Onde:
apareça na célula se a comprará a cadeira se a
desejamos que seja = SE( → é o início da
condiçã o for falsa, ou seja, cor for branca OU o
descontado 5% do valor função.
se o valor da média nã o valor inferior a
da compra. Como se trata A2>=9
for maior ou igual a 7. R$300,00.
de um cá lculo, nã o primeira condiçã o.
colocamos o A funçã o usada será : =
2. Uma empresa vai SE(OU(C2= “Branca”; “Muito bom” → é o
valor_se_verdadeiro valor_se_verdadeiro, caso
fazer a aquisiçã o de 10 entre “” (aspas). D2<300;
cadeiras, desde que sejam “Sim”; “Não”) a primeira condiçã o seja
“Não haverá verdadeira.
da cor branca. desconto” → é o A2>=8
A funçã o usada será : valor_se_falso, pois é o
=SE(C2= “Branca”; segunda condição.
que desejamos que “Bom” → é o
“Sim”; “Não”) apareça na célula se a valor_se_verdadeiro, caso
condiçã o for falsa, ou Exemplo função SE –
a segunda condiçã o seja
seja, se a compra nã o for OU.
verdadeira.
maior que R$1.000,00. A2>=7
terceira condiçã o.
Exemplo 2 função SE. FUNÇÃO SE + E. Onde: “Regular” → é o
Essa funçã o é usada = SE(OU( → é o início valor_se_verdadeiro, caso
Onde: quando temos que da funçã o. a terceira condiçã o seja
= SE( → é o início da satisfazer duas C2> “Branca” → é a verdadeira.
função. condiçõ es. Por exemplo, a primeira condição. “Insuficiente” → é o
empresa comprará a D2<300 → é a segundavalor_se_falso, caso
cadeira se a cor for condiçã o.
Grá ficos de
pizza mostram
o tamanho de
itens em uma
série de dados,
nenhuma das condiçõ es de modo Tipo Característica
sejam atendidas. proporcional à
soma dos Grá ficos de
CONT.SE. itens. Os colunas
pontos de apresentam
É uma funçã o que dados em um valores
conta os valores de uma grá fico de comparados
sequência, desde que seja pizza sã o através de
exibidos como retâ ngulos na
atendida uma condiçã o.
Por exemplo, vamos um percentual vertical.
contar quantos alunos de toda a pizza.
Grá ficos de
preferem maçã . linhas exibem
A funçã o usada será: = Grá ficos de
barras dados
cont.se(B2:B4; contínuos ao
apresentam a
“maçã ”) longo do
relaçã o de
cada item com tempo, ideais
o todo, para mostrar
exibindo os tendências em
dados a
dados em três
intervalos
eixos.
iguais.
59
Grá ficos de
Criar gráficos com seus dados em
uma planilha -
á rea enfatizam Tabela 6 –
https://support.office.com/ptbr/ar a magnitude
Apresentaçã
ticle/In%C3%ADcio-r da mudança
%C3%A1pido-crie-gr o de
no decorrer do
%C3%A1ficos-com-seus-dados- Gráficos60.
tempo e
45af7d1b-4a45-4355-9698-
01126488e689 podem ser
usados para
chamar
atençã o para o 60
Tipos de Gráficos Disponíveis -
valor total ao https://support.office.com/pt-
longo de uma br/article/Tiposde-gr
%C3%A1ficos-dispon%C3%ADveis-
tendência. a6187218-807e-4103-9e0a-
Exemplo função Um grá fico de 27cdb19afb90#bmcolumncharts
cont.se. dispersão Impressão e controle
possui dois de quebras.
Onde: eixos de
= CONT.SE( → é o valores, Para imprimir um
início da função. mostrando um arquivo podemos antes
B2:B4 → indica que o conjunto de definir a Á rea de
intervalo que será dados Impressã o, ou seja, qual
observado será desde a numéricos ao parte da planilha será
célula B2 até a célula B4. longo do eixo impressa. Para isso,
“maçã” → é a palavra horizontal e devemos selecionar as
que servirá como outro ao longo células que desejamos,
parâ metro para a do eixo clicar no Botã o de
contagem. vertical, Comando Á rea de
Para encerrar esse indicado para Impressã o e em Definir
exibiçã o e Á rea de Impressã o.
tó pico, vale lembrar que
comparaçã o de Caso deseje alterar a
o Excel tem vá rias outras
valores parte da planilha a ser
funçõ es que podem ser
numéricos, impressa, clique
estudadas pelo botã o
como dados novamente na Guia
inserir função e a ajuda
científicos, Layout da Pá gina e, no
do pró prio Excel, que foi
estatísticos e Grupo Configurar Pá gina,
usada para obter vá rias
de engenharia. acione o Botã o de
das informaçõ es contidas
grá fico exibe uma série Comando Á rea de
nesse tó pico da apostila.
de dados numéricos em Impressã o e Limpar Á rea
um formato grá fico59. de Impressã o.
Gráficos.
O Excel, disponibiliza
os grá ficos em diversos
Um grá fico é uma
formatos, facilitando a
representaçã o visual de
interpretaçã o dos dados
seus dados. Usando
relacionados. Os tipos de
elementos como colunas Figura 25 – Gráficos.
grá ficos disponíveis estã o
(em um grá fico de
contido na aba Inserir da
colunas) ou linhas (em Tipos de Gráficos. Guia Layout da
Barra de Ferramentas:
um grá fico de linhas), um
Página.
configuraçõ es de - Configurar o Se for necessá rio
Apó s definir a Á rea impressão: Tamanho do Papel, escolher linhas e colunas a
de Impressão é preciso - Definir o que escolhendo entre A4, serem repetidas em cada
acionar o comando será impresso da pasta: Tabló ide, Ofício, Executivo pá gina impressa; por
Imprimir, que fica na - Imprimir e outros. O recurso exemplo, linhas e colunas
Guia Arquivo, mas não é somente as planilhas Tamanho do Papel como ró tulos ou
obrigatória a definição ativas, ou seja, as que também é encontrado na cabeçalhos, use o Botã o de
da área de impressão. estã o selecionadas; Guia Layout de Pá gina, Comando Imprimir
Se ela não for definida, - Imprimir toda a Grupo Configurar Pá gina, Títulos, da Guia Layout de
toda a planilha será pasta de trabalho, ou seja, na forma do Botã o de Pá gina.
impressa. imprimir todas as Comando Tamanho. Na mesma Guia, com o
Para efetivar a planilhas existentes no - Determinar as Botã o Plano de Fundo,
impressão de um arquivo, arquivo aberto. margens do arquivo, determinamos uma
clique na Guia Arquivo → - Imprimir alterando as margens imagem que ficará como
Imprimir. seleçã o, ou seja, levar à esquerda, direita, inferior plano de fundo de toda a
impressora apenas a parte e superior para tamanhos planilha.
selecionada na planilha. prédefinidos ou O controle de
- Selecionar as personalizá -las, digitando quebras adiciona quebras
pá ginas a serem tamanhos alternativos. As de pá gina no local que
impressas, marcando a margens também podem você quer que a pró xima
pá gina inicial em ser configuradas pelo pá gina comece na có pia
“Pá ginas” e a final em Botã o de Comando impressa. A quebra de
“para”. Margens, encontrado na pá gina será inserida à
- Definir se a Guia Layout de Pá gina, cima e à esquerda da sua
impressã o sairá Grupo Configurar Pá gina, sessão.
“Agrupada”, isto é, Grupo Configurar Pá gina.
supondo que sejam vá rias - Ajustar o
Imprimir. có pias, sairã o todas em tamanho da planilha na
ordem crescente de impressã o. Este recurso
Ao acionar a Guia numeraçã o de pá gina. traz vá rias opçõ es de
Arquivo → Imprimir, é Desta forma será dimensionamento:
possível: impressa primeiro a - Sem
- clicar pá gina 01, depois a 02 e dimensionamento: Quebra de Página.
diretamente no botã o assim por diante, até imprime a planilha em
Imprimir, para enviar o finalizar a primeira có pia. tamanho real; O comando Quebra de
arquivo para a impressã o; A segunda có pia será - Ajustar planilha Pá gina é encontrado na
- selecionar o iniciada apó s o término da em uma pá gina: reduz a Guia Layout da Pá gina, no
nú mero de có pias; primeira. có pia impressa para Grupo Configurar Pá gina.
- terminar em - Definir se a ajustá -la em uma pá gina; As quebras de pá gina de
qual impressora a impressã o sairá - Ajustar todas as uma planilha podem ser
impressão será realizada e “Desagrupada”, o que faria colunas em uma pá gina: removidas e redefinidas
definir propriedades da que fossem impressas reduz a có pia impressa através do mesmo botã o
impressora. todas as pá ginas 01 de para que caiba na largura de comando.
cada có pia, depois as de uma pá gina;
pá ginas 02 de todas as - Ajustar todas as Cabeçalho e rodapé,
có pias e assim linhas em uma pá gina: numeração de
continuamente até que reduz a có pia impressa páginas.
todas as pá ginas fossem para que caiba na altura
impressas de todas as de uma pá gina; Cabeçalhos e rodapés
có pias. Por exemplo, as - Opçõ es de sã o espaços reservados,
pá ginas de nú mero 02 só respectivamente, na
serã o impressas apó s dimensionamento
parte superior e inferior
todas as primeiras personalizado:
de cada pá gina impressa
pá ginas, de todas as permite que o usuá rio
para apresentar
có pias, serem impressas. escolha a porcentagem
informaçõ es como nome
- Escolher a que será impressa do
do arquivo, data e hora,
Orientaçã o do Papel. Esta tamanho real.
nú mero de pá gina e
configuraçã o define se a No menu Imprimir
outras.
impressã o sairá no papel encontramos a opção
Para acessar este
em sua posição Retrato ou “Configurar Pá gina”.
recurso:
Paisagem. O recurso de Clicando nesta opção, será
- Na Guia Inserir,
Orientaçã o do Papel aberta a janela
Imprimir – clique no Grupo Texto →
também é encontrado na “Configurar Pá gina”. Nesta
Configurações. Cabeçalho e Rodapé.
Guia Layout de Pá gina, janela, realizamos
Grupo Configurar Pá gina, configuraçõ es de pá gina,
É possível realizar na forma do Botã o de margens, cabeçalho e
diversas Comando Orientaçã o. rodapé e forma de
impressã o da planilha.
execuçã o em seu có digo.), Clique em OK para
no Microsoft Visual Basic, iniciar a gravaçã o.
para gravar o seu pró prio Execute as açõ es que
Personalizar script de macro ou para deseja gravar.
cabeçalho. copiar toda a macro, ou Na guia
parte dela, para uma nova. Desenvolvedor, no
Classificação. Apó s criar uma macro, grupo Código, clique
você poderá atribuí-la a em
Clique na guia Dados, um objeto (como um
botã o da barra de Parar Gravação .
Layout de Página no grupo Classificar e
Filtrar > clique em ferramentas, um elemento
– Texto – Excel Online (365).
Classificar. Procurando grá fico ou um controle)
Cabeçalho e
este ícone: para poder executá -la
Rodapé. Com o Excel Online,
clicando no objeto. Se nã o
precisar mais usar a você usa seu navegador
- Na Guia Layout da Web para criar, exibir
macro, você poderá
de Pá gina, no Grupo e editar suas pastas de
excluí-la.”
Configurar Pá gina, clique Este procedimento trabalho armazenadas no
em Imprimir Títulos e abrirá a tela Classificar, OneDrive ou no Dropbox.
acione a Guia Cabeçalho e Gravar uma macro
que permite diversas Para gravar uma Se sua organizaçã o ou
Rodapé, da janela configuraçõ es para que a instituiçã o de ensino tem
Configurar Pá gina, macro, observe se a guia
classificação dos dados Desenvolvedor está um plano do Office 365
conforme ilustrado a selecionados atenda a ou um site do SharePoint,
seguir: disponível. Caso nã o
necessidade do usuá rio. esteja, siga os seguintes comece a usar o Excel
Podemos usar os passos: Online criando ou
botõ es de comando 1. “Clique no Botão armazenando pastas de
“Classificar de A a Z” e trabalho em bibliotecas
“Classificar de Z a A”, do do Microsoft Office do seu site.
mesmo grupo. Esses e, em seguida, clique em
comandos, Opções do Excel. Criar uma pasta de
respectivamente, 2. Na categoria trabalho online.
classificam do menor para Popular, em Opções
o maior valor e do maior principais para o No OneDrive, clique
para o menor. em Criar > Pasta de
trabalho com o Excel,
marque a caixa de seleçã o trabalho do Excel.
Macros. Mostrar guia
Desenvolvedor na Faixa
Segundo informaçõ es de Opções e clique em
do pró prio programa OK.
Microsoft Excel: “Para Para definir o nível de
automatizar tarefas segurança
repetitivas, você pode temporariamente e
gravar uma macro habilitar todas as macros,
Configurar (macro: uma açã o ou um faça o seguinte:
Página – conjunto de açõ es que Na guia
Cabeçalho e você pode usar para Desenvolvedor, no grupo Para renomear a pasta
Rodapé. automatizar tarefas. As Código, clique em de trabalho, clique no
macros sã o gravadas na Segurança de Macro. nome de arquivo padrão e
linguagem de digite um novo nome.
Para o cabeçalho e
programaçã o Visual Basic
para o rodapé é possível
for Applications.)
escolher a exibiçã o do
rapidamente no Microsoft
nú mero da pá gina, o
Office Excel. Você também
nome da planilha, data ou
pode criar uma macro
pasta. Podemos também
usando o Editor do Visual
clicar nos botõ es
Basic (Editor do Visual
Personalizar cabeçalho
Basic: um ambiente no Em Configurações
ou Personalizar rodapé,
qual você escreve um de Macro, clique em
para incluir informaçõ es
novo có digo e novos Habilitar todas as
na seçã o esquerda,
procedimentos do Visual macros (não
central ou direita da
Basic for Applications e recomendável; códigos
có pia impressa. Essas
edita os já existentes. O possivelmente Compartilhar pastas de
informaçõ es podem ser
Editor do Visual Basic perigosos podem ser trabalho online.
nú mero de pá gina,
contém um conjunto de executados) e em OK.
nú mero das pá ginas do
ferramentas de depuraçã o Para incluir uma Depois de criar sua
documento, data, hora,
completo para localizar descriçã o da macro, na pasta de trabalho online,
caminho do arquivo,
problemas ló gicos, de caixa Descrição, digite o você pode compartilhá -la
nome do arquivo, nome
sintaxe e tempo de texto desejado. com amigos, com colegas
da planilha e imagem.
ou torná -la pú blica. As conseguirã o editar a pasta (C) CTRL+PgDn - (A) que um texto
pessoas podem visualizar de trabalho ao mesmo Alterna entre separadores colocado em uma célula
suas planilhas, classificar tempo no Excel Online. da folha de cá lculo, da selecionada quebre linha
e filtrar dados e analisar esquerda para a direita. automaticamente, de
os detalhes de tabelas (D) CTRL+SHIFT+% forma que fique visível
dinâ micas na Web ou em - Aplica o formato em vá rias linhas da
um dispositivo mó vel. Percentagem sem casas célula, utiliza-se a opçã o
Para compartilhar Imprimir no Excel decimais. Quebrar texto
uma pasta de trabalho, Online. (E) CTRL+SHIFT+# - automaticamente.
clique em Compartilhar e Aplica o formato Data, (B) combinar duas
digite os endereços de Selecione as células ou com dia, mês e ano. ou mais células para criar
email das pessoas com grá fico que você deseja uma nova célula maior,
quem você deseja imprimir e vá até Arquivo 02. (Prefeitura de utiliza-se a opção
compartilhar ou obtenha > Imprimir. Para imprimir Chapecó – SC - Agrupar.
um link para enviar aos a planilha inteira, nã o Engenheiro de Trânsito (C) deixar as células
seus contatos. selecione nada antes de – IOBV/2016). No que contenham valores
selecionar o comando Microsoft Excel 2013 para menores do que 5 em um
Imprimir. editar uma célula já intervalo selecionado
selecionada o usuá rio com letra na cor
deve pressionar: vermelha, podem-se
(A) Ctrl + E utilizar opçõ es
Editar no navegador. (B) Shift + E disponíveis a partir da
(C) F5 opçã o Formataçã o
(D) F2 Condicional.
Se você está tentando
(D) ajustar
inserir dados, criar uma
fó rmula, adicionar 03. (UFPI - Técnico automaticamente a
Clique em Imprimir em Segurança do largura ou a altura das
grá ficos ou aplicar
formataçã o bá sica e nada para visualizar. Trabalho - COPESE – colunas ao conteú do das
UFPI/2015). Sobre o células, podem-se utilizar
acontece, você Se você mudar de ideia
provavelmente está no Microsoft Excel 2013, opçõ es disponíveis a
quanto a imprimir uma
assinale a opção partir de Formatar.
modo somente leitura. á rea selecionada, escolha
Mude para o modo de a opçã o Planilha Inteira e CORRETA. (E) limpar apenas a
exibição de ediçã o: clique em Imprimir. (A) Quando em uma formataçã o de um
célula, que deveria conjunto de células
Clique em Editar Pasta Se a visualizaçã o de
de Trabalho > Editar no aparecer um nú mero selecionadas, pode-se
impressã o final estiver
resultado de alguma utilizar uma opçã o
Excel Online. correta, clique em
fó rmula inserida nesta disponível a partir de
Para obter mais Imprimir.
célula, aparecer ######, Limpar.
opçõ es de ediçã o
avançadas, clique em significa que a fó rmula
Editar no Excel. contém um erro. 05. (CRBio-5ª
No entanto, o Excel (B) Só é possível Região - Fiscal Biólogo –
Online salva seu trabalho ocultar linhas ou colunas Quadrix). Em uma
automaticamente, que nã o contiver nenhum planilha do programa MS
portanto, se mudar de dado nelas, ou seja, que Excel 2013, para que é
ideia com relaçã o às estã o vazias. utilizado o símbolo &
Q
alteraçõ es que você fez, (C) Os nomes de ("E" comercial)?
u
use Desfazer ou pressione planilhas nã o podem ser (A) Trava de
e
Ctrl + Z. usados como referência endereços.
s
Trabalhar em em uma fó rmula. (B) Soma entre
t
conjunto na mesma (D) Cá lculos simples, células.
õ
planilha que envolvem apenas (C) Concatenaçã o.
e
Quando você estiver nú meros, podem ser (D) Condiçã o AND.
s
trabalhando com outras realizados em uma célula (E) Condiçã o OR.
:
pessoas no Excel Online, sem o uso do sinal
você pode editar a =(igual) antes da R
01. (UFCG -
planilha como faria Assistente em operaçã o. e
normalmente. Quando (E) A funçã o s
Administração –
outras pessoas editarem a UFCG/2016). Sobre teclas =Agora() retorna à data e p
planilha, o Excel Online a hora corrente. o
de atalho no Excel 2013,
mostrará a presença e as marque a alternativa s
atualizaçõ es delas 04. (DPE-RR - t
INCORRETA:
imediatamente. Isso só Técnico em Informática a
(A) CTRL+3 - Aplica
funciona quando todos – FCC/2015). É s
ou remove o sublinhado.
estã o trabalhando no INCORRETO afirmar que, :
(B) CTRL+M - Aplica
Excel Online. Se alguém no Microsoft Excel 2013, 1. Resposta: D.
o formato de nú mero
abre a pasta de trabalho em português, a partir da Ctrl+3: Aplica ou
Geral.
na á rea de trabalho do guia Pá gina Inicial, para: remove formatação
Excel, outras pessoas nã o em itá lico.
ingest equipamentos da estrutura do
2. Resposta: D. laboratoriais de alta MapReduce é que ela isola
Para editar uma célula
ão de produçã o). Embora os o aplicativo dos detalhes
seleciona é só clicar em F2 dados sistemas de bancos de da execuçã o de um
ou dar dois cliques na (Sqoop dados paralelos atendam programa distribuído,
célula. a alguns desses aplicativos como problemas de
1.4.6, de aná lise de dados, eles distribuiçã o de dados,
3. Resposta: E. Flume sã o caros, difíceis de planejamento e tolerâ ncia
A funçã o AGORA é 1.7.0, administrar e nã o têm a falhas. Nesse modelo, o
ú til quando você precisa tolerâ ncia a falhas para cá lculo toma um conjunto
NiFi consultas de longa de pares de
exibir a data e a hora
atuais em uma planilha 1.3.0 e execuçã o. chaves/valores e produz
ou calcular um valor com Kafka O MapReduce é uma um conjunto de pares de
base na data e na hora estrutura apresentada chaves/valores de saída. O
0.11.0) pelo Google para usuá rio do MapReduce
atuais e ter esse valor
atualizado sempre que . programaçã o de clusters expressa o cá lculo usando
abrir a planilha. de computadores de duas funçõ es: Mapear e
prateleira, a fim de Reduzir. A funçã o Mapear
04. Resposta: B. MapReduce50. executar o processamento toma um par de entrada e
O correto é a opçã o de dados em grande produz um conjunto de
mesclar células e nã o Nas ú ltimas duas escala em uma ú nica pares de chaves/valores
agrupar. décadas, o aumento execuçã o. A estrutura é intermediá rios. A
Para mesclar um está vel do poder desenvolvida para que o estrutura do MapReduce
célula no Excel, você computacional produziu cluster do MapReduce agrupa todos os valores
faz o seguinte: um fluxo impressionante possa ser escalado a intermediá rios associados
Pá gina inicial = de dados que, por sua vez, milhares de nó s de modo à mesma chave
Alinhamento = "Mesclar causou uma mudança de tolerante a falhas. No intermediá ria Eu
células", mesclar células paradigmas dos entanto, o modelo de (shuffling) e os transfere à
aparece na setinha ao lado mecanismos de programaçã o do função Reduzir. A função
de "Mesclar e Centralizar". arquitetura de MapReduce tem suas reduzir recebe uma chave
computaçã o e de pró prias limitaçõ es. Seu intermediá ria Eu com seu
processamento de dados fluxo de dados de uma conjunto de valores e
em grande escala. Por entrada e dois está gios é realiza sua fusão.
05. Resposta: C.
exemplo, os eficientes extremamente rígido, Geralmente, somente o
Use CONCATENAR,
telescó pios em além do fato de ter um valor de saída zero ou um
uma das funçõ es de texto,
astronomia, os nível muito baixo. Por é produzido de acordo
para unir duas ou mais
aceleradores de partículas exemplo, é preciso gravar com a chamada reduzir. A
cadeias de texto em uma
em física e os um có digo customizado principal vantagem desse
ú nica cadeia.
sequenciadores de até mesmo para modelo é que ele permite
genoma em biologia operaçõ es mais comuns. que grandes cá lculos
inserem volumes Portanto, muitos sejam feitos em paralelo e
Si massivos de dados nas programadores se sentem reexecutados como o
mãos dos cientistas. O desconfortá veis com essa principal mecanismo de
stema
Facebook coleta 15 estrutura e preferem usar tolerâ ncia a falhas.
de TeraBytes de dados por a SQL como uma O projeto Apache
arquiv dia em um data linguagem declarativa de Hadoop é um software
os e warehouse com escala de alto nível. Diversos livre Java que oferece
PetaBytes. A demanda por projetos (Apache Pig, suporte a aplicativos
ingest aplicativos de aná lise e Apache Hive e HadoopDB) distribuídos de dados
ão de mineração de dados em foram desenvolvidos para intensos por meio da
dados: grande escala está facilitar a tarefa dos implementaçã o da
crescendo nos segmentos programadores e fornecer estrutura do MapReduce.
concei de mercado (por exemplo, interfaces declarativas de Ele foi desenvolvido
tos de aná lise de dados da web, alto nível à estrutura do originalmente pelo
MapRe aná lise de fluxo de cliques MapReduce. Yahoo! como um clone da
e aná lise de logs de Primeiro, analise a infraestrutura
duce, monitoramento de rede) e estrutura do MapReduce MapReduce do Google,
HDFS/ nas ciências (por exemplo, e, em seguida, os recursos mas, logo em seguida,
Hadoo aná lise de dados dos diferentes sistemas tornou-se um software
produzidos por que fornecem interfaces livre. O Hadoop é
p/YAR simulaçõ es de escala de alto nível a essa responsá vel pela
N massiva, implementaçõ es estrutura. execuçã o de seu có digo
2.7.4, de sensores e em um cluster de
A estrutura do má quinas. Em geral,
Ferra 50 MapReduce. quando um conjunto de
menta https://imasters.com.br/artigo/24
486/software-livre/utilize-
dados ultrapassa a
s de linguagensparecidas-com-a-sql- Uma principal capacidade de
para-a-estrutura-domapreduce/? vantagem da abordagem armazenamento de uma
trace=1519021197&source=single
ú nica má quina física, é contagens int Seu fluxo de dados de plataforma de software
necessá rio particioná -lo wordCount = 0; um entrada e dois está gios em Java, de computação
em um nú mero de para cada v dos é extremamente rígido. distribuída, voltada para
má quinas separadas. Os valores: Para executar tarefas que clusters, inspirada no
sistemas de arquivos que wordCount += têm um fluxo de dados MapReduce e no
gerenciam o ParseInt(v); diferente (por exemplo, GoogleFS. Esta plataforma
armazenamento em uma Emit(AsString(word junçõ es ou n está gios), é é o(a):
rede de má quinas sã o Count)); preciso desviar de
chamados sistemas de soluçõ es alternativas (A) Yam Common.
arquivos distribuídos. O Agora, suponha que a deselegantes; (B) GoogleCrush.
Hadoop vem com um sequência de entrada das O có digo customizado (C) EMRx.
sistema de arquivos linhas do texto: é escrito até mesmo para (D) Hadoop.
distribuído chamado as operaçõ es mais comuns (E) MapFix.
HDFS (Sistema de Sequência de entrada. (por exemplo, projeçã o e
Arquivos Distribuído filtragem), o que faz com 02. (ESAF - Gestão de
Hadoop). Em particular, o 1, Este é o Có digo que o có digo seja Infraestrutura de TI –
HDFS é um sistema de Exemplo geralmente difícil de ESAF/2015). Um
arquivos distribuído que 2, A Cor Exemplo é reutilizar e manter; framework, baseado em
armazena os arquivos Vermelho A natureza opaca das duas funçõ es principais,
entre todos os nó s em um 3, A Cor do Carro é map e reduce funçõ es para o processamento de
cluster Hadoop. Ele Verde impede a capacidade do grandes quantidades de
quebra os arquivos em sistema de executar dados em clusters
grandes blocos e os O exemplo a seguir otimizaçõ es. computacionais
distribui entre diferentes mostra a saída da funçã o Além disso, muitos homogêneos, no qual
má quinas, além de fazer mapear dessa entrada: programadores nã o estã o problemas como
diversas có pias de cada familiarizados com a integridade dos dados,
bloco para que, se uma Saída da função estrutura do MapReduce e disponibilidade dos nó s,
má quina falhar, nenhum mapear. preferem usar a SQL escalabilidade da
dado seja perdido. ('This', 1), ('is', 1). (porque sã o mais aplicaçã o e recuperaçã o
O programa do ('Code', 1), proficientes nela) como de falhas ocorrem de
MapReduce é expresso ('Example', 1) uma linguagem forma transparente ao
em um pseudocó digo ('Example', 1), declarativa de alto nível usuá rio é o Hadoop:
para contagem do ('Color', 1), ('is', 1), para expressar sua tarefa
nú mero de ocorrências ('Red', 1) e, ao mesmo tempo, deixar (A) Cassandra.
de cada palavra em um ('Car', 1), ('Color', 1), todos os detalhes de (B) EC2 - Elastic
sequência de linhas de ('is', 1), ('Green', 1) otimizaçã o da execuçã o ao Compute Cloud.
texto. No exemplo, a mecanismo de backend. (C) Lambda.
funçã o mapear emite A seguir, saída da Também é verdade que as (D) MapReduce.
cada palavra, mais uma funçã o reduzir (do abstraçõ es de linguagem (E) VPC - Virtual
marca associada de resultado): de alto nível permitem Private Cloud.
ocorrências, ao passo que que o sistema subjacente
a funçã o reduzir soma execute melhor as
Saída da função R
todas as marcas emitidas otimizaçõ es automá ticas.
reduzir. e
para uma palavra em A seguir, serão s
particular. examinadas as linhas e
('Car', 1), ('Code', 1), p
sistemas desenvolvidos o
('Color', 2), ('Example',
Programa do para lidar com esses s
2), ('Green', 1),
MapReduce. problemas e incluir a SQL t
('Red', 1)
à estrutura do a
, ('This', 1), ('is', 3)
map(chave da MapReduce. s
Sequência, :
Para os
valor da Q
programadores, um
Sequência): / u
principal recurso da 1. Resposta: D.
/key: nú mero e
estrutura do MapReduce é
da linha, valor: s
que há apenas dois Hadoop é uma
texto da linha t
primitivos declarativos de plataforma de software
para cada õ
alto nível (map e reduce) em Java de computação
palavra w do e
valor: que podem ser escritos distribuída voltada para
s
EmitIntermediat em qualquer linguagem de clusters e processamento
:
e(w, ?1?); programaçã o escolhida, de grandes massas de
sem preocupaçõ es quanto dados. Foi inspirada no
01. (ANAC - Analista MapReduce e no
reduce(chave da aos detalhes de sua
Administrativo – GoogleFS (GFS).
Sequência, valores do execuçã o paralela. Por
ESAF/2016). Para o
Agente iterativo): outro lado, o modelo de
processamento de
programaçã o do 2. Resposta: D.
//key: uma grandes massas de dados,
palavra, valores: MapReduce tem suas
no contexto de Big Data, é
uma lista de pró prias limitaçõ es: O Hadoop é uma
muito utilizada uma
plataforma open source
desenvolvida - Economia pela
especialmente para Visão geral do HDFS. distribuiçã o de dados e O HDFS é composto
processamento e aná lise pelo processamento entre por clusters de nó s
de grandes volumes de O HDFS tem muitas clusters de computadores interconectados no local
dados, sejam eles similaridades com outros pessoais padrã o onde os arquivos e
estruturados ou nã o sistemas de arquivos - Eficiência pela diretó rios residem.
estruturados. Pode-se distribuídos, mas é distribuiçã o de dados e Um cluster HDFS
dizer que o projeto teve diferente em vá rios pela ló gica para processá - consiste em um ú nico
início em meados de aspectos. Uma diferença los em paralelo nos nó s nó , conhecido como
2003, quando o Google notá vel é o modelo em que os dados estã o um NameNode, que
criou um modelo de WORM (write-once- localizados gerencia o namespace
programaçã o que readmany) do HDFS que - Confiabilidade do sistema de arquivos
distribui o afrouxa as exigências do pela manutençã o e regula o acesso do
processamento a ser controle de automá tica de vá rias cliente aos arquivos.
realizado entre vá rios simultaneidade, có pias dos dados e pela Além disso, os nó s de
computadores para simplifica a persistência reimplementaçã o dados (DataNodes)
ajudar o seu mecanismo de dados e habilita automá tica da ló gica de armazenam dados
de busca a ficar mais acesso de alto processamento no caso de como blocos dentro
rá pido e livre das rendimento. falhas; dos arquivos.
necessidades de Outro atributo
servidores poderosos (e exclusivo do HDFS é o O HDFS fornece Nós de nome e nós de
caros). argumento que, interfaces para os dados.
Esta tecnologia normalmente, é melhor aplicativos a fim de movê-
recebeu o nome de localizar a ló gica de los para perto de onde se Dentro do HDFS,
MapReduce. processamento pró xima localizam os dados. um nó de nome
dos dados, ao invés de gerencia operaçõ es de
Hadoop Distributed mover os dados para o Interfaces de namespace do sistema
File System (HDFS)51. espaço do aplicativo. aplicativo no HDFS. de arquivos do tipo
O HDFS restringe a abrir, fechar e
O HDFS é um projeto gravaçã o dos dados É possível acessar renomear arquivos e
da Apache Software rigorosamente a um o HDFS de muitos diretó rios. Um nó de
Foundation e um gravador por vez. Os modos diferentes. O nome também mapeia
subprojeto do projeto bytes sã o sempre HDFS disponibiliza blocos de dados a nó s
Apache Hadoop. O anexados ao final do uma interface de de dados, os quais
Hadoop é ideal para fluxo e há a garantia de programaçã o de gerenciam as
armazenar grandes que os fluxos de bytes aplicativos (API) Java™ solicitaçõ es de leitura
quantidades de dados, do serã o armazenados na e um wrapper nativo e gravaçã o dos clientes
porte de terabytes e ordem gravada. em linguagem C para a HDFS. Os nó s de dados
pentabytes, e usa o HDFS O HDFS tem muitos API Java. Além disso, é também criam,
como sistema de objetivos. Estes sã o alguns possível usar um excluem e replicam
armazenamento. O HDFS dos mais notá veis: navegador da web blocos de dados de
permite a conexã o de nó s para buscar arquivos acordo com as
(computadores pessoais - Tolerâ ncia a no HDFS. instruçõ es do nó de
padrã o) contidos nos falhas pela detecçã o de O aplicativo descrito nome dominante.
clusters por meio dos falhas e aplicaçã o de na Tabela 1 também está A Figura 1 ilustra a
quais os arquivos de recuperaçã o rá pida, disponível para interface arquitetura de alto
dados sã o distribuídos. É automá tica com o HDFS. nível do HDFS.
possível acessar e - Acesso a dados
armazenar os arquivos por meio do fluxo
de dados como um MapReduce
sistema de arquivos - Modelo de Figura 1. A
contínuo. simultaneidade simples e arquitetura do HDFS.
O acesso aos arquivos robusto
de dados é gerenciado de - Ló gica de Como ilustrado na
um modo em fluxo, o que processamento pró xima Figura 1, cada cluster
significa que aplicativos aos dados, ao invés dos contém um nó de nome.
ou comandos sã o Tabela 1. Aplicativos que podem servir de
dados estarem pró ximos à Esse design facilita um
executados diretamente interface com o HDFS.
ló gica de processamento modelo simplificado para
por meio do modelo de - Portabilidade gerenciamento de cada
processamento O HDFS tem um
entre sistemas namespace e mediaçã o
MapReduce (veja conjunto de recursos
operacionais e hardware da distribuiçã o de dados.
Recursos, novamente). extraordiná rio com
padrã o heterogêneos
O HDFS é tolerante a expectativa elevada,
- Escalabilidade Relacionamentos entre
falhas e disponibiliza graças à sua
para armazenar e nós de nome e nós de
acesso de alto rendimento arquitetura simples,
processar de modo dados.
a grandes conjuntos de porém eficiente.
confiá vel grandes
dados. quantidades de dados
Arquitetura do HDFS. Nó s de nome e nó s de
51 https://www.ibm.com/ dados sã o componentes
de software ou outros nó s de dados falhas. No entanto, o HDFS có digo de manipulação de
desenvolvidos para interessados. deixa aos administradores arquivos no
executar O nó de nome mantém a decisão sobre a que HDFS usa uma
independentemente em e administra mudanças no instalaçã o um nó subclasse do
má quinas padrã o entre namespace do sistema de pertence. Assim, cada nó objeto
sistemas operacionais arquivos. conhece o ID do seu rack; org.apache.hadoop.fs.FileS
heterogêneos. O HDFS foi é isso que significa ystem
desenvolvido com a Namespace do reconhecimento de rack. O có digo mostrado
linguagem de sistema de arquivos. O HDFS usa um abaixo ilustra um
programaçã o Java; assim, modelo inteligente de processo típico de criação
qualquer má quina com O HDFS suporta uma colocação de réplica para de arquivo no HDFS.
suporte para essa organizaçã o hierá rquica fins de confiabilidade e
linguagem pode executar tradicional de arquivos desempenho. A Processo típico de
o HDFS. em que um usuá rio ou otimizaçã o da colocaçã o criação de arquivo no
Um cluster de um aplicativo pode criar de réplica torna o HDFS HDFS.
instalaçã o típico tem uma diretó rios e armazenar exclusivo na maioria dos
má quina dedicada com arquivos neles. A outros sistemas de byte[] fileData =
um nó de nome e, hierarquia do namespace arquivos distribuídos e é retrieveFileDataFromS
possivelmente, um nó de do sistema de arquivos é facilitado por uma política omewhere();
dados em operaçã o. Cada similar à maioria dos de colocação de réplica String filePa
uma das outras má quinas outros sistemas de com reconhecimento de =
no cluster executa um nó arquivos existentes; é rack que usa a largura de retrieveFilePathStringFro
de dados. possível criar, renomear, banda da rede de modo mSomewhere();
reposicionar e remover eficiente. Configuration config =
Protocolos de arquivos. Ambientes de grande new Configuration(); //
comunicação. O HDFS também porte do HDFS assumes to automatically
suporta sistemas de normalmente operam em load
Todos os protocolos arquivos de terceiros vá rias instalaçõ es de // hadoop-default.xml
de comunicaçã o do HDFS como o CloudStore e o computadores. A and hadoop-site.xml
sã o desenvolvidos no Simple Storage Service comunicaçã o entre dois
org.apache.hadoop.fs.Path
protocolo TCP/IP. Os (S3). nó s de dados em
(filePath);
clientes HDFS se instalaçõ es diferentes é,
org.apache.hadoop.fs.
conectam a uma porta do normalmente, mais lenta
FSDataOutputStream
Protocolo de Controle de do que entre nó s de dados
outputStream
Transmissõ es (TCP) na mesma instalaçã o.
=
aberta no nó de nome e Replicação de dados. Assim, o nó de nome tenta
hdfs.create(
se comunicam com esse otimizar a comunicaçã o
path);
nó por meio de um entre nó s de dados. O nó
O HDFS replica blocos outputStrea
protocolo proprietá rio de nome identifica o local
de arquivos para m.write(file
baseado em Chamada de dos nó s de dados pelos
tolerâ ncia a falhas. Um Data, 0,
Procedimento Remoto seus IDs de rack.
aplicativo pode especificar fileData.leng
(RPC). Os nó s de dados o nú mero de réplicas de Organização de
th);
conversam com o nó de um arquivo no instante dados.
Preparando
nome através de um em que ele é criado e é -se para
protocolo proprietá rio possível alterar esse Um dos principais confirmar.
baseado em bloco. nú mero a qualquer objetivos do HDFS é
Os nó s de dados ficam momento depois disso. O suportar arquivos
Quando um cliente
em loop continuamente, nó de nome toma todas as grandes. O tamanho de
cria um arquivo no HDFS,
solicitando instruçõ es ao decisõ es referentes à um bloco típico do HDFS é
ele primeiro armazena os
nó de nome. Um nó de replicação de bloco. 64 MB. Assim, cada
dados em um arquivo
nome nã o pode se arquivo HDFS é composto
local temporá rio. Em
conectar diretamente a Reconhecimento de por um ou mais blocos de
seguida, ele redireciona
um nó de dados; ele rack. 64 MB. O HDFS tenta
as gravaçõ es
simplesmente retorna os colocar cada bloco em nó s
subsequentes para o
valores das funçõ es de dados separados.
Normalmente, clusters arquivo temporá rio.
chamadas por um nó de HDFS de grande porte Quando o arquivo
dados. Cada nó de dados Processo de criação temporá rio acumula
estã o acondicionados em
mantém um soquete do de arquivo.
vá rias instalaçõ es (racks). dados suficientes para
servidor aberto de modo preencher um bloco do
O trá fego de rede
que o có digo do cliente Manipular arquivos no
entre nó s diferentes HDFS, o cliente informa
ou outros nó s de dados HDFS é similar aos isso para o nó de nome e
dentro da mesma
possam ler ou gravar processos usados com
instalaçã o é mais eficiente este, por sua vez,
dados. O nó de nome outros sistemas de converte o arquivo para
do que o trá fego de rede
conhece o host ou porta arquivos. No entanto,
entre instalaçõ es. Um nó um nó de dados
para esse soquete do como o HDFS é um permanente. A seguir, o
de nome tenta colocar
servidor e fornece as sistema de vá rias
réplicas de um bloco em cliente fecha o arquivo
informaçõ es aos clientes má quinas que parece ser temporá rio e esvazia
vá rias instalaçõ es para
aprimorar a tolerâ ncia a um ú nico disco, todo o quaisquer dados
remanescentes para o nó dados que nã o outros blocos de dados em log de transaçã o mantido
de dados recém criado. respondem às pulsaçõ es um cluster, caso ocorra por cada nó de nome. O
A essa altura, o nó de como inativos e deixa de um aumento sú bito na namespace do sistema de
nome confirma o nó de enviar solicitaçõ es demanda de um arquivos, junto com os
dados para o disco. adicionais a eles. Os determinado arquivo. O mapeamentos de blocos
dados armazenados em HDFS também do arquivo e as
Enfileiramento de um nó inativo nã o estã o disponibiliza o comando propriedades do sistema
replicações. mais disponíveis para um hadoop balance para do arquivo, sã o
cliente HDFS nesse nó , tarefas manuais de armazenados em um
Quando um cliente que seja eficazmente rebalanceamento. arquivo chamado
acumula um bloco de removido do sistema. Se Um motivo comum FsImage. Quando um nó
dados do usuá rio repleto, a inatividade de um nó para o rebalanceamento é de nome é inicializado, ele
ele recupera uma lista de fizer com que o fator de a inclusã o de novos nó s de lê o arquivo FsImage junto
nó s de dados que contém replicação de blocos de dados em um cluster. Ao com outros arquivos e
uma réplica desse bloco dados caia abaixo do seu posicionar novos blocos, aplica as transaçõ es e
no nó de nome. O cliente, valor mínimo, o nó de os nó s de nome informaçõ es de estado
por sua vez, esvazia o nome iniciará a consideram vá rios localizadas nesses
bloco de dados repleto replicação adicional para parâ metros antes de arquivos.
para o primeiro nó de recolocar a replicaçã o em escolher que nó s de dados
dados especificado na um estado normalizado. os receberã o. Algumas das Atualização síncrona
lista de réplica. À medida A Figura 2 ilustra o consideraçõ es são: de metadados.
que o nó recebe chunks processo de envio de
de dados, ele os grava no mensagens de pulsação do - Políticas de Um nó de nome usa
disco e transfere có pias HDFS. gravaçã o de réplica de um arquivo de log
para o pró ximo nó de bloco; conhecido como EditLog
dados na lista. O pró ximo - Prevençã o de para registrar
nó de dados faz o mesmo. perda de dados devido à persistentemente cada
Esse processo de falha da instalaçã o ou do transaçã o ocorrida nos
enfileiramento é repetido rack; metadados do sistema de
até que o fator de - Reduçã o da E/S arquivos do HDFS. Se os
replicaçã o seja satisfeito. da rede entre instalaçã o; arquivos EditLog ou
- Difusã o uniforme FsImage vierem a estar
Confiabilidade do de dados entre os nó s de corrompidos, a instâ ncia
armazenamento de dados em um cluster. do HDFS à qual eles
dados. pertencem deixará de
O recurso de funcionar. Assim, um nó
Um objetivo rebalanceamento de de nome suporta vá rias
Figura 2. O
importante do HDFS é cluster do HDFS é apenas có pias dos arquivos
processo de
armazenar dados de um mecanismo que ele FsImage e EditLog. Com a
pulsação do
modo confiá vel, mesmo usa para manter a presença de vá rias có pias
HDFS.
quando ocorrem falhas integridade dos dados. desses arquivos, qualquer
dentro dos nó s de nome, Outros mecanismos sã o mudança em um dos
dos nó s de dados ou das abordados a seguir. arquivos será
partiçõ es de rede. disseminada
Rebalanceamento do simultaneamente para
A detecção é a Integridade de dados.
bloco de dados. todas as có pias.
primeira etapa
empregada pelo HDFS O HDFS percorre Quando um nó de
Nem sempre é nome reinicia, ele usa a
para superar as falhas. O grandes extensõ es para
possível colocar blocos de ú ltima versã o consistente
HDFS usa mensagens de assegurar a integridade
dados uniformemente do FsImage e do EditLog
pulsação para detectar a dos dados entre clusters.
entre nó s de dados, o que na sua autoinicializaçã o.
conectividade entre os Ele usa validaçã o de soma
significa que o espaço
nó s de nome e de dados. de verificaçã o nos
usado para um ou mais Permissões do HDFS
conteú dos dos arquivos
nó s de dados pode estar para usuários, arquivos
Pulsações do HDFS. do HDFS armazenando
subutilizado. Assim, o e diretórios.
somas de verificaçã o
HDFS suporta o
Vá rios motivos calculadas em arquivos
rebalanceamento de
podem causar perda de ocultos, separados, no O HDFS implementa
blocos de dados usando
conectividade entre os mesmo namespace que os um modelo de permissã o
diversos modelos. Um
nó s de nome e de dados. dados reais. Quando um para arquivos e diretó rios
modelo pode mover
Consequentemente, cada cliente recupera os dados que tem muito em comum
blocos de dados de um nó
nó de dados envia do arquivo, é possível com o modelo Portable
de dados para outro
mensagens de pulsaçã o verificar se os dados Operating System
automaticamente quando
perió dicas para o nó de recebidos correspondem à Interface (POSIX); por
o espaço livre em um nó
nome, de modo que este soma de verificaçã o exemplo, cada arquivo e
fica muito reduzido. Outro
possa detectar a perda de armazenada no arquivo diretó rio está associado a
modelo pode criar
conectividade se ele associado. um proprietá rio e a um
dinamicamente réplicas
parar de recebê-las. O nó O namespace do HDFS grupo. O modelo de
adicionais e rebalancear
de nome marca os nó s de é armazenado usando um permissõ es do HDFS
suporta leitura (r), algumas diferenças data utiliza bancos SQL lidar com esse volume de
gravaçã o (w) e execuçã o importantes. Uma nativos, que são bancos dados, guardandoos em
(x). Como nã o há nenhum diferença significativa é o de dados que podem diferentes localidades e
conceito de execuçã o de modelo WORM (write- estar configurados em juntando-os através de
arquivo dentro do HDFS, a once-read-many) do quatro tipos diferentes software.
permissão x assume um HDFS que afrouxa as de armazenamentos: Velocidade: o Big Data
significado diferente. Em exigências do controle de valor chave, colunar, deve fornecer as repostas
termos simples, o atributo simultaneidade, grá fico ou documento. com velocidade e em
x indica permissão para simplifica a persistência (E) O MapReduce é tempo há bil. O Big Data
acessar um diretó rio-filho de dados e habilita considerado um modelo serve para analisar os
de um determinado acesso de alto de programaçã o que dados no instante em que
diretó rio-pai. O rendimento. permite o processamento sã o criados, sem ter de
proprietá rio de um Para disponibilizar de dados massivos em armazená los em bancos
arquivo ou diretó rio é a um modelo otimizado de um algoritmo paralelo e de dados.
identidade do processo acesso a dados, o HDFS distribuído. Variedade: o Big Data
cliente que o criou. O foi desenvolvido de modo deve ser capaz de lidar
grupo é o grupo do a posicionar a ló gica de 02. (TJ-PE - Analista com diferentes formatos
diretó rio-pai. processamento pró xima Judiciário - Analista de de informaçã o. Os dados
aos dados, ao invés de Sistemas – IBFC/2017). podem estar em fontes
Capturas posicionar os dados Pentaho é um software estruturadas, semi-
Instantâneas. pró ximos ao espaço do de có digo aberto para estruturadas e a grande
aplicativo. inteligência empresarial, maioria em fontes nã o
O HDFS foi planejado desenvolvido em Java. estruturadas.
originalmente para Q Assinale a alternativa que (B) Incorreta. O
suportar capturas u apresenta com quais sistema de arquivos
instantâ neas que podem e bancos de dados o distribuído Hadoop
ser usadas para s software trabalha implementa o algoritmo
retroceder uma instâ ncia t nativamente: Dijkstra modificado para
corrompida do HDFS a õ (A) NoSQL e Hadoop busca irrestrita de dados
um estado anterior. No e (B) PostgreSQL e em á rvores aglomeradas
entanto, o suporte do s Oracle em clusters com
HDFS para capturas : (C) NoSQL e Oracle criptografia.
instantâ neas foi adiado (D) PostgreSQL e Nã o é possível afirmar
por enquanto. 01. (TCE-PB - Hadoop a busca ocorre de maneira
Auditor de Contas (E) NoSQL e irrestrita, principalmente
Resumindo... Públicas - Demais Áreas PostgreSQL se os dados estiverem
– CESPE/2018). Com criptografados
O Hadoop é um referência a big data, R (protegidos). A proteçã o
sistema de arquivos assinale a opção correta. e pode restringir o acesso
distribuído do Apache s ao conteú do dos dados.
Software Foundation e (A) A definição mais p (C) Incorreta. Em Big
um projeto de ampla de big data o Data, o sistema de
gerenciamento de dados restringe o termo a duas s arquivos HDFS é usado
que se destina a partes — o volume t para armazenar arquivos
armazenar e gerenciar absoluto e a velocidade a muito grandes de forma
grandes quantidades de —, o que facilita a s distribuída, tendo como
dados. Ele usa um extraçã o das informaçõ es : princípio o write-many,
sistema de e dos insights de read-once write-once,
armazenamento negó cios. 01. Resposta: E. read-many-times.
denominado HDFS para (B) O sistema de O HDFS é um sistema
conectar computadores arquivos distribuído (A) Incorreta. A de arquivos criado para
pessoais padrã o, Hadoop implementa o definição mais ampla de armazenar arquivos muito
conhecidos como nó s, algoritmo Dijkstra big data restringe o grandes de forma
contidos em clusters nos modificado para busca termo a duas partes: o distribuída. O conceito
quais os blocos de dados irrestrita de dados em volume absoluto e a sobre o qual o HDFS foi
sã o distribuídos. É á rvores aglomeradas em velocidade... construído é o chamado
possível acessar e clusters com criptografia. O Big Data foi write-once, readmany-
armazenar os blocos de (C) Em big data, o inicialmente conceituado times, ou seja, escreva
dados como um sistema sistema de arquivos com base em três uma vez, leia muitas
de arquivos contínuo que HDFS é usado para premissas bá sicas, vezes. Esse tipo de
usa o modelo de armazenar arquivos também conhecidas como construçã o é essencial
processamento muito grandes de forma 3Vs. para o Big Data, uma vez
MapReduce. distribuída, tendo como Volume: o Big Data que os dados serã o
O HDFS compartilha princípio o write-many, deve possibilitar a aná lise processados inú meras
recursos comuns com read-once. de grandes volumes de vezes, dependendo da
outros sistemas de (D) Para armazenar dados. Além disso, a aplicaçã o, embora,
arquivos distribuídos e recuperar grande tecnologia do Big Data normalmente, sejam
enquanto suporta volume de dados, o big serve exatamente para escritos apenas uma vez.
Esse tipo de construção Outros termos maneira como lidamos - Open-source:
faz com que seja equivalentes para esta com as dependências de Enquanto o cliente do
desaconselhá vel a categoria de bancos é nosso projetos. Um dos NPM é uma ferramenta
modificaçã o de arquivos, NF², N1NF (non first principais gerenciadores privada, da qual uma
pois acaba gerando muita normal form), nested de pacotes é o NPM, que empresa detém total
sobrecarga. relational, dimensional, inicialmente visava controle, o Yarn é Open
d) Incorreta. Para multivalue, free-form, abastecer apenas os Source, feito e mantido
armazenar e recuperar schemaless, document desenvolvedores de pela comunidade.
grande volume database e MRNN NodeJS, mas acabou se - Registros
de dados, o Big Data (Modelo Relacional Nã o tornando um hub comum mú ltiplos: O Yarn suporta
utiliza bancos SQL Normalizado). de dependências os registros do Bower.
nativos... JavaScript em geral. O Portanto, com apenas um
De fato, na definição Hadoop é uma NPM hoje conta com mais dependency manager é
da Amazon, “bancos de plataforma de software de 300mil bibliotecas em possível gerenciar tanto
dados NoSQL usam em Java de computaçã o seu repositó rio central, os pacotes do NPM quanto
diversos modelos de distribuída voltada para as quais alcançam cerca 5 os do Bower.
dados, incluindo clusters e processamento bilhõ es de downloads por - Determinístico:
documentos, grá ficos e de grandes volumes de mês, e é a ferramenta de O Yarn garante que cada
chave-valor e colunares. dados, com atençã o a gerenciamento de vez que instala as tuas
Justamente por este tolerâ ncia a falhas. Foi pacotes mais popular do dependências, a á rvore do
motivo, a assertiva está inspirada no MapReduce mundo. diretó rio node_modules se
errada ao afirmar que o e no GoogleFS (GFS). Apesar de ser uma mantém igual. Isso evita
Big Data utiliza bancos Trata-se de um projeto excelente ferramenta, o alguns erros difíceis de
SQL nativos, pois pode da Apache de alto nível, NPM nunca conseguiu encontrar.
utilizar bases de dados construído por uma agradar a todos, e sã o - Modo offline: O
nã o relativas a modelos comunidade de comuns as reclamaçõ es Yarn trabalha com um
relacionais. contribuidores e de lentidã o, a falta de um Cache Global.
e) Correta. O utilizando a linguagem de instalador offline, Basicamente, isso significa
MapReduce é programaçã o Java. O instalaçõ es em fila, etc. que, uma vez instalada, a
considerado um modelo Yahoo! tem sido o maior dependência vai estar
de programaçã o que contribuidor do projeto, Yarn Package disponível offline pra ser
permite o utilizando essa Manager. usada novamente.
processamento de dados plataforma
massivos em um intensivamente em seus No dia 11 de outubro Instalando o Yarn.
algoritmo paralelo e negó cios. É de 2016, o Facebook
distribuído. disponibilizado pela anunciou o seu novo Para a instalaçã o, você
MapReduce é um Amazon e IBM em suas gerenciador de pacotes pode baixar no site oficial,
modelo de programaçã o, e plataformas. para Javascript: o Yarn, mas também pode utilizar
framework introduzido que vem com a proposta outro gerenciador, como o
pelo Google para suportar Yarn: A evolução do de ser mais rá pido, NPM.
computaçõ es paralelas em NPM52. seguro e confiá vel que o
grandes coleçõ es de dados NPM. O Yarn é open npm install -g yarn
em clusters de Nos primó rdios do source, e nasceu com a
computadores. Agora desenvolvimento web e colaboraçã o, também, Utilizando o Yarn.
MapReduce é considerado afins, trabalhar com das empresas Exponent,
um novo modelo bibliotecas era uma Google, e Tilde. Inicialização.
computacional tarefa á rdua. Tinha-se O Yarn funciona
distribuído, inspirado que pesquisar pela exatamente como o NPM A utilização do Yarn é
pelas funçõ es map e biblioteca, escolher uma e o Bower, abrangendo, bastante semelhante
reduce usadas versã o, baixar o zip e inclusive, as bibliotecas com a do NPM.
comumente em implementar em nosso que estã o presentes Para inicializar basta
programaçã o funcional. projeto. Nã o parece nada nestes gerenciadores. digitar, na linha de
difícil ao se tratar de Uma das coisas mais comando:
pequenos projetos, mas interessantes, além da
quando estamos falando rapidez, é a possibilidade yarn init
02. Resposta: A. de projetos um pouco de instalaçã o de pacotes
maiores, isso se torna um offline. Quando você Este comando irá
NoSQL (à s vezes transtorno. A coisa se instala um pacote, ele gerar um arquivo
interpretado como Not torna ainda mais cria um cache em sua package.json
Only SQL - Nã o Somente complicada quando há a má quina que possibilita a
SQL) é um termo dependência entre futura instalaçã o deste {
genérico para uma classe bibliotecas. sem precisar estar "name": "Yarn",
definida de banco de Nesse contexto, conectado à internet. "version": "1.0.0",
dados nã o-relacionais entram os gerenciadores "main": "index.js",
que rompe uma longa de pacotes, que chegaram Principais "license": "MIT"
histó ria de banco de para revolucionar a Características. }
dados relacionais com
52 https://tableless.com.br/yarn-
propriedades ACID.
evolucao-do-npm/
O gerenciamento dos yarn upgrade cliente e servidor, no qual
pacotes pode ser feito [package]@[tag] Apache Hadoop é um o servidor é responsá vel
diretamente no framework projetado para por gerenciar o envio dos
package.json, ou pela Desfazendo as coisas. o processamento massivo dados do banco
linha de comando. de dados de diversos tipos relacional para o Hadoop
yarn remove (estruturados, e vice-versa.
Adicionando uma [package] semiestruturados e nã o Outras melhorias
dependência. estruturados), no qual implementadas no Sqoop
Instalando as esses são armazenados 2 são a clara definiçã o
y dependências. no HDFS (Hadoop das interfaces dos
a Distributed File System) conectores, clientes mais
r yarn e manipulados por simples de serem
n tarefas MapReduce. As utilizados, uma API que
ou tarefas MapReduce sã o permite a execuçã o de
a responsá veis por fazer o funçõ es do Sqoop a partir
d yarn install processamento, a de có digo em Java, entre
d combinaçã o entre dados outras. Ambos os
e, por fim, a produçã o de projetos podem ser
Outras
[ algum resultado a partir obtidos por meio de sua
funcionalidades.
p desse processamento. pá gina oficial.
a Apesar de o Hadoop Veremos como
c ser amplamente realizar o processo de
Lock file.
k conhecido por sua importação de um banco
a capacidade de relacional para o HDFS.
Além do package.json, Esse processo será
g armazenamento e
o Yarn cria, na pasta raíz apoiado pelo Sqoop.
e processamento de
do projeto, um arquivo Também veremos como
] grandes quantidades de
yarn.lock, que trata de realizar a importaçã o
dados, muita informaçã o
listar as bibliotecas para o Hive e como o
y ainda hoje está
“originais” do projeto, um Sqoop apoia a exportaçã o
a armazenada em bancos
sistema bem semelhante de dados do Hadoop para
r de dados relacionais.
ao do composer. um banco relacional.
n Assim, surgiu o Apache
Sqoop cujo objetivo é
Fazendo uma limpeza. executar a transferência Hadoop e Hive.
a
d eficiente e bidirecional de
d Outro recurso dados entre o Hadoop e Apache Hadoop surgiu
interessante é o diversos serviços de na separação da parte de
[ mecanismo de limpeza de armazenamento externo computaçã o distribuída
p dependências, ao executar de dados estruturados. da ferramenta chamada
a o comando: O Apache Sqoop pode Apache Nutch – um
c ser ú til: famoso web crawler –
k yarn clean criado por Mike Cafarella
a - Quando se deseja e Doug Cutting, criador
g O Yarn vasculha as utilizar ferramentas de também do Lucene e
e dependências e verifica Big Data para o Hadoop. O Hadoop é uma
] tudo aquilo que nã o está processamento de bases plataforma escalá vel e
@ sendo utilizado e exporta relacionais, confiá vel para
[ para um arquivo - Para a integraçã o armazenamento e aná lise
v .yarnclean. Caso você de bases relacionais e de grande volumes de
e tenha este arquivo em mainframes com dados já dados. Ele foi projetado
r sua pasta raíz, quando presentes no Hadoop; para ser executado em
s executar o yarn install, - Para o clusters compostos por
i ele vai instalar as arquivamento dos dados computadores
o dependências de forma no Hadoop. convencionais onde falhas
n mais limpa. de disco rígido, memó ria,
] O Sqoop atualmente comunicaçã o, dentre
Self-update. possui duas frentes de outras sã o
yarn add desenvolvimento. Uma acontecimentos comuns.
[package]@[tag] Para atualizar o Yarn, delas, chamada de Sqoop Com esta premissa em
basta digitar no 1, é a evoluçã o natural do mente, o sistema de
Fazendo update. console: projeto inicial, encontra- arquivos Distribuídos
se na versã o 1.4.6, a Hadoop (HDFS ou, em
yarn upgrade yarn self-update ú ltima versã o está vel inglês, Hadoop
[package] para produçã o. O Sqoop 2 Distributed File System)
Sqoop53. é um projeto totalmente armazena grande volume
yarn upgrade novo e implementa o de dados de forma
[package]@[version] 53 conhecido modelo de confiá vel – ou seja, sem
http://www.bigdatabusiness.com.b perdas de informaçõ es –
r/apache-sqoop-e-unificacao-de- dados/
por meio da criação có pias Hadoop, por permitir Por padrã o, o Sqoop arquivo de destino onde
destes dados em mais de aumentar a capacidade de utiliza JDBC (Java cada coluna é delimitada
um nó (computador) do armazenamento com Database Connectivity) por padrã o pela vírgula
cluster. baixo custo e sem tempo para se conectar aos ou outro separador
Além do HDFS, uma de inatividade e por bancos e, por esse definido pelo usuá rio por
outra parte importante do possuir um framework de motivo, acredita-se que meio do argumento –
Hadoop se chama processamento ele é compatível com fieldsterminated-by. A
MapReduce, um distribuído que reduziu uma grande quantidade Tabela 2 contém uma
framework que abstrai a consideravelmente o de bancos de dados, uma relaçã o de outros
complexidade do tempo de execução das vez que os fornecedores argumentos que podem
processamento paralelo e consultas. implementam essa API. ser utilizados na
distribuído. MapReduce No entanto, o Sqoop nã o importação para
sã o duas tarefas distintas No entanto, criar garante a arquivos texto.
– Map e Reduce –, em que tarefas MapReduce nã o compatibilidade e a
a primeira processa os era fá cil e consumia muito performance com todos
dados de entrada de tempo dos seus os bancos que possuem
forma paralela. O funcioná rios. Assim, eles conectores JDBC devido
resultado deste decidiram criar o Hive às formas de
processamento é entã o com os conceitos já implementaçã o dessa API
organizado e ordenado familiares dos bancos de e a ligeiras diferenças
pelo framework para que dados. que possam existir na
seja enviado para as Hive é um sistema de sintaxe SQL de cada
tarefas Reduce, que data warehouse escalá vel banco.
combinam os dados a fim e tolerante a falhas, A Tabela 1 contém
de obter o resultado final. projetado para trabalhar uma relaçã o completa
Tipicamente, as com um grande volume de dos bancos e suas
tarefas de mapeamento dados que crescem respectivas versõ es que
sã o executadas no mesmo rapidamente. Ele é um foram testadas com o
nó do cluster onde estã o sistema para Sqoop. Pode ser
os dados a serem processamento em batch e necessá rio instalar os
Tabela 2.
processados, reduzindo pode fazer consultas drivers de conexão Argumentos que podem
assim o trá fego de rede. sobre um volume de mesmo com o banco de ser utilizados na
Escrever tarefas dados na ordem de dados estando presente importação dos dados
MapReduce nã o é uma petabytes. O Hive fornece na lista. para arquivos texto.
tarefa trivial. Contudo, uma linguagem de Fonte: Sqoop User Guide
uma vez feito, processar consulta simples chamada (v1.4.6).
os dados de forma HiveQL – baseado em SQL
paralela e distribuída em –, que permite aos É importante
centenas de nó s do cluster usuá rios familiarizados observar os caracteres
se torna uma tarefa com o SQL facilmente especiais que podem
simples. realizar consultas, estar inseridos no
Uma das facilidades sumarizaçõ es e aná lise de conteú do das tabelas. Por
oferecidas pelo Sqoop é a dados. exemplo, o texto “Apache
capacidade de importaçã o O Hive nã o foi Sqoop, uma abordagem
dos dados direto para o projetado para ser um prá tica para a unificaçã o
Hive. Hive é um dos sistema de processamento de dados” pode causar
projetos mais famosos do de transaçõ es em tempo problemas na importação
ecossistema Hadoop e foi real. Ele foi construído caso o delimitador
Tabela 1. Lista de
iniciado pelo Facebook em sobre a infraestrutura do padrã o (a vírgula) seja
bancos de dados
2007, mas atualmente é Hadoop o que lhe garante utilizado, porque o
testados no Sqoop.
um projeto toplevel da vá rios benefícios como caractere vírgula faz
Fonte: Sqoop User
Apache Software escalabilidade, tolerâ ncia parte do texto. O formato
Foundation, assim como o Guide (v1.4.6).
a falhas e excelente taxa de texto delimitado é
Sqoop, e recebe de transferência. Contudo, ideal quando nã o estã o
contribuiçã o de outras o framework MapReduce Importação de dados.
sendo importados dados
grandes empresas. costuma ter alta latência, biná rios. Além disso, esse
O data warehouse do causando lentidã o no O Sqoop realiza a tipo de formato é legível
Facebook havia sido agendamento e execuçã o importação dos dados em por humanos e fá cil de
construído inicialmente de tarefas. Assim, o tempo arquivos de texto (–as- manipular.
com soluçõ es comerciais para realizar consultas no textfile), arquivos Para ilustrar a
de bancos de dados Hive sobre um pequeno Sequence File (–as- simplicidade do Sqoop, o
relacionais. Contudo, conjunto de dados é de sequencefile), Avro (–as- exemplo ilustrado logo
devido à necessidade de segundos ou até minutos avrodatafile) ou Parquet mais abaixo detalha o
processamento e para terminar. (–as-parquetfile). Na comando Sqoop utilizado
armazenamento de importação para na importaçã o de uma
grandes volumes de dados Bancos de dados arquivos textuais, cada tabela MySQL chamada
exigida pelo Facebook, foi suportados. registro do banco se Cidades, representada
decidido utilizar o tornará uma linha no pela Tabela 3.
mesmo nome da tabela de senhas em arquivos de mesmos dados do
origem. Esse diretó rio de texto, arquivos de exemplo acima.
destino pode ser alterado configuraçã o ou
por meio do argumento – inseridos em có digo. A Comando Sqoop
warehouse-dir, tendo API Credential Provider exemplificando a
como parâ metro um se responsabiliza por utilização do argumento
diretó rio qualquer. fazer o armazenamento e –query em substituição
Dentro do diretó rio recuperaçã o das senhas, aos argumentos –table, –
especificado serã o criados em que para cada senha columns e – where.
outros diretó rios com o existe um apelido que
nome da tabela de origem pode ser utilizado em
Tabela 3. contendo os arquivos com substituiçã o. Esse apelido
Tabela MySQL os respectivos dados pode entã o ser utilizado
chamada importados. Uma outra nos arquivos de
Cidades. opçã o é o argumento – configuraçã o, o que
target-dir seguido do protege a senha original
O comando Sqoop do caminho completo para o de ser descoberta.
exemplo abaixo especifica diretó rio de destino O Sqoop permite a
desejado, como importação de toda uma No caso de tabelas que
– por meio do comando
apresentado no exemplo a tabela (conforme possuem colunas do tipo
import – que o Sqoop
seguir: ilustrado anteriormente biná rio, o Sqoop realiza a
realize a operação de
no exemplo) ou de importação delas de duas
importaçã o de dados. Na
Comando Sqoop algumas colunas formas. Quando esse tipo
linha seguinte, o
ilustrando a utilização do específicas, ordenadas a de coluna possui tamanho
argumento –connect
argumento – target-dir critério do usuá rio. Para de até 16 MB, ou algum
recebe como parâ metro o
que define o diretório de a importaçã o de algumas valor distinto, mas
endereço do servidor
destino desejado. colunas específicas, basta definido pelo argumento –
seguido pelo nome do
utilizar o argumento – inline-lob-limit <nú mero
banco de dados e o
columns separando o de bytes>, entã o esse
nú mero da porta, quando
nome das colunas por campo é inserido na
necessá rio. Em seguida, é
vírgula – por exemplo, – mesma linha, junto às
informado ao Sqoop o
columns “id, cidade, demais colunas desse
nome de usuá rio e senha
pais”. Além disso, o registro. Porém, se o
para acesso ao banco de
Sqoop permite restringir campo ultrapassar o valor
dados e, por ú ltimo, o
as linhas a serem padrã o de 16 MB ou o
nome da tabela a ser
importadas através do valor definido pelo
importada.
argumento –where, como argumento –inline-lob-
. No exemplo, a senha é ilustrado a seguir: limit, o campo será
Comando Sqoop passada por meio do armazenado em um novo
exemplificando a argumento – password. Comando Sqoop arquivo – de até 263 bytes
utilização do argumento – Apesar de essa ser uma exemplificando a cada – em uma subpasta
table para a importação forma muito simples de utilização dos _lobs no diretó rio de
completa da tabela autenticaçã o com o banco argumentos –columns e – destino.
cidades. relacional, ela é também where, onde serão
a maneira menos segura. Processo de
importados apenas
Outra opção seria por importação.
registros com id maiores
meio do argumento – que 100.
password-file, que recebe O processo de
como parâ metro um importação dos dados é
arquivo que contém a dividido em duas etapas
senha. Pode-se ainda principais. Na primeira
restringir as permissõ es delas, o Sqoop faz a leitura
de acesso a esse arquivo dos metadados da tabela
A seguir, temos o concedendo restriçõ es de de origem (nome das
arquivo CSV (Comma- leitura apenas para o colunas, tipos dos dados
separated values), proprietá rio do arquivo etc.) para que sejam
resultado da importaçã o (chmod 400). convertidos em um tipo
da tabela MySQL Cidades: Uma terceira opçã o de dados Java durante a
seria por meio do Opcionalmente, o criaçã o de uma classe que
1,Estados Unidos,Palo argumento -P, que usuá rio pode substituir encapsulará um registro
Alto solicitará a senha os três argumentos – dessa tabela. Essa classe,
2,Repú blica mediante o console a table, –columns e –where além de possuir os
Tcheca,Brno cada execuçã o do Sqoop. pelo argumento – query, atributos que
3,Brasil,Belo Por ú ltimo, no Hadoop onde se deve definir toda representam as colunas
Horizonte 2.6.0 foi implementada a a consulta SQL. O da tabela, também possui
API Credential Provider, exemplo a seguir métodos para a
Por padrã o, o Sqoop que se propõ e a resolver importará exatamente os serializaçã o e
importará os dados para o o problema de desserializaçã o desses
HDFS em um diretó rio de armazenamento de
dados. Ela tambémé um seu cluster, conforme padrã o, o Sqoop 500. Uma segunda tarefa
subproduto do processo exemplificado na Figura 1. paraleliza o processo de terá apenas um registro
de importaçã o e pode ser Para isso, ele precisa importação dos dados em para importar, pois existe
utilizada por qualquer saber qual coluna da quatro tarefas. Em apenas um registro (id =
outra tarefa de tabela a ser importada seguida, ele obtém o 0) entre o intervalo 0 e
MapReduce. deve ser utilizada para maior e menor valor da 250. As duas tarefas
Por padrã o, a classe dividir os dados de origem coluna escolhida, para restantes dividirã o todos
possui o nome da tabela e quantos processos entã o fazer uma divisão os demais registros.
de origem e é salva no deverã o ser utilizados em simples, conforme Para o MySQL,
diretó rio corrente de onde paralelo. apresenta a Figura 2. PostgreSQL, Netezza e
o Sqoop está sendo O mais adequado é a Oracle, o Sqoop oferece o
chamado. Apó s a utilização de uma coluna argumento –direct, que
compilação dessa classe, o que possua valores utiliza ferramentas
có digo compilado é salvo uniformemente específicas desses bancos
na pasta /tmp. Tanto o distribuídos e que possa e que oferecem melhor
nome da classe quanto os ser passada para o Sqoop Figura 2. Fórmula performance,
diretó rios de destino da por meio do argumento – utilizada. comparados ao conector
classe gerada e da classe split-by. Quando nã o JDBC. Por exemplo, o
compilada podem ser informada a coluna, o Considere uma coluna MySQL possui as
alterados por meio dos Sqoop tenta escolher por id hipotética em que o ferramentas mysqldump
seguinte argumentos: – si só ; e por padrã o ele menor valor é 0, o maior para realização de
class-name, –outdir e – escolhe geralmente a valor é 1000 e a backup ló gico (em
bindir, respectivamente. chave primá ria da tabela. importação dos dados arquivo) e mysqlimport,
Apó s a extraçã o dos será paralelizada em que faz o processo
metadados e criação da quatro tarefas, assim inverso – leitura dos
classe, o Sqoop dá início como a Figura 1. Desse dados a partir de um
ao processo de modo, o Sqoop dividirá arquivo.
importaçã o dos dados, em partes iguais ((1000 – Entretanto, o
que nada mais é que uma 0 ÷ 4) = 250) a coluna argumento –direct
simples consulta SQL. Veja especificada, dando para possui algumas
o có digo a seguir: cada tarefa de limitaçõ es, como
mapeamento uma exportar os dados
SELECT coluna1, consulta SQL com um apenas para arquivos
coluna2, coluna3, … intervalo diferente, como texto (–as-textfile), nã o
FROM tabela exemplificado a seguir. realizar importaçã o de
views e nã o tratar
O Sqoop, por padrã o, Figura 1. Exemplo Exemplo de divisão de colunas do tipo BLOB,
utiliza o nível de do processo de uma consulta SQL. CLOB e
isolamento de transaçã o importação. A figura LONGVARBINARY.
chamado read committed, exemplifica o processo
que assegura a nã o de importação em que Importação
ocorrência de leituras o Sqoop faz incremental.
sujas – ou seja, que uma inicialmente a leitura dos
transaçã o TA leia dados metadados da tabela Em um trabalho de
modificados mas ainda de origem, que serão aná lise de dados, é
nã o confirmados por uma utilizados na criação importante manter toda
transaçã o TB. de uma classe Java Se a coluna utilizada a informaçã o que será
No entanto, enquanto usada na na divisã o nã o for utilizada sempre
o Sqoop faz a leitura dos serialização e uniformemente atualizada com relaçã o à
registros, os dados podem desserialização dos distribuída, isso pode sua base relacional. E,
ser modificados e dados, para em seguida prejudicar a performance para isso, o Sqoop
confirmados por outras paralelizar em quatro do processo de oferece o argumento –
transaçõ es. É importante tarefas importação, visto que incremental para
ter ciência deste fato no MapReduce algumas tarefas podem importação apenas dos
processo de importaçã o a consulta ficar sobrecarregadas e novos dados presentes
dos dados. Caso isso seja na tabela e outras com pouco ou na tabela. Esse
um obstá culo para o transferir os nenhum trabalho. argumento possui dois
projeto, uma opçã o é nã o dados para Suponha que a coluna id modos (append e
fazer modificaçõ es no o HDFS. do exemplo anterior lastmodified), que
banco até que todo o possua apenas um valor permitem ao Sqoop
processo de importaçã o Outro parâ metro 0 e todos os demais saber qual tipo de
seja finalizado. importante é o nú mero valores estã o entre 500 e importação incremental
Uma das grandes de tarefas de 1000. deverá ser utilizada.
vantagens do Sqoop é a mapeamento utilizado no Dessa forma, uma das O modo append é
capacidade de paralelizar paralelismo, que pode ser tarefas nã o terá nenhum adequado quando os
o processo de importaçã o, parametrizado por meio dado para importar, já seus dados de origem
distribuindo a consulta do argumento -m ou – que nã o existem registros nã o sofrem atualizaçã o
SQL por meio dos nó s do num-mappers. Por no intervalo entre 250 e (UPDATE) e apenas
novos dados sã o possuir uma coluna no modo lastmodified,
inseridos. Em conjunto composta por valores em que serã o importados
com o argumento e ú nicos, como a chave apenas os registros que
parâ metro –incremental primá ria. foram inseridos ou
append, deve-se Atendendo a esses atualizados apó s 02 de
informar os argumentos requisitos, os mesmos Fevereiro de 1987. O controle do valor
–check-column e –last- argumentos – check- do argumento –last-value
value, em que o primeiro column e –last-value Comando Sqoop pode ser feito por meio
define qual coluna será devem ser utilizados, em exemplificando a do Sqoop metastore,
utilizada no filtro e o que o argumento – importação serviço que faz a
ú ltimo informa para essa check-column recebe incremental. armazenagem, de forma
coluna específica qual é como parâ metro o nome nã o segura, (i) de senhas,
o ú ltimo valor já da coluna do tipo data, (ii) da definiçã o das
importado. enquanto o argumento – tarefas de importaçã o e
Ou seja, os registros last-value receberá o exportaçã o com seus
que possuírem, para a ú ltimo valor da coluna respectivos argumentos e
coluna especificada, tipo data que já foi parâ metros e (iii)
valores maiores que o importado. Além disso, também do parâ metro
informado por meio do deve-se utilizar o para o argumento –last-
argumento –last-value argumento –mergekey, value.
sã o novos registros e que recebe como Ao final da execuçã o
devem ser importados. parâ metro a coluna de das tarefas de
No modo append, a valores ú nicos para importação incremental
coluna escolhida deve serem utilizados na que estã o armazenadas
ser incremental para que junçã o dos dados. no Sqoop metastore, o
nã o haja perda de No modo Sqoop automaticamente
valores na importaçã o lastmodified, o Sqoop faz faz a atualizaçã o e
É importante notar armazenagem do ú ltimo
dos dados. O exemplo a a importaçã o para um
que a coluna definida valor importado para que
seguir realiza a diretó rio temporá rio
pelo argumento –check- ele seja utilizado na
importaçã o apenas dos apenas dos novos
column nã o deve ser do pró xima execuçã o dessa
registros que possuírem registros – isto é,
tipo CHAR, NCHAR, tarefa.
id maior que 3. registros que, baseados
VARCHAR, VARNCHAR,
na coluna do tipo data
LONGVARCHAR ou Importando dados
Comando Sqoop definida em – check-
LONGNVARCHAR. Caso para o Hive.
exemplificando a column, sejam mais
contrá rio, os operadores
importação incremental recentes que o valor
de comparaçã o maior (>) Na importaçã o direta
no modo append apenas informado por meio do
e menor (<) nã o para o Hive, o Sqoop fará
dos registros que atributo –last-value.
poderiam ser utilizados a extraçã o dos
possuírem id maior que Para finalizar o processo
na cláusula WHERE da metadados da tabela de
3. de importaçã o, o Sqoop
consulta, que obtém origem para a criação da
fará a junçã o dos dados
apenas os registros tabela equivalente no
previamente importados
atualizados ou novos. Hive, caso ela nã o exista.
(Dprev) com os novos
O Exemplo a seguir Na criação da nova
dados que estã o sendo
ilustra um trecho da tabela, o Sqoop se
considerados (D∆).
saída apó s a execuçã o de encarrega de converter
Se o registro presente
uma importaçã o os tipos de dados de
em D∆ também existir
incremental, em que o origem para tipos de
em Dprev, entã o trata-se
Sqoop imprime no dados equivalentes na
de um caso de
console o ú ltimo valor tabela de destino. Caso o
atualização (UPDATE)
importado ao final de dado de origem precise
desse registro na base de
cada execuçã o ser convertido para um
origem, e o registro
incremental. Isso é ú til tipo de dado menos
presente em Dprev será
para futuras execuçõ es preciso, uma mensagem
substituído pelo registro
da importaçã o de alerta será impressa
presente em D∆
O modo lastmodified incremental, quando o no console, conforme
utilizando a coluna com
é apropriado para os usuá rio faz o controle representado a seguir:
valores ú nicos definida
casos em que os dados manual do ú ltimo valor
por meio do argumento –
de origem sofrem importado.
merge-key. Caso o 15/12/07 13:22:25
atualizaçã o. Entretanto, registro em D∆ não exista WARN
a sua tabela deve possuir Exemplo de saída no hive.TableDefWriter:
em Dprev, entã o trata-se
uma coluna do tipo data console após a execução de Column
de um novo registro na
(DATE, TIME, uma importação NomeColuna had to be
base de origem e ele será
DATETIME ou incremental. cast to a less precise type
apenas inserido no
TIMESTAMP), que é conjunto de dados de in Hive’
atualizada sempre que destino Dprev. O exemplo
um novo registro é a seguir ilustra a Uma possível solução
adicionado ou um dado importação incremental para esse problema é a
existente é modificado;
utilizaçã o do argumento argumento –hive-table, –null-string e –null-non- converter os tipos de
–map-column-hive, que que define o nome da string, em que o primeiro dados de origem para os
instrui o Sqoop sobre o tabela de destino no trata os dados de origem tipos de dados de destino
tipo de dado correto em Hive. que sã o do tipo textual – ou seja, do banco
que a coluna deve ser Alguns caracteres (VARCHAR, TEXT, relacional para o HDFS
mapeada. Um exemplo especiais podem estar NCHAR, NVARCHAR, no processo de
de utilizaçã o desse presentes nos dados de NTEXT etc) e possuem importação de dados – , o
argumento seria: –map- origem, o que pode valor NULL, substituindo- contrá rio nã o é possível.
columnhive causar divergências no os pelo parâ metro Suponha um dado do tipo
colunaA=DECIMAL, resultado da importaçã o. informado para esse string: o Sqoop nã o
colunaB=INT, que recebe Existe um outro argumento. Já o saberá se esse dado de
como parâ metro o nome argumento, –hive- argumento –null-non- destino se tornará um
da coluna no banco de dropimport-delims, que string substitui todos os CHAR(64) ou um
dados de origem, seguido remove os caracteres n, r demais tipos de dados VARCHAR(250) e, por
do operador igual (=) e e 1, que sã o que nã o possuem valor – isso, ele deixa essa
pelo tipo de dado dessa delimitadores especiais ou seja, o campo é NULL decisã o a critério do
coluna no Hive. utilizados pelo Hive. –, substituindo-os pelo usuá rio.
Caso a tabela já exista Caso a remoçã o parâ metro informado Assim como a
no Hive, o Sqoop irá desses caracteres nã o para esse argumento. O importação de dados, o
apenas adicionar os seja uma opçã o, pode-se exemplo a seguir processo de exportaçã o
dados ao final dessa utilizar o argumento – substitui todo e qualquer pode ser feito em
tabela já existente. Uma hive-delims-replacement, campo NULL da tabela de paralelo, especificando o
alternativa seria a que substitui os origem por N, valor que o nú mero de tarefas ou
utilizaçã o do argumento caracteres especiais por Hive entende como deixando que o Sqoop
–hive-overwrite, que algum outro texto. Essa NULL. A barra invertida decida a quantidade de
solicita ao Sqoop a opçã o só deve ser () extra no exemplo a tarefas. Durante o
remoção prévia de todos utilizada caso o Hive seguir é necessá ria por processo de exportaçã o
os dados existentes na esteja configurado para ser o caractere de escape dos dados, a tabela de
tabela, como utilizar os delimitadores em Java e que será destino pode nã o estar
exemplificado a seguir. especiais padrã o. O interpretada pelo consistente, uma vez que
exemplo a seguir ilustra a compilador. nesse processo algumas
Comando Sqoop utilização do argumento tarefas podem acabar
exemplificando a –hive-delims- Comando Sqoop antes de outras. Assim, é
utilização do argumento – replacement. exemplificando a aconselhá vel que as
hive-overwrite. Comando Sqoop utilização dos aplicaçõ es que venham a
exemplificando a argumentos –null-string e consumir esses dados
utilização do argumento – –null-non-string para a esperem pelo término da
hive-delims-replacement. substituição de todo e exportaçã o.
qualquer campo NULL da Uma alternativa para
tabela de origem por N. isso é exportar os dados
para uma tabela
temporá ria, utilizando o
argumento –staging-table
que deve possuir
exatamente o mesmo
esquema da tabela de
destino oficial e estar
vazia, ou que seja
utilizado o argumento –
clear-staging-table. Uma
A grande maioria dos vez que a exportaçã o
bancos de dados permite termine com sucesso para
que as colunas possam a tabela temporá ria, o
simplesmente nã o ter Exportando dados do Sqoop se encarrega de
valores (campos NULL). Hadoop. fazer a transferência dos
Contudo, por padrã o, o dados dela para a tabela
Sqoop faz a conversã o O processo de oficial. Caso ocorra algum
dos valores nulos para exportaçã o dos dados é problema na transferência
O exemplo acima uma string “null”. Isso muito similar ao dos dados para a tabela
realiza a importaçã o de pode dificultar a processo de importaçã o. temporá ria, o Sqoop nã o
uma tabela inteira direto manipulação desses Um diferencial fará nenhuma mudança na
para o Hive. Por padrã o, dados no Hive, uma vez importante, no entanto, é tabela oficial de destino.
o nome da tabela de que ele utiliza N para que a tabela no banco de Esse processo é
destino no Hive é o representar valores dados relacional (banco interessante, uma vez que
mesmo nome da tabela nulos. de destino) deve estar somente no caso de
de origem. No entanto, Para contornar esse previamente criada. Isso sucesso da exportação
essa definição pode ser problema, o Sqoop ocorre porque, apesar de para a tabela temporá ria é
alterada utilizando-se o oferece dois argumentos, o Sqoop conseguir que a tabela de destino
será modificada. Porém, banco de dados. Porém, o Data, a geraçã o e - Source:
esse processo é mais lento argumento –call deve ser utilização dos logs se responsá vel pela
porque existem duas utilizado com cautela pois, tornaram cada vez mais entrada de dados;
có pias do mesmo dado, do ao fazer a exportaçã o dos importantes, uma vez - Channel:
Hadoop para a tabela dados em paralelo, pode- que agora é possível armazena os dados
temporá ria e da tabela se gerar mú ltiplas ‘prever’ quando um que passam do source
temporá ria para a tabela chamadas simultâ neas da equipamento precisa de para o sink. Seu
oficial. Ele também requer stored procedure manutenção, o comportamento é
mais espaço no banco de especificada, podendo comportamento de um parecido com uma fila;
dados de destino, já que eventualmente causar indivíduo em um e- - Sink:
ao final da exportaçã o dos problemas de commerce e a geraçã o de responsá vel por
dados para a tabela performance no banco de recomendaçõ es, entre enviar os dados ao
temporá ria existirã o duas destino, devido à outras coisas. destino/ saída.
tabelas no banco de complexidade da stored Administrar o volume A saída pode ser outro
destino, a temporá ria e a procedure e ao alto de logs que é gerado por agente Flume.
oficial a ser substituída. nú mero de chamadas. diversos sistemas/
dispositivos nã o é uma A configuraçã o de um
Comando Sqoop Comando Sqoop tarefa fá cil. Em 2011, a agente é feita por meio
exemplificando a exemplificando a Cloudera criou o Flume, de um arquivo local que
exportação dos dados do utilização do argumento – um sistema distribuído, tem o formato de um
Hadoop para o banco call, que permite a confiá vel e disponível arquivo properties
DBTeste no MySQL. utilização de stored para coletar, agregar e utilizado em Java.
procedures ao invés da mover grandes Abaixo, um exemplo
inserção direta na tabela. quantidades de dados de de configuraçã o de um
muitas fontes diferentes agente com um source e
para um armazenamento um sink:
de dados centralizado.
Em 2012, esse passou a
ser um projeto top level
na Apache Software No exemplo, a1 é o
Foundation. nome do agente. Nele, está
O Apache Flume nã o sendo configurado um
se restringe apenas à source (r1), um channel
O exemplo abaixo coleta de logs, e pode ser (c1) e um sink (k1).
exemplifica a utilizaçã o do O Sqoop é uma usado para transportar O tipo do source é
argumento – call, que excelente ferramenta e grandes quantidades de netcat – captura qualquer
permite a utilizaçã o de deve ser considerada em dados, como os gerados dado enviado a um socket
stored procedures ao qualquer projeto de Big em social media, e-mails em uma porta tcp -, o
invés da inserção direta Data, uma vez que facilita e qualquer fonte de endereço e portã o sã o
na tabela. Stored a integraçã o e utilização dados possível. localhost:44444.
procedures sã o um dos dados armazenados O objetivo principal O tipo do sink é logger,
conjunto de clá usulas SQL em bases relacionais ou do Flume é ingerir dados o que significa que os
registradas por meio de mainframes no seu de eventos no HDFS dados serã o gravados em
um nome no servidor de ecossistema Hadoop. (Hadoop Distributed File um arquivo. Este tipo é
banco de dados. Elas sã o Flume54. System) de forma ú til para fins de teste.
vantajosas porque simples e automatizada. O tipo do canal é
facilitam a manutençã o, Logs sã o uma fonte Porém, seu uso nã o se memory com capacidade
uma vez que a stored bá sica de informação e limita apenas ao HDFS; é para armazenar 1000
procedure está em um ajudam a monitorar a possível enviar também eventos no buffer e 100
ú nico lugar (no banco de ‘saú de’ de sistemas, dados para um arquivo eventos por transaçã o.
dados) para que os detectando falhas em ou banco de dados, entre Por fim, tanto source
usuá rios do banco possam hardware e serviços. outros. como sink são ligados
utilizá -la. Além disso, a Podem ajudar também na Abaixo, o modelo de ao canal c1.
aplicaçã o nã o precisa ter soluçã o de problemas. fluxo de dados do Este é apenas um
ciência do esquema do Embora, de uma forma flume: exemplo simples de
banco de dados ao realizar geral, um log represente configuraçã o. Caso
uma operaçã o; basta registro de eventos, esta quiséssemos configurar
apenas chamar a stored é uma ferramenta mais de um agente, isso
procedure desejada, importante na poderia ser feito no
informando os administraçã o de mesmo arquivo, alterando
argumentos quando sistemas. apenas o nome do agente.
necessá rio. Com o surgimento de Isso pode ser bem ú til a
Stored procedures tecnologias e Um agente Flume roda
quem precisa coletar e
podem também melhorar ferramentas para Big na JVM (Java Virtual
analisar logs de diversos
a performance, uma vez Machine) e possui os
54 sistemas e má quinas, uma
que algumas regras de seguintes componentes:
https://imasters.com.br/desenvolvi vez que configurados
negó cio podem ser mento/introducao-ao- esses agentes, os dados
implementadas direto no apacheflume/?
trace=1519021197&source=single
estariam disponíveis em
HDFS, banco de dados ou o NiFi se encaixa muito e outros tipos de
outro repositó rio bem neste processo. manipulaçõ es) e
(definido no sink), O Apache NiFi é um interligar estes processos
trazendo agilidade na projeto de software da por conexõ es (para isto é
aná lise e processamento. Apache Software necessá rio arrastar uma
Apache Flume é uma Foundation, que permite a seta entre um processo e
ferramenta flexível, automaçã o do fluxo de o outro, para desenhar o
podendo ser usada para dados entre sistemas. fluxo de dados).
diversas situaçõ es, o que a Pode ser comparado
torna bem poderosa como uma mistura do 1. Ecrã principal
apesar de sua Oracle Goldengate e ODI, do Apache NiFi.
simplicidade. ambas ferramentas da
Oracle.
NiFi55. O projeto é escrito
usando programaçã o
Em novembro de baseada em fluxo e
2014, a agência de fornece uma interface de
segurança nacional dos usuá rio baseada na web
E.U.A., mais conhecida para gerenciar fluxos de 3. Adicionar
como NSA, abriu o dados em tempo real. 2. Adicionar processo para converter
Niagrafiles para a O projeto foi criado processo para capturar de Avro para JSON
comunidade open source, pela Agência Nacional de dados da BD Oracle: (utilizamos o avro na
ou NiFi, um software de Segurança dos Estados captura):
fluxo de dados. Unidos (NSA) e Add Processor >
Como é muito difícil a originalmente chamado database > Add Processor > json >
NSA abrir seus softwares Niagrafiles. Em 2014, a QueryDatabaseTable > ConvertAvroToJSON >
para qualquer pessoa, a NSA o lançou como Add Add
maioria das pessoas software livre, através do
ficaram desconfiadas, seu programa de
embora nã o fosse a transferência de
primeira vez que a tecnologia.
agência distribuísse algum O Apache NiFi,
tipo de software para a permite ligar há uma
comunidade open source. grande diversidade de
Para resumir, em bases de dados e outras
agosto de 2015 a tecnologias, desde que
Hortonworks comprou a possuam um driver JDBC
Onyara, que foi fundada para permitir a ligaçã o.
pelos engenheiros de Permite utilizar as
tecnologia da NSA e com tecnologias Hive, HDFS,
isso o NiFi veio no pacote, Impala, Kudu e outras
ou seja, tinham visto plataformas.
potencial no software que Utilizaremos o
antes era parte de Apache NiFi para extrair
informaçõ es e dados de dados a partir de uma BD
inteligência ultra secretos. Oracle e converter para o
Com o Apache NiFi formato JSON e
podemos fazer desde uma armazenar em textfile.
aná lise de trá fego de
redes até conversõ es de Ambiente:
um banco de dados para - 2 má quinas
outro (quem já converteu virtuais, 1 com a base
ou tentou converter sabe de dados Oracle e
o quanto é difícil,) outra com o Apache
podemos analisar e NiFi.
transformar mensagens - Base de dados
do twitter e outras redes Oracle 12c (12.1.0.2).
sociais e principalmente - Driver JDBC, da
usá-lo para IoT. mesma versã o de base
No caso da Internet de dados.
das Coisas, ao contrá rio de - Apache NiFi.
outros sensores que só
enviam dados para "fora", Toda a ló gica do
o software precisará Apache NiFi, é configurar
receber esses dados e se processos (seja para
comunicar com o capturar os dados ou
dispositivo novamente, e escrever no destino, bem
como realizar conversõ es
55 https://m04m.com
10. Resultado final: umas com as outras. Estas
aplicaçõ es heterogêneas,
Origem (BD Oracle): requerem algum tipo de
desenvolvimento para que
exista uma integraçã o
entre elas. E com o
aumento do volume de
dados, isso se torna um
ponto ainda mais crítico.
Com a explosã o do Big
Data, o primeiro desafio é
coletar a imensa
quantidade de dados e o
Destino (textfile): segundo desafio, analisar
7. Configurar a conexão a base de dados, parte 2: tudo isso. Analytics é
frequentemente
- Indicar o URL JDBC de ligação a base de dados. apontando como um dos
4. Ad icionar o processo para escrever o JSON em - Database Driver Class Name = oracle.jdbc.OracleDriver.maiores desafios
É uma boa alternativa
textfile: - Indicar o jar que contém o driver JDBC, no parâmetro associados com Big Data,
e open source para a
Database Driver Location(s). mas antes da aná lise
realização destas
- Indicar o user/password tarefas.
de ligação a base de dados.acontecer,
Add Processor > put > PutFile > Add os dados
devem ser ingeridos e
disponibilizados para os
Apache Kafka56. usuá rios. É onde entra o
Apache Kafka.
Apache Kafka é uma O Apache Kafka foi
plataforma distribuída de originalmente
mensagens e streaming. desenvolvido pelo
- Você produz uma LinkedIn e
mensagem. posteriormente liberado
- Essa mensagem é como um projeto
anexada em um opensource, em 2011. O
tó pico. Apache Kafka é um
- Você entã o consome sistema para
8. Configurar o processo de escrita em textfile
: gerenciamento de fluxos
essa mensagem.
de dados em tempo real,
gerados a partir de web
sites, aplicaçõ es e
Criar as ligações ( arrastar a seta entre o os processos) e sensores. Algumas das
ficamos com o fluxo preparado. empresas que usam Kafka:
LinkedIn, Netflix, PayPal,
Spotify, Uber, AirBnB,
Cisco, Goldman Sachs e
9. Iniciar todos os processos: SalesForce. Recentemente
a IBM anunciou a criação
Botão direito > Start, para cada um dos processos. de dois projetos
envolvendo o Apache
No mundo atual, dados Kafka. O LinkedIn possui o
em tempo real estã o maior ambiente Kafka do
sendo continuamente qual se tem notícia, com
gerados por todos os tipos 1.1 trilhõ es de mensagens
de aplicativos (ERP, CRM, por dia.
Web Sites, Mídias Sociais, Essencialmente, o
Vídeos, Logs, Sensores e Kafka age como uma
muito mais) e estes dados espécie de “sistema
precisam estar nervoso central”, que
6. Configurar a conexão a base de dados, parte
1: disponíveis de forma coleta dados de alto
confiá vel e rá pida para volume como por exemplo
- Criar uma Pool de ligação a BD (Database Connection diferentes tipos de a atividade de usuá rios
Pooling Service, e seguir os passos do próximo item) receptores. Na maioria (clicks em um web site),
- Database Type = Oracle das vezes, as aplicaçõ es logs, cotaçõ es de açõ es
- Use Avro Logical Types = true que produzem os dados e etc… e torna estes dados
as aplicaçõ es que disponíveis como um
precisam receber estes fluxo em tempo real para
dados, nã o “conversam” o consumo por outras
aplicaçõ es. O Kafka vem
56 ganhando cada vez mais
http://www.cienciaedados.com/ap popularidade em Big Data
ache-kafka-e-big-data/
pois além de ser um por isso tem se tornado bancos e mecanismos de Um tó pico pode possuir n
projeto opensource de tã o popular. pesquisas (SQL, MongoDB, partiçõ es, mas ao receber
alta qualidade, possui a Kafka funciona em RethinkDB, ElasticSearch) uma nova mensagem o
capacidade de lidar com conjunto com o Apache até materializaçã o de Kafka automaticamente
fluxos de alta velocidade Storm, Apache HBase e dados on streaming com direciona aquela
de dados, característica Apache Spark, criando um KTable por exemplo, é mensagem para uma
cada vez mais procurada plataforma de aná lise em possível utilizar o Kafka partiçã o especifica
para uso em Internet das tempo real para streaming de diversas maneiras para dependendo de sua chave
Coisas, por exemplo. de dados, praticamente mover e transformar (key). Assim mensagens
ú nica. Mas o Kafka possui grande volume de dados. de uma mesma chave
alguns concorrentes, estarã o apenas em uma
como: IBM InfoSphere Mensagens. ú nica partiçã o, garantindo
Streams, Informatica’s assim a leitura ordenada
Ultra Messaging Mensagem é o de todas as mensagens de
Streaming Edition, SAS’s principal recurso do um tó pico.
Event Stream Processing Kafka. Todos os eventos
Engine (ESP), Tibco’s do Kafka podem ser Producer.
StreamBase e SAP’s Aleri. resumidos em mensagens,
Competidores menores sendo consumidas e Um Kafka Producer é
incluem: DataTorrent, produzidas através de responsá vel por enviar
Splunk, Loggly, Logentries tó picos. Uma mensagem uma mensagem para um
e Glassbeam. pode ser desde uma tó pico específico. De
Recentemente a Teradata simples String com “Hello forma simples, você pode
O Apache Kafka foi anunciou o Listener, World!” ou até mesmo um produzir uma mensagem
desenvolvido com um soluçã o baseada no Kafka. JSON contendo um objeto em um tó pico.
propó sito específico em O Apache Kafka está do seu domínio. Uma vez que uma
mente: servir como um ajudando a mudar a forma O Kafka permite mensagem é produzida
repositó rio central de como os dados sã o usados definir Schemas para em um tó pico o pró prio
fluxos de dados. Mas por dentro das empresas. Não mensagens, como por Kafka organiza a
que fazer isso? Havia duas faz mais sentido falar exemplo utilizando o mensagem em uma
motivaçõ es. apenas em dados Avro. Como num exemplo partiçã o, garantindo
O primeiro problema armazenados em tabelas, de um JSON contendo um sempre a ordem das
foi a forma de transportar com linhas e colunas. O objeto do seu domínio, o mensagens produzidas,
dados entre diversos volume de dados agora é Schema pode auxiliar como citado
sistemas de dados: bancos tã o grande, que os dados impedindo que anteriormente.
de dados OLTP precisam ser vistos como mensagens contendo
(relacional), Hadoop, o que realmente sã o: um conteú dos invá lidos sejam Consumer.
sistema de busca, sistemas fluxo constante, que trafegadas no tó pico.
de monitoramento, OLAP precisa ser analisado em Uma mensagem pode Temos os tó picos, e as
(DW), etc… Cada um tempo real. também ser composta por mensagens dentro dos
destes sistemas, necessita Todas as grandes uma chave (key/value), tó picos. Com o Kafka
de dados confiá veis, em empresas do mundo estã o que é utilizada para Consumer é possível ler
um ambiente em que os caminhando a passos sharding e compactaçã o essas mensagens de volta.
sistemas poderã o estar largos rumo ao Big Data, dentro do Kafka. Assim Importante entender que,
geograficamente Aná lise de Dados em em um ambiente ao ler uma mensagem com
distribuídos. Esta foi a Tempo Real e Internet das distribuído, é garantido a o consumer, a mensagem
primeira motivaçã o para o Coisas. ordem das mensagens nã o é retirada do tó pico.
Kafka: a integraçã o dos uma vez que mensagens
dados. Para o que posso usar com a mesma chaves sã o em pontos diferentes do tópico realizand
A segunda parte do o Kafka57? direcionadas para uma Você também pode escolher ter vários c
problema era a ú nica partiçã o do Kafka. mesmo tópico e na mesma partição, par
necessidade de enriquecer Matt Kirwan diz que: por exemplo, neste caso estes consumer
as aná lises de dados, Tópicos. Consumer Group, e compartilhariam sempre
reduzindo a latência “Se você quer mover e Um tó pico é como leitura entre eles (offsets).
(basicamente, o tempo de transformar um grande categorizamos grupos de Apache Zookeeper.
espera). Esta foi a segunda volume de dados em mensagens dentro do O Zookeeper é um serviço centralizad
motivaçã o: tempo real entre Kafka. Todas as coisas, coordenação de sistemas distribu
processamento de fluxo diferentes sistemas, entã o mensagens enviadas para sistema distribuído, e consequentement
de dados, o que alguns Apache Kafka pode ser o Kafka permanecem em funções de gerenciamento e coordenaçã
podem chamar de exatamente o que você um tó pico. Como Eles possuem uma dependência muito
precisa”. comentado sobre Event é tão ruim. O Kafka pode fazer o que ele
“mensagens” ou CEP
Sourcing, mensagens sã o que saber fazer de melhor,delegando e
(Complex Event
funcionalidades parauemq sabe fazer isso be
Processing). Desde leitura e escrita imutá veis e ordenadas.
reinventar a roda.
Ou seja, o Kafka tem direta entre diversos Para manter a
ajudado a resolver ordenaçã o em um
Kafka Brokers | Kafka Clusters.
algumas das principais 57 ecossistema de Kafka, os
limitaçõ es do Big Data e https://pt.linkedin.com/pulse/o- tó picos possuem partiçõ es
que-%C3%A9-esse-tal-de-apache- e fatores de replicaçã o.
da Internet das Coisas e
kafkagabriel-queiroz
O Broker é o coração do ecossistema
Broker é executado em uma única instan
Você pode ter vá rios tó pico produzindo como Um conjunto de Brokers entre diversas m
Kafka Consumers no exemplo acima, Kafka Cluster.
conectados em um mesmo pontuaçõ es de um
tó pico, e cada um terá a jogador, e ter diversos Uma das principais característicasdo K
posiçã o onde parou de ler. consumers escalabilidade e resiliência que ele ofere
Assim você pode ter um Kafka local na sua máquina onde sua pró
Kafka Broker formando um Kafka Cluster
instâncias de Kafka Brokers e todas estar
Cluster. Com isso é possível escalar sua a
dados entre os Brokers.

Anotações

Вам также может понравиться