nosql2
DESCRIPTION
NOSQL MaterialTRANSCRIPT
-
Disciplina
Gerenciamento de Banco de Dados
noSql
Ps Graduao Anlise e Desenvolvimento de Sistemas
Aplicados Gesto Empresarial
INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA
TRINGULO MINEIRO Campus Avanado Uberlndia
Prof Carlos Eduardo Dantas [email protected]
-
Prof Carlos Eduardo Dantas [email protected]
Introduo
NoSql quer dizer No 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?
Aps enfrentar problemas de escalabilidade, custo e performance, muitas empresas comearam a pesquisar e investir em novos mecanismos de armazenamento;
Os bancos so considerados noSql, pois no existe obrigatoriedade quanto ao modelo de dados, estruturas fixas de tabelas e schemas. Estas tambm no suportam joins entre tabelas.
-
Prof Carlos Eduardo Dantas [email protected]
Por que noSql?
Com sistemas cada vez mais distribudos, um grande volume de dados gerado, transformando-se em um gargalo nos sistemas atuais;
Solues em noSql costumam buscar atingir objetivos como baixa latncia, 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]
Histrico Armazenamento de Dados
1965 Arquivos sequenciais .dat;
1968 SGBDs baseados em estruturas hierrquicas;
1970 SGBDs baseados em grafos;
1980 Popularizao dos SGBDs relacionais;
2009 Incio do movimento noSql.
-
Prof Carlos Eduardo Dantas [email protected]
Histrico noSql
O movimento noSql surgiu de um encontro, que teve por objetivo discutir o crescente surgimento de solues open-source de armazenamento de dados distribudos no relacionais;
noSql = nova onda de SGBDs que prope alternativas ao modelo relacional, em situaes especficas.
-
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, famlia 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 varivel 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 tendncia para desnormalizao de dados, deixando em 1 s documento todas as informaes relacionadas;
-
Prof Carlos Eduardo Dantas [email protected]
Modelo orientado a documentos
-
Prof Carlos Eduardo Dantas [email protected]
Modelo Famlia de Colunas (ou BigTable)
Se tornou popular em 2006, atravs do paper BigTable do Google;
Composto pelos componentes: Keyspaces, Famlias de Colunas e Colunas;
Consultas apenas atravs 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 Famlia de Colunas (ou BigTable)
Deve-se definir previamente o conjunto de colunas que podem ser armazenadas em cada famlia
-
Prof Carlos Eduardo Dantas [email protected]
Modelo Grafo
Grafos conectam um conjunto de vrtices atravs de um conjunto de arestas;
Modelo de Grafos suportam estruturas de grafos multirelacionais, com diferentes vrtices (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;
Navegao entre os relacionamentos de forma linear O(1).
-
Prof Carlos Eduardo Dantas [email protected]
Modelo Objeto
Bancos de Dados que armazenam objetos ao invs de tabelas.
-
Prof Carlos Eduardo Dantas [email protected]
Arquitetura
Solues noSql costumam utilizar uma arquitetura no muito ortodoxa:
Redundncia de dados;
BASE ao invs de ACID;
Utilizao de solues alternativas para persistncia;
Falta de padronizao 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 mo da consistncia por algum tempo em favor da escalabilidade e disponibilidade;
Eventual Consistency = Consistncia em algum momento indeterminado. Ex: TEDs de bancos;
Existem excees: Neo4j possui ACID.
-
Prof Carlos Eduardo Dantas [email protected]
Arquitetura - Persistncia
Acessos ao disco possuem alto custo de I/O. Solues que necessitam de baixa latncia em geral no se adequam a este meio de persistncia;
Memory-mapped mapeia parte da memria diretamente para o disco, mas deve-se replicar os dados em mais de uma mquina para diminuir o risco de perda de dados;
-
Prof Carlos Eduardo Dantas [email protected]
Arquitetura - Persistncia
Algumas solues noSql utilizam a memria como principal meio de persistncia, utilizando o disco como forma secundria, fazendo serializao com o disco por meio de threads paralelas (google).
-
Prof Carlos Eduardo Dantas [email protected]
Arquitetura Manipulao de dados
No existe padro 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 atravs de views previamente definidas;
Consultas ad-hoc so permitas em poucas ferramentas (por ex: Cassandra)
-
Prof Carlos Eduardo Dantas [email protected]
Arquitetura Distribuio
Ferramentas noSql geramente so criadas para estarem em um ambiente distribudo;
Algumas ferramentas oferecem particionamento automtico 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 informaes entre a aplicao 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 - instalao
Efetuar o Download da ltima verso estvel (mongodb-win32-x86_64-2008plus-2.6.1) e instalar;
Criar o diretrio abaixo:
-
Prof Carlos Eduardo Dantas [email protected]
MongoDB - inicializao
Iniciar o banco pelo comando mongod
-
Prof Carlos Eduardo Dantas [email protected]
MongoDB - inicializao
Executar o comando mongo pela linha de comando
-
Prof Carlos Eduardo Dantas [email protected]
MongoDB
Persistncia de objetos no banco:
-
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 cdigo-fonte do projeto MongoDB-ProjetoEclipse
-
Prof Carlos Eduardo Dantas [email protected]
Neo4j
Uma das solues 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]
Neo4j
Ambiente para efetuar consultas
-
Prof Carlos Eduardo Dantas [email protected]
Cassandra
Nasceu dentro do Facebook para lidar com as buscas nas caixas de entrada de mensagens de seus usurios;
Cdigo liberado em 2009, tornou-se um projeto incubado dentro da fundao Apache;
Modelo baseado em famlia de colunas;
Arquitetura totalmente distribuda;
http://cassandra.apache.org/
-
Prof Carlos Eduardo Dantas [email protected]
Cassandra
O Cassandra escrito em Java;
O batch cassandra.bat responsvel por subir o servidor
-
Prof Carlos Eduardo Dantas [email protected]
Referncias
[1] Porcelli, Alexandre. O que noSql Revista Java Magazine ed 86 e 87;
[2] Ramos, Jos Yoshiriro. NoSql: Conceitos e Evoluo Revista MundoJ ed 51;
[3] Garcia, Mrcio. Java e MongoDB Revista MundoJ ed 51;