MongoDB em Produção

1.268 visualizações

Publicada em

Apresentadas as principais funcionalidades disponibilizadas pelo MongoDB, o case de uma aplicação web que necessita de alto desempenho e o que foi feito para colocá-lo em produção.
O MongoDB é um banco de dados NoSQL, orientado a documentos, de alta performance, open source e schema-free, escrito em C++.
Ele é uma mistura entre os repositórios escaláveis baseados em chave/valor e a tradicional riqueza de funcionalidades dos bancos relacionais.
O MongoDB alia simplicidade de instalação e configuração à robustez através de mecanismos de tolerância a falhas e armazenamento distribuído.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.268
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
27
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • \n
  • \n
  • Não sou DBA então meu conhecimento de banco de dados é limitado\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Banco de dados não relacional\nPor exemplo não tem junçoes\n
  • key-value = Simplicidade\ndocument database = Flexibilidade\nRDBMS = Poder\n
  • Cada vez mais as necessidades de aplicações distribuidas aumenta e com isso as soluçoes de escalabilidade e redundancia se tornam inprecindíveis\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Dado que há somente um servidor master/primário ativo, é possível garantir a consistência dos dados\n
  • \n
  • \n
  • \n
  • \n
  • Bem mais simples e sendo removido do mongodb 1.8 >\n
  • Bem mais simples e sendo removido do mongodb 1.8 >\n
  • Bem mais simples e sendo removido do mongodb 1.8 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Mais robusto e disponível a partir do mongodb 1.6 >\n
  • Decisão de quem é o primário é através de eleição\nSe o nodo master fica offline é realizada eleição para decidir o novo primário\n
  • Para operações críticas o desenvolvedor pode aguardar a confirmação deste commit.\n
  • Esta característica, mais flexível, diferente da maioria das soluções tradicionais, possibilita teoricamente melhor performance e disponibilidade\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • SaaS * distribuído pelo brasil * geolocalizacao * tempo real\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * cada vez mais necessario * Algoritmo interessante * Foursquare * \n
  • Capped collections\n
  • Empresa anterior\n
  • \n
  • LOCK do processo a cada escrita\nPode ser um problema ao gravar documentos grandes\n
  • Mongo não aguarda pela resposta ao solicitar uma escrita\nO resultado ainda pode ser confirmado através do comando getLastError\nSuporte a journaling nas últimas versões melhorou a confiabilidade\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • MongoDB em Produção

    1. 1. MONGODB EM PRODUÇÃO
    2. 2. @fnmunhoz
    3. 3. PROGRAMADOR http://deeperbeige.com/wp-content/uploads/2009/05/will-code-for-food.png
    4. 4. PROGRAMADOR http://deeperbeige.com/wp-content/uploads/2009/05/will-code-for-food.png
    5. 5. AGENDA
    6. 6. AGENDA• Redundância
    7. 7. AGENDA• Redundância• Escalabilidade
    8. 8. AGENDA• Redundância• Escalabilidade• Cases
    9. 9. AGENDA• Redundância• Escalabilidade• Cases • Sucesso
    10. 10. AGENDA• Redundância• Escalabilidade• Cases • Sucesso • Falha
    11. 11. AGENDA• Redundância• Escalabilidade• Cases • Sucesso • Falha• Em que pode ser útil (e onde não)
    12. 12. NOSQL
    13. 13. “The best features ofkey-value stores,document databasesand RDBMS in one.” John Nunemaker, Rails Tips http://railstips.org/blog/archives/2009/06/03/what-if-a-key-value-store-mated-with-a-relational-database-system/
    14. 14. AMBIENTE DISTRIBUÍDO http://edtech2.boisestate.edu/kappesg/513/miniproj2.html
    15. 15. TOLERÂNCIA A FALHAS http://cf1.imgobject.com/backdrops/5a5/4bc909c2017a3c57fe0035a5/independence-day-original.jpg
    16. 16. REDUNDÂNCIA DE DADOS http://1.bp.blogspot.com/-O5HRWNiMijY/TZon3pXmb7I/AAAAAAAAA18/zHrZ8f2_ES4/s1600/114060_Papel-de-Parede-World-Trade-Center--114060_1440x900.jpg
    17. 17. •Somente um servidor ficaativo para escrita, por vez.
    18. 18. •Somente um servidor ficaativo para escrita, por vez.•Esteé o nodo master/ primário
    19. 19. •Osdemais nodos onde osdados serão replicados sãodenominados de slave/secundário
    20. 20. CONSISTÊNCIA GARANTIDA
    21. 21. •Possibilita que um nodoslave/secundário respondapara operações de leituraquando consistênciaeventual for aceitável
    22. 22. •Duas formas de replicaçãoestão disponíveis
    23. 23. •Duas formas de replicaçãoestão disponíveis•Replica Pairs
    24. 24. •Duas formas de replicaçãoestão disponíveis•Replica Pairs•Replica Sets
    25. 25. Replicação Master/Slave
    26. 26. Replicação Master/SlaveMaster
    27. 27. Replicação Master/SlaveMaster
    28. 28. Replicação Master/SlaveMaster Slaves
    29. 29. Replica Sets
    30. 30. Replica Sets Nodo 3 Primário
    31. 31. Replica Sets Nodo 3 Primário
    32. 32. Replica Sets Nodo 3 Primário Nodo 2Recuperação
    33. 33. Replica Sets Nodo 3 Primário Nodo 2Recuperação
    34. 34. Replica Sets Nodo 3 Primário Nodo 2Recuperação Nodo 4 Secundário
    35. 35. Replica Sets Nodo 3 Primário Nodo 2Recuperação Nodo 4 Secundário
    36. 36. Replica Sets Nodo 3 Primário Nodo 2 Nodo 1Recuperação Secundário Nodo 4 Secundário
    37. 37. ELEIÇÃO
    38. 38. •Uma operação de escrita sóé considerada comitadaquando estiver replicadapara todos os nodos docluster
    39. 39. •Informaçõesde escritapodem estar disponíveisantes deste commit serconfirmado
    40. 40. O Case
    41. 41. Frontend
    42. 42. PHPFrontend
    43. 43. PHPFrontend
    44. 44. PHPFrontend JSON
    45. 45. PHPFrontend JSON Middleware
    46. 46. PHPFrontend JSON Java Middleware
    47. 47. PHPFrontend JSON Java Middleware
    48. 48. PHPFrontend JSON JSON Java Middleware
    49. 49. PHPFrontend Backend JSON JSON Java Middleware
    50. 50. PHP RubyFrontend Backend JSON JSON Java Middleware
    51. 51. PHP RubyFrontend Backend JSON JSON Java Middleware
    52. 52. PHP RubyFrontend Backend JSON JSON Java Middleware
    53. 53. PHP RubyFrontend Backend JSON JSON Java Middleware MongoDB ReplicaSet
    54. 54. PHP RubyFrontend Backend JSON JSON Java Middleware MongoDB nodo1 ReplicaSet
    55. 55. PHP RubyFrontend Backend JSON JSON Java Middleware MongoDB nodo1 ReplicaSet nodo1I
    56. 56. O outro case
    57. 57. Frontend
    58. 58. Frontend JavaScript
    59. 59. Frontend JavaScript
    60. 60. Frontend JavaScript JSON
    61. 61. Frontend JavaScript JSONBackend
    62. 62. Frontend JavaScript JSONBackend Ruby
    63. 63. Frontend JavaScript JSONBackend Ruby
    64. 64. Frontend JavaScript JSONBackend Ruby
    65. 65. Frontend JavaScript JSONBackend RubyMongoDBReplicaSet
    66. 66. Frontend JavaScript JSON Backend Ruby MongoDBnodo1 ReplicaSet
    67. 67. Frontend JavaScript JSON Backend Ruby MongoDBnodo1 ReplicaSet nodo1I
    68. 68. Frontend JavaScript JSON Backend Ruby MongoDBnodo1 ReplicaSet
    69. 69. Frontend JavaScript JSONBackend RubyMongoDBReplicaSet
    70. 70. Frontend JavaScript JSONBackend RubyMongoDBReplicaSet
    71. 71. Frontend JavaScript JSONBackend RubyMongoDBReplicaSet
    72. 72. Frontend JavaScript JSONBackend Ruby
    73. 73. Frontend JavaScript JSONBackend Ruby
    74. 74. Frontend JavaScript JSONBackend Ruby
    75. 75. Frontend JavaScript JSON Backend RubyPostgreSQL
    76. 76. A FALHA
    77. 77. AVALIE O HARDWARE DISPONÍVEL
    78. 78. SUPER MÁQUINA AJUDA?
    79. 79. STORAGE
    80. 80. car_one = { registration_plate: "RTD2230", automatic_transmission: false, doors: 2 }car_two = { registration_plate: "CFT8945", automatic_transmission: true, doors: 4 } JSON
    81. 81. MONGODB: EM QUE POSSO SER ÚTIL?
    82. 82. SCHEMA DESING
    83. 83. GEOLOCALIZAÇÃO
    84. 84. LOG DE INFORMAÇÕES
    85. 85. AUDITORIA
    86. 86. E QUANDO NÃO USAR?
    87. 87. ESCRITAS INSANAS
    88. 88. DURABILITY http://farm1.static.flickr.com/46/140343641_63b518ed93.jpg
    89. 89. TRANSAÇÕES http://cdn.weinterrupt.com/wp-content/uploads/hand_shake.gif
    90. 90. MongoDB(from "humongous") = extremely large
    91. 91. MAS AFINAL, POR QUE NOSQL?
    92. 92. É ótimo no seu curriculum!
    93. 93. http://geekandpoke.typepad.com/
    94. 94. E aquela do DBA que entrou no bar vocês conhecem?
    95. 95. #?http://joind.in/3961 @fnmunhoz

    ×