Download - Hello NoSQL World
Hello NoSQL World
PythonBrasil[8] @fmasanori
http://www.slideshare.net/fmasanori
@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)
• Interesses: Python, NoSQL, Google Technology, Facebook
Conhecendo os assistentes
• NoSQL?
• pymongo?
• redis-py?
• pycassa?
Agenda
• Dynamic/Flexible Schema
• Vertical Scalability
• Horizontal Scalability
• Document -> Mongo
• Key-value -> Redis
• Columnar -> Cassandra
• Demo
“Life begins at end of your
comfort zone” Neale Donald Walsch
Slide EuroPython 2012 Python, Flask e MongoDB depois
de 20 anos com .NET
“It’s better to think of NoSQL as a
movement rather
than a technology” Martin Fowler
NoSQL vale a pena
Job Trends (indeed.com)
Job Trends (indeed.com)
Job Trends (indeed.com)
O que as empresas esperam de um NoSQL?
Dynamic Schema
Flexible Schema
O que as empresas esperam de um NoSQL?
Relational DB
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
Relational DB
Martin Fowler
Costumers Orders
Martin Fowler
Aggregate Model
Costumers
Martin Fowler
Aggregate Model
Scalability
If I had asked people what they wanted, they would have said faster
horses. Henry Ford.
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...)
Escalabilidade vertical
Escalabilidade horizontal
Escalabilidade horizontal
Dois artigos famosos
• Bigtable: A distributed storage system for structured data, 2006
• Dynamo: Amazon’s highly available key-value store, 2007
Apache Hadoop
Not Only SQL
There is no best NoSQL
• JSON oriented • Autosharding • Full featured indexes
Dowload and install:
http://www.mongodb.org/downloads
Criar c:/data/db
Servidor:
bin/mongod
Cliente:
bin/mongo
Cliente pymongo:
http://api.mongodb.org/python/current/
import pymongo
Curso completo MongoDB com Python:
http://education.10gen.com/
Cassandra: • Linearly Scalable • Column based
Martin Fowler
Cassandra vs MySQL (50GB)
MySQL:
~300ms write
~350ms read
Cassandra:
~0.12ms write
~15ms read
Banco Relacional Tradicional
(Timo Elliott, SAP)
Banco Colunar
(Timo Elliott, SAP)
Download DataStax Community Edition
Servidor:
cassandra
Cliente:
cassandra-cli –h localhost –p 9160
Conflitos:
cassandra.bat (windows)
/etc/cassandra/cassandra-env.sh (ubuntu)
Cliente pycassa:
https://github.com/pycassa/pycassa/downloads
import pycassa
• Data Structure Server • In-memory dataset
• CPU performance 175X (96) • Os discos continuam iguais • Memory 1M faster • 1M = $1 (2000) x 1 cent (2010)
http://redis.io/download
https://github.com/MSOpenTech/redis
(for Windows)
Servidor:
redis-server
Cliente:
redis-cli
Cliente redis-py:
https://github.com/andymccurdy/redis-py
import redis
Talk is cheap.
Show me the code. Linus Torvalds
Servidor MongoDB
Servidor Cassandra
Servidor Cassandra
Servidor Redis
Dados Facebook e Twitter
Pymongo
Redis-py
Pycassa
Pymongo response
Redis-py response
Pycassa response
Bibliografia
Propaganda
“Hackeando o Facebook e o Twitter com Python” 31-jan 16h45-18h45