Академический Документы
Профессиональный Документы
Культура Документы
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;
[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.
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.
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.
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.
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, @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.
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
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
Controllers
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:
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
>>>8**(1.0/3.0) <script>
2.0
8 alert("Minha primeira mensagem!")
Questã o: </script>
</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").
<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.
PRINCIPAIS MUDANÇAS10.
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:
- rest parameters.
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
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
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
- Let.
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]
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
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
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
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
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
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
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.
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:
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.
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
Fluent
Palavras-chave em SQL
- 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
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.
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).
- 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.
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
2. Editor Inline
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:
Novas pastas.
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