1 / 40

Sistemas NoSQL

Sistemas NoSQL. Prof. Carlos Eduardo Santos Pires cesp@dsc.ufcg.edu.br. Agenda. Motivação Sistemas NoSQL Definição Características Modelos de Armazenamento de Dados Modelos de Dados Controle de Concorrência Conclusões. Bancos de Dados Relacionais.

elle
Download Presentation

Sistemas 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. Sistemas NoSQL Prof. Carlos Eduardo Santos Pires cesp@dsc.ufcg.edu.br

  2. Agenda • Motivação • Sistemas NoSQL • Definição • Características • Modelos de Armazenamento de Dados • Modelos de Dados • Controle de Concorrência • Conclusões Sistemas NoSQL

  3. Bancos de Dados Relacionais • Dados são estruturados de acordo com o modelo relacional • Padrão para a grande maioria dos SGBDs • SQL Server, Oracle, PostgreSQL, MySQL, DB2, etc. • Elementos básicos • Relações (ou tabelas) e registros (ou tuplas) • Características fundamentais • Restrições de integridade (PK, FK, UK, CK, NN) • Normalização • Linguagem SQL (Structured Query Language) Sistemas NoSQL

  4. Bancos de Dados Relacionais • A estrutura é pouco flexível • Tudo bem, usemos SGBDOO e SGBDOR • Porém... • O volume de dados manipulados por alguns sistemas computacionais vem crescendo em ritmo acelerado (web 2.0) • Google: petabytes • Milhares de usuários acessando dados simultaneamente • Demanda por escalabilidade é cada vez maior Sistemas NoSQL

  5. Como escalonar BDs Relacionais? • Alternativa 1: Escalonamento vertical • Muitos cores e/ou CPUs que compartilham memória RAM e discos • Oracle RAC (Real Application Cluster) Sistemas NoSQL

  6. Como escalonar BDs Relacionais? • Alternativa 1: Escalonamento vertical • Custo • 1 milhão de dólares • Mesmo assim, é insuficiente se o número de dados cresce em ritmo muito intenso • O problema passa a se concentrar no acesso à base de dados Sistemas NoSQL

  7. Como escalonar BDs Relacionais? • Alternativa 2: Escalonamento horizontal • Aumentar o número de servidores • Distribuir o processamento de dados em muitos servidores, sem que haja compartilhamento de memória RAM ou disco entre estes servidores • Para escalar um BDR através de múltiplas máquinas não podemos simplesmente ligar mais uma máquina rodando o banco e esperar que tudo funcione • Precisamos de uma série de configurações e alterações nas nossas aplicações para fazer tudo funcionar na nova arquitetura distribuída Sistemas NoSQL

  8. Modelo de Dados • Mas, além de escalabilidade, existe a questão do modelo de dados • O modelo de dados relacional satisfaz de forma eficiente as necessidades de todos os tipos de aplicação? • Normalização • Fragmenta os dados Joins? More joins? Sistemas NoSQL

  9. Sistemas NoSQL • Abreviação de Not only SQL(não apenas SQL) • Dezenas disponíveis na Web • Open-source ou não • Projetados por diversos tipos de desenvolvedores • Implementações NoSQL • Ainda estão definindo um padrão próprio • Cada projeto foi concebido para resolver um problema particular Sistemas NoSQL

  10. Sistemas NoSQL • Projetados para escalonar aplicaçõessimples utilizando vários servidores • Objetivo não é substituir o Modelo Relacional, mas apenas em casos nos quais seja necessária uma maior flexibilidade da estruturação do BD Sistemas NoSQL

  11. Sistemas NoSQL • “NoSQL é um termo genérico para uma classe definida de banco de dados não-relacionais que rompe uma longahistória de banco de dados relacionais e suas propriedades ACID” • Império do Modelo Relacional • IV Reich – “o Reich dos 43 anos” • Poucas variações ao longo do tempo Edgar F. Codd *August 23, 1923 +April 18, 2003 Codd, E.F. (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM 13 (6): 377–387. doi:10.1145/362384.362685. Sistemas NoSQL

  12. Sistemas NoSQL • Paradigma recente (de 2008 para cá) • Motivados pelas aplicações da Web 2.0 • Twitter, WIKI, Facebook, Blogs, etc. • Aplicações que envolvem milhares ou milhões de usuários conectados simultaneamente realizando operaçõessimples de leitura e escrita • O que é uma “operação simples”? • Busca, leitura e escrita em um único registro ou em um conjunto pequeno de registros Sistemas NoSQL

  13. Características dos SistemasNoSQL • Habilidade de escalonarhorizontalmente operações simples com vários servidores • Habilidade de replicar e distribuir (particionar) dados em vários servidores • Interface de chamada simples • Modelo de controle de concorrência menos rígido que o ACID • Livres de esquema: habilidade de atribuir dinamicamente novos atributos aos registros de dados Sistemas NoSQL

  14. Características dos SistemasNoSQL • Sistemas NoSQL possuem várias características em comum • Livres de esquema • Alta disponibilidade • Escalabilidade • Mesmo assim, possuem diversas características únicas quanto ao • Modo de armazenamento dos dados • Modelo de dados Sistemas NoSQL

  15. Modo de Armazenamento de Dados • Temos os sistemas que... • mantêm suas informações em memória realizando persistências ocasionais • Scalaris, Redis • mantêm suas informações em disco • CouchDB, MongoDB, Riak, Voldemort • são configuráveis • BigTable, Cassandra, Hbase, HyperTable Sistemas NoSQL

  16. Modelo de Dados • Existem quatro categorias: • Sistemas baseados em armazenamento chave-valor • Sistemas orientados a documentos • Sistemas orientados à coluna • Sistemas baseados em grafos Sistemas NoSQL

  17. BaseadosemArmazenamentoChave-Valor • Existe uma coleção de chaves únicas e de valores, os quais são associados às chaves • Um índice único é utilizado para encontrar os valores Sistemas NoSQL

  18. BaseadosemArmazenamentoChave-Valor • Modelo simples, restrito (buscas) e escalonável • Fornecem mecanismos de persistência, replicação, versionamento, bloqueios, transações, etc. • A interface oferece operações de inserção, remoção e index lookups • Exemplos de Sistemas NoSQL • Riak, Redis, Scalaris Sistemas NoSQL

  19. BaseadosemArmazenamentoChave-Valor • Chave à esquerda e um valor (objeto) à direita • Chave pode ser um string, inteiro, etc. • Como não existe repetição de chave, é possível consultar apenas pela chave • user1923_colorRed • user1923_age18 • user3371_colorBlue • user4344_colorBrackish • user1923_height6' 0“ • user3371_age34 Sistemas NoSQL

  20. Orientados a Documentos • Documentos são as unidades básicas de armazenamento e estes não utilizam necessariamente qualquer tipo de estrutura pré-definida (esquema) • Os documentos são indexados e um mecanismo simples de consulta é oferecido Sistemas NoSQL

  21. Orientados a Documentos • Documento do CouchDB • Objeto com um identificador único e certos campos • Possui cinco campos e seus respectivos valores • O sistema NoSQL ‘que se vire’ para indexar • Exemplos • MongoDB e CouchDB Sistemas NoSQL

  22. Orientados à Coluna • Muda-se o paradigma de orientação a registros para orientação a colunas • BD orientado a registro • 1, Smith, Joe, 40000; • 2, Jones, Mary, 50000; • 3, Johnson, Cathy, 44000; • BD orientado a coluna • 1, 2, 3; • Smith, Jones, Johnson; Joe, Mary, Cathy; • 40000, 50000, 44000; Sistemas NoSQL

  23. Orientados à Coluna • Para sistemas que possuem carga de trabalho com um pequeno número de consultas complexas sobre todos os dados de colunas • Similar ao processamento OLAP • SUM(valor), AVG(quantidade), MAX(total) • Exemplo • Cassandra e BigTable Sistemas NoSQL

  24. BaseadosemGrafos • Já tentou modelar/consultar uma hierarquia em bancos de dados relacionais? • SGDB Oracle • START WITH • CONNECT BY SELECT lpad(' ', 2*level) || child FROM prune_test START WITH parent IS NULL CONNECT BY PRIOR child=parent; Sistemas NoSQL

  25. BaseadosemGrafos • Dados são armazenados em nós de um grafo cujas arestas representam o tipo de associação entre esses nós Sistemas NoSQL

  26. BaseadosemGrafos • Nós representam entidades como pessoas, grupos, itens, etc. • Os objetos possuem propriedades • Arestas • Conectam nós distintos entre si ou nós a propriedades • Representam o relacionamento entre os mesmos • Exemplo • Neo4j Sistemas NoSQL

  27. Modelos de Dados NoSQL Volume de dados chave-valor colunas documentos grafo Complexidade dos dados Sistemas NoSQL

  28. Controle de Concorrência • Bancos de Dados Relacionais • Uso de bloqueios (locks) para garantir que dois usuários não atualizem o mesmo item de dados no mesmo instante • Bancos de Dados NoSQL • Estratégias usadas permitem um maior grau de concorrência Sistemas NoSQL

  29. Controle de Concorrência • BDR • ACID = Atomicity, Consistency, Isolation, and Durability • NoSQL • BASE = Basically Available, Soft state, Eventually consistent • Desempenho e escalabilidade são conseguidos relaxando-se algumas propriedades Sistemas NoSQL

  30. Controle de Concorrência • Consistência Eventual • Eventual em português • Pode acontecer ou não • Eventual em inglês • Vai acontecer em algum momento • Pode não ser agora, mas vai acontecer • Exemplo • Transferência bancária no sistema financeiro brasileiro • Portanto, no mundo NoSQL a tradução melhor seria • Consistência em momento indeterminado Sistemas NoSQL

  31. Controle de Concorrência • Consistência Eventual • Se nenhuma nova atualização for realizada sobre o objeto, eventualmente todos os acessos à esse objeto retornarão o último valor atualizado • Quando uma escrita for realizada no banco, não se pode garantir que, a partir daquele momento, todos os outros processos terão acesso apenas ao dado atualizado • Não há garantia que os dados lidos estão sempre atualizados • Atualizações são eventualmente propagadas em todos os nós Sistemas NoSQL

  32. Controle de Concorrência • Modelo ACID • Força a consistência ao final de cada operação • Modelo BASE • Permite que o BD esteja eventualmente em um estado consistente Sistemas NoSQL

  33. Controle de Concorrência • Exemplo: Shopping Cart da Amazon • É possível comprar um produto que não esteja em estoque • É muito raro não ter o produto em estoque • É muito custoso verificar se há estoque do produto • Então é melhor vender sem verificar • Se não tiver em estoque, manda mensagem com desculpas ou dá um desconto em um produto Sistemas NoSQL

  34. NoSQL Flexibilidade Grafos Key-value store Documento Escalabilidade Commodity hardware RAM Distributed APIs NewSQL SQL Padrões Durabilidade Segurança Gatilhos Chave estrangeira Chave composta Transação 2 phase commit Relacional Sistemas NoSQL

  35. Conclusões • Mudança para a abordagem NoSQL deve levar em conta as necessidades do problema • Fatores a serem analisados • Escalabilidade do sistema • Consistência de dados • Facilidade de uso • Existência ou não de linguagens de consulta • Cada fator tem um preço Sistemas NoSQL

  36. Conclusões • SGBDRs • Soluções muito mais maduras e experimentadas • Transações dos SGBDRs ainda são a melhor forma de se trabalhar com o problema da consistência dos dados • Os sistemas NoSQL servem para uma gama de problemas que nem sempre são os mesmos dos BDRs Sistemas NoSQL

  37. Conclusões • Não existe, em qualquer abordagem NoSQL, nada que se aproxime da simplicidade e expressividade oferecida pelo SQL • Perde-se toda a funcionalidade oferecida: funções, rotinas armazenadas, etc. • Deixa-se de utilizar a mais simples restrição de integridade sobre o BD, o que pode tornar a aplicação mais pesada. Sistemas NoSQL

  38. Conclusões • As técnicasutilizadaspelosbancosNoSQLsãomuitasvezes as mesmasqueosprogramadoresexperientesembancos de dados relacionais tem utilizadosporanosparaescalarseussistemas mas de uma maneiraotimizada e muitasvezesautomática • Não esperemque um banco de dados NoSQLvaiser uma “silver bullet” paraosseusproblemas de escalabilidade, emalgunscasosvaisertãodifícilescalar um banconãorelacionalquanto um bancorelacional • É importanteentender as ferramentasdisponíveisparafazer o melhorusopossível das suascapacidades Sistemas NoSQL

  39. Referências • E. F. Codd, “A Relational Model of Data for Large Shared Data Banks”, Communications of the ACM, Volume 13, nº 6, Junho de 1970, p. 377-387. • N. Leavitt, "Will NoSQL Databases Live Up to Their Promise?,“ Computer, Vol. 43, no. 2, pp. 12-14, Feb. 2010. • “NoSQL Relational Database Management System: Home Page”. Strozzi.it. http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/HomePage. Acessado em 13/04/2010. • Rick Cattell. Scalable SQL and NoSQL Data Stores. SIGMOD Record, December 2010 (Vol. 39, No. 4) Sistemas NoSQL

  40. Referências • W. Vogels. Eventually Consistent. Commun. ACM, 52(1):40–44, 2009. • D. Pritchett. BASE: An Acid Alternative, ACM Queue vol. 6, no. 3, Julho 2008. • Lóscio, B. F., Oliveira, H. R., Pontes, J. C. S. NoSQL no desenvolvimento de aplicações Web colaborativas. Minicurso no VIII Simpósio Brasileiro de Sistemas Colaborativos Sistemas NoSQL

More Related