NoSQL Na Nuvem

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

description

Utilizando NoSQL datastores na nuvem

Transcript of NoSQL Na Nuvem

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