nosql

37
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 [email protected]

Upload: carlos-eduardo-dantas

Post on 25-May-2015

384 views

Category:

Technology


3 download

DESCRIPTION

Apresentação sobre noSql ministrada na Pós Graduação "Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial"

TRANSCRIPT

Page 1: NoSql

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 – [email protected]

Page 2: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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

Page 3: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Alguns SGBDs modelo Relacional

Page 4: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Alguns SGBDs modelo “noSql”

Page 5: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 6: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 7: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Quem usa noSql?

• Cassandra:

• BigTable:

• Voldemort:

• Apache Hadoop:

• MongoDB:

Page 8: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 9: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 10: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 11: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 12: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 13: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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;

Page 14: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Modelo orientado a documentos

Page 15: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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;

Page 16: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Modelo Família de Colunas (ou BigTable)

• Deve-se definir previamente o conjunto de colunas que podem ser armazenadas em cada família

Page 17: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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..).

Page 18: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Modelo Grafo

• Modelo Whiteboard Friendly;

• Navegação entre os relacionamentos de forma linear O(1).

Page 19: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Modelo Objeto

• Bancos de Dados que armazenam objetos ao invés de tabelas.

Page 20: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 21: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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.

Page 22: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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;

Page 23: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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).

Page 24: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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)

Page 25: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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

Page 26: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Redis

• É muito mais do que um banco chave-valor, é um servidor de estrutura de dados;

• http://redis.io/

Page 27: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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;

Page 28: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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:

Page 29: NoSql

Prof Carlos Eduardo Dantas – [email protected]

MongoDB - inicialização

Iniciar o banco pelo comando mongod

Page 30: NoSql

Prof Carlos Eduardo Dantas – [email protected]

MongoDB - inicialização

Executar o comando mongo pela linha de comando

Page 31: NoSql

Prof Carlos Eduardo Dantas – [email protected]

MongoDB

• Persistência de objetos no banco:

Page 32: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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

Page 33: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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/

Page 34: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Neo4j

• Ambiente para efetuar consultas

Page 35: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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/

Page 36: NoSql

Prof Carlos Eduardo Dantas – [email protected]

Cassandra

• O Cassandra é escrito em Java;

• O batch cassandra.bat é responsável por subir o servidor

Page 37: NoSql

Prof Carlos Eduardo Dantas – [email protected]

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;