SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Disciplina
Gerenciamento de Banco
de Dados
noSql
Pós Graduação Análise e Desenvolvimento de Sistemas
Aplicados à Gestão Empresarial
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
TRIÂNGULO MINEIRO – Campus Avançado Uberlândia
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Introdução
• NoSql quer dizer “Não somente Sql”, ou
seja, deixar de visualizar o modelo
relacional como “bala de prata”;
• NoSql representa mais um movimento, ou
uma nova escola de pensamento, do que
alguma tecnologia em particular
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Alguns SGBDs modelo
Relacional
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Alguns SGBDs modelo
“noSql”
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Por que noSql?
• Após enfrentar problemas de
escalabilidade, custo e performance,
muitas empresas começaram a pesquisar e
investir em novos mecanismos de
armazenamento;
• Os bancos são considerados noSql, pois
não existe obrigatoriedade quanto ao
modelo de dados, estruturas fixas de
tabelas e schemas. Estas também não
suportam joins entre tabelas.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Por que noSql?
• Com sistemas cada vez mais distribuídos,
um grande volume de dados é gerado,
transformando-se em um gargalo nos
sistemas atuais;
• Soluções em noSql costumam buscar
atingir objetivos como baixa latência, alta
performance e escalabilidade.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Quem usa noSql?
• Cassandra:
• BigTable:
• Voldemort:
• Apache Hadoop:
• MongoDB:
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Histórico Armazenamento de
Dados
• 1965 – Arquivos sequenciais .dat;
• 1968 – SGBDs baseados em estruturas
hierárquicas;
• 1970 – SGBDs baseados em grafos;
• 1980 – Popularização dos SGBDs
relacionais;
• 2009 – Início do movimento noSql.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Histórico noSql
• O movimento noSql surgiu de um
encontro, que teve por objetivo discutir o
crescente surgimento de soluções open-
source de armazenamento de dados
distribuídos não relacionais;
• noSql = nova onda de SGBDs que propôe
alternativas ao modelo relacional, em
situações específicas.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo de Dados
• Modelos relacionais possuem tabelas,
colunas, linhas e relacionamentos entre
estas, prezando pela integridade dos
dados;
• NoSql pode ser dividido basicamente em 5
modelos: chave-valor, orientado a
documentos, família de colunas (ou big
table), Grafo e Objetos.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo chave-valor
• Lembram a estrutura java.util.Map;
• Pesquisa unicamente pelas chaves;
• Muito utilizado para Caches;
• Tempo de O(1) para acesso aos dados.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo orientado a
documentos
• Um documento é uma estrutura de dados
composta por uma quantidade variável de
campos, com tipos de dados diversos,
inclusive um campo pode conter outro
documento;
• Um arquivo xml ou json seria como um
documento.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo orientado a
documentos
• Modelo permite armazenar qualquer
documento, sem ter a necessidade de
definir previamente sua estrutura;
• Possui forte tendência para
desnormalização de dados, deixando em 1
só documento todas as informações
relacionadas;
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo orientado a
documentos
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo Família de Colunas
(ou BigTable)
• Se tornou popular em 2006, através do
paper “BigTable” do Google;
• Composto pelos componentes: Keyspaces,
Famílias de Colunas e Colunas;
• Consultas apenas através das chaves;
• Útil quando se precisa consultar um
grande volume de dados em um tempo de
resposta muito baixo;
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo Família de Colunas
(ou BigTable)
• Deve-se definir previamente o conjunto de
colunas que podem ser armazenadas em
cada família
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo Grafo
• Grafos conectam um conjunto de vértices
através de um conjunto de arestas;
• Modelo de Grafos suportam estruturas de
grafos multirelacionais, com diferentes
vértices (representando pessoas, lugares,
itens...) e diferentes tipos de arestas
(“amigo de”,”mora em”,”comprando
por”, etc..).
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo Grafo
• Modelo Whiteboard Friendly;
• Navegação entre os relacionamentos de
forma linear O(1).
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Modelo Objeto
• Bancos de Dados que armazenam objetos
ao invés de tabelas.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Arquitetura
• Soluções noSql costumam utilizar uma
arquitetura não muito ortodoxa:
• Redundância de dados;
• BASE ao invés de ACID;
• Utilização de soluções alternativas para
persistência;
• Falta de padronização nas APIs;
• Busca quase que unicamente por chaves;
• Prioridade em Escalabilidade Horizontal.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Arquitetura - BASE
• BASE = Basically Avaible, Soft-State,
Eventual Consistency;
• Abre mão da consistência por algum
tempo em favor da escalabilidade e
disponibilidade;
• Eventual Consistency = Consistência em
algum momento indeterminado. Ex: TEDs
de bancos;
• Existem exceções: Neo4j possui ACID.
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Arquitetura - Persistência
• Acessos ao disco possuem alto custo de
I/O. Soluções que necessitam de baixa
latência em geral não se adequam a este
meio de persistência;
• Memory-mapped mapeia parte da
memória diretamente para o disco, mas
deve-se replicar os dados em mais de uma
máquina para diminuir o risco de perda
de dados;
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Arquitetura - Persistência
• Algumas soluções noSql utilizam a
memória como principal meio de
persistência, utilizando o disco como
forma secundária, fazendo serialização
com o disco por meio de threads paralelas
(google).
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Arquitetura – Manipulação
de dados
• Não existe padrão de APIs em noSql,
como existe no Java (por exemplo JDBC e
JPA);
• Grande parte das ferramentas noSql
permitem apenas a busca de dados por
uma única chave, ou através de views
previamente definidas;
• Consultas ad-hoc são permitas em poucas
ferramentas (por ex: Cassandra)
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Arquitetura – Distribuição
• Ferramentas noSql geramente são criadas
para estarem em um ambiente distribuído;
• Algumas ferramentas oferecem
particionamento automático dos dados;
• Modelos relacionais se comportam melhor
com escalabilidade vertical;
• Modelos nosql se comportam melhor com
escalabilidade horizontal
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Redis
• É muito mais do que um banco chave-
valor, é um servidor de estrutura de
dados;
• http://redis.io/
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
MongoDB
• SGBD orientado a documentos;
• Troca de informações entre a aplicação e o
SGBD é por meio de mensagens JSON, via
Socket;
• Para muitos, é o novo M do “LAMP”;
• http://www.mongodb.org/downloads;
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
MongoDB - instalação
Efetuar o Download da última versão
estável (mongodb-win32-x86_64-2008plus-
2.6.1) e instalar;
Criar o diretório abaixo:
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
MongoDB - inicialização
Iniciar o banco pelo comando mongod
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
MongoDB - inicialização
Executar o comando mongo pela linha de
comando
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
MongoDB
• Persistência de objetos no banco:
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
MongoDB
• Bibliotecas a serem usadas com Java:
• mongo-x.xx.x.jar (driver do banco);
• morphia-0.xx.jar (biblioteca para efetuar
mapeamento objeto-documento);
• Visualizar código-fonte do projeto
MongoDB-ProjetoEclipse
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Neo4j
• Uma das soluções noSql mais maduras;
• Idealizado em 2000 por uma equipe sueca
chamada Windth Tecnologies;
• Escrito em Java;
• http://www.neo4j.org/
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Neo4j
• Ambiente para efetuar consultas
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Cassandra
• Nasceu dentro do Facebook para lidar
com as buscas nas caixas de entrada de
mensagens de seus usuários;
• Código liberado em 2009, tornou-se um
projeto incubado dentro da fundação
Apache;
• Modelo baseado em família de colunas;
• Arquitetura totalmente distribuída;
• http://cassandra.apache.org/
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Cassandra
• O Cassandra é escrito em Java;
• O batch cassandra.bat é responsável por
subir o servidor
Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
Referências
• [1] – Porcelli, Alexandre. “O que é noSql”
– Revista Java Magazine ed 86 e 87;
• [2] – Ramos, José Yoshiriro. “NoSql:
Conceitos e Evolução” – Revista MundoJ
ed 51;
• [3] – Garcia, Márcio. “Java e MongoDB” –
Revista MundoJ ed 51;

