SlideShare uma empresa Scribd logo
1 de 63
Por que e quando usar? Nico Steppat [email_address] @steppat
- Desenvolvedor - Instrutor - Blogger - Engenheiro - Carioca  (quase) - Apaixonado pelo NoSQL Quem sou eu?
 
vs
Eierlegendewollmilchsau vs
Web scale
(Dr. Brewer) consistência disponibilidade
Web scale disponibilidade consistência
Tolerancia à partição na rede Teorema CAP Web scale consistência disponibilidade
facebook ?
facebook SQL – Modelo relacional – ACID – APIs Maduro – Robusto – Conhecido - Barato  SQL – Rocks!
MAS? facebook “ Quando tudo o que você tem é um martelo,  todos os problemas parecem pregos”  (sabedoria popular)
facebook “ Quando tudo o que você tem é um martelo,  todos os problemas parecem pregos”  (sabedoria popular)
NoSQL ==  facebook Persistência-poliglota
facebook
SQL: like '%restaurante%'  like '%restaurante%' or '%festa%'
facebook
facebook ->  Buscas aproximadas ->  Rankear (ranking) ->  Buscas dinâmicas
facebook Document-Store #1 (Fulltext-search engine)
Onde gravar os logs da aplicação?
db.createCollection("userlog", {capped: true, size:100000}) { "event":"userlog", "userid":"12573", "priority" : "WARN", "data": "07 Nov 2011", "time": "15:17:50,343", "class":"VendaController", "method":"removerVenda", "message":"permissão negada" } Document-Store #2 Capped Collections
Como modelar uma hierarquia no banco?
Artigo - NoSQL Comentário Comentário Comentário Comentário Comentário Como modelar uma hieraquia no banco?
No Banco Relacional? tbl comentarios --------------- id  parent_id  autor  mensagem 1  0  João  "Não entendi o teorema CAP." 2  1  Maria  "Dá uma olhada ….." 3  2  João  "Vlw. Pela dica." 4  0  Pedro  "Bem interessante!"
{ id: "4c6b9456f61f000000007ba6" comments: [ {author: "João",  message: "Não entendi o teorema CAP.", replies: [   {author: "Maria",  message: "Dá uma olhada no blog da Caelum.", replies: [ {author: "João",  message: "Vlw pela dica!", replies: [] }] }] }] Document-Store #3
Dados quentes Dados frios
Alterações no esquema? Dados quentes Dados frios
Alterações no esquema  não  devem atrapalhar! Dados quentes
{ "id": "324", " venda ": { "data": "07 Nov 2010", "valor": "2700,00" }, " cliente " : { "cnpj":"123-345-5678/0004",  ...}  " produto " : { "Notebook":"Toshiba ",   "Model":"Satelite AAC-345",  ...} } { "id": "567", " venda " : { "data" : "08 Abr 2011", "valor" : "3400,00" }, " cliente " : { "cnpj" : "123-345-5678/0004",  ...}  " pedido " : { "quantidade" : "2", " produto " : { "Notebook":"Sony ",   "Model":"Vaio LAB-45",  … } } Alterações no esquema  não  devem atrapalhar! Document-Store #4 Documento Venda Documento Venda com pedido
Onde gravar o  histórico  dos dados quentes ? tbl pedidos ----------- id  cliente_id  produto_id  qtd  data 243  432  154  03  22/10/2011 tbl pedidos ----------- id  cliente_id  produto_id  qtd  data 243  432  154  10   09/11/2011 Alteração do registro
Tbl pedidos ----------- id  cliente_id  produto_id  qtd  data 243  432  154  10   09/11/2011 { id : "243", changes : {  1300700615678 : {  "cliente_id" : "432",  "produto_id" : "154"  "qtd" : "3", "data" : "22/10/2011"  } 1320760617815 : {  "qtd" : "10",  "data" : "09/11/2011" }, } } Document-Store #5
Relaxarrrrrr
Como relaxarrrrrr?
Trabalho offline Master Master
Sincronização Conflict management CouchDB – offline por padrão
Lembrando: ->  Escalabilidade extrema ->  Document-stores -> p/ dados semi-estruturados -> alterações no esquema ->  offline work Ex. Buscas, Logs, Arquivar, Histórico, Relaxarrr
Arquivar  dados frios  e analisar Dados quentes
Como analisar os  dados frios ? tbl pedidos ----------- id  cliente  produto  qtd  data 1  João  Sony Vaio  4  03/10/2011 2  Maria  Toshiba Sat. 3  08/11/2011 3  Pedro  Macbook Pro  5  10/11/2011 colunas pedidos --------------- Ids:  1;2;3  Clientes:  João;Maria;Pedro Produtos:  Sony Vaio;Toshiba Sat.;Macbook Pro Qtd:  4;3;5 Data:  03/10/2011;08/11/2011;10/11/2011
Row-based vs Column-based OLTP vs OLAP
Arquivar para analisar Column-stores
Exemplos Column-stores ,[object Object]
Cassandra ,[object Object],[object Object]
e vários outros ... Queries: Map/Reduce, Hive e Pig
Como modelar um grafo?
Como modelar um grafo? Será que o  MODELO RELACIONAL  é bom pra isso?
Como modelar um grafo? http://www.slideshare.net/emileifrem/neo4j-presentation-at-qcon-sf-2008-presentation NeoService banco = ... Node  mrAnderson  = banco.createNode(); mrAnderson.setProperty("name", "Anderson"); Node  morpheus  =  banco .createNode(); mrAnderson.setProperty("name", "Morpheus"); mrAnderson. createRelationshipTo (morpheus, RelTypes.AMIGAO); AMIGÃO
Bancos de grafos ,[object Object]
HypergraphDB ,[object Object],[object Object]
e vários outros ...
Lembrando: ->  Column stores ->  para dados estruturados -> para análise ->  Graph databases -> relacionamentos complexas
Arquitetura Web-App
 
ID: A628B665D8989C03 Key - Value
Key-Value  NO BANCO RELACIONAL?
ID: A628B665D8989C03 Key - Value Store! Key-Value-Store #1
Key-Value-Store #1
http://www.caelum.com.br/apostilas/ Onde ficam as apostilas abertas? Onde ficam as apostilas PERSISTIDAS?
Key-Value-Store #2 s3ObjectStore.store("FJ-11.pdf", new File("fj-11.pdf"), "apostilas");
Como fazer integração entre aplicações?
Integracão entre aplicações COM BANCO RELACIONAL?
Key-Value-Store #3 Serviço de mensagens com NoSQL HTTP POST Http://localhost/q/pedidos HTTP GET Http://localhost/q/pedidos
Resumo: ->  Escalabilidade ->  distribuição de dados ->  replicação ->  modelo de consistência ->  gerenciamento de conflitos
Resumo: ->  Ferramenta específica ->  cache / backup / histórico ->  busca textual ->  arquivar e analisar ->  offline ->  integração

Mais conteúdo relacionado

Destaque

Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
pichiliani
 
apostila técnicas de negociação
apostila técnicas de negociaçãoapostila técnicas de negociação
apostila técnicas de negociação
UNINOVE
 
Pratica Do Marketing Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...
Pratica Do Marketing   Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...Pratica Do Marketing   Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...
Pratica Do Marketing Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...
marketingcapixaba
 
Creatividad e innovacion empresarial w
Creatividad e innovacion empresarial wCreatividad e innovacion empresarial w
Creatividad e innovacion empresarial w
Esther Beiker
 

Destaque (20)

NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplos
 
Java User Group - O que é e como eu faço para participar?
Java User Group - O que é e como eu faço para participar?Java User Group - O que é e como eu faço para participar?
Java User Group - O que é e como eu faço para participar?
 
Jpa de a à z por que conhecer jpa
Jpa de a à z  por que conhecer jpa Jpa de a à z  por que conhecer jpa
Jpa de a à z por que conhecer jpa
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
NoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenNoSQL Databases: Why, what and when
NoSQL Databases: Why, what and when
 
apostila técnicas de negociação
apostila técnicas de negociaçãoapostila técnicas de negociação
apostila técnicas de negociação
 
Pratica Do Marketing Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...
Pratica Do Marketing   Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...Pratica Do Marketing   Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...
Pratica Do Marketing Uma Abordagem Mercadologica Segundo Os Espectros Da Ta...
 
Alex Artaza en el Grupo Vasco Del Club De Roma
Alex Artaza en el Grupo Vasco Del Club De RomaAlex Artaza en el Grupo Vasco Del Club De Roma
Alex Artaza en el Grupo Vasco Del Club De Roma
 
La explotación de espacios blancos de televisión en México
La explotación de espacios blancos de televisión en MéxicoLa explotación de espacios blancos de televisión en México
La explotación de espacios blancos de televisión en México
 
Calificación afinsa
Calificación afinsaCalificación afinsa
Calificación afinsa
 
Creatividad e innovacion empresarial w
Creatividad e innovacion empresarial wCreatividad e innovacion empresarial w
Creatividad e innovacion empresarial w
 
Conacyt
ConacytConacyt
Conacyt
 
Metrologia e Instrumentos de Medicion
Metrologia e Instrumentos de MedicionMetrologia e Instrumentos de Medicion
Metrologia e Instrumentos de Medicion
 
Glam Media
Glam MediaGlam Media
Glam Media
 

Semelhante a NoSQL - Por que e quando usar?

rails_and_agile
rails_and_agilerails_and_agile
rails_and_agile
Juan Maiz
 
Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9
Rodrigo Kono
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento Web
Bruno Borges
 
Lib.SAPO.JS - Codebits2007
Lib.SAPO.JS  - Codebits2007Lib.SAPO.JS  - Codebits2007
Lib.SAPO.JS - Codebits2007
Claudio Gamboa
 
Desenvolvimento Web Com Ajax
Desenvolvimento Web Com AjaxDesenvolvimento Web Com Ajax
Desenvolvimento Web Com Ajax
elliando dias
 

Semelhante a NoSQL - Por que e quando usar? (20)

Edição de conteúdo web usando Javascript de ponta a ponta
Edição de conteúdo web usando Javascript de ponta a pontaEdição de conteúdo web usando Javascript de ponta a ponta
Edição de conteúdo web usando Javascript de ponta a ponta
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
MongoDB
MongoDBMongoDB
MongoDB
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da Web
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
rails_and_agile
rails_and_agilerails_and_agile
rails_and_agile
 
Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHP
 
Django para infográficos
Django para infográficosDjango para infográficos
Django para infográficos
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento Web
 
Apresentacao codeigniter
Apresentacao codeigniterApresentacao codeigniter
Apresentacao codeigniter
 
Campus Party 2015: Os 10 Atributos de uma API de Sucesso
Campus Party 2015: Os 10 Atributos de uma API de SucessoCampus Party 2015: Os 10 Atributos de uma API de Sucesso
Campus Party 2015: Os 10 Atributos de uma API de Sucesso
 
Torne seu Site Mais Veloz! I GDG Women Sorocaba
Torne seu Site Mais Veloz! I GDG Women SorocabaTorne seu Site Mais Veloz! I GDG Women Sorocaba
Torne seu Site Mais Veloz! I GDG Women Sorocaba
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIP
 
Lib.SAPO.JS - Codebits2007
Lib.SAPO.JS  - Codebits2007Lib.SAPO.JS  - Codebits2007
Lib.SAPO.JS - Codebits2007
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutória
 
Desenvolvimento Web Com Ajax
Desenvolvimento Web Com AjaxDesenvolvimento Web Com Ajax
Desenvolvimento Web Com Ajax
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

NoSQL - Por que e quando usar?

  • 1. Por que e quando usar? Nico Steppat [email_address] @steppat
  • 2. - Desenvolvedor - Instrutor - Blogger - Engenheiro - Carioca (quase) - Apaixonado pelo NoSQL Quem sou eu?
  • 3.  
  • 4. vs
  • 7. (Dr. Brewer) consistência disponibilidade
  • 9. Tolerancia à partição na rede Teorema CAP Web scale consistência disponibilidade
  • 11. facebook SQL – Modelo relacional – ACID – APIs Maduro – Robusto – Conhecido - Barato SQL – Rocks!
  • 12. MAS? facebook “ Quando tudo o que você tem é um martelo, todos os problemas parecem pregos” (sabedoria popular)
  • 13. facebook “ Quando tudo o que você tem é um martelo, todos os problemas parecem pregos” (sabedoria popular)
  • 14. NoSQL == facebook Persistência-poliglota
  • 16. SQL: like '%restaurante%' like '%restaurante%' or '%festa%'
  • 18. facebook -> Buscas aproximadas -> Rankear (ranking) -> Buscas dinâmicas
  • 19. facebook Document-Store #1 (Fulltext-search engine)
  • 20. Onde gravar os logs da aplicação?
  • 21. db.createCollection("userlog", {capped: true, size:100000}) { "event":"userlog", "userid":"12573", "priority" : "WARN", "data": "07 Nov 2011", "time": "15:17:50,343", "class":"VendaController", "method":"removerVenda", "message":"permissão negada" } Document-Store #2 Capped Collections
  • 22. Como modelar uma hierarquia no banco?
  • 23. Artigo - NoSQL Comentário Comentário Comentário Comentário Comentário Como modelar uma hieraquia no banco?
  • 24. No Banco Relacional? tbl comentarios --------------- id parent_id autor mensagem 1 0 João "Não entendi o teorema CAP." 2 1 Maria "Dá uma olhada ….." 3 2 João "Vlw. Pela dica." 4 0 Pedro "Bem interessante!"
  • 25. { id: "4c6b9456f61f000000007ba6" comments: [ {author: "João", message: "Não entendi o teorema CAP.", replies: [ {author: "Maria", message: "Dá uma olhada no blog da Caelum.", replies: [ {author: "João", message: "Vlw pela dica!", replies: [] }] }] }] Document-Store #3
  • 27. Alterações no esquema? Dados quentes Dados frios
  • 28. Alterações no esquema não devem atrapalhar! Dados quentes
  • 29. { "id": "324", " venda ": { "data": "07 Nov 2010", "valor": "2700,00" }, " cliente " : { "cnpj":"123-345-5678/0004", ...} " produto " : { "Notebook":"Toshiba ", "Model":"Satelite AAC-345", ...} } { "id": "567", " venda " : { "data" : "08 Abr 2011", "valor" : "3400,00" }, " cliente " : { "cnpj" : "123-345-5678/0004", ...} " pedido " : { "quantidade" : "2", " produto " : { "Notebook":"Sony ", "Model":"Vaio LAB-45", … } } Alterações no esquema não devem atrapalhar! Document-Store #4 Documento Venda Documento Venda com pedido
  • 30. Onde gravar o histórico dos dados quentes ? tbl pedidos ----------- id cliente_id produto_id qtd data 243 432 154 03 22/10/2011 tbl pedidos ----------- id cliente_id produto_id qtd data 243 432 154 10 09/11/2011 Alteração do registro
  • 31. Tbl pedidos ----------- id cliente_id produto_id qtd data 243 432 154 10 09/11/2011 { id : "243", changes : { 1300700615678 : { "cliente_id" : "432", "produto_id" : "154" "qtd" : "3", "data" : "22/10/2011" } 1320760617815 : { "qtd" : "10", "data" : "09/11/2011" }, } } Document-Store #5
  • 35. Sincronização Conflict management CouchDB – offline por padrão
  • 36. Lembrando: -> Escalabilidade extrema -> Document-stores -> p/ dados semi-estruturados -> alterações no esquema -> offline work Ex. Buscas, Logs, Arquivar, Histórico, Relaxarrr
  • 37. Arquivar dados frios e analisar Dados quentes
  • 38. Como analisar os dados frios ? tbl pedidos ----------- id cliente produto qtd data 1 João Sony Vaio 4 03/10/2011 2 Maria Toshiba Sat. 3 08/11/2011 3 Pedro Macbook Pro 5 10/11/2011 colunas pedidos --------------- Ids: 1;2;3 Clientes: João;Maria;Pedro Produtos: Sony Vaio;Toshiba Sat.;Macbook Pro Qtd: 4;3;5 Data: 03/10/2011;08/11/2011;10/11/2011
  • 40. Arquivar para analisar Column-stores
  • 41.
  • 42.
  • 43. e vários outros ... Queries: Map/Reduce, Hive e Pig
  • 44. Como modelar um grafo?
  • 45. Como modelar um grafo? Será que o MODELO RELACIONAL é bom pra isso?
  • 46. Como modelar um grafo? http://www.slideshare.net/emileifrem/neo4j-presentation-at-qcon-sf-2008-presentation NeoService banco = ... Node mrAnderson = banco.createNode(); mrAnderson.setProperty("name", "Anderson"); Node morpheus = banco .createNode(); mrAnderson.setProperty("name", "Morpheus"); mrAnderson. createRelationshipTo (morpheus, RelTypes.AMIGAO); AMIGÃO
  • 47.
  • 48.
  • 50. Lembrando: -> Column stores -> para dados estruturados -> para análise -> Graph databases -> relacionamentos complexas
  • 52.  
  • 54. Key-Value NO BANCO RELACIONAL?
  • 55. ID: A628B665D8989C03 Key - Value Store! Key-Value-Store #1
  • 57. http://www.caelum.com.br/apostilas/ Onde ficam as apostilas abertas? Onde ficam as apostilas PERSISTIDAS?
  • 58. Key-Value-Store #2 s3ObjectStore.store("FJ-11.pdf", new File("fj-11.pdf"), "apostilas");
  • 59. Como fazer integração entre aplicações?
  • 60. Integracão entre aplicações COM BANCO RELACIONAL?
  • 61. Key-Value-Store #3 Serviço de mensagens com NoSQL HTTP POST Http://localhost/q/pedidos HTTP GET Http://localhost/q/pedidos
  • 62. Resumo: -> Escalabilidade -> distribuição de dados -> replicação -> modelo de consistência -> gerenciamento de conflitos
  • 63. Resumo: -> Ferramenta específica -> cache / backup / histórico -> busca textual -> arquivar e analisar -> offline -> integração
  • 64. Resumo: -> Modelo de dados Estrutura Chave-Valor Documentos Colunas Grafo Complexidade Queries
  • 65.  
  • 66. Key-Value-Store #3 Integração entre aplicações
  • 67.
  • 68. Esquema relacional Schema-free, semi-structured
  • 70. ACID TX Local, Revision, Consensus SQL