Introducao aos Recursos Civeis - 001-036 8ª edição - 2011 - 1ª parte
Introducao aos bancos_nao_relacionais_com_mongodb
-
Upload
fabio-theophilo -
Category
Software
-
view
18 -
download
2
Transcript of Introducao aos bancos_nao_relacionais_com_mongodb
![Page 1: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/1.jpg)
Introdução aos bancos não-relacionais com MongoDB
Unidev 1ª edição
![Page 2: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/2.jpg)
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
![Page 3: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/3.jpg)
Primeiro, vamos recapitular o que são bancos de dados relacionais
![Page 4: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/4.jpg)
![Page 5: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/5.jpg)
![Page 6: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/6.jpg)
Bancos grandes demais se tornam dificeis de se
manter
![Page 7: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/7.jpg)
Filosofia A.C.I.D
•Atomicity (Atômicidade)
•Consistency (Consistência)
• Isolation (Isolado)
•Durability (Durável)
* Bancos de dados precisam ser constantemente normalizados.
![Page 8: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/8.jpg)
SQL (Structured Query 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
![Page 9: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/9.jpg)
Revisão feita, agora vamos ver como são os banco não-relacionais
![Page 10: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/10.jpg)
Um pouco de historia....
• Termo NoSQL criado 1998 por Carlo Strozzi
• Carlo Stozzi considerava o SQL:
• Muito complexo
• Pouco portábil
• Limitado
• Com uma fraca usabilidade
• Criou a própria linguagem baseado em Operator-Stream Paradigm (Pipe)
Carlo StrozziUtilizava-se de recursos como AWK, Perl e Grep para se
realizar a busca
![Page 11: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/11.jpg)
No começo do NoSQL..
As tabelas eram arquivos textos separados por tab
Uso de redirecionamento à esquerda para leitura dos dados
![Page 12: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/12.jpg)
Um pouco de historia....
• Em 2004 foi lançado o BigTable pela Google. Seguido pelo Dynamo (Amazon) em 2007 e pelo Cassandra (Facebook) em 2008
• Em 2009 foi realizado o primeiro grande evento de bancos NoSQL em San Fracisco, patrocinado pela Last.FM com parceria com Facebook e Linkedin
• Também recebeu o nome de NoREL (Not Relational)
Programação 1º grande evento de NoSQL
![Page 13: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/13.jpg)
Um pouco de historia....
Em 2008 usando MySQL (banco relacional) o Twitter 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 (Computer World)
Fonte: http://bit.ly/1aZA0Or (InfoWorld)
![Page 14: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/14.jpg)
Hoje existe uma variedade de bancos NoSQL
![Page 15: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/15.jpg)
Agora vamos falarde coisa boa, vamos falar de
![Page 16: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/16.jpg)
• 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
![Page 17: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/17.jpg)
Quem utiliza?
![Page 18: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/18.jpg)
Schemas
• Utilizasse de BSON (Binary JSON)
Exemplo de JSON
![Page 19: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/19.jpg)
Beleza, beleza. Já entendi maaaaas....
![Page 20: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/20.jpg)
Bancos Relacionais x MongoDB
• MongoDB não possui nenhum tipo de relacionamento entre seus documentos
• Segue o modelo BASE (Basically Available, Soft state, Eventual consistency):
• Disponível o tempo inteiro
• Disponível em estado leve
• Eventualmente consistente
• Facilmente escalonável
![Page 21: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/21.jpg)
Motivo 1: Evita "Alter Tables"
• 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
![Page 22: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/22.jpg)
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 tempo das consultas
• Caso alguma das máquinas tenha problema
• MongoDB possui sistemas de sharding automático
![Page 23: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/23.jpg)
Motivo 2: Auto-sharding
![Page 24: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/24.jpg)
Motivo 3: Ótimo para Big Data
• O protocolo mais utilizado hoje por Web Services é o JSON
• Acaba evitando ORM (Object-Relational Mapping) em diversas situações
![Page 25: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/25.jpg)
Motivo 4: Simples porém Robusto
• BSON Query relativamente simples
• Não há preocupação com relacionamentos
• Ideal para iniciantes em NoSQL
![Page 26: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/26.jpg)
Iniciando no
![Page 27: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/27.jpg)
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
![Page 28: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/28.jpg)
Instalando o
Via linha de comando: (linhas de comando são legais)
Para usuários de Windows via Chocolatey:
Ou baixando diretamente do site xDhttps://www.mongodb.org/downloads
![Page 29: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/29.jpg)
Instalando cliente gráfico
http://robomongo.org/
![Page 30: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/30.jpg)
Inicializando o 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
![Page 31: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/31.jpg)
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/
![Page 32: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/32.jpg)
Quem sabe faz ao vivo!
![Page 33: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/33.jpg)
![Page 34: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/34.jpg)
Agora é a hora....
![Page 35: Introducao aos bancos_nao_relacionais_com_mongodb](https://reader031.fdocument.pub/reader031/viewer/2022020123/55c952bdbb61eb18178b45cb/html5/thumbnails/35.jpg)
Me sigam :D
https://github.com/Ziggoto
http://pt.slideshare.net/ziggoto