Upload
fernando-masanori
View
1.243
Download
1
Tags:
Embed Size (px)
DESCRIPTION
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.
Citation preview
NoSQL e Python @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
@fmasanori
• Python?
• NoSQL?
• pymongo?
• redis-py?
• pycassa?
Conhecendo os assistentes
• Como comecei com NoSQL
• LucidDB: my first NoSQL experiment
• Flexible Schema
• Horizontal Scalability
• MongoDB (document)
• Redis (key-value)
• Cassandra (columnar)
• Demo
Agenda
Como comecei com NoSQL
• Me ensinaram que tudo deveria ser normalizado...
• E que o mundo era SQL
• Mas um dia tive problemas:
– Analytics
– Twitter and Facebook data persistence
One Simple Idea
• 3 years ago
• Benchmark LucidDB x MySQL for Business Intelligence applications
• LucidDB: columnar NoSQL for BI
• Analytic applications:
– Read only
– Massive aggregations
– Denormalization
LucidDB
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)
Queries
Average time (ms)
0
5000
10000
15000
20000
25000
30000
35000
Q1 Q2 Q3 Q4
LucidDB
MySQL
JSON persistence
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 !
Sentiment Analysis (Twitter)
• 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!
Sentiment Analysis (Facebook)
Social Data Change Fast
“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
Empregabilidade
Empregabilidade
Empregabilidade
Dynamic Schema
O que as empresas esperam de um NoSQL?
Flexible Schema
O que as empresas esperam de um NoSQL?
Relational DB
Martin Fowler
Relational DB
• 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
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 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 vertical
Escalabilidade horizontal
Escalabilidade horizontal
• Bigtable: A distributed storage system for structured data, 2006
• Dynamo: Amazon’s highly available key-value store, 2007
Dois artigos famosos
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/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/
• 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/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
Cassandra: • Linearly Scalable • Column based • CQL
Martin Fowler
MySQL:
~300ms write
~350ms read
Cassandra:
~0.12ms write
~15ms read
Cassandra vs MySQL (50GB)
(Timo Elliott, SAP)
Relational DB
Columnar DB
(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
Talk is cheap.
Show me the code. Linus Torvalds
MongoDB Server
Cassandra Server
Cassandra Server
Redis Server
Obs.: não aparece o token de autenticação
Twitter and Facebook data
Pymongo
Redis-py
Pycassa
Pymongo response
Redis-py response
Pycassa response
Bigliografia
Bigliografia
Bigliografia
Google IO 2012 - SQL vs NoSQL Battle of the Backends