nosql na nuvem

39
NoSQL Na Nuvem Como aproveitar bancos NoSQL prontos para uso disponíveis para uso na nuvem

Upload: rodolfo-mendes

Post on 27-Jun-2015

141 views

Category:

Technology


4 download

DESCRIPTION

Utilizando NoSQL datastores na nuvem

TRANSCRIPT

Page 1: NoSQL Na Nuvem

NoSQL Na Nuvem

Como aproveitar bancos NoSQL prontos para uso

disponíveis para uso na nuvem

Page 2: NoSQL Na Nuvem

Tópicos Abordados

Conceitos iniciais:O que é Cloud Computing

Google App Engine:Armazenando dados com DB Datastore

Data-Modeling APIPythonJavaAplicações de Exemplo

Page 3: NoSQL Na Nuvem

Tópicos Abordados

Amazon SimpleDB:EstruturaAPI em diversas linguagens

Page 4: NoSQL Na Nuvem

Conceitos Iniciais

O que é Cloud Computing ?

Page 5: NoSQL Na Nuvem

Conceitos Iniciais

Afinal, o que é Cloud Computing ?

“Cloud computing refers to both the applications delivered as services over the Internet and the hardwareand systems software in the datacenters that provide those services”

[1]

Page 6: NoSQL Na Nuvem

Conceitos Iniciais

Categorias:

IaaS: Infra-estrutura

PaaS: Plataforma

SaaS: Software

Page 7: NoSQL Na Nuvem

Google App Engine

Criando aplicações e armazenando

dados com o GAE

Page 8: NoSQL Na Nuvem

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

Page 9: NoSQL Na Nuvem

Google App Engine

Linguages:PythonJavaPHPGo

StoragesDB DataStoreGoogle Cloud SQL

Page 10: NoSQL Na Nuvem

Google App Engine

“There is no free lunch”

Page 11: NoSQL Na Nuvem

Python SDK

Persistindo dadoscom a linguagem

Python

Page 12: NoSQL Na Nuvem

Python SDK

Python: Foi a primeira linguagem suportada pelo GAE

Dados modelados com mapeamento ORM

Aplicações construídas com webapp2

Page 13: NoSQL Na Nuvem

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

Page 14: NoSQL Na Nuvem

Python SDK

Mapeamento:Classes definem tipos de entidades

Cada objeto é uma entidade unicamente identificada

Key: caminho ancestral + ID

Page 15: NoSQL Na Nuvem

Python SDK

Identificação:ID numérico gerado pelo DataStore

Campo string indicado como chave

Chave completa é determinada pelo ID de cada entidade pai

Page 16: NoSQL Na Nuvem

Python SDK

Entidades:db.Expando: define entidades que podem receber campos dinamicamente

db.PolyModel: define um tipo de entidade que pode ser estendido

Page 17: NoSQL Na Nuvem

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

Page 18: NoSQL Na Nuvem

Python SDK

Exemplos:#criando uma entidade Task

#campos obrigatórios devem ser informados no construtortask = Task(

name=”seminario”,start_date=dateime(“20/11/2013”))

#demais campos podem ser informados depoistask.description = “seminario sobre NoSQL”task.tags = [“nosql”,”cloud”,”python”]

#persiste no datastoretask.put()

Page 19: NoSQL Na Nuvem

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')

Page 20: NoSQL Na Nuvem

Python SDK

Google Query Language:

Especifica consultas em termos de tipos de entidades e seus campos

Semelhante a SQL, porém mais restrita

Page 21: NoSQL Na Nuvem

Python SDK

Algumas restrições GQL:

Não permite listar camposSeleciona todos campos ou apenas a chave

Não permite joins

Page 22: NoSQL Na Nuvem

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”])

Page 23: NoSQL Na Nuvem

Python SDK

Índices:

Para cada propriedade o GAE pré-define um índice

Índices adicionais podem ser definidos no arquivo index.yaml

Page 24: NoSQL Na Nuvem

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

Page 25: NoSQL Na Nuvem

Java SDK

Persistindo dadoscom a linguagem

Java

Page 26: NoSQL Na Nuvem

Java SDK

Java: Amplamente difundida no desenvolvimento de aplicações comerciais

Oferece 2 abordagensJPA (Java Persistence API)JDO (Java Data Objects)

Page 27: NoSQL Na Nuvem

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

Page 28: NoSQL Na Nuvem

Java SDK

Exemplo:

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

Page 29: NoSQL Na Nuvem

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

Page 30: NoSQL Na Nuvem

Amazon SimpleDB

Persistindo dadoscom a linguagem

Java

Page 31: NoSQL Na Nuvem

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

Page 32: NoSQL Na Nuvem

Amazon SimpleDB

SimpleDB: Para utilizar, basta criar uma conta na Amazon Web Services

Obter uma chave de acesso

Interface Web disponível para download

Page 33: NoSQL Na Nuvem

Amazon SimpleDB

API REST: CreateDomain DeleteDomain ListDomains DomainMetadata

Page 34: NoSQL Na Nuvem

Amazon SimpleDB

API REST: PutAttributes BatchPutAttributes GetAttributes DeleteAttributes Select

Page 35: NoSQL Na Nuvem

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

Page 36: NoSQL Na Nuvem

Amazon SimpleDB

Exemplos:

#listar até 10 domínios (retorno)

<ListDomainsResponse><ListDomainsResult>

<DomainName>tasks</DomainName></ListDomainsResult>

</ListDomainsResponse>

Page 37: NoSQL Na Nuvem

Amazon SimpleDB

API REST: Os comandos podem ser gerados por ferramentas Amazon ScratchPad Java Ruby Python

Page 38: NoSQL Na Nuvem

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

Page 39: NoSQL Na Nuvem

Obrigado!

Rodolfo Martignon Sevilhano MendesTópicos Especiais em Bancos de Dados

e ImagensProf. Dr. Humberto Luiz Razente