Weitere ähnliche Inhalte

Ähnlich wie Gerenciamento de Banco de Dados noSql

Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisCarlo Pires
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Thiago de Azeredo
 
Acessos Uniformes à Sistemas NoSQL
Acessos Uniformes à Sistemas NoSQLAcessos Uniformes à Sistemas NoSQL
Acessos Uniformes à Sistemas NoSQLthomasdacosta
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Fluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsFluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsAndré Agostinho
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
CSS: pare de usar frameworks e atualize-se
CSS: pare de usar frameworks e atualize-seCSS: pare de usar frameworks e atualize-se
CSS: pare de usar frameworks e atualize-seJulio Vedovatto
 
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017Renato Groff
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQLCleber Dantas
 
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptxAula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptxJoseph Donald
 

Ähnlich wie Gerenciamento de Banco de Dados noSql (20)

Introdução ao NoSQL
Introdução ao NoSQLIntrodução ao NoSQL
Introdução ao NoSQL
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
NoSQL
NoSQLNoSQL
NoSQL
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Acessos Uniformes à Sistemas NoSQL
Acessos Uniformes à Sistemas NoSQLAcessos Uniformes à Sistemas NoSQL
Acessos Uniformes à Sistemas NoSQL
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2
 
Fluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsFluent NHibernate - Baby Steps
Fluent NHibernate - Baby Steps
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
CSS: pare de usar frameworks e atualize-se
CSS: pare de usar frameworks e atualize-seCSS: pare de usar frameworks e atualize-se
CSS: pare de usar frameworks e atualize-se
 
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
 
