NoSQL Na
Nuvem
Como aproveitar bancos
NoSQL prontos para uso
disponíveis para uso
na nuvem
Tópicos Abordados
Conceitos iniciais:


O que é Cloud Computing

Google App Engine:
Armazenando dados com DB Datastore

...
Tópicos Abordados
Amazon SimpleDB:
Estrutura

API em diversas linguagens

Conceitos
Iniciais
O que é Cloud
Computing ?
Conceitos Iniciais
Afinal, o que é Cloud Computing ?
“Cloud computing refers to both
the applications delivered as service...
Conceitos Iniciais
Categorias:


IaaS: Infra-estrutura



PaaS: Plataforma



SaaS: Software
Google App
Engine
Criando aplicações
e armazenando
dados com o GAE
Google App Engine
Google App Engine:
PaaS: serviço que permite a criação de
aplicações Web

Abstração da infra-estrutura
...
Google App Engine
Linguages:



Python

Java

PHP

Go




Storages

DB DataStore

Google Cloud SQL
Google App Engine
“There is no free lunch”
Python SDK

Persistindo dados
com a linguagem
Python
Python SDK
Python:






Foi a primeira linguagem suportada
pelo GAE
Dados modelados com mapeamento
ORM
Aplicações cons...
Python SDK
Modelagem:




A classe db.Model fornece métodos
básicos de persistência
Subclasses de db.Property definem
ca...
Python SDK
Mapeamento:

Classes definem tipos de entidades
Cada objeto é uma entidade
unicamente identificada





Key:...
Python SDK
Identificação:

ID numérico gerado pelo DataStore
Campo string indicado como chave



Chave completa é determ...
Python SDK
Entidades:

db.Expando: define entidades que
podem receber campos
dinamicamente
db.PolyModel: define um tipo d...
Python SDK
Exemplos:
#modelando uma entidade
from google.appengine.ext import db

class Task(db.Model):
    name = db.Stri...
Python SDK
Exemplos:
#criando uma entidade Task
#campos obrigatórios devem ser informados no construtor
task = Task(
name=...
Python SDK
Exemplos:
#recuperando pela chave

key = db.Key.from_path('Task', 123456789)
task = db.Model.get(key)

#recuper...
Python SDK
Google Query Language:
Especifica consultas em termos de
tipos de entidades e seus campos



Semelhante a SQL,...
Python SDK
Algumas restrições GQL:
Não permite listar campos

Seleciona todos campos ou apenas
a chave




Não permite ...
Python SDK
Exemplo GQL:
q = db.GqlQuery(“SELECT * FROM Task” +
“WHERE start_date >= :1” +
“tags IN :2” +
“ORDER BY start_d...
Python SDK
Índices:
Para cada propriedade o GAE prédefine um índice



Índices adicionais podem ser
definidos no arquivo ...
Python SDK
Índices:

Cada índice é uma entrada
contendo o nome da entidade e uma
lista de campos
Exemplo:

    Indexes:  ...
Java SDK

Persistindo dados
com a linguagem
Java
Java SDK
Java:

Amplamente difundida no
desenvolvimento de aplicações
comerciais
Oferece 2 abordagens

JPA (Java Persist...
Java SDK
JPA:

É a API de persistência mais
utilizada pela comunidade Java
Originalmente concebida para
trabalhar com BDs...
Java SDK
Exemplo:
@Entity
public class Task implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTI...
Java SDK
Exemplos:
//criando um EntityManager
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("task­man...
Amazon
SimpleDB
Persistindo dados
com a linguagem
Java
Amazon SimpleDB
SimpleDB:

Uma instância é chamada de conta

Uma conta pode agrupar um ou
mais domínios

Cada domínio é...
Amazon SimpleDB
SimpleDB:

Para utilizar, basta criar uma conta
na Amazon Web Services
Obter uma chave de acesso



Inte...
Amazon SimpleDB
API REST:

CreateDomain

DeleteDomain

ListDomains

DomainMetadata
    
Amazon SimpleDB
API REST:

PutAttributes

BatchPutAttributes

GetAttributes

DeleteAttributes

Select

    
Amazon SimpleDB
Exemplos:
#listar até 10 domínios
GET /

?MaxNumberOfDomains=10
&Action=ListDomains
&Version=2009­04­15
&A...
Amazon SimpleDB
Exemplos:
#listar até 10 domínios (retorno)
<ListDomainsResponse>
<ListDomainsResult>
<DomainName>tasks</D...
Amazon SimpleDB
API REST:

Os comandos podem ser gerados
por ferramentas

Amazon ScratchPad

Java

Ruby
    

Python
Referências


Tiwari, Shashank; Professional NoSQL, Chapter 10

Google App Engine Documentation:
https://developers.googl...
Obrigado!

Rodolfo Martignon Sevilhano Mendes
Tópicos Especiais em Bancos de Dados e
Imagens
Prof. Dr. Humberto Luiz Razen...
Próximos SlideShares
Carregando em…5
×

NoSQL Na Nuvem

411 visualizações

Publicada em

Utilizando NoSQL datastores na nuvem

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
411
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  • NoSQL Na Nuvem

    1. 1. NoSQL Na Nuvem Como aproveitar bancos NoSQL prontos para uso disponíveis para uso na nuvem
    2. 2. Tópicos Abordados Conceitos iniciais:  O que é Cloud Computing Google App Engine: Armazenando dados com DB Datastore  Data-Modeling API  Python  Java  Aplicações de Exemplo 
    3. 3. Tópicos Abordados Amazon SimpleDB: Estrutura  API em diversas linguagens 
    4. 4. Conceitos Iniciais O que é Cloud Computing ?
    5. 5. Conceitos Iniciais Afinal, o que é Cloud Computing ? “Cloud computing refers to both the applications delivered as services over the Internet and the hardware and systems software in the data centers that provide those services” [1]
    6. 6. Conceitos Iniciais Categorias:  IaaS: Infra-estrutura  PaaS: Plataforma  SaaS: Software
    7. 7. Google App Engine Criando aplicações e armazenando dados com o GAE
    8. 8. Google App Engine Google App Engine: PaaS: serviço que permite a criação de aplicações Web  Abstração da infra-estrutura   Hosting: hospeda aplicações  SDK: API própria para desenvolvimento
    9. 9. Google App Engine Linguages:  Python  Java  PHP  Go   Storages  DB DataStore  Google Cloud SQL
    10. 10. Google App Engine “There is no free lunch”
    11. 11. Python SDK Persistindo dados com a linguagem Python
    12. 12. Python SDK Python:    Foi a primeira linguagem suportada pelo GAE Dados modelados com mapeamento ORM Aplicações construídas com webapp2
    13. 13. Python SDK Modelagem:   A classe db.Model fornece métodos básicos de persistência Subclasses de db.Property definem campos de vários tipos
    14. 14. Python SDK Mapeamento:  Classes definem tipos de entidades Cada objeto é uma entidade unicamente identificada   Key: caminho ancestral + ID
    15. 15. Python SDK Identificação:  ID numérico gerado pelo DataStore Campo string indicado como chave  Chave completa é determinada pelo ID de cada entidade pai 
    16. 16. Python SDK Entidades:  db.Expando: define entidades que podem receber campos dinamicamente db.PolyModel: define um tipo de entidade que pode ser estendido 
    17. 17. Python SDK Exemplos: #modelando uma entidade from google.appengine.ext import db class Task(db.Model):     name = db.StringProperty(required=True)     description = db.StringProperty()     start_date = db.DateProperty(required=True)     due_date = db.DateProperty()     end_date = db.DateProperty()     tags = db.StringListProperty()
    18. 18. Python SDK Exemplos: #criando uma entidade Task #campos obrigatórios devem ser informados no construtor task = Task( name=”seminario”, start_date=dateime(“20/11/2013”)) #demais campos podem ser informados depois task.description = “seminario sobre NoSQL” task.tags = [“nosql”,”cloud”,”python”] #persiste no datastore task.put()
    19. 19. Python SDK Exemplos: #recuperando pela chave key = db.Key.from_path('Task', 123456789) task = db.Model.get(key) #recuperando diretamente pelo ID task = db.Model.get_by_id(123456789) #recuperando por nome único task = db.Model.get_by_key_name('seminario10')
    20. 20. Python SDK Google Query Language: Especifica consultas em termos de tipos de entidades e seus campos  Semelhante a SQL, porém mais restrita 
    21. 21. Python SDK Algumas restrições GQL: Não permite listar campos  Seleciona todos campos ou apenas a chave   Não permite joins
    22. 22. Python SDK Exemplo GQL: q = db.GqlQuery(“SELECT * FROM Task” + “WHERE start_date >= :1” + “tags IN :2” + “ORDER BY start_date”, datetime.datetime(2011, 1, 1, 12, 0, 0).date(),  [“Important”, “Sample”] )
    23. 23. Python SDK Índices: Para cada propriedade o GAE prédefine um índice  Índices adicionais podem ser definidos no arquivo index.yaml 
    24. 24. Python SDK Índices:  Cada índice é uma entrada contendo o nome da entidade e uma lista de campos Exemplo:     Indexes:                 ­ kind: Task           Properties:          ­ name: start_date   ­ name: tags      
    25. 25. Java SDK Persistindo dados com a linguagem Java
    26. 26. Java SDK Java:  Amplamente difundida no desenvolvimento de aplicações comerciais Oferece 2 abordagens  JPA (Java Persistence API)  JDO (Java Data Objects)      
    27. 27. Java SDK JPA:  É a API de persistência mais utilizada pela comunidade Java Originalmente concebida para trabalhar com BDs relacionais  Realiza o mapeamento através de anotações de metadados      
    28. 28. Java SDK Exemplo: @Entity public class Task implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name="task_name") private String name; private String description; private Date startDate; private Date endDate; private Date dueDate; private List<String> tags;    //gets, sets, etc. }     
    29. 29. Java SDK Exemplos: //criando um EntityManager EntityManagerFactory emf = Persistence .createEntityManagerFactory("task­manager­ unit"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); Task task = new Task(); task.setName(“seminario”); task.setStartDate(new Date(20,11,2013)); em.merge(task); em.getTransaction().commit();     
    30. 30. Amazon SimpleDB Persistindo dados com a linguagem Java
    31. 31. Amazon SimpleDB SimpleDB:  Uma instância é chamada de conta  Uma conta pode agrupar um ou mais domínios  Cada domínio é uma coleção de items       Cada item é um conjunto de pares chave-valor
    32. 32. Amazon SimpleDB SimpleDB:  Para utilizar, basta criar uma conta na Amazon Web Services Obter uma chave de acesso  Interface Web disponível para download      
    33. 33. Amazon SimpleDB API REST:  CreateDomain  DeleteDomain  ListDomains  DomainMetadata     
    34. 34. Amazon SimpleDB API REST:  PutAttributes  BatchPutAttributes  GetAttributes  DeleteAttributes  Select     
    35. 35. Amazon SimpleDB Exemplos: #listar até 10 domínios GET / ?MaxNumberOfDomains=10 &Action=ListDomains &Version=2009­04­15 &AWSAccessKeyId=AKIAJ2BVRV5YHQHHXGPQ &SignatureVersion=2 &SignatureMethod=HmacSHA1 &Timestamp=2013­12­07T20%3A23%3A01.000Z &Signature=U0ebqdJGfXD8RAVK9h7eUd4FSpY%3D HTTP/1.1      Host: sdb.amazonaws.com
    36. 36. Amazon SimpleDB Exemplos: #listar até 10 domínios (retorno) <ListDomainsResponse> <ListDomainsResult> <DomainName>tasks</DomainName> </ListDomainsResult> </ListDomainsResponse>     
    37. 37. Amazon SimpleDB API REST:  Os comandos podem ser gerados por ferramentas  Amazon ScratchPad  Java  Ruby       Python
    38. 38. Referências  Tiwari, Shashank; Professional NoSQL, Chapter 10 Google App Engine Documentation: https://developers.google.com/appengine/docs/  Amazon Web Services Documentation: http://aws.amazon.com/documentation/  Exemplos: https://github.com/rodolfomendes/NoSQLCloud      
    39. 39. Obrigado! Rodolfo Martignon Sevilhano Mendes Tópicos Especiais em Bancos de Dados e Imagens Prof. Dr. Humberto Luiz Razente

    ×