49
NoSQL e as vantagens na utilização do MongoDB Fabio Perrella - Locaweb

No sql e as vantagens na utilização do mongodb

Embed Size (px)

DESCRIPTION

Palestra que fiz na Univem em Marilia na VI Semana de Tecnologia da Informação. Falei sobre NoSql, vantagens e desvantagens na utilização do MongoDB

Citation preview

Page 1: No sql e as vantagens na utilização do mongodb

NoSQL e as vantagens na utilização do MongoDB

Fabio Perrella - Locaweb

Page 2: No sql e as vantagens na utilização do mongodb

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

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

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

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

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

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

NoSql

fonte: http://smist08.wordpress.com/tag/cap-theorem

Page 9: No sql e as vantagens na utilização do mongodb

Principais diferenças

Page 10: No sql e as vantagens na utilização do mongodb

SQL

Exemplos:- Mysql- Oracle - Postgres- SqlServer

Page 11: No sql e as vantagens na utilização do mongodb

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

SQL

Tabelas, linhas e colunas:

Page 13: No sql e as vantagens na utilização do mongodb

NoSQL (MongoDB)

Documentos:( BSON - binary Json )

Page 14: No sql e as vantagens na utilização do mongodb

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

NoSql

Embedded documents

Page 16: No sql e as vantagens na utilização do mongodb

NoSql

.. e também “relacionamentos”

Page 17: No sql e as vantagens na utilização do mongodb

Sql

Queries:

SELECT * table_x WHERE y=1 ORDER BY...

Page 18: No sql e as vantagens na utilização do mongodb

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
Page 20: No sql e as vantagens na utilização do mongodb

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

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

Exemplo de uso

Blog:- Posts- Comentários- Usuários

Page 23: No sql e as vantagens na utilização do mongodb

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

Exemplo de uso

Modelo orientado a documento

db.posts.find({ _id: 12 })

Page 25: No sql e as vantagens na utilização do mongodb

Vantagens do MongoDB

Page 26: No sql e as vantagens na utilização do mongodb

Vantagens do MongoDB

- Fácil instalação

apt-get install mongodb-10gen

Page 27: No sql e as vantagens na utilização do mongodb

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

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

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

Vantagens do MongoDB

- Replicação simples (Replica set)

Page 31: No sql e as vantagens na utilização do mongodb

Vantagens do MongoDB

- Orientado a documentos- Schema Free

⇒ Facilidades para os desenvolvedores!

Page 32: No sql e as vantagens na utilização do mongodb

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

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

Vantagens do MongoDB

- Agregation framework- Map-Reduce- group by- sum()- etc...

Page 35: No sql e as vantagens na utilização do mongodb

Vantagens do MongoDB

- MMS (MongoDB Management Service)

Page 36: No sql e as vantagens na utilização do mongodb

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

Desvantagens do MongoDB

:(

Page 38: No sql e as vantagens na utilização do mongodb

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

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

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

Desvantagens do MongoDB

- Custo alto com “parque” de servidores

Page 42: No sql e as vantagens na utilização do mongodb

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

Desvantagens do MongoDB

- Falta de transações

⇒ Inconsistências!

Page 44: No sql e as vantagens na utilização do mongodb

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

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

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

Desvantagens do MongoDB

- Pouca documentação*

Page 48: No sql e as vantagens na utilização do mongodb

Desvantagens do MongoDB

- Necessita de DBAs / Sysadmins especialistas em MongoDB, o que é raro no mercado.

⇒ 10gen oferece cursos para developers e sysadmins

Page 49: No sql e as vantagens na utilização do mongodb

[email protected]://fabioperrella.blogspot.com.brhttp://www.slideshare.net/fabioperrella56

Duvidas?