Mongo db
Mongo dbMongo db
Mongo db
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL
 
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptxAula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptx
 

Mehr von Carlos Eduardo

When and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell BadWhen and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell BadCarlos Eduardo
 
Experimentos envolvendo ações de Rejuvenescimento de Software
Experimentos envolvendo ações de Rejuvenescimento de SoftwareExperimentos envolvendo ações de Rejuvenescimento de Software
Experimentos envolvendo ações de Rejuvenescimento de SoftwareCarlos Eduardo
 
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de ControleProgramação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de ControleCarlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOCarlos Eduardo
 
Socket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDKSocket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDKCarlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Carlos Eduardo
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Carlos Eduardo
 
Máquinas de turing com memória limitada
Máquinas de turing com memória limitadaMáquinas de turing com memória limitada
Máquinas de turing com memória limitadaCarlos Eduardo
 
Detecting bad smells in source code using change history information
Detecting bad smells in source code using change history informationDetecting bad smells in source code using change history information
Detecting bad smells in source code using change history informationCarlos Eduardo
 
Recommending refactoring operations in large software systems
Recommending refactoring operations in large software systemsRecommending refactoring operations in large software systems
Recommending refactoring operations in large software systemsCarlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaMini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaCarlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4Carlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3Carlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2Carlos Eduardo
 
Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1Carlos Eduardo
 

Mehr von Carlos Eduardo (20)

When and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell BadWhen and Why Your Code Starts to Smell Bad
When and Why Your Code Starts to Smell Bad
 
Experimentos envolvendo ações de Rejuvenescimento de Software
Experimentos envolvendo ações de Rejuvenescimento de SoftwareExperimentos envolvendo ações de Rejuvenescimento de Software
Experimentos envolvendo ações de Rejuvenescimento de Software
 
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
A Measurement-Based Model for Estimation of Resource Exhaustion in Operationa...
 
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...
 
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de ControleProgramação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
Programação Orientada a Objetos - Pós Graduação - Aula 7 - Inversão de Controle
 
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OOProgramação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
Programação Orientada a Objetos - Pós Graduação - Aula 6 - Princípios OO
 
Socket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDKSocket Descriptor Leak encontrado na JDK
Socket Descriptor Leak encontrado na JDK
 
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...
 
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
 
Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3Programação Orientada a Objetos - Pós Graduação - Aula 3
Programação Orientada a Objetos - Pós Graduação - Aula 3
 
Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2Programação Orientada a Objetos - Pós Graduação - Aula 2
Programação Orientada a Objetos - Pós Graduação - Aula 2
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1
 
Máquinas de turing com memória limitada
Máquinas de turing com memória limitadaMáquinas de turing com memória limitada
Máquinas de turing com memória limitada
 
Detecting bad smells in source code using change history information
Detecting bad smells in source code using change history informationDetecting bad smells in source code using change history information
Detecting bad smells in source code using change history information
 
Recommending refactoring operations in large software systems
Recommending refactoring operations in large software systemsRecommending refactoring operations in large software systems
Recommending refactoring operations in large software systems
 
