Este documento fornece uma introdução aos bancos de dados não-relacionais MongoDB. Explica as diferenças entre bancos de dados relacionais e não-relacionais, apresenta uma breve história do MongoDB e seus principais recursos como armazenamento de documentos JSON e auto-sharding para escalabilidade. Também fornece instruções básicas para instalação e inicialização do MongoDB.
2. Quem sou eu
• Estagiário na SecrelNet;
• Desenvolvedor há 8 anos;
• Membro preguiçoso de comunidades;
• Apaixonado pelo que faço;
Eu com Jon "Maddog" Hall, CTO da Linux
International
8. SQL (StructuredQuery Language)
• Criada pela IBM em 1974
• Usada por todos os bancos relacionais
• Realiza todos os tipos de operações em um banco de dados
• Consultas mal escritas podem acarretar em gargalo
10. Um pouco de historia....
• Termo NoSQL criado 1998 porCarlo Strozzi
• Carlo Stozziconsiderava o SQL:
• Muito complexo
• Pouco portábil
• Limitado
• Com uma fraca usabilidade
• Criou a próprialinguagem baseado emOperator-Stream
Paradigm(Pipe)
Carlo Strozzi
Utilizava-se de recursos comoAWK, Perl e Grep para se
realizar a busca
11. No começo do NoSQL..
As tabelas eram arquivos textos
separados por tab
Uso de redirecionamento à esquerda para leitura dos dados
12. Um pouco de historia....
• Em 2004 foi lançadoo BigTable pela
Google.Seguido pelo Dynamo(Amazon)
em 2007 e pelo Cassandra(Facebook)em
2008
• Em 2009 foi realizado o primeiro grande
evento debancosNoSQLem San Fracisco,
patrocinadopela Last.FMcomparceria
comFacebookeLinkedin
• Tambémrecebeu o nomede NoREL (Not
Relational)
Programação 1º grande evento de NoSQL
13. Um pouco de historia....
Em 2008 usando MySQL (banco relacional) oTwitter ficou 84 horas offline
ao decorrer do ano. Já em 2009 após migrar para Cassandra esse tempo caiu
para 23 horas e 45 minutos.
Fonte: http://bit.ly/1yZ0cEn(ComputerWorld)
Fonte: http://bit.ly/1aZA0Or (InfoWorld)
16. • Lançado em Fevereiro de 2009 pela 10gen (hoje Mongo Inc.)
• Escrito em C++
• Opensource (código-aberto)
• Surgiu da palavra homongous (gigantesco)
• Orientado à documentos
• Mais de 9 milhões de downloads desde seu lançamento
20. Bancos Relacionaisx MongoDB
• MongoDB não possui nenhum tipo de relacionamento entre seus documentos
• Segue o modelo BASE (Basically Available, Soft state, Eventual consistency):
• Disponível otempo inteiro
• Disponível emestado leve
• Eventualmenteconsistente
• Facilmente escalonável
21. Motivo 1: Evita "AlterTables"
• Documentos não precisam seguir ter os mesmos atributos
• Como se cada linha da tabela fosse "independente"
• É função no DBA garantir que essa liberdade não vire bagunça
22. Motivo 2:Auto-sharding
• Consiste em utilizar mais de uma máquina para rodar todo o Banco de
Dados
• Processo trás uma série de vantagens:
• Otimiza o tempodas consultas
• Casoalguma das máquinastenha problema
• MongoDB possui sistemas de sharding automático
24. Motivo 3: Ótimo para Big Data
• O protocolo mais utilizado hoje porWeb Services é o JSON
• Acaba evitando ORM (Object-Relational Mapping) em diversas situações
25. Motivo 4: Simples porém Robusto
• BSON Query relativamente simples
• Não há preocupação com relacionamentos
• Ideal para iniciantes em NoSQL
27. Instalando o
Via linha de comando: (linhas de comando são legais)
Usuários de Linux baseados em Debian/Ubuntu:
Usuários de Linux baseados em RedHat/Fedora/CentOS:
Usuários de MacOSX:
Usuários de NPM (todos os Sistemas Operacionais) *Recomendado
28. Instalando o
Via linha de comando: (linhas de comando são legais)
Para usuários de Windows via Chocolatey:
Ou baixando diretamente do site xD
https://www.mongodb.org/downloads
30. Inicializandoo Mongo
1º passo: Inicialização do servidor do Mongo
2º passo:
* Para os fãs de terminal:
* Para os fãs de interface gráfica:
Abram o Robomongo
31. APIs para Mongo
•PyMongo (Python)
•Php_mongo (PHP)
•Mongo JDBC Driver (Java)
• Mongo Ruby Driver (Ruby)
• Mgo (Go)
Para outras linguagens consulte:
http://api.mongodb.org/