NoSQL (Not Only SQL) Nico Steppat [email_address]
Non-Relational DBMS http://www.slideshare.net/chrisbaglieri/non-relational-databases-2143723
Arquitetura / Tiers
Exemplo Tiers
Escalando o sistema
Escalando o sistema
Escalando Application Tier
Escalando Database Tier
Escalando Database Tier ???
Escalabilidade Horizontal  (Scale Out):  Vertical  (Scale Up):
Escalabilidade – Banco de Dados Relacionais Horizontal  (Scale Out):  Vertical  (Scale Up):
Escalabilidade Vertical - Scale Up <ul>Vantagens: <ul><li>Simples </li></ul>Desvantagens: <ul><li>Caro
Limitado
Lento:  </li><ul><li>„ Disc is the new Tape“
Random-Acces </li></ul></ul></ul>
Escalabilidade Horizontal – Cache
Escalabilidade Horizontal – Replicação <ul><li>Fail-over support
Síncrono, Assícrono
Read-Slave </li></ul>
Escalabilidade Horizontal – Replicação Multi-Slave <ul><li>Master – Escrita
Slaves – Leitura
Escrita?? </li></ul>
Escalabilidade Horizontal – Replicação Multi-Master <ul><li>2-PC?
Escrita? </li></ul>
Escalabilidade Horizontal – Resumo <ul><li>Como lidar o volume de dados?
Como escalar escritas?
TX distribuído não escala! </li></ul>
Escalabilidade Horizontal
Escalabilidade Horizontal – Shared Nothing
Shared Nothing - Sharding Scheme
Shared Nothing – Sharding Scheme
Escalabilidade Horizontal – Shared Nothing <ul><li>Joins?
Normalização?
Integridade?
Chaves Compostas?
Alerações de esquema?
2-PC? </li></ul>
Upcoming SlideShare
Loading in …5
×

NoSQL - Caelum Day 2009

2,291 views

Published on

short apresentation (in portuguese) about database scalability and the cap theorem

Published in: Technology

