![Page 1: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/1.jpg)
NoSQL e as vantagens na utilização do MongoDB
Fabio Perrella - Locaweb
![Page 2: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/2.jpg)
Engenheiro de Computação - Poli USP 2004Lider Técnico de Desenvolvimento -
SaaS - Locaweb
Fabio Luiz Perrella
![Page 3: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/3.jpg)
Agenda
- Definição NoSql- Diferenças entre Sql e NoSql- Exemplo de uso- Vantagens do MongoDB- Desvantagens
![Page 4: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/4.jpg)
NoSql - Definição
- Not only Sql- Próxima geração de Banco de Dados
fonte: http://nosql-database.org
![Page 5: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/5.jpg)
NoSql
Características:- não relacional- distribuído- open-source- escalável horizontalmente
fonte: http://nosql-database.org
![Page 6: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/6.jpg)
NoSql
Mais algumas características:- schema-free- replicação simples- API simples- suporta grande quantidade de dados- eventualmente consistentefonte: http://nosql-database.org
![Page 7: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/7.jpg)
NoSql
Eventualmente consistente. Teorema CAP:- Consistência- Disponibilidade- Tolerância a PartiçãoSó conseguimos escolher 2 destes!http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
![Page 8: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/8.jpg)
NoSql
fonte: http://smist08.wordpress.com/tag/cap-theorem
![Page 9: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/9.jpg)
Principais diferenças
![Page 10: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/10.jpg)
SQL
Exemplos:- Mysql- Oracle - Postgres- SqlServer
![Page 11: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/11.jpg)
NoSqlExemplos:- Orientados a documentos:
- MongoDB, CouchDB, Cassandra- Chave valor:
- Redis, Memcache, etc…- Outros tipos..
![Page 12: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/12.jpg)
SQL
Tabelas, linhas e colunas:
![Page 13: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/13.jpg)
NoSQL (MongoDB)
Documentos:( BSON - binary Json )
![Page 14: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/14.jpg)
Sql
Relacionamentos:
Fonte: http://www.codeproject.com/Articles/396822/Basic-Handling-and-Tips-of-Database-Relationships
![Page 15: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/15.jpg)
NoSql
Embedded documents
![Page 16: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/16.jpg)
NoSql
.. e também “relacionamentos”
![Page 17: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/17.jpg)
Sql
Queries:
SELECT * table_x WHERE y=1 ORDER BY...
![Page 18: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/18.jpg)
NoSql
- Object Based (MongoDB)- RESTful APIs (ElasticSearch)- Map-reduce / JS functions (CouchDB)….- NoSQL!
![Page 19: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/19.jpg)
![Page 20: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/20.jpg)
Sql
Transações ACID (Atomic Consistent Isolated Durable)⇒ Consistência!⇒ Table locks⇒ Peformance prejudicada⇒ Exemplo de uso: ERP
![Page 21: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/21.jpg)
NoSql
Transações BASE(Basically Available, Soft State, Eventually
Consistent)⇒ Disponibilidade!⇒ Performance!⇒ Consistência eventual⇒ Exemplo de uso: Google search
![Page 22: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/22.jpg)
Exemplo de uso
Blog:- Posts- Comentários- Usuários
![Page 23: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/23.jpg)
Exemplo de uso
Modelo relacional
SELECT * FROM posts p INNER JOIN comments c ON p.id = c.post_id INER JOIN users u on c.user_id = u.id
![Page 24: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/24.jpg)
Exemplo de uso
Modelo orientado a documento
db.posts.find({ _id: 12 })
![Page 25: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/25.jpg)
Vantagens do MongoDB
![Page 26: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/26.jpg)
Vantagens do MongoDB
- Fácil instalação
apt-get install mongodb-10gen
![Page 27: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/27.jpg)
Vantagens do MongoDB
- Open Source- Atualizações constantes- Suporte enterprise (caso necessário)- Comunidade ativa
![Page 28: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/28.jpg)
Vantagens do MongoDB
- Drivers e ODM (object document mapper) para várias linguagens
Exemplo: Mongoid e Mongomapper para Ruby
![Page 29: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/29.jpg)
Vantagens do MongoDB
- Sharding automático e de fácil configuração
fonte: http://3.bp.blogspot.com/-aa2XhG7okKo/TzzjKOtPd_I/AAAAAAAAI0g/okMlHXFqitc/s1600/mongo_shard.png
![Page 30: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/30.jpg)
Vantagens do MongoDB
- Replicação simples (Replica set)
![Page 31: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/31.jpg)
Vantagens do MongoDB
- Orientado a documentos- Schema Free
⇒ Facilidades para os desenvolvedores!
![Page 32: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/32.jpg)
Vantagens do MongoDB
- Performance- Escrita assíncrona configurável (write
concern levels)- Leitura de dados dos secundários
(configurável)
![Page 33: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/33.jpg)
Vantagens do MongoDB
- Operações de update atômicas- inc- set- push- pop
![Page 34: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/34.jpg)
Vantagens do MongoDB
- Agregation framework- Map-Reduce- group by- sum()- etc...
![Page 35: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/35.jpg)
Vantagens do MongoDB
- MMS (MongoDB Management Service)
![Page 36: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/36.jpg)
Vantagens do MongoDB
- Treinamento online grátis oferecido pela 10gen!
http://education.mongodb.com
![Page 37: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/37.jpg)
Desvantagens do MongoDB
:(
![Page 38: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/38.jpg)
Desvantagens do MongoDB
- Alto uso de espaço em disco- Para cada linha precisa guardar o nome das “colunas”- Tamanho do nome das “coluna” influencia
![Page 39: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/39.jpg)
Desvantagens do MongoDB
- Alto uso de memória RAM- Índices devem caber na memória RAM- Working-set preferencialmente deve caber
na memória RAM
⇒ Alternativa: SSD (ou $$D)
![Page 40: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/40.jpg)
Desvantagens do MongoDB
- Custo alto com “parque” de servidores- Cada shard requer no mínimo 3 servidores para replica set (as máquinas devem ter o mesmo perfil de preferência)- Alternativa: Replica set Arbiter- No mínimo 3 config servers
![Page 41: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/41.jpg)
Desvantagens do MongoDB
- Custo alto com “parque” de servidores
![Page 42: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/42.jpg)
Desvantagens do MongoDB
- Global write lock (agora por database)- Solução da 10gen: sharding!... e em alguns casos, habilitar leitura dos secundários
![Page 43: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/43.jpg)
Desvantagens do MongoDB
- Falta de transações
⇒ Inconsistências!
![Page 44: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/44.jpg)
Desvantagens do MongoDB
- Manutenção e operação difícil- Compactação dos dados- Re-index dos índices- Replica sets que caem- Queries pesadas que travam o banco
![Page 45: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/45.jpg)
Desvantagens do MongoDB
- Manutenção e operação difícil- Não tem backup diferencial. Em alguns
casos o Replica Set acaba sendo mais fácil- Adicionar shardings pode degradar
performance temporiariamente
![Page 46: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/46.jpg)
Desvantagens do MongoDB
- Não tem queries!As vezes uma simples consulta requer um
código para executá-la
![Page 47: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/47.jpg)
Desvantagens do MongoDB
- Pouca documentação*
![Page 48: No sql e as vantagens na utilização do mongodb](https://reader031.vdocuments.site/reader031/viewer/2022012317/5562536dd8b42aa52d8b5220/html5/thumbnails/48.jpg)
Desvantagens do MongoDB
- Necessita de DBAs / Sysadmins especialistas em MongoDB, o que é raro no mercado.
⇒ 10gen oferece cursos para developers e sysadmins