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

Post on 25-May-2015

2.670 Views

Category:

Technology

25 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

NoSQL e as vantagens na utilização do MongoDB

Fabio Perrella - Locaweb

Engenheiro de Computação - Poli USP 2004Lider Técnico de Desenvolvimento -

SaaS - Locaweb

Fabio Luiz Perrella

Agenda

- Definição NoSql- Diferenças entre Sql e NoSql- Exemplo de uso- Vantagens do MongoDB- Desvantagens

NoSql - Definição

- Not only Sql- Próxima geração de Banco de Dados

fonte: http://nosql-database.org

NoSql

Características:- não relacional- distribuído- open-source- escalável horizontalmente

fonte: http://nosql-database.org

NoSql

Mais algumas características:- schema-free- replicação simples- API simples- suporta grande quantidade de dados- eventualmente consistentefonte: http://nosql-database.org

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

NoSql

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

Principais diferenças

SQL

Exemplos:- Mysql- Oracle - Postgres- SqlServer

NoSqlExemplos:- Orientados a documentos:

- MongoDB, CouchDB, Cassandra- Chave valor:

- Redis, Memcache, etc…- Outros tipos..

SQL

Tabelas, linhas e colunas:

NoSQL (MongoDB)

Documentos:( BSON - binary Json )

Sql

Relacionamentos:

Fonte: http://www.codeproject.com/Articles/396822/Basic-Handling-and-Tips-of-Database-Relationships

NoSql

Embedded documents

NoSql

.. e também “relacionamentos”

Sql

Queries:

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

NoSql

- Object Based (MongoDB)- RESTful APIs (ElasticSearch)- Map-reduce / JS functions (CouchDB)….- NoSQL!

Sql

Transações ACID (Atomic Consistent Isolated Durable)⇒ Consistência!⇒ Table locks⇒ Peformance prejudicada⇒ Exemplo de uso: ERP

NoSql

Transações BASE(Basically Available, Soft State, Eventually

Consistent)⇒ Disponibilidade!⇒ Performance!⇒ Consistência eventual⇒ Exemplo de uso: Google search

Exemplo de uso

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

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

Exemplo de uso

Modelo orientado a documento

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

Vantagens do MongoDB

Vantagens do MongoDB

- Fácil instalação

apt-get install mongodb-10gen

Vantagens do MongoDB

- Open Source- Atualizações constantes- Suporte enterprise (caso necessário)- Comunidade ativa

Vantagens do MongoDB

- Drivers e ODM (object document mapper) para várias linguagens

Exemplo: Mongoid e Mongomapper para Ruby

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

Vantagens do MongoDB

- Replicação simples (Replica set)

Vantagens do MongoDB

- Orientado a documentos- Schema Free

⇒ Facilidades para os desenvolvedores!

Vantagens do MongoDB

- Performance- Escrita assíncrona configurável (write

concern levels)- Leitura de dados dos secundários

(configurável)

Vantagens do MongoDB

- Operações de update atômicas- inc- set- push- pop

Vantagens do MongoDB

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

Vantagens do MongoDB

- MMS (MongoDB Management Service)

Vantagens do MongoDB

- Treinamento online grátis oferecido pela 10gen!

http://education.mongodb.com

Desvantagens 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

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)

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

Desvantagens do MongoDB

- Custo alto com “parque” de servidores

Desvantagens do MongoDB

- Global write lock (agora por database)- Solução da 10gen: sharding!... e em alguns casos, habilitar leitura dos secundários

Desvantagens do MongoDB

- Falta de transações

⇒ Inconsistências!

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

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

Desvantagens do MongoDB

- Não tem queries!As vezes uma simples consulta requer um

código para executá-la

Desvantagens do MongoDB

- Pouca documentação*

Desvantagens do MongoDB

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

⇒ 10gen oferece cursos para developers e sysadmins

fabio.perrella@gmail.comhttp://fabioperrella.blogspot.com.brhttp://www.slideshare.net/fabioperrella56

Duvidas?

top related