O documento apresenta os principais conceitos do NoSQL, incluindo o teorema CAP, que afirma que é impossível ter consistência, disponibilidade e tolerância a partições simultaneamente em sistemas distribuídos. Também discute a diferença entre os modelos ACID e BASE e apresenta exemplos de estruturas de dados, bancos de dados e arquiteturas de armazenamento não-relacionais.
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
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
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çõ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
18. 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