1 / 31

Arquitetura Baseada em Serviços Web Services e BD e NoSQL

Bruno C. de Paula. Arquitetura Baseada em Serviços Web Services e BD e NoSQL. 2º Semestre 2009 > PUCPR > Pós em BD. Resumo e motivação da aula. Vamos trabalhar na aula de hoje com bancos de dados não relacionais ;

delila
Download Presentation

Arquitetura Baseada em Serviços Web Services e BD e NoSQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bruno C. de Paula Arquitetura Baseada em ServiçosWeb Services e BD e NoSQL 2º Semestre 2009 > PUCPR > Pós em BD

  2. Resumo e motivação da aula Vamos trabalhar na aula de hoje com bancos de dados não relacionais; Esta nova abordagem está ganhando bastante força em arquiteturas baseadas em serviços devido às suas vantagens relacionadas a escalabilidade, distribuição e acesso.

  3. Modelo relacional é excelente,porém... • É necessário transmitir um texto SQL do cliente ao SGBD para conseguir um resultado; • Difícil de criar estruturas reutilizáveis; • Representação antinatural de estruturas altamente hierárquicas; • Não prevê, originalmente, sistemas distribuídos e paralelizáveis.

  4. NoSQL - características • SGBDs projetados para aplicações web em mente; • Distribuídos, descentralizados e paralelizáveis; • Tolerantes a falha; • Fogem de schemas fixos; • Escaláveis de maneira transparente; • Acessíveis via web services; • Não é ORM! • Muito novos...

  5. NoSQL - características • Podem ser instalados localmente ou, por serem distribuídos, podem ser jogados para a nuvem;

  6. Cloud ComputingComputação em Nuvem • Detalhes da infra-estrutura são escondidos do usuário e localizados na Internet; • IaaS (Infraestrutura como Serviço): • Virtualização; • PaaS (Plataforma como Serviço): • Cloudware; • Seu sofware roda na Internet; • SaaS (Software como Serviço): • Licenciamento de um aplicativo sob demanda.

  7. Teorema CAP • Ao mesmo tempo, você só pode escolher 2 ao mesmo tempo: • Consistência (consistency): todos os clientes enxergam os mesmos dados; • Disponibilidade (availability) : todos os clientes acessam alguma versão dos dados; • Tolerância a Partição (partition tolerance): o banco pode ser dividido em múltiplos servidores. • NoSQL implementam consistência eventual;

  8. NoSQLTipos de SGBD • Key-value: tabela hash; • Document-based: metáfora de documentos; • Não existe um padrão de linguagem!

  9. Exemplos de implementações NoSQL • Voldemort: Linkedin, Digg; • Cassandra: Facebook; • CouchDB; • MongoDB; • Amazon SimpleDB: usado pelo S3;

  10. Exemplos de implementações NoSQL • Google BigTable / Google Fusion Tables; • HyperTable: implementação do BigTable; • HBase; • Yahoo Sherpa; • LucidDB; • ... • Dezenas!

  11. Voldemort • Desenvolvido pelo Linkedin; • Dados são automaticamente: • Replicados para múltiplos servidores; • Particionados (cada servidor contém um pedaço dos dados); • Dados são versionados; • Cada nó é independente; • 10-20k operações por segundo por nó.

  12. Voldemort • Serialização em Java; • Clone do Amazon Dynamo; • Open Source (Java); • Download em: • http://project-voldemort.com/

  13. Instalação • Download de versão para Linux em: • http://github.com/voldemort/voldemort/downloads

  14. Exemplo de usoIniciando um nó • ./bin/voldemort-server.sh config/single_node_cluster > /tmp/voldemort.log &

  15. Exemplo de usoIniciando a linha de comando • ./bin/voldemort-shell.sh test tcp://localhost:6666

  16. Exemplo de usoOperações simples • Inserindo valor • put "nome" "Bruno" • Recuperando valor: • get "nome" • Excluindo valor: • delete "nome"

  17. Exemplo de usoVersionamento

  18. Exemplo de usoLocalização da chave • locate "bruno"

  19. Exemplo de uso Código Java - Conexão String bootstrapUrl = "tcp://localhost:6666"; StoreClientFactory factory = new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(bootstrapUrl)); // Cria um cliente para a store StoreClient client = factory.getStoreClient("my_store_name");

  20. Exemplo de usoInserindo e obtendo valores • Versioned value = client.get("some_key"); • value.setObject("some_value"); • client.put("some_key", value);

  21. Cassandra • Desenvolvido para o Facebook; • Armazenamento de modelo de dados rico; • Data replicada a múltiplos nós; • Novos nós podem ser acrescentados sem influenciar nos dados existentes; • Consistência eventual: • Sem updates após um período, os updates de propagam nas réplicas.

  22. Cassandra • Open source (Java); • Facebook = 40 TB / 120 máquinas; • Usa o conceito de super colunas; { // esta é uma super coluna nome: "homeAddress", // com uma lista infinita de colunas value: { // observe que a chave é o nome da coluna street: {name: "street", value: "1234 x street", timestamp: 123456789}, city: {name: "city", value: "san francisco", timestamp: 123456789}, zip: {name: "zip", value: "94107", timestamp: 123456789}, } }

  23. Instalação • Downloa de versão para Linux em: • http://incubator.apache.org/cassandra/#download

  24. Exemplo de usoIniciando um nó • mkdir -p /var/log/cassandra • touch /var/log/cassandra/system.log • ./bin/cassandra -f

  25. Exemplo de usoIniciando a linha de comando • ./bin/cassandra-cli –host localhost –port 9160

  26. Exemplo de usoInserindo valores • set Keyspace1.Standard1['bcp']['primeiro']='Bruno‘ • set Keyspace1.Standard1['bcp']['sobrenome']='Bruno'

  27. Exemplo de usoObtendo valores • get Keyspace1.Standard1['bcp']

  28. CouchDB • Servidor de banco baseado em documentos; • Acessível via API Rest; • Schema-free; • Distribuído; • Open Source (Erlang); • Views usando Map/Reduce.

  29. CouchDB • Interface JavaScript; • Ver testador online: • http://labs.mudynamics.com/wp-content/uploads/2009/04/icouch.html

  30. Documento CouchDBCampos nomeados

  31. Referências • No to SQL? Anti-database... • http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_ • Livro sobre CouchDB (no prelo): • http://books.couchdb.org/relax/ • Explorando o CouchDB: • http://www.ibm.com/developerworks/br/library/os-couchdb/index.html

More Related