Mini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaMini Curso - Programação de Interfaces Gráficas - aula extra persistência
Mini Curso - Programação de Interfaces Gráficas - aula extra persistência
 
Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4Mini Curso - Programação de Interfaces Gráficas - aula 4
Mini Curso - Programação de Interfaces Gráficas - aula 4
 
Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3Mini Curso - Programação de Interfaces Gráficas - aula 3
Mini Curso - Programação de Interfaces Gráficas - aula 3
 
Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2Mini Curso - Programação de Interfaces Gráficas - aula 2
Mini Curso - Programação de Interfaces Gráficas - aula 2
 
Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1Mini Curso - Programação de Interfaces Gráficas - aula 1
Mini Curso - Programação de Interfaces Gráficas - aula 1
 

Gerenciamento de Banco de Dados noSql

  • 1. Disciplina Gerenciamento de Banco de Dados noSql Pós Graduação Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TRIÂNGULO MINEIRO – Campus Avançado Uberlândia Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br
  • 2. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Introdução • NoSql quer dizer “Não somente Sql”, ou seja, deixar de visualizar o modelo relacional como “bala de prata”; • NoSql representa mais um movimento, ou uma nova escola de pensamento, do que alguma tecnologia em particular
  • 3. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Alguns SGBDs modelo Relacional
  • 4. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Alguns SGBDs modelo “noSql”
  • 5. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Por que noSql? • Após enfrentar problemas de escalabilidade, custo e performance, muitas empresas começaram a pesquisar e investir em novos mecanismos de armazenamento; • Os bancos são considerados noSql, pois não existe obrigatoriedade quanto ao modelo de dados, estruturas fixas de tabelas e schemas. Estas também não suportam joins entre tabelas.
  • 6. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Por que noSql? • Com sistemas cada vez mais distribuídos, um grande volume de dados é gerado, transformando-se em um gargalo nos sistemas atuais; • Soluções em noSql costumam buscar atingir objetivos como baixa latência, alta performance e escalabilidade.
  • 7. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Quem usa noSql? • Cassandra: • BigTable: • Voldemort: • Apache Hadoop: • MongoDB:
  • 8. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Histórico Armazenamento de Dados • 1965 – Arquivos sequenciais .dat; • 1968 – SGBDs baseados em estruturas hierárquicas; • 1970 – SGBDs baseados em grafos; • 1980 – Popularização dos SGBDs relacionais; • 2009 – Início do movimento noSql.
  • 9. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Histórico noSql • O movimento noSql surgiu de um encontro, que teve por objetivo discutir o crescente surgimento de soluções open- source de armazenamento de dados distribuídos não relacionais; • noSql = nova onda de SGBDs que propôe alternativas ao modelo relacional, em situações específicas.
  • 10. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo de Dados • Modelos relacionais possuem tabelas, colunas, linhas e relacionamentos entre estas, prezando pela integridade dos dados; • NoSql pode ser dividido basicamente em 5 modelos: chave-valor, orientado a documentos, família de colunas (ou big table), Grafo e Objetos.
  • 11. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo chave-valor • Lembram a estrutura java.util.Map; • Pesquisa unicamente pelas chaves; • Muito utilizado para Caches; • Tempo de O(1) para acesso aos dados.
  • 12. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo orientado a documentos • Um documento é uma estrutura de dados composta por uma quantidade variável de campos, com tipos de dados diversos, inclusive um campo pode conter outro documento; • Um arquivo xml ou json seria como um documento.
  • 13. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo orientado a documentos • Modelo permite armazenar qualquer documento, sem ter a necessidade de definir previamente sua estrutura; • Possui forte tendência para desnormalização de dados, deixando em 1 só documento todas as informações relacionadas;
  • 14. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo orientado a documentos
  • 15. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Família de Colunas (ou BigTable) • Se tornou popular em 2006, através do paper “BigTable” do Google; • Composto pelos componentes: Keyspaces, Famílias de Colunas e Colunas; • Consultas apenas através das chaves; • Útil quando se precisa consultar um grande volume de dados em um tempo de resposta muito baixo;
  • 16. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Família de Colunas (ou BigTable) • Deve-se definir previamente o conjunto de colunas que podem ser armazenadas em cada família
  • 17. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Grafo • Grafos conectam um conjunto de vértices através de um conjunto de arestas; • Modelo de Grafos suportam estruturas de grafos multirelacionais, com diferentes vértices (representando pessoas, lugares, itens...) e diferentes tipos de arestas (“amigo de”,”mora em”,”comprando por”, etc..).
  • 18. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Grafo • Modelo Whiteboard Friendly; • Navegação entre os relacionamentos de forma linear O(1).
  • 19. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Modelo Objeto • Bancos de Dados que armazenam objetos ao invés de tabelas.
  • 20. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura • Soluções noSql costumam utilizar uma arquitetura não muito ortodoxa: • Redundância de dados; • BASE ao invés de ACID; • Utilização de soluções alternativas para persistência; • Falta de padronização nas APIs; • Busca quase que unicamente por chaves; • Prioridade em Escalabilidade Horizontal.
  • 21. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura - BASE • BASE = Basically Avaible, Soft-State, Eventual Consistency; • Abre mão da consistência por algum tempo em favor da escalabilidade e disponibilidade; • Eventual Consistency = Consistência em algum momento indeterminado. Ex: TEDs de bancos; • Existem exceções: Neo4j possui ACID.
  • 22. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura - Persistência • Acessos ao disco possuem alto custo de I/O. Soluções que necessitam de baixa latência em geral não se adequam a este meio de persistência; • Memory-mapped mapeia parte da memória diretamente para o disco, mas deve-se replicar os dados em mais de uma máquina para diminuir o risco de perda de dados;
  • 23. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura - Persistência • Algumas soluções noSql utilizam a memória como principal meio de persistência, utilizando o disco como forma secundária, fazendo serialização com o disco por meio de threads paralelas (google).
  • 24. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura – Manipulação de dados • Não existe padrão de APIs em noSql, como existe no Java (por exemplo JDBC e JPA); • Grande parte das ferramentas noSql permitem apenas a busca de dados por uma única chave, ou através de views previamente definidas; • Consultas ad-hoc são permitas em poucas ferramentas (por ex: Cassandra)
  • 25. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Arquitetura – Distribuição • Ferramentas noSql geramente são criadas para estarem em um ambiente distribuído; • Algumas ferramentas oferecem particionamento automático dos dados; • Modelos relacionais se comportam melhor com escalabilidade vertical; • Modelos nosql se comportam melhor com escalabilidade horizontal
  • 26. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Redis • É muito mais do que um banco chave- valor, é um servidor de estrutura de dados; • http://redis.io/
  • 27. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB • SGBD orientado a documentos; • Troca de informações entre a aplicação e o SGBD é por meio de mensagens JSON, via Socket; • Para muitos, é o novo M do “LAMP”; • http://www.mongodb.org/downloads;
  • 28. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB - instalação Efetuar o Download da última versão estável (mongodb-win32-x86_64-2008plus- 2.6.1) e instalar; Criar o diretório abaixo:
  • 29. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB - inicialização Iniciar o banco pelo comando mongod
  • 30. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB - inicialização Executar o comando mongo pela linha de comando
  • 31. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB • Persistência de objetos no banco:
  • 32. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br MongoDB • Bibliotecas a serem usadas com Java: • mongo-x.xx.x.jar (driver do banco); • morphia-0.xx.jar (biblioteca para efetuar mapeamento objeto-documento); • Visualizar código-fonte do projeto MongoDB-ProjetoEclipse
  • 33. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Neo4j • Uma das soluções noSql mais maduras; • Idealizado em 2000 por uma equipe sueca chamada Windth Tecnologies; • Escrito em Java; • http://www.neo4j.org/
  • 34. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Neo4j • Ambiente para efetuar consultas
  • 35. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Cassandra • Nasceu dentro do Facebook para lidar com as buscas nas caixas de entrada de mensagens de seus usuários; • Código liberado em 2009, tornou-se um projeto incubado dentro da fundação Apache; • Modelo baseado em família de colunas; • Arquitetura totalmente distribuída; • http://cassandra.apache.org/
  • 36. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Cassandra • O Cassandra é escrito em Java; • O batch cassandra.bat é responsável por subir o servidor
  • 37. Prof Carlos Eduardo Dantas – carloseduardodantas@iftm.edu.br Referências • [1] – Porcelli, Alexandre. “O que é noSql” – Revista Java Magazine ed 86 e 87; • [2] – Ramos, José Yoshiriro. “NoSql: Conceitos e Evolução” – Revista MundoJ ed 51; • [3] – Garcia, Márcio. “Java e MongoDB” – Revista MundoJ ed 51;