490 likes | 772 Views
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.
E N D
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 Sistemas NoSQL
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Modelos de Dados NoSQL Volume de dados chave-valor colunas documentos grafo Complexidade dos dados Sistemas NoSQL
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
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
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
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
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
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
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
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
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
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
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
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
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