NoSQL - Caelum Day 2009

  1. 1. NoSQL (Not Only SQL) Nico Steppat [email_address]
  2. 2. Non-Relational DBMS http://www.slideshare.net/chrisbaglieri/non-relational-databases-2143723
  3. 3. Arquitetura / Tiers
  4. 4. Exemplo Tiers
  5. 5. Escalando o sistema
  6. 6. Escalando o sistema
  7. 7. Escalando Application Tier
  8. 8. Escalando Database Tier
  9. 9. Escalando Database Tier ???
  10. 10. Escalabilidade Horizontal (Scale Out): Vertical (Scale Up):
  11. 11. Escalabilidade – Banco de Dados Relacionais Horizontal (Scale Out): Vertical (Scale Up):
  12. 12. Escalabilidade Vertical - Scale Up <ul>Vantagens: <ul><li>Simples </li></ul>Desvantagens: <ul><li>Caro
  13. 13. Limitado
  14. 14. Lento: </li><ul><li>„ Disc is the new Tape“
  15. 15. Random-Acces </li></ul></ul></ul>
  16. 16. Escalabilidade Horizontal – Cache
  17. 17. Escalabilidade Horizontal – Replicação <ul><li>Fail-over support
  18. 18. Síncrono, Assícrono
  19. 19. Read-Slave </li></ul>
  20. 20. Escalabilidade Horizontal – Replicação Multi-Slave <ul><li>Master – Escrita
  21. 21. Slaves – Leitura
  22. 22. Escrita?? </li></ul>
  23. 23. Escalabilidade Horizontal – Replicação Multi-Master <ul><li>2-PC?
  24. 24. Escrita? </li></ul>
  25. 25. Escalabilidade Horizontal – Resumo <ul><li>Como lidar o volume de dados?
  26. 26. Como escalar escritas?
  27. 27. TX distribuído não escala! </li></ul>
  28. 28. Escalabilidade Horizontal
  29. 29. Escalabilidade Horizontal – Shared Nothing
  30. 30. Shared Nothing - Sharding Scheme
  31. 31. Shared Nothing – Sharding Scheme
  32. 32. Escalabilidade Horizontal – Shared Nothing <ul><li>Joins?
  33. 33. Normalização?
  34. 34. Integridade?
  35. 35. Chaves Compostas?
  36. 36. Alerações de esquema?
  37. 37. 2-PC? </li></ul>
  38. 38. Escalabilidade Horizontal – Shared Nothing <ul><li>Joins?
  39. 39. Normalização?
  40. 40. Integridade?
  41. 41. Chaves Compostas?
  42. 42. Alerações de esquema?
  43. 43. 2-PC? </li></ul>Not Only SQL SQL
  44. 44. Escalabilidade Horizontal – Shared Nothing <ul><li>Joins Key, Rango, Indices, Views, Lucene
  45. 45. Normalização Schema-free, Compression
  46. 46. Integridade Aplicação faz
  47. 47. Chaves Compostas ID simples
  48. 48. 2-PC T X Local, DLM, Consensus
  49. 49. Alerações de esquema? Ao vivo </li></ul>SQL
  50. 50. Quais são os desafios? <ul><li>Sharding
  51. 51. Replicação
  52. 52. Gerenciamento
  53. 53. Consistência
  54. 54. Modelo de dados </li></ul>SQL
  55. 55. Consistência e Disponibilidade <ul>Consistência forte : <ul><li>Transação: A C ID
  56. 56. 2-Phase-Commit </li></ul>Alta Disponibilidade: <ul><li>Replicação / Espalhamento </li></ul></ul>
  57. 57. Cluster de bancos de dados
  58. 58. Partitição da Rede
  59. 59. Dr. Eric A. Brewer, 2000, PODC
  60. 60. Escalabilidade Horizontal – Shared-Disk
  61. 61. Sacrificando Partition Tolerance <ul><li>ACID, 2-Phase-Commit
  62. 62. Replicação
  63. 63. LDAP
  64. 64. RDBMS qualquer
  65. 65. „ SAN“s </li><ul><li>Oracle RAC
  66. 66. ScaleDB (MySQL)
  67. 67. Amazon RDS (MySQL) </li></ul></ul>
  68. 68. Consistência? <ul>Como criar um carrinho de compras <ul>altamente disponível (24/7) <ul>em um cluster enorme ? </ul></ul></ul>Werner Vogel, CTO Amazon <ul>Criando um banco parecido com DNS e Bittorrent. Amazon Dynamo . </ul>http://www.allthingsdistributed.com/2008/12/eventually_consistent.html http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
  69. 69. <ul>Sacrificando Consistência (um pouco) </ul><ul><li>Eventualmente Consistente
  70. 70. Otimista </li><ul><li>Read-Repair (Quorum) </li></ul><li>Amazon: </li><ul><li>Dynamo
  71. 71. SimpleDB
  72. 72. S3 (ex: Dropbox) </li></ul><li>Cassandra
  73. 73. Project-Voldemort </li></ul>
  74. 74. Sacrificando Consistência Disponibilidade (um pouco) <ul><li>BigTable (Google)
  75. 75. Baseado em </li><ul><li>Chubby
  76. 76. Google File System </li></ul></ul>http://labs.google.com/papers/bigtable.html
  77. 77. Sacrificando Disponibilidade (um pouco) <ul><li>Distributed Lock Manager
  78. 78. Consensos / Paxos
  79. 79. pessimista
  80. 80. BigTable (DLM) - GAE
  81. 81. Chubby (Paxos)
  82. 82. Zookeeper (Paxos)
  83. 83. Scalaris (Paxos)
  84. 84. BigTable Clones: </li><ul><li>Hbase, HyperTable </li></ul></ul>
  85. 85. ACID vs BASE <ul>ACID <ul>A tomicity C onsistency I solation D urability </ul></ul>Contínuo ACID BASE <ul>BASE <ul>B asically A vailable S oft state E ventual Consistency </ul></ul>
  86. 86. Obrigado! [email_address]

×