Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NoSQL e Python RuPy 2012

1,649 views

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

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

×