nosql2

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: marcio-fabiano

Post on 10-Nov-2015

2 views

Category:

Documents


0 download

DESCRIPTION

NOSQL Material

TRANSCRIPT

  • 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;