NoSQL
O que eu vi por ai...
Cleber Dantas


• 8+ anos de experiência na área de TI
• Especialista em desenvolvimento Web
• Responsável pela área técnica do grupo Minha
  Vida
• Ministro treinamentos sobre desenvolvimento
  Web
• Dou algumas palestras em eventos de tecnologia
• @cleberdantas
• http://www.cleberdantas.com
Not Only SQL

•   Uma nova (ou não) escola de pensamentos
•   Aprendemos o modelo relacional na escola
•   Not Only RDBMS
•   MongoDB (DoubleClick)
CAP Theorem

• Consistency (all nodes see the same data at the same time)
• Availability ( a guarantee that every request receives a
  response about whether it was successful or failed)
• Partition tolerance (the system continues to operate despite
  arbitrary message loss or failure of part of the system)


• “Em um sistema de computação distribuída é
  impossível ter as 3 características” – Erick Brewer




                                   http://en.wikipedia.org/wiki/CAP_theorem
CAP Theorem
ACID vs BASE

 • ACID (atomicidade, consistência, isolamento,
   durabilidade) – Lembram? 
 • BASE (Basically Available, Soft state, Eventual
   consistency – Relaxamento das regras)
 • Onde não ser ACID não é ruim? Think about...




                       http://en.wikipedia.org/wiki/Eventual_consistency

                                       http://en.wikipedia.org/wiki/ACID
Estrutura de dados

 •   Key-Value
 •   Column family
 •   Document
 •   Graph
Bancos de dados
Arquitetura de armazenamento

 • Normalmente os NoSQL trabalham em memória
 • O próprio engine forka o processo de tempos em
   tempos e leva os dados ao disco
 • Para garantir a disponibilidade/performance
   trabalham com replicas/sharding
Map Reduce

• Funções que coletam/mapeiam dados de 1 ou
  mais nós gerando uma nova coleção
• Depois agrupam/reduzem os dados os tornando
  de alguma forma útil

• Ex: Contador de palavras




                             http://en.wikipedia.org/wiki/MapReduce
RDBMS Anti Patterns by @gleicon
RDBMS Anti Patterns by @gleicon
RDBMS Anti Patterns by @gleicon
RDBMS Anti Patterns by @gleicon
RDBMS Anti Patterns by @gleicon
RDBMS Anti Patterns by @gleicon
RDBMS Anti Patterns by @gleicon
Mensagem final…

• Cada vez mais temos que pensar muito nos
  problemas que estamos resolvendo e como
  vamos resolve-lo, independente da tecnologia
• Se é com PHP, Asp.Net, Java, Oracle, Sql Server,
  MemCached, Redis, MongoDB, Lua, Nuvem,
  Hadoop, Lucene ou não isso realmente não
  importa afinal somos profissionais de tecnologia.
  #OpenMind
• Temos que estudar 
Obrigado. Perguntas? Se eu souber responder claro 

[MinhaVida TechDay] NoSQL

  • 1.
    NoSQL O que euvi por ai...
  • 2.
    Cleber Dantas • 8+anos de experiência na área de TI • Especialista em desenvolvimento Web • Responsável pela área técnica do grupo Minha Vida • Ministro treinamentos sobre desenvolvimento Web • Dou algumas palestras em eventos de tecnologia • @cleberdantas • http://www.cleberdantas.com
  • 3.
    Not Only SQL • Uma nova (ou não) escola de pensamentos • Aprendemos o modelo relacional na escola • Not Only RDBMS • MongoDB (DoubleClick)
  • 4.
    CAP Theorem • Consistency(all nodes see the same data at the same time) • Availability ( a guarantee that every request receives a response about whether it was successful or failed) • Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system) • “Em um sistema de computação distribuída é impossível ter as 3 características” – Erick Brewer http://en.wikipedia.org/wiki/CAP_theorem
  • 5.
  • 6.
    ACID vs BASE • ACID (atomicidade, consistência, isolamento, durabilidade) – Lembram?  • BASE (Basically Available, Soft state, Eventual consistency – Relaxamento das regras) • Onde não ser ACID não é ruim? Think about... http://en.wikipedia.org/wiki/Eventual_consistency http://en.wikipedia.org/wiki/ACID
  • 7.
    Estrutura de dados • Key-Value • Column family • Document • Graph
  • 8.
  • 9.
    Arquitetura de armazenamento • Normalmente os NoSQL trabalham em memória • O próprio engine forka o processo de tempos em tempos e leva os dados ao disco • Para garantir a disponibilidade/performance trabalham com replicas/sharding
  • 10.
    Map Reduce • Funçõesque coletam/mapeiam dados de 1 ou mais nós gerando uma nova coleção • Depois agrupam/reduzem os dados os tornando de alguma forma útil • Ex: Contador de palavras http://en.wikipedia.org/wiki/MapReduce
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
    Mensagem final… • Cadavez mais temos que pensar muito nos problemas que estamos resolvendo e como vamos resolve-lo, independente da tecnologia • Se é com PHP, Asp.Net, Java, Oracle, Sql Server, MemCached, Redis, MongoDB, Lua, Nuvem, Hadoop, Lucene ou não isso realmente não importa afinal somos profissionais de tecnologia. #OpenMind • Temos que estudar 
  • 19.
    Obrigado. Perguntas? Seeu souber responder claro 