pepe legal python e babalu mongodb, uma dupla dinâmica
DESCRIPTION
Vídeo: https://www.youtube.com/watch?v=iLTm5K2LJvI Introdução ao banco orientado à documentos MongoDB. NoSQL é um novo paradigma para banco de dados semi-estruturados. MongoDB e Python possuem a mesma "melodia" de desenvolvimento: flexibilidade no schema combina bem com tipagem dinâmica, ambas ajudando na produtividade do desenvolvedor. Entenda como esse banco orientado à documentos funciona na prática com um cliente Python.TRANSCRIPT
![Page 2: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/2.jpg)
Agenda
• Why this title?
• NoSQL
• Flexible Schema
• Horizontal Scalability
• MongoDB
• Some demos
• BI special case
• References
![Page 3: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/3.jpg)
Why this title?
Desenho fez sucesso no início dos anos 60 Mesma época em que SQL teve início
Palestra para old developer’s (or not so old)
![Page 4: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/4.jpg)
Como comecei com NoSQL
![Page 5: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/5.jpg)
• Na faculdade me ensinaram que tudo deveria ser normalizado
• E que o mundo era SQL
• No entanto:
– Comecei a dar aulas de BI (analytics), e denormalizar era incentivado
– Persistir dados de redes sociais bastante trabalhoso num relacional
Origem
![Page 6: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/6.jpg)
VENDAS
CLIENTE
TEMPO
PRODUTO
LOJAPROMOÇÃO
(Luiz H. N. Lorena, 2011)
Star Schema
![Page 7: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/7.jpg)
(Kimball, 2002)
Denormalizing
![Page 8: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/8.jpg)
(Kimball, 2002)
Denormalizing
![Page 9: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/9.jpg)
Operacional Analítico
Propósito Executar um processo Avaliar um processo
Estilo interação Insert, update, delete, query Query (read-only)
Escopo interação Transação individual Agregação
Padrão query Previsível e estável Imprevisível
Foco temporal Atual Histórico e atual
Otimização Update concorrente Query (agregação)
Projeto ER na 3FN Star Schema ou Cubo
(Adamson, 2010)
Operational x Analytics
![Page 10: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/10.jpg)
JSON persistence
![Page 11: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/11.jpg)
Casdinho
![Page 12: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/12.jpg)
Sentiment Analysis (Twitter)
menina: aaaaaaaaaaaaaa eu NAO GOSTO DELE
amiga: e vc ficará rica , e irá dividir sua riqueza cm sua amg aq *u*
menina: kkkkkk como assim eu fikar rica pq?
amiga: pq ele é inteligente , e vai arranjar um ótimo emprego , e
ganhar mt dinheiro rs
menina: kkkkk ele é inteligente como assim ??
amiga: AQUELE VIADO PASSOU NO CASDINHO, E EU NÃO !
![Page 13: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/13.jpg)
Sentiment Analysis (Twitter)
Obs.: não é o mesmo registro...
![Page 14: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/14.jpg)
Sentiment Analysis (Facebook)
Sabe o que é ter vontade de acordar cedo no domingo para estudar?!?
Bom, eu também não sei explicar, mas é o que estou sentindo no momento .-.
Bora Casdinho!
![Page 15: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/15.jpg)
Sentiment Analysis (Facebook)
Obs.: não é o mesmo registro...
![Page 16: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/16.jpg)
Campos opcionais
https://gist.github.com/4667205
Campo opcional no Facebook
![Page 17: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/17.jpg)
Social Data changes fast
![Page 18: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/18.jpg)
Snowflakes like documents
“Snowflakes represent documents, since every document is beautiful
and unique”.
MongoDB, The Definitive Guide.
![Page 19: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/19.jpg)
Non Relational
Non Relational
JSON DataBase
Dev like data
![Page 20: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/20.jpg)
JSON persistence
• MongoDB
• CouchDB
• RethinkDB
• PostgreSQL (SQL?)
![Page 21: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/21.jpg)
• Como persistir dados sem normalizar, sem um BD relacional?
• Somos “formatados” a pensar no modelo relacional
• “One size fits all”
NoSQL ?
![Page 22: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/22.jpg)
One Size Fits All
![Page 23: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/23.jpg)
“It’s better to think of NoSQL as a
movement rather
than a technology” Martin Fowler
NoSQL
![Page 24: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/24.jpg)
Dynamic Schema
O que as empresas esperam de um NoSQL?
![Page 25: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/25.jpg)
Flexible Schema
O que as empresas esperam de um NoSQL?
![Page 26: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/26.jpg)
Flexible Schema
Flexible Schema
Dev Productivity
![Page 27: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/27.jpg)
Relational DB
![Page 28: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/28.jpg)
Martin Fowler
Relational DB
![Page 29: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/29.jpg)
• The difference between the relational model and the in-memory data structures (Fowler)
• Limitations of relational DB: values only in tuples
• We need a more complex structure than a set of tuples as a data unit
Impedance mismatch
![Page 30: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/30.jpg)
Costumers Orders
Martin Fowler
Aggregate Model
![Page 31: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/31.jpg)
Costumers
Martin Fowler
Aggregate Model
![Page 32: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/32.jpg)
Questions vs Answers
RDBMS MongoDB
Data Storage Data Use
Answers Questions
Botton Up Top Down
![Page 33: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/33.jpg)
Scalability
![Page 34: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/34.jpg)
If I had asked people what they wanted, they would have said faster
horses. Henry Ford.
Scalability
![Page 35: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/35.jpg)
• Escalabilidade para leituras num banco relacional: trabalhoso
• Escalabilidade para escritas num banco relacional: MUITO, MUITO, trabalhoso
• (se conseguir seu BD deixou de ser relacional...)
Escalabilidade vertical
![Page 36: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/36.jpg)
Escalabilidade vertical
![Page 37: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/37.jpg)
Escalabilidade horizontal
![Page 38: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/38.jpg)
Escalabilidade horizontal
![Page 39: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/39.jpg)
“Eventual” pt-br: pode não ocorrer
“Eventual” inglês: irá ocorrer em breve
Eventually Consistent
![Page 40: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/40.jpg)
Eventually Consistent
Offline ATM have Eventually Consistent transactions
![Page 41: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/41.jpg)
Teorema CAP
Partition
Availability
Consistency
![Page 42: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/42.jpg)
NoSQL vale a pena
![Page 43: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/43.jpg)
• Bigtable: A distributed storage system for structured data, 2006
• Dynamo: Amazon’s highly available key-value store, 2007
Dois artigos famosos
![Page 44: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/44.jpg)
Apache Hadoop
![Page 45: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/45.jpg)
Not Only SQL
![Page 46: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/46.jpg)
Specialized Databases No “one size fits for all” DB
![Page 47: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/47.jpg)
• Open Source
• Document (JSON)
• Distributed
• Rich Query Language
• Great Community
• Full Text Search
MongoDB
![Page 48: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/48.jpg)
• Schema Design
• Full Featured Indexes
• Aggregation Framework
• Replication and Sharding
MongoDB
![Page 49: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/49.jpg)
Terminology
RDBMS MongoDB
Database Database
Table Collection
Row Document
Index Index
Join Embedded Doc
Foreign Key Reference
By 10gen
![Page 50: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/50.jpg)
Dynamic and Flexible
![Page 51: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/51.jpg)
MongoDB
Funcionalidade
Perf
orm
ance
memcached
relational
mongodb
![Page 52: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/52.jpg)
MongoDB
By MongoLab
![Page 53: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/53.jpg)
MongoDB
By MongoLab
![Page 54: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/54.jpg)
Easy Taxi Case
Demos
Obs.: link para seguir a oficina completa que dei no FISL
![Page 55: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/55.jpg)
MongoDB for BI
• Analytics are now popular among proprietary vendors
• SAP Sybase columnar In-Memory
• Oracle columnar In-Memory
• Why columnar for analytics?
• There is a advantage?
![Page 56: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/56.jpg)
• 3 years ago
• Benchmark LucidDB x MySQL for Business Intelligence applications
• LucidDB: columnar NoSQL for BI
• Analytic applications:
– Read only
– Massive aggregations
– Denormalization
LucidDB columnar example
![Page 57: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/57.jpg)
• Which movie genres generate the most revenue? (Q1)
• How is our revenue evolving over time? (Q2)
• At which time of day do costumers place the most orders? (Q3)
• How effective are the promotions we launch? (Q4)
Queries
![Page 58: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/58.jpg)
0
5000
10000
15000
20000
25000
30000
35000
Q1 Q2 Q3 Q4
LucidDB
MySQL
Average time (ms)
![Page 59: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/59.jpg)
(Timo Elliott, SAP)
Relational DB (row full scan)
![Page 60: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/60.jpg)
(Timo Elliott, SAP)
Columnar DB
![Page 61: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/61.jpg)
MongoDB for BI
• Is possible to MongoDB create indexes in any attribute
• Sharding Fact Table and duplicating Dimensions across replicas
• Perhaps there is no memory for all attribute indexes you need…
![Page 63: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/63.jpg)
Material para aprofundamento
![Page 64: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/64.jpg)
Schema Design (Emily Stolfo)
http://www.mongodb.com/presentations/schema-design-3
![Page 65: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/65.jpg)
Material para aprofundamento
![Page 66: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/66.jpg)
Bigliografia
![Page 67: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/67.jpg)
Bigliografia
![Page 68: Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica](https://reader033.vdocuments.site/reader033/viewer/2022052411/55625303d8b42a6c368b5115/html5/thumbnails/68.jpg)
Bigliografia
Google IO 2012 - SQL vs NoSQL Battle of the Backends