Persistência nas Nuvens com NoSQL Rodrigo Hjort [email_address]
Quem aqui usa banco de dados?
Por que precisamos de SQL?
Onde usamos SQL (i.e. ACID)?
MAS...
Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
Aplicações web modernas
Escalabilidade vertical é complicada e/ou cara!
Os modelos transacionais ACID pessimista, forçando consistência ao final de cada operação
BASE otimista, aceitando que a consistência esteja em um “estado de fluxo” http://queue.acm.org/detail.cfm?id=1394128 Possibilita a escalabilidade horizontal...
NoSQL = Not Only SQL http://nosql-database.org/ distribuídos não relacionais horizontalmente escaláveis esquemas flexíveis replicáveis APIs simples
NoSQL nas Nuvens escalabilidade flexibilidade performance disponibilidade
Zoologia dos bancos NoSQL Wide Column Store / Column Families Key-Value Store Document Store Azure Storage Services
MAS...
Você precisa escolher 2! Teorema de Brewer: CAP Consistência : visão única para os clientes
Disponibilidade : toda operação tem uma resposta
Partição : sistema continua operante mesmo enfrentando partições na rede Consistência Consistency Disponibilidade Availability Partição Partition Tolerance
Breve explicação do CAP um dia ensolarado... partições de rede!
I. Consistência e Disponibilidade Limitações na escalabilidade (leitura e escrita) C A
II. Consistência e Partição Completamente inacessível se qualquer um dos nós estiver fora! C P
III. Disponibilidade e Partição Nem sempre lê a informação mais recente:  futuramente consistente A P
“ A high performance, scalable, distributed storage and processing system for structured and unstructured data.”
Cassandra: um breve histórico Bigtable Dynamo
Um novo modelo de dados Agrupamento de famílias de colunas (~banco de dados) Agrupamento de colunas (~tabela) com ordenação fixada Chave que representa uma linha de colunas (~chave primária) Representação de um valor, com: Nome (Name)
Valor (Value)
Timestamp Keyspace Column Family (Row) Key Column
As famílias de colunas
Exemplo: modelagem do Twitter Users Following Followers @paul segue @brigitte desde 22/08/2010 john fullname: John Doe password: swordfish joindate: 20091115 paul fullname: Paul Lane password: thepass joindate: 20091129 john paul: 20091204 brigitte: 20100815 paul john: 20091205 debora: 20100729 brigitte: 20100822 john tom: 20091128 paul: 20091205 brigitte john: 20100815 paul: 20100822
Exemplo: modelagem do Twitter Statuses (Tweets) Timeline Userline Tweets do @john Tweets dos usuários que o @paul segue data/hora tweet 12345 user: john body: Nuvem privada do @serpro! retweets: 123 12346 user: brigitte john 20100116083155: 12346 paul 20100116083002: 12345 20100116083155: 12346 john 20100116083002: 12345 20100118235914: 23457 brigitte 20100116083155: 12346 tweet body: Acabei de #acordar. tags acordar: 1
“It took two weeks to perform ALTER TABLE on the statuses [tweets] table.” – Twitter
Particionamento e replicação Fixed Circular Space (Ring) Virtual Nodes Consistent Hashing (MD5) N=3 h(key2) 0 1 1/2 F E D C B A h(key1)

Persistência nas Nuvens com NoSQL

  • 1.
    Persistência nas Nuvenscom NoSQL Rodrigo Hjort [email_address]
  • 2.
    Quem aqui usabanco de dados?
  • 3.
  • 4.
    Onde usamos SQL(i.e. ACID)?
  • 5.
  • 6.
    Universo digital emexpansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
  • 7.
  • 8.
    Escalabilidade vertical écomplicada e/ou cara!
  • 9.
    Os modelos transacionaisACID pessimista, forçando consistência ao final de cada operação
  • 10.
    BASE otimista, aceitandoque a consistência esteja em um “estado de fluxo” http://queue.acm.org/detail.cfm?id=1394128 Possibilita a escalabilidade horizontal...
  • 11.
    NoSQL = NotOnly SQL http://nosql-database.org/ distribuídos não relacionais horizontalmente escaláveis esquemas flexíveis replicáveis APIs simples
  • 12.
    NoSQL nas Nuvensescalabilidade flexibilidade performance disponibilidade
  • 13.
    Zoologia dos bancosNoSQL Wide Column Store / Column Families Key-Value Store Document Store Azure Storage Services
  • 14.
  • 15.
    Você precisa escolher2! Teorema de Brewer: CAP Consistência : visão única para os clientes
  • 16.
    Disponibilidade : todaoperação tem uma resposta
  • 17.
    Partição : sistemacontinua operante mesmo enfrentando partições na rede Consistência Consistency Disponibilidade Availability Partição Partition Tolerance
  • 18.
    Breve explicação doCAP um dia ensolarado... partições de rede!
  • 19.
    I. Consistência eDisponibilidade Limitações na escalabilidade (leitura e escrita) C A
  • 20.
    II. Consistência ePartição Completamente inacessível se qualquer um dos nós estiver fora! C P
  • 21.
    III. Disponibilidade ePartição Nem sempre lê a informação mais recente: futuramente consistente A P
  • 22.
    “ A highperformance, scalable, distributed storage and processing system for structured and unstructured data.”
  • 23.
    Cassandra: um brevehistórico Bigtable Dynamo
  • 24.
    Um novo modelode dados Agrupamento de famílias de colunas (~banco de dados) Agrupamento de colunas (~tabela) com ordenação fixada Chave que representa uma linha de colunas (~chave primária) Representação de um valor, com: Nome (Name)
  • 25.
  • 26.
    Timestamp Keyspace ColumnFamily (Row) Key Column
  • 27.
  • 28.
    Exemplo: modelagem doTwitter Users Following Followers @paul segue @brigitte desde 22/08/2010 john fullname: John Doe password: swordfish joindate: 20091115 paul fullname: Paul Lane password: thepass joindate: 20091129 john paul: 20091204 brigitte: 20100815 paul john: 20091205 debora: 20100729 brigitte: 20100822 john tom: 20091128 paul: 20091205 brigitte john: 20100815 paul: 20100822
  • 29.
    Exemplo: modelagem doTwitter Statuses (Tweets) Timeline Userline Tweets do @john Tweets dos usuários que o @paul segue data/hora tweet 12345 user: john body: Nuvem privada do @serpro! retweets: 123 12346 user: brigitte john 20100116083155: 12346 paul 20100116083002: 12345 20100116083155: 12346 john 20100116083002: 12345 20100118235914: 23457 brigitte 20100116083155: 12346 tweet body: Acabei de #acordar. tags acordar: 1
  • 30.
    “It took twoweeks to perform ALTER TABLE on the statuses [tweets] table.” – Twitter
  • 31.
    Particionamento e replicaçãoFixed Circular Space (Ring) Virtual Nodes Consistent Hashing (MD5) N=3 h(key2) 0 1 1/2 F E D C B A h(key1)

Notas do Editor

  • #2 ...
  • #3 A grande maioria das aplicações necessita de algum tipo de persistência de dados.
  • #4 Por que precisamos de SQL? Modelo relacional está bem consolidado Linguagem com décadas de evolução Integridade referencial e transações (ACID) Conjunto rico de ferramentas É o que aprendemos É o que o mercado usa
  • #5 Onde usamos SQL (i.e. ACID)? Aplicações empresariais Agências de viagem Internet banking Compras online Cartões de crédito Transações em geral
  • #6 ...
  • #7 Informação digital criada, capturada e replicada pelo mundo Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.
  • #8 Aplicações web modernas Grandes volumes de dados (escala da Internet) Altas taxas de leitura e escrita Necessidade de alta disponibilidade Frequentes mudanças nos esquemas Aplicações “sociais” não exigem os mesmos níveis de consistência que aplicações “bancárias”
  • #9 • Scaling existing Relational Databases is hard • Sharding is one solution, but makes your RDBMS unusable • Operational Nightmare
  • #10 Os modelos transacionais ACID Atomicity, Consistency, Isolation, Durability: a set of properties that guarantee database transactions are processed reliably BASE Basically Available, Soft state, Eventual consistency : as opposed to the database concept of ACID http://queue.acm.org/detail.cfm?id=1394128 Eventually Consistent http://queue.acm.org/detail.cfm?id=1466448
  • #11 O Movimento NoSQL NoSQL = Not Only SQL http://nosql-database.org/ bancos que diferem do modelo clássico relacional não relacionais distribuídos horizontalmente escaláveis com esquemas flexíveis replicáveis APIs simples BASE (e não ACID)
  • #12 Por que precisamos de NoSQL nas Nuvens? escalabilidade [horizontal] : mais CPUs comuns ao invés de upgrades performance : alcançado através de design simplificado e denormalização dos dados flexibilidade : natureza dos bancos sem esquema permite metodologias de desenvolvimento ágil [alta] disponibilidade : não existe ponto único de falha (SPOF – single point of failure)
  • #13 Wide Column Store: Bigtable (Google) SimpleDB (AWS) Cassandra (Apache) HBase (Apache) Hypertable Document Store: CouchDB (Apache) MongoDB Key-Value Store: Riak Redis Table Storage (Microsoft Azure)
  • #14 ...
  • #15 Eric Brewer (UCB) in 2000 presented the CAP theorem , which states that of 3 properties of shared-data systems: C: data consistency A: system availability P: tolerance to network partition Only 2 can be achieved at any given time! A more formal confirmation can be found in a 2002 paper by Seth Gilbert and Nancy Lynch.
  • #16 ...
  • #17 CA – Corruption possible if live nodes can’t communicate (network partition)
  • #18 CP – Completely inaccessible if any nodes are dead
  • #19 AP – Always available, but may not always read most recent NoSQL chooses AP, but makes consistency configurable
  • #20 Cassandra highlights ● High availability ● Incremental scalability ● Eventually consistent ● Super fast writes ● Tunable tradeoffs between consistency and latency ● Minimal administration ● No SPF
  • #21 Developed at Facebook Follows the BigTable Data Model - column oriented ( Google ) Follows the Dynamo Eventual Consistency model ( Amazon ) Opensourced at Apache Implemented in Java
  • #22 ...
  • #23 ...
  • #24 ...
  • #25 ...
  • #26 ...
  • #27 Every node is equal Always at least one copy in each datacenter Alternate datacenters on the ring DHT (Distributed Hash Table) Ring
  • #28 Eventual consistency ● Synch to Washington, asynch to Hong Kong Client API Tunables ● Confirm R replicas match at read time ● Synchronously write to W replicas of N total replicas Allows for almost-strong consistency ● When W + R > N
  • #29 Gossip protocol is used for cluster membership Enables seamless nodes addition Rebalancing of keys Fast detection of nodes that goes down Every node knows about all others - no master State disseminated in O(log N) rounds
  • #30 ...
  • #31 ...
  • #32 Conclusão NoSQL can’t do everything Adhoc queries are not possible Right tool for the right job