Apresentação MongoDB

393 visualizações

Publicada em

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
393
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
16
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação MongoDB

  1. 1. NoSQL e MongoDB David de Lucca
  2. 2. Confidencial © UNEAR 2015
  3. 3. Confidencial © UNEAR 2015 Agenda • Um pouco sobre NoSQL • MongoDB • Scala + MongoDB
  4. 4. Confidencial © UNEAR 2015 O que é NoSQL? • Termo criado em 1998 e voltou a ser usado em 2009; • Uma nova forma de armanezar dados; • Bancos NoSQL não são baseados em tabelas; • Pode não ser capaz de oferecer operações ACID (Atomic, Consistent, Isolated, Durable); • Voltado para soluções distribuídas e tolerantes a falhas; • BASE (Basic Availability, Soft-state, Eventual consistency);
  5. 5. Confidencial © UNEAR 2015 Por que utilizar NoSQL? ● Schemas dinâmicos; ● Grandes volumes de dados; ● Escala!!
  6. 6. Confidencial © UNEAR 2015 Existem duas maneiras de escalar Crédito: http://abiasforaction.net/wp-content/uploads/2015/01/Network-Diagram-2.jpg
  7. 7. Confidencial © UNEAR 2015 Tipos de bases NoSQL ● Key-Value ● Column-Oriented ● Graph DB ● Document
  8. 8. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Key-Value ● Foco em escalar muitas, mas muitas informações; ● Preparado para lidar com cargas grandes; ● Baseado no Amazon Dynamo; ● Modelo de dados: chave-valor ● Exemplos: ○ Voldemort; ○ Aerospike Crédito: http://www.vmdude.fr/wp-content/uploads/2013/06/scaled_keyvalue.jpg
  9. 9. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Column-Oriented ● Similar as tabelas do RDBMs; ● Baseado no Google’s BigTable; ● Modelo de dados: Coluna > Dados da coluna ● Exemplos: ○ Cassandra; ○ BigTable; ○ HBase; Crédito: http://arxtecture.com/wp-content/uploads/2014/01/row-store-v-column- store.gif
  10. 10. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Graph DB ● Foco na interconectividade das informações; ● Inspirada pela Teoria dos Grafos (G=(E,V)) ● Modelo de dados: Nós > Relação entre eles; ● Exemplos: ○ Neo4J; Crédito: http://dev.assets.neo4j.com.s3.amazonaws.com/wp-content/uploads/2009/09/socnet-start.png
  11. 11. Confidencial © UNEAR 2015 Tipos de bases NoSQL: Document ● Similar ao modelo Key-Value; ● Inspirado pelo Lotus Notes; ● Modelo de dados: Coleção de Chave-Valor; ● Exemplos: ○ MongoDB; ○ CouchDB; ○ Redis; Crédito: http://docs.couchbase.com/couchbase-devguide-2.0/images/relational_vs_doc1.png
  12. 12. Confidencial © UNEAR 2015 Teorema CAP ● Consistency ○ Todos os servidores apresentam o mesmo resultado. Fortemente presente em bases que implementam ACID. ● Availability ○ Garantia que todas as requisições irão receber alguma resposta. ● Partition tolerance ○ As propriedades são mantidas mesmo quando ocorre alguma oscilação na rede.
  13. 13. Confidencial © UNEAR 2015 Teorema CAP Crédito: http://blog.beany.co.kr/wp-content/uploads/2011/03/nosql_cap.png
  14. 14. Confidencial © UNEAR 2015 NoSQL resolve todos meus problemas?
  15. 15. Confidencial © UNEAR 2015 NoSQL resolve todos meus problemas? Não!!!!!
  16. 16. Confidencial © UNEAR 2015 NoSQL resolve todos meus problemas? Não!!!!! Polyglot Persistence
  17. 17. Confidencial © UNEAR 2015 MongoDB - Overview ● Orientado a documentos; ● Facilmente escalável verticalmente e horizontalmente; ● Boas ferramentas de gerenciamento (MongoDB Managment Service e Ops Manager); ● Comunidade que cresce muito rápido; ● Query Language simples;
  18. 18. Confidencial © UNEAR 2015 MongoDB - Overview Crédito: http://mongodb.org
  19. 19. Confidencial © UNEAR 2015 MongoDB - Overview Crédito: http://db-engines.com
  20. 20. Confidencial © UNEAR 2015 MongoDB - Overview Crédito: http://db-engines.com
  21. 21. Confidencial © UNEAR 2015 MongoDB x CouchDB MongoDB CouchDB Query Queries simples são simples de executar (db.documentos.find( {“name”:”david”}) Queries simples exigem que seja escrito uma query de Map/Reduce Armazenamento BSON (Binary JSON) JSON Coleções Divisão em várias collections “Coleção gigante” Replicação Master/Slave, automático failover. Master/Master
  22. 22. Confidencial © UNEAR 2015 MongoDB - Quem Utiliza?
  23. 23. Confidencial © UNEAR 2015 MongoDB - CRUD ● db.colecao.comando(params). Ex.: ○ db.funcionarios.insert( {“nome” : “david”, “area” : “produtos”}) ○ db.funcionarios.find( {“nome” : “david”}) ○ db.funcionarios.update({“nome” : “david”}, {$set : {“idade” : “30”}}) ○ db.funcionarios.remove(<query>) ● Diversos operadores para serem usados no find(), update()
  24. 24. Confidencial © UNEAR 2015 MongoDB - Schema Design ● Não é igual modelar para bancos relacionais; ● Afeta diretamente a performance da aplicação; ● Operações de escritas são atômicas; ● Schemaless; ● Embedded: ○ “Contém”; ● References (Normalized): ○ Complexos N-N;
  25. 25. Confidencial © UNEAR 2015 MongoDB - Performance ● Índices!!! ○ Múltiplos campos? Índices compostos!!! ● Usa o sort() constantemente? Crie um índice!!! ● Retornar apenas o que for utilizar; ● Limitar a quantidade de linhas retornadas - limit()/skip(); ● Utilize o método .explain() para obter estatísticas de uma coleção.
  26. 26. Confidencial © UNEAR 2015 MongoDB - Replicação ● Replica-set; ● Redundância e aumento da disponibilidade dos dados; Crédito: http://docs.mongodb.org/manual/_images/replica-set-primary-with-two-secondaries.png
  27. 27. Confidencial © UNEAR 2015 MongoDB - Sharding ● Particionamento dos dados: ○ Escala; ○ Balancear a carga de trabalho; ● Auto-gerenciável; Crédito: http://blog.optimal.io/assets/img/how-to-do-mongodb- sharding.png
  28. 28. Confidencial © UNEAR 2015 MongoDB - Aggregation Framework ● Processamento de operações no Mongo: ○ Aggregation Pipeline ■ Processamento em estágios; ■ Alternativa onde a complexidade do map reduce não é justificada; ○ Map Reduce: ■ Comando mapReduce; ■ Transformação de grande volumes de dados em informações úteis;
  29. 29. Confidencial © UNEAR 2015 MongoDB - Aggregation: Aggregation Pipeline Crédito: http://docs.mongodb.org/manual/_images/aggregation-pipeline.png
  30. 30. Confidencial © UNEAR 2015 MongoDB - Aggregation: Map Reduce Crédito: http://docs.mongodb.org/manual/_images/map- reduce.png
  31. 31. Confidencial © UNEAR 2015 MongoDB - Manutenção e Análise ● Tudo está lento? Observe o I/O do disco! ● O disco está ok: ○ Ative o profiling do banco! ● db.currentOp() para ver operações que não foram finalizadas; ● mongostat para ver informações do processo mongod; ○ Forneça RAM e CPU suficientes; ○ Use SSD!!!!! ● Outras informações na documentação! ○ http://docs.mongodb.org/manual/administration
  32. 32. Confidencial © UNEAR 2015 MongoDB - Ecossistema ● 11 drivers oficiais disponíveis para C, C++, C#, Java, NodeJS, Perl, PHP, Python, Motor, Ruby e Scala; ● Go e Erlang suportados pela comunidade; ● Integração nativa com Hadoop; ● humongous.io, UMongo, MongoVue, …; ● Comunidade open-souce;
  33. 33. Confidencial © UNEAR 2015 Referências ● http://mongodb.org ● http://mongodb.com ● http://www.thoughtworks.com/pt/insights/blog/nos ql-databases-overview ● http://martinfowler.com/bliki/PolyglotPersistence.ht ml ● http://www.aerospike.com/what-is-a-nosql-key- value-store/ ● http://rebelic.nl/2011/05/28/the-four-categories-of- nosql-databases/ ● http://kkovacs.eu/cassandra-vs-mongodb-vs- couchdb-vs-redis
  34. 34. Confidencial © UNEAR 2015 Links úteis ● http://martinfowler.com ● http://mongouniversity.com ● https://docs.mongodb.org/manual/
  35. 35. NoSQL e MongoDB

×