possibilidades com python

48
Web, escalabilidade e NoSQL possibilidades com Python Gustavo Pinto @gustavopinto

Upload: gustavo-pinto

Post on 09-Jul-2015

594 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Possibilidades com python

Web, escalabilidade e NoSQL

possibilidades com Python

Gustavo Pinto@gustavopinto

Page 2: Possibilidades com python

gustavopinto

Page 3: Possibilidades com python

Web - integração de serviços

o que usar?

Page 4: Possibilidades com python

Web - integração de serviços

ReST:

Page 5: Possibilidades com python

Web - integração de serviços

ReST:

https://github.com/caelum/restfulie-python

Page 6: Possibilidades com python

Web - integração de serviços>>> response = Restfulie.at(resource_uri).get() >>> print response.body <palestra> <nome>Possibilidade com Python</nome> <evento>PythonBR</evento> <local>Amcham - Sao Paulo</local> <link rel="self" href="http://www.slideshare.com.br/gustavopinto/pythonBR" /> </order>

Page 7: Possibilidades com python
Page 8: Possibilidades com python

Web - social machines

API TwitterAPI Facebook

Page 9: Possibilidades com python

Api Twitter

Page 10: Possibilidades com python

Api Facebook

graph = facebook.GraphAPI(oauth_access_token)profile = graph.get_object("me")friends = graph.get_connections("me", "friends")graph.put_object(profile, "feed", message="Live from pythonBrasil[7] !")

https://github.com/facebook/python-sdk

Page 11: Possibilidades com python

Web - social machines

Page 12: Possibilidades com python

1- Release

Page 13: Possibilidades com python

Escalabilidade

"[...] sistemas que estão preparados para crescer."

Page 14: Possibilidades com python

Escalabilidade

"[...] sistemas que estão preparados para crescer."

Page 15: Possibilidades com python

Escalabilidade

"[...] sistemas que estão preparados para crescer."

Page 16: Possibilidades com python

Escalabilidade, plugável?

Page 17: Possibilidades com python

Escalabilidade, plugável?

Page 18: Possibilidades com python

Perguntas

●você faz caching?●você está preocupado com a

arquitetura multicore?●você conhece seu framework?

Page 19: Possibilidades com python

Caching

●Varnish●MemCached

Page 20: Possibilidades com python

Caching

●Varnish●MemCached

Page 21: Possibilidades com python

Caching

●Varnish●MemCached

Essa é sua necessidade?

Page 22: Possibilidades com python

Multicore - Paralelismo

Page 23: Possibilidades com python

Paralelismo

● uma aplicação single-threaded vai ser executada somente em um único processador, não importa quantos processadores estejam disponíveis.

700 R$

Page 24: Possibilidades com python

Paralelismo

● uma aplicação single-threaded vai ser executada somente em um único processador, não importa quantos processadores estejam disponíveis.

● lembrando que, concorrência != paralelismo

700 R$

Page 25: Possibilidades com python

Paralelismo

● Python built-in○ threading○ multiprocessing (Python 2.6)

● pypar● pyMPI● mpi4py

http://wiki.python.org/moin/ParallelProcessing

Page 26: Possibilidades com python

Paralelismo

def expo(x):return x ** 2

[expo (i) for i in range(100000)]

Page 27: Possibilidades com python

Paralelismo

from multiprocessing import Pool

def expo(x):return x ** 2

pool = Pool()roots = pool.map(expo, range(100000))print roots

Page 28: Possibilidades com python

Paralelismo

from multiprocessing import Pool

def expo(x):return x ** 2

pool = Pool()results = [pool.apply_async(expo, (x,))for x in range(100000)]roots = [r.get() for r in results]print roots

Page 29: Possibilidades com python

Paralelismo

from multiprocessing import Pool

def expo(x):return x ** 2

pool = Pool()results = [pool.apply_async(expo, (x,))for x in range(100000)]roots = [r.get() for r in results]print roots

Mas eu podia ter feito isso usando threads..

Page 30: Possibilidades com python
Page 31: Possibilidades com python

Framework

Page 32: Possibilidades com python

NoSQL

Mas, o que é NoSQL?

Page 33: Possibilidades com python

NoSQL

Mas, o que é NoSQL?

+

Page 34: Possibilidades com python

NoSQL

Mas, o que é NoSQL?

+

Page 35: Possibilidades com python

NoSQL

Mas, o que é NoSQL?

+

Page 36: Possibilidades com python

NoSQL

?

Page 37: Possibilidades com python
Page 38: Possibilidades com python

NoSQL

● top-level project ● desenhado para tratar volume de dados muito grande● espalhados através de vários servidores● fornecendo um serviço altamente disponível ● sem nenhum ponto único de falha.

Page 39: Possibilidades com python

NoSQL

● top-level project ● desenhado para tratar volume de dados muito grande● espalhados através de vários servidores● fornecendo um serviço altamente disponível ● sem nenhum ponto único de falha.

Page 40: Possibilidades com python

NoSQL

● top-level project ● desenhado para tratar volume de dados muito grande● espalhados através de vários servidores● fornecendo um serviço altamente disponível ● sem nenhum ponto único de falha.

Eventualmente consistente..

Page 41: Possibilidades com python

NoSQL

Page 42: Possibilidades com python

NoSQL

1

2

34

1. Keyspace2. Column Family3. Column Family Row4. Column

Page 43: Possibilidades com python

NoSQL - Cassandra (Thrift)

def main: socket = TSocket.TSocket("localhost", 9160)transport = TTransport.TBufferedTransport(socket)protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)client = Cassandra.Client(protocol)

Page 44: Possibilidades com python

NoSQL - Cassandra (Thrift)keyspace = "Keyspace1"column_path = ColumnPath(column_family="PrimeiroNivel", column="nome")

key = "1"value = "Gustavo Pinto"timestamp = time.time()

try:transport.open()client.insert(keyspace,key, column_path, value, timestamp,ConsistencyLevel.ZERO)

Page 45: Possibilidades com python

NoSQL - Cassandra (Thrift)

#read

column_parent = ColumnParent(column_family="PrimeiroNivel")slice_range = SliceRange(start="", finish="")predicate = SlicePredicate(slice_range=slice_range)result = client.get_slice(keyspace, key, column_parent, predicate, ConsistencyLevel.ONE)

Page 46: Possibilidades com python

NoSQL - Cassandra

Page 47: Possibilidades com python

NoSQL - Cassandra

mas, essa é a sua necessidade?

Page 48: Possibilidades com python