SlideShare uma empresa Scribd logo
1 de 39
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

Data-Modeling API

Python

Java

Aplicações de Exemplo

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 services
over the Internet and the hardware
and systems software in the data
centers that provide those services”
[1]
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




Hosting: hospeda aplicações



SDK: API própria para desenvolvimento
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 construídas com webapp2
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
Python SDK
Mapeamento:

Classes definem tipos de entidades
Cada objeto é uma entidade
unicamente identificada





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



Chave completa é determinada pelo
ID de cada entidade pai


Python SDK
Entidades:

db.Expando: define entidades que
podem receber campos
dinamicamente
db.PolyModel: define um tipo de
entidade que pode ser estendido


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()
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()
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')
Python SDK
Google Query Language:
Especifica consultas em termos de
tipos de entidades e seus campos



Semelhante a SQL, porém mais
restrita

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



Não permite joins
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”]
)
Python SDK
Índices:
Para cada propriedade o GAE prédefine um índice



Índices adicionais podem ser
definidos no arquivo index.yaml


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      
Java SDK

Persistindo dados
com a linguagem
Java
Java SDK
Java:

Amplamente difundida no
desenvolvimento de aplicações
comerciais
Oferece 2 abordagens

JPA (Java Persistence API)

JDO (Java Data Objects)



    
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



    
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.
}

    
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();

    
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 é uma coleção de
items
    

Cada item é um conjunto de pares
chave-valor
Amazon SimpleDB
SimpleDB:

Para utilizar, basta criar uma conta
na Amazon Web Services
Obter uma chave de acesso



Interface Web disponível para
download



    
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
&AWSAccessKeyId=AKIAJ2BVRV5YHQHHXGPQ
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&Timestamp=2013­12­07T20%3A23%3A01.000Z
&Signature=U0ebqdJGfXD8RAVK9h7eUd4FSpY%3D HTTP/1.1

    

Host: sdb.amazonaws.com
Amazon SimpleDB
Exemplos:
#listar até 10 domínios (retorno)
<ListDomainsResponse>
<ListDomainsResult>
<DomainName>tasks</DomainName>
</ListDomainsResult>
</ListDomainsResponse>

    
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.google.com/appengine/docs/


Amazon Web Services Documentation:
http://aws.amazon.com/documentation/


Exemplos:
https://github.com/rodolfomendes/NoSQLCloud


    
Obrigado!

Rodolfo Martignon Sevilhano Mendes
Tópicos Especiais em Bancos de Dados e
Imagens
Prof. Dr. Humberto Luiz Razente

Mais conteúdo relacionado

Semelhante a NoSQL na Nuvem

Entity Framework 4
Entity Framework 4Entity Framework 4
Entity Framework 4CDS
 
Azure Functions e Logic Apps
Azure Functions e Logic AppsAzure Functions e Logic Apps
Azure Functions e Logic AppsResource IT
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
Cloud computing & Spring Framework
Cloud computing & Spring FrameworkCloud computing & Spring Framework
Cloud computing & Spring FrameworkJulio Viegas
 
Conta gratuita do Azure
Conta gratuita do AzureConta gratuita do Azure
Conta gratuita do AzureFabio Hara
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)Renato Groff
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Renato Groff
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019Gabriel Machado
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Backend em aplicações Android - Google I/O 2015
Backend em aplicações Android - Google I/O 2015Backend em aplicações Android - Google I/O 2015
Backend em aplicações Android - Google I/O 2015Thales Lima
 

Semelhante a NoSQL na Nuvem (20)

Entity Framework 4
Entity Framework 4Entity Framework 4
Entity Framework 4
 
Arquiteturas de Software para o Século XXI
Arquiteturas de Software para o Século XXIArquiteturas de Software para o Século XXI
Arquiteturas de Software para o Século XXI
 
Azure Functions e Logic Apps
Azure Functions e Logic AppsAzure Functions e Logic Apps
Azure Functions e Logic Apps
 
Visão Geral da Nuvem da AWS
Visão Geral da Nuvem da AWSVisão Geral da Nuvem da AWS
Visão Geral da Nuvem da AWS
 
Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
PHP no Google AppEngine
PHP no Google AppEnginePHP no Google AppEngine
PHP no Google AppEngine
 
Cloud computing & Spring Framework
Cloud computing & Spring FrameworkCloud computing & Spring Framework
Cloud computing & Spring Framework
 
Conta gratuita do Azure
Conta gratuita do AzureConta gratuita do Azure
Conta gratuita do Azure
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019
 
Beehive - Overview
Beehive - OverviewBeehive - Overview
Beehive - Overview
 
Desenvolvendo aplicacoes moveis com a Nuvem
Desenvolvendo aplicacoes moveis com a NuvemDesenvolvendo aplicacoes moveis com a Nuvem
Desenvolvendo aplicacoes moveis com a Nuvem
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Backend em aplicações Android - Google I/O 2015
Backend em aplicações Android - Google I/O 2015Backend em aplicações Android - Google I/O 2015
Backend em aplicações Android - Google I/O 2015
 

Mais de Rodolfo Mendes

Introdução a Data Science com Python
Introdução a Data Science com PythonIntrodução a Data Science com Python
Introdução a Data Science com PythonRodolfo Mendes
 
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesDescobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesRodolfo Mendes
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.ioRodolfo Mendes
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.ioRodolfo Mendes
 
Indexando e Ordenando Data Sets
Indexando e Ordenando Data SetsIndexando e Ordenando Data Sets
Indexando e Ordenando Data SetsRodolfo Mendes
 
Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Rodolfo Mendes
 

Mais de Rodolfo Mendes (6)

Introdução a Data Science com Python
Introdução a Data Science com PythonIntrodução a Data Science com Python
Introdução a Data Science com Python
 
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesDescobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.io
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.io
 
Indexando e Ordenando Data Sets
Indexando e Ordenando Data SetsIndexando e Ordenando Data Sets
Indexando e Ordenando Data Sets
 
Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1
 

NoSQL na Nuvem

Notas do Editor

  1. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  2. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  3. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  4. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  5. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  6. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  7. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  8. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  9. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  10. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  11. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  12. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  13. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  14. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  15. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  16. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  17. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  18. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  19. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  20. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  21. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  22. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  23. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  24. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  25. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  26. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  27. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  28. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.
  29. Em termos de tecnologia de índices, os data stores abordados não ofereceram nenhuma inovação.