nosql
DESCRIPTION
Apresentação sobre noSql ministrada na Pós Graduação "Análise e Desenvolvimento de Sistemas Aplicados à Gestão Empresarial"TRANSCRIPT
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]
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
Prof Carlos Eduardo Dantas – [email protected]
Alguns SGBDs modelo Relacional
Prof Carlos Eduardo Dantas – [email protected]
Alguns SGBDs modelo “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.
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.
Prof Carlos Eduardo Dantas – [email protected]
Quem usa noSql?
• Cassandra:
• BigTable:
• Voldemort:
• Apache Hadoop:
• MongoDB:
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.
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.
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.
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.
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.
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;
Prof Carlos Eduardo Dantas – [email protected]
Modelo orientado a documentos
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;
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
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..).
Prof Carlos Eduardo Dantas – [email protected]
Modelo Grafo
• Modelo Whiteboard Friendly;
• Navegação entre os relacionamentos de forma linear O(1).
Prof Carlos Eduardo Dantas – [email protected]
Modelo Objeto
• Bancos de Dados que armazenam objetos ao invés de tabelas.
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.
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.
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;
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).
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)
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
Prof Carlos Eduardo Dantas – [email protected]
Redis
• É muito mais do que um banco chave-valor, é um servidor de estrutura de dados;
• http://redis.io/
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;
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:
Prof Carlos Eduardo Dantas – [email protected]
MongoDB - inicialização
Iniciar o banco pelo comando mongod
Prof Carlos Eduardo Dantas – [email protected]
MongoDB - inicialização
Executar o comando mongo pela linha de comando
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
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/
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/
Prof Carlos Eduardo Dantas – [email protected]
Cassandra
• O Cassandra é escrito em Java;
• O batch cassandra.bat é responsável por subir o servidor
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;