0
NoSQL e Python    @fmasanori
@fmasanori•   Graduado IME-USP e Mestrado ITA•   ed e lint Cobra Tecnologia•   Software Express•   Credicard Mastercard•  ...
Conhecendo os assistentes•   Python?•   NoSQL?•   pymongo?•   redis-py?•   pycassa?
Agenda• Como comecei com NoSQL• LucidDB: my first NoSQL  experiment• Flexible Schema• Horizontal Scalability• MongoDB (doc...
Como comecei com NoSQL
One Simple Idea• Me ensinaram que tudo deveria ser  normalizado...• E que o mundo era SQL• Mas um dia tive problemas:  – A...
LucidDB• 3 years ago• Benchmark LucidDB x MySQL for  Business Intelligence applications• LucidDB: columnar NoSQL for BI• A...
Queries              Queries• Which movie genres generate the most  revenue? (Q1)• How is our revenue evolving over time? ...
Average time (ms)35000300002500020000                                      LucidDB15000                                 My...
JSON persistence
Sentiment Analysis (Twitter)menina: aaaaaaaaaaaaaa eu NAO GOSTO DELEamiga: e vc ficará rica , e irá dividir sua riqueza cm...
Sentiment Analysis (Facebook)• Sabe o que é ter vontade de acordar cedo no  domingo para estudar?!?• Bom, eu também não se...
Social Data Change Fast
“Life begins at   end of your comfort zone”                   Neale Donald Walsch     Slide EuroPython 2012Python, Flask e...
“It’s better to think of       NoSQL as a   movement rather  than a technology”                  Martin Fowler
NoSQL vale a pena
Empregabilidade
Empregabilidade
Empregabilidade
O que as empresas esperam de um            NoSQL?      Dynamic Schema
O que as empresas esperam de um            NoSQL?      Flexible Schema
Relational DB
Relational DB                Martin Fowler
Impedance mismatch• The difference between the  relational model and the in-  memory data structures (Fowler)• Limitations...
Aggregate ModelCostumers Orders    Martin Fowler
Aggregate ModelCostumers    Martin Fowler
Scalability
If I had asked peoplewhat they wanted, theywould have said faster        horses.                 Henry Ford.
Escalabilidade vertical• Escalabilidade para leituras num banco  relacional: trabalhoso• Escalabilidade para escritas num ...
Escalabilidade vertical
Escalabilidade horizontal
Escalabilidade horizontal
Dois artigos famosos• Bigtable: A distributed storage  system for structured data, 2006• Dynamo: Amazon’s highly available...
Apache Hadoop
Not Only SQL
There is no best NoSQL
•   JSON oriented•   Autosharding•   Full featured indexes•   Great community
Dowload and install:http://www.mongodb.org/downloadsCriar c:/data/dbServidor: bin/mongodCliente: bin/mongoCliente pymongo:...
• Data Structure Server• In-memory dataset• Persistence options
• CPU performance 175X (96)• Os discos continuam iguais• Memory 1M faster• 1M = $1 (2000) x 1 cent (2010)
http://redis.io/downloadhttps://github.com/MSOpenTech/redis  (for Windows)Servidor: redis-serverCliente: redis-cliCliente ...
Cassandra: • Linearly Scalable • Column based • CQL
Martin Fowler
Cassandra vs MySQL (50GB)MySQL: ~300ms write ~350ms readCassandra: ~0.12ms write ~15ms read
Relational DB                (Timo Elliott, SAP)
Columnar DB              (Timo Elliott, SAP)
Download DataStax Community EditionServidor: cassandraCliente: cassandra-cli –h localhost –p 9160Conflitos: cassandra.bat ...
Talk is cheap.Show me the code.             Linus Torvalds
MongoDB Server
Cassandra Server
Cassandra Server
Redis Server
Twitter and Facebook dataObs.: não aparece o token de autenticação
Pymongo
Redis-py
Pycassa
Pymongo response
Redis-py response
Pycassa response
Bigliografia
Bigliografia
BigliografiaGoogle IO 2012 - SQL vs NoSQL   Battle of the Backends
Perguntas? fmasanori@gmail.comfacebook.com/fmasanori twitter.com/fmasanori
NoSQL e Python RuPy 2012
NoSQL e Python RuPy 2012
Upcoming SlideShare
Loading in...5
×

NoSQL e Python RuPy 2012

1,273

Published on

http://www.youtube.com/watch?v=EGDv8jctVqw
Introdução ao MongoDB, Redis e Cassandra através de Python. Quais as características principais de um banco orientado a documentos, chave-valor e colunar. Que vantagens esses bancos possuem em relação a um banco relacional tradicional. No final farei uma aplicação que persiste dados do Twitter e Facebook nos três bancos mencionados.

Published in: Education, Technology

Transcript of "NoSQL e Python RuPy 2012"

  1. 1. NoSQL e Python @fmasanori
  2. 2. @fmasanori• Graduado IME-USP e Mestrado ITA• ed e lint Cobra Tecnologia• Software Express• Credicard Mastercard• PriceWaterhouseCoopers• ITAU BankBoston• Docente FATEC SJC (amo dar aulas): – Business Intelligence/Data Warehouse – NoSQL databases• Interesses: Python, NoSQL, Google Technology, Facebook
  3. 3. Conhecendo os assistentes• Python?• NoSQL?• pymongo?• redis-py?• pycassa?
  4. 4. Agenda• Como comecei com NoSQL• LucidDB: my first NoSQL experiment• Flexible Schema• Horizontal Scalability• MongoDB (document)• Redis (key-value)• Cassandra (columnar)• Demo
  5. 5. Como comecei com NoSQL
  6. 6. One Simple Idea• Me ensinaram que tudo deveria ser normalizado...• E que o mundo era SQL• Mas um dia tive problemas: – Analytics – Twitter and Facebook data persistence
  7. 7. LucidDB• 3 years ago• Benchmark LucidDB x MySQL for Business Intelligence applications• LucidDB: columnar NoSQL for BI• Analytic applications: – Read only – Massive aggregations – Denormalization
  8. 8. Queries Queries• 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)
  9. 9. Average time (ms)35000300002500020000 LucidDB15000 MySQL100005000 0 Q1 Q2 Q3 Q4
  10. 10. JSON persistence
  11. 11. Sentiment Analysis (Twitter)menina: aaaaaaaaaaaaaa eu NAO GOSTO DELEamiga: 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 , eganhar mt dinheiro rsmenina: kkkkk ele é inteligente como assim ??amiga: AQUELE VIADO PASSOU NO CASDINHO, E EU NÃO !
  12. 12. 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!
  13. 13. Social Data Change Fast
  14. 14. “Life begins at end of your comfort zone” Neale Donald Walsch Slide EuroPython 2012Python, Flask e MongoDB depois de 20 anos com .NET
  15. 15. “It’s better to think of NoSQL as a movement rather than a technology” Martin Fowler
  16. 16. NoSQL vale a pena
  17. 17. Empregabilidade
  18. 18. Empregabilidade
  19. 19. Empregabilidade
  20. 20. O que as empresas esperam de um NoSQL? Dynamic Schema
  21. 21. O que as empresas esperam de um NoSQL? Flexible Schema
  22. 22. Relational DB
  23. 23. Relational DB Martin Fowler
  24. 24. Impedance mismatch• 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
  25. 25. Aggregate ModelCostumers Orders Martin Fowler
  26. 26. Aggregate ModelCostumers Martin Fowler
  27. 27. Scalability
  28. 28. If I had asked peoplewhat they wanted, theywould have said faster horses. Henry Ford.
  29. 29. Escalabilidade vertical• Escalabilidade para leituras num banco relacional: trabalhoso• Escalabilidade para escritas num banco relacional: MUITO, MUITO, trabalhoso• (se conseguir seu BD deixou de ser relacional...)
  30. 30. Escalabilidade vertical
  31. 31. Escalabilidade horizontal
  32. 32. Escalabilidade horizontal
  33. 33. Dois artigos famosos• Bigtable: A distributed storage system for structured data, 2006• Dynamo: Amazon’s highly available key-value store, 2007
  34. 34. Apache Hadoop
  35. 35. Not Only SQL
  36. 36. There is no best NoSQL
  37. 37. • JSON oriented• Autosharding• Full featured indexes• Great community
  38. 38. Dowload and install:http://www.mongodb.org/downloadsCriar c:/data/dbServidor: bin/mongodCliente: bin/mongoCliente pymongo:http://api.mongodb.org/python/current/ import pymongoCurso completo MongoDB com Python:http://education.10gen.com/
  39. 39. • Data Structure Server• In-memory dataset• Persistence options
  40. 40. • CPU performance 175X (96)• Os discos continuam iguais• Memory 1M faster• 1M = $1 (2000) x 1 cent (2010)
  41. 41. http://redis.io/downloadhttps://github.com/MSOpenTech/redis (for Windows)Servidor: redis-serverCliente: redis-cliCliente redis-py:https://github.com/andymccurdy/redis-py import redis
  42. 42. Cassandra: • Linearly Scalable • Column based • CQL
  43. 43. Martin Fowler
  44. 44. Cassandra vs MySQL (50GB)MySQL: ~300ms write ~350ms readCassandra: ~0.12ms write ~15ms read
  45. 45. Relational DB (Timo Elliott, SAP)
  46. 46. Columnar DB (Timo Elliott, SAP)
  47. 47. Download DataStax Community EditionServidor: cassandraCliente: cassandra-cli –h localhost –p 9160Conflitos: cassandra.bat (windows) /etc/cassandra/cassandra-env.sh (ubuntu)Cliente pycassa:https://github.com/pycassa/pycassa/ downloads import pycassa
  48. 48. Talk is cheap.Show me the code. Linus Torvalds
  49. 49. MongoDB Server
  50. 50. Cassandra Server
  51. 51. Cassandra Server
  52. 52. Redis Server
  53. 53. Twitter and Facebook dataObs.: não aparece o token de autenticação
  54. 54. Pymongo
  55. 55. Redis-py
  56. 56. Pycassa
  57. 57. Pymongo response
  58. 58. Redis-py response
  59. 59. Pycassa response
  60. 60. Bigliografia
  61. 61. Bigliografia
  62. 62. BigliografiaGoogle IO 2012 - SQL vs NoSQL Battle of the Backends
  63. 63. Perguntas? fmasanori@gmail.comfacebook.com/fmasanori twitter.com/fmasanori
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×