SlideShare uma empresa Scribd logo
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Daniela Binatti | CTO | Pismo
Regis Gimenis | Sr. Consultant | AWS Professional Services
Deep Dive em
Amazon DynamoDB
Agenda
 Componentes do DynamoDB
 Modelagem de dados
 Cenários e recomendações
 Estudo de caso:
Amazon DynamoDB
 Serviço gerenciado de banco de dados NoSQL
 Alta escalabilidade
 Alta disponibilidade
 Desempenho rápido e consistente
 Flexível, compatível com estruturas de dados de
documentos e chave-valor
 API simples e poderosa
Tabelas e Partições
Tabelas do DynamoDB
Tabelas
Itens
Atributos
Chave de
Partição
Chave de
Ordenação
Mandatória
Padrão de acesso chave-valor
Define a distribuição dos dados
Opcional
Relacionamentos 1:N
Habilita consultas ricas
Todos os itens
==, <, >, >=, <=
“begins with”
“between”
resultados ordenados
contagens
primeiros/últimos valores
respostas paginadas
DynamoDB APIs
CreateTable
UpdateTable
DeleteTable
DescribeTable
ListTables
UpdateTimeToLive
DescribeTimeToLive
GetItem
Query
Scan
BatchGetItem
_______________
PutItem
UpdateItem
DeleteItem
BatchWriteItem
ListStreams
DescribeStream
GetShardIterator
GetRecords
Stream APITabela Item
Tipos de dados
String (S)
Number (N)
Binary (B)
String Set (SS)
Number Set (NS)
Binary Set (BS)
Boolean (BOOL)
Null (NULL)
List (L)
Map (M)
Utilizados para armazenar documentos JSON
00 55 A954 AA FF
Tabelas com chave de partição
Chave de partição identifica unicamente um item
Chave de partição é utilizada para construir um índice hash não-ordenado
00 FF
Id = 1
Nome = Jim
Hash (1) = 7B
Id = 2
Nome = Andy
Depto = Eng
Hash (2) = 48
Id = 3
Nome = Kim
Depto = Ops
Hash (3) = CD
Key Space
Réplicas de partições
Id = 2
Nome = Andy
Depto = Eng
Id = 3
Nome = Kim
Depto = Ops
Id = 1
Nome = Jim
Id = 2
Nome = Andy
Depto = Eng
Id = 3
Nome = Kim
Depto = Ops
Id = 1
Nome = Jim
Id = 2
Nome = Andy
Depto = Eng
Id = 3
Nome = Kim
Depto = Ops
Id = 1
Nome = Jim
Réplica1
Réplica 2
Réplica 3
Partição1 Partição 2 Partição N
Tabelas com chaves de partição e ordenação
Chave de partição e chave de ordenação identificam unicamente um item
Dados armazenados ordenados pela chave de ordenação para mesma chave de partição
00:0 FF:∞
Hash (2) = 48
Cliente#= 2
Pedido# = 10
Item = Caneta
Cliente# = 2
Pedido# = 11
Item = Calçado
Cliente# = 1
Pedido# = 10
Item = Brinquedo
Cliente# = 1
Pedido# = 11
Item = Tênis
Hash (1) = 7B
Cliente# = 3
Pedido# = 10
Item = Livro
Cliente# = 3
Pedido# = 11
Item = Papel
Hash (3) = CD
55 A9:∞54:∞ AA
Partição 1 Partição 2 Partição 3
Índices
Índice secundário global (GSI)
Chave de partição alternativa
GSIs
A5
(part.)
A4
(ord.)
A1
(chave)
A3
(projetado)
Tabela
Incluir atributo A3
A4
(part.)
A5
(ord.)
A1
(chave)
A2
(projetado)
A3
(projetado)
ALL
A2
(part.)
A1
(chave)
KEYS_ONLY
RCUs e WCUs são
provisionados
separadamente para GSI
A1
(partição)
A2 A3 A4 A5
Atualização de GSI
Tabela
Primary
table
Primary
table
Primary
table
Primary
table
Índice
Secundário
Global
Aplicação
cliente
3. Atualização assíncrona
Se o GSI não tiver capacidade de escrita suficiente, a escrita na tabela pode ser afetada
Índice secundário local (LSI)
Permite definir uma chave de ordenação alternativa
Índice é localizado na mesma partição da tabela
A1
(partição)
A3
(ord.)
A2
(chave)
A1
(partição)
A2
(ord.)
A3 A4 A5
LSIs
A1
(partição)
A4
(ord.)
A2
(chave)
A3
(projetado)
KEYS_ONLY
Incluir atributo A3
A1
(partição)
A5
(ord.)
A2
(chave)
A3
(projetado)
A4
(projetado)
ALL
Para cada valor de
chave de partição, o
tamanho total não pode
exceder 10GB
Tabela
Escalabilidade
Escalabilidade
 Tabelas não possuem limite de número de itens
 Tamanho máximo dos itens é de 400KB
 Escalabilidade é alcançada através de uso de partições
 Tamanho aproximado de 10GB
 Máximo de 3000 unidades de capacidade de leitura
 Máximo de 1000 unidades de capacidade de escrita
Capacidade
Capacidade é provisionada por tabelas e GSIs
• Unidade de capacidade de escrita (WCU) medida em 1KB / s
• Unidade de capacidade de leitura (RCU) medida em 4KB / s
• Medida de RCU considera a leitura consistente
• Leituras com consistência eventual custa ½ de leituras consistentes
Capacidade de leitura e escrita são definidas isoladamente
WCURCU
Cálculo do número de partições
# 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 =
𝑇𝑎𝑚𝑎𝑛ℎ𝑜 𝑑𝑎 𝑡𝑎𝑏𝑒𝑙𝑎 𝑒𝑚 𝐺𝐵
10 𝐺𝐵(𝑝𝑜𝑟 𝑡𝑎𝑚𝑎𝑛ℎ𝑜)
# 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠
(𝑝𝑜𝑟 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝑒)
=
𝑅𝐶𝑈
3000 𝑅𝐶𝑈
+
𝑊𝐶𝑈
1000 𝑊𝐶𝑈
(𝑝𝑜𝑟 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝑒)(𝑝𝑜𝑟 𝑡𝑎𝑚𝑎𝑛ℎ𝑜)(𝑡𝑜𝑡𝑎𝑙)
Este modelo poderá mudar no futuro...
Exemplo
# 𝑑𝑒 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 =
8 𝐺𝐵
10 𝐺𝐵
= 0,8 = 1
(𝑝𝑜𝑟 𝑡𝑎𝑚𝑎𝑛ℎ𝑜)
# 𝑑𝑒 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠
(𝑝𝑜𝑟 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝑒)
=
5000 𝑅𝐶𝑈
3000 𝑅𝐶𝑈
+
500 𝑊𝐶𝑈
1000 𝑊𝐶𝑈
= 2,17 = 3
Tamanho= 8 GB, RCUs = 5000, WCUs = 500
(𝑡𝑜𝑡𝑎𝑙)
RCUs / partição = 5000/3 = 1666,67
WCUs / partição = 500/3 = 166,67
Dados / partição = 10/3 = 3,33 GB
RCUs e WCUs são distribuídas
uniformemente entre partições
Capacidade extra (burst capacity)
0
400
800
1200
1600
UnidadesdeCapacidade(UC)
Tempo
Provisionado Consumido
Unidades não utilizadas
Consumo de unidades salvas
Burst: 300 segundos
(1200 × 300 = 360k UC)
Unidades de capacidade não utilizadas nos últimos 300s são
acumuladas e podem ser utilizadas em picos de requisições
Capacidade extra consumida
0
400
800
1200
1600
UnidadesdeCapacidade(UC)
Tempo
Provisionado Consumido Requisitado
Requisições não atendidas
Burst: 300 segundos
(1200 × 300 = 360k UC)
Evitando Hot Partitions
 Chaves: alta cardinalidade
 Distribuição no Espaço: acessos devem ser
uniformemente distribuídos entre partições
 Distribuição no Tempo : requisições distribuídas
uniformemente no tempo
Hot Partition
Partição
Time
Heat
Acesso Uniforme
Modelagem de dados
Relacionamentos 1:1
Exemplo: dado um usuário, busque atributos
 Utilize uma tabela ou GSI com chave de partição
 Utilize a API GetItem
Tabela: Usuários
Chave Partição Atributos
UserId = bob Email = bob@gmail.com, JoinDate = 2011-11-15
UserId = fred Email = fred@yahoo.com, JoinDate = 2011-12-01
Relacionamentos 1:N
Exemplo: Dado um equipamento, encontrar todos os
eventos entre o período X e Y
 Utilize uma tabela com chave de partição e ordenação
 Utilize a API Query
Tabela: Medidas-Equipamento
Chave Part. Chave Ord. Atributos
DeviceId = 1 Tempo= 5513A97C Temperatura= 30, pressão= 90
DeviceId = 1 Tempo= 5513A9DB Temperatura= 30, pressão= 90
Relacionamentos N:M
Exemplo: Dado um usuário, encontrar todos os seus jogos.
Dado um jogo, encontrar todos os seus usuários.
 Utilize uma tabela e um GSI com chaves de partição e
ordenação alternadas
 Utilize a API Query
Tabela: Usuário-Jogo
Chave Part. Chave Ord.
UserId = bob JogoID = Game1
UserId = fred JogoID = Game2
UserId = bob JogoID = Game3
GSI: Jogo-Usuário
Chave Part. Chave Ord.
JogoID = Game1 UserId = bob
JogoID = Game2 UserId = fred
JogoID = Game3 UserId = bob
Cenários e Recomendações
Log de Eventos
Armazenamento de dados temporais
Tabelas de séries temporais
Tabela_Eventos_2017_Abril
Event_id Timestamp Atributo1 …. Atributo N
Tabela_Eventos_2017_Março
Event_id Timestamp Atributo1 …. Atributo N
Tabela_Eventos_2017_Fevereiro
Event_id Timestamp Atributo1 …. Atributo N
Tabela_Eventos_2017_Janeiro
Event_id Timestamp Atributo1 …. Atributo N
RCUs = 1000
WCUs = 100
RCUs = 10000
WCUs = 10000
RCUs = 100
WCUs = 1
RCUs = 10
WCUs = 1
Tabela
atual
Tabelas
antigas
DadosquentesDadosfrios
Não misture dados quentes e frios; arquive dados frios no Amazon S3
(Chave Part) (Chave Ord)
DynamoDB Time to Live (TTL)
RCUs = 10000
WCUs = 10000
RCUs = 100
WCUs = 1
DadosquentesDadosfrios
Utilize a funcionalidade DynamoDB TTL e Streams para arquivar
Tabela_Eventos_2017_April
Event_id Timestamp
myTTL
1489188093
…. Atributo N
Arquivamento_Eventos
Event_id Timestamp Atributo1 …. Atributo N
(Chave Part) (Chave Ord)
Isolar dados quentes de dados frios
Pré-criar tabelas diárias, semanais ou mensais
Provisionar capacidade para tabela atual
Escrita na tabela atual
Mova os dados frios para uma tabela separada
Reduza a capacidade para tabelas de dados frios
Catálogo de
Produtos
Leitura de itens populares
Partição 1
200 RCUs
Partição K
200 RCUs
Partição M
200 RCUs
Partição 50
200 RCU
Partição com gargalo
Produto ABC Produto XYZ
Usuários
Tabela CatalogoProduto
10.000 𝑅𝐶𝑈
50 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠
≈ 𝟐𝟎𝟎 𝑅𝐶𝑈 𝑝𝑜𝑟 𝑝𝑎𝑟𝑡𝑖çã𝑜
SELECT Id, Descrição, ...
FROM CatalogoProduto
WHERE Id=”Produto ABC"
Requisiçòes/segundo
Chave Primária
Distribuição de Requisições por
Chave de Partição
# requisições DynamoDB
DynamoDB
Utilizar cache
SELECT Id, Descrição, ...
FROM CatalogoProduto
WHERE Id=”Produto ABC"
Partição 1
200 RCUs
Partição K
200 RCUs
Partição M
200 RCUs
Partição 50
200 RCU
Produto ABC Produto XYZ
Tabela CatalogoProduto
Usuários
DynamoDB Accelerator (DAX)
DynamoDB
DynamoDB Accelerator(DAX)
Your Applications
Caching made simple
New!
Requisiçòes/segundo
Chave Primária
Distribuição de Requisições por Chave de Partição
# requisições DynamoDB Cache Hits
Mensagens
Itens com atributos grandes
Dest Data Remet Mensagem
David 2016-10-02 Bob …
… 48 mais mensagens para David …
David 2016-10-03 Alice …
Alice 2016-09-28 Bob …
Alice 2016-10-01 Carol …
Atributos grandes e pequenos
David
Tabela Mensagens
50 itens × 256 KB cada
Corpo da mensagem
Anexos
SELECT *
FROM Mensagens
WHERE Dest='David'
LIMIT 50
ORDER BY Data DESC
Inbox
Custo da consulta caixa de entrada
Itens retornados
Tamanho médio
Taxa conversão
Leituras de consistência eventual
Destin Data Remet Assunto MsgId
David 2016-10-02 Bob Hi!… afed
David 2016-10-03 Alice RE: The… 3kf8
Alice 2016-09-28 Bob FW: Ok… 9d2b
Alice 2016-10-01 Carol Hi!... ct7r
Separar atributos grandes
GSI : Inbox
MsgId Corpo
9d2b …
3kf8 …
ct7r …
afed …
David
1. Query GSI : 2 RCU
2. BatchGetItem : 1600 RCU
(50 itens de 256 KB)
(50 itens de 128 bytes)
Tabela: Msg
Distribuir itens grandes
Reduzir tamanho de item 1:N
Configurar projeções dos GSIs
Utilizar GSIs para modelar M:N entre
remetente e destinatário
Jogos online
Consultas com filtros e ordenações
JogoID Data Host Oponente Status
d9bl3 2016-10-02 David Alice DONE
72f49 2016-09-30 Alice Bob PENDING
o2pnb 2016-10-08 Bob Carol IN_PROGRESS
b932s 2016-10-03 Carol Bob PENDING
ef9ca 2016-10-03 David Bob IN_PROGRESS
Tabela : Jogos
Tabela Jogos
Consulta jogos pendentes de Bob
Índices permitem consulta com partição e ordenação
E como fazer se tiver 2 filtros e uma ordenação?
SELECT * FROM Game
WHERE Oponente ='Bob‘
AND Status=‘PENDING'
ORDER BY Data DESC
(partição)
(ordenação)
(???)
Índice Secundário
Oponente Data JogID Status Host
Alice 2016-10-02 d9bl3 DONE David
Carol 2016-10-08 o2pnb IN_PROGRESS Bob
Bob 2016-09-30 72f49 PENDING Alice
Bob 2016-10-03 b932s PENDING Carol
Bob 2016-10-03 ef9ca IN_PROGRESS David
Abordagem 1: Criar índice secundário
Bob
Índice secundário
Abordagem 1: Criar índice secundário
Bob
Oponente Data JogoID Status Host
Alice 2016-10-02 d9bl3 DONE David
Carol 2016-10-08 o2pnb IN_PROGRESS Bob
Bob 2016-09-30 72f49 PENDING Alice
Bob 2016-10-03 b932s PENDING Carol
Bob 2016-10-03 ef9ca IN_PROGRESS David
SELECT * FROM Jogo
WHERE Oponente='Bob'
ORDER BY Data DESC
FILTER ON Status='PENDING'
Abordagem 2: Criar chave composta
StatusData
DONE_2016-10-02
IN_PROGRESS_2016-10-08
IN_PROGRESS_2016-10-03
PENDING_2016-09-30
PENDING_2016-10-03
Status
DONE
IN_PROGRESS
IN_PROGRESS
PENDING
PENDING
Data
2016-10-02
2016-10-08
2016-10-03
2016-10-03
2016-09-30
Índice secundário
Oponente StatusData JogoID Host
Alice DONE_2016-10-02 d9bl3 David
Carol IN_PROGRESS_2016-10-08 o2pnb Bob
Bob IN_PROGRESS_2016-10-03 ef9ca David
Bob PENDING_2016-09-30 72f49 Alice
Bob PENDING_2016-10-03 b932s Carol
Abordagem 2: Chave composta
Oponente StatusData JogoID Host
Alice DONE_2016-10-02 d9bl3 David
Carol IN_PROGRESS_2016-10-08 o2pnb Bob
Bob IN_PROGRESS_2016-10-03 ef9ca David
Bob PENDING_2016-09-30 72f49 Alice
Bob PENDING_2016-10-03 b932s Carol
Índice Secundário
Bob
SELECT * FROM Jogo
WHERE Oponente ='Bob'
AND StatusData BEGINS_WITH 'PENDING'
Abordagem 2: Chave composta
Consulta de todos os campeões
Id
(Part.)
Usuário Jogo Resul Data Campeao
1 Bob G1 1300 2015-12-23
2 Bob G1 1450 2015-12-23
3 Jay G1 1600 2015-12-24
4 Mary G1 2000 2015-10-24 Y
5 Ryan G2 123 2015-03-10
6 Jones G2 345 2015-03-20 Y
Tabela: Resultados-Jogos
Campeao
(Part.)
Id Usuário Result
Y 4 Mary 2000
Y 6 Jones 345
GSI: Premios
Índice esparso
Substituir filtros por índices
Concatenar atributos para formar chaves de índices
secundários úteis para otimizar consultas
Utilizar índices esparsos quando adequado
Votação
Alta taxa de escrita
Aplicação de votação
Tabela de
Agregações
Usuários
Tabela de Votos
Aplicação
Partição 1
1000 WCUs
Partição K
1000 WCUs
Partição M
1000 WCUs
Partição N
1000 WCUs
Tabela Votos
Candidato A Candidato B
Gargalo
Usuários
Provisionado: 20.000 WCUs
Write sharding
Candidato
A_2
Candidato
B_1
Candidato
B_2
Candidato
B_3
Candidato
B_5
Candidato
B_4
Candidato
B_7
Candidato
B_6
Candidato
A_1
Candidato
A_3
Candidato
A_4
Candidato
A_7
Candidato
B_8
Candidato
A_6
Candidato
A_8
Candidato
A_5
Usuário
Tabela Votos
Write sharding
Candidato A_2
Candidato B_1
Candidato B_2
Candidato B_3
Candidato B_5
Candidato B_4
Candidato B_7
Candidato B_6
Candidato A_1
Candidato A_3
Candidato A_4
Candidato A_7 Candidato B_8
UpdateItem: “CandidatoA_” + rand(0, 10)
ADD 1 para Votos
Candidato A_6 Candidato A_8
Candidato A_5
Usuário
Tabela Votos
Tabela Votos
Shard aggregation
Candidato A_2
Candidato B_1
Candidato B_2
Candidato B_3
Candidato B_5
Candidato B_4
Candidato B_7
Candidato B_6
Candidato A_1
Candidato A_3
Candidato A_4
Candidato A_5
Candidato A_6 Candidato A_8
Candidato A_7 Candidato B_8
Periodic
Process
Candidato A
Total: 2.5M
1. Sum
2. Store Usuário
DynamoDB Streams
Transmissão de atualizações
da tabela
Assíncrono
Exatamente uma vez
Ordenado por item
Altamente durável
Escalável com a tabela
Tempo de vida de 24 horas
Latência < 1s
DynamoDB Streams
View Type Valores
Old Image Nome = John, Destino = Marte
New Image Nome = John, Destino = Plutão
New and Old Image Nome = John, Destino = Marte
Nome = John, Destino = Plutão
Keys Only Nome = John
Tipos de Views
Atual: Nome = John, Destino = Marte
UpdateItem: Nome = John, Destino = Plutão
Stream
Partição 1
Partição 2
Partição 3
Partição 4
Tabela
Shard 1
Shard 2
Shard 3
Shard 4
KCL
Worker
KCL
Worker
KCL
Worker
KCL
Worker
Amazon Kinesis Client
Library Application
DynamoDB
Aplicação Cliente
Updates
DynamoDB Streams e Kinesis Client Library
DynamoDB Streams e AWS Lambda
Nova arquitetura da aplicação de votação
Tabela
Agregação
Amazon
Redshift Amazon EMR
Your
Amazon Kinesis–
Enabled App
Usuários Tabela VotosVotação Votos
DynamoDB
Stream
Nova arquitetura da aplicação de votação
Tabela
Agregação
Amazon
Redshift Amazon EMR
Your
Amazon Kinesis–
Enabled App
Usuários Tabela VotosVotação Votos
DynamoDB
Stream
Votação em qualquer
escala
Nova arquitetura da aplicação de votação
Tabela
Agregação
Amazon
Redshift Amazon EMR
Your
Amazon Kinesis–
Enabled App
Usuários Tabela VotosVotação Votos
DynamoDB
Stream
Agregação em tempo-
real, escalável e
tolerante a falhas
Nova arquitetura da aplicação de votação
Tabela
Agregação
Amazon
Redshift Amazon EMR
Your
Amazon Kinesis–
Enabled App
Usuários Tabela VotosVotação Votos
DynamoDB
Stream
Análise de dados,
demografia
Arquitetura de Referência
Arquitetura de Referência
Estudo de Caso
“AWS permitiu que construíssemos uma
solução completa de processamento de
meios de pagamentos em tempo recorde”
A Pismo é a primeira plataforma PaaS de
processamento de meios de pagamentos.
Reimaginamos tudo que há de antiquado
nesse mercado para criar uma plataforma
robusta, segura e extremamente flexível.
Um dos nossos principais diferenciais é o
enriquecimento de dados na captura de
transações financeiras, como por
exemplo o armazenamento dos itens que
compõe a transação
“AWS DynamoDB
possibilitou a
implementação de
uma solução de
enriquecimento de
dados para altos
volumes
transacionais”
- Daniela Binatti, CTO
O Desafio
Encontrar uma forma de
armazenamento não estruturada
para todas as transações recebidas
• escalável e rápida
• totalmente gerenciada
• compatível com a arquitetura
reativa da Pismo
Implementação
Auth_ID
Account_ID
1 1400
2 2367
3 5468
Items (List)
Items
Partition Key Sort Key
Primary Key
AuthItems
Auth_ID Account_ID
65.00 200620171 1400
2 2367 130.00
3 5468 123.70
Columns
Rows
Primary Key Index
Amount Date
AWS DynamoDBAWS RDS
Authorizations
20062017
20062017
Desc Price
Desc 1 30.00
ID
Item 1
Desc 2 35.00Item 2
TRANSACTIONS
API
DynamoDB
TRANSACTIONS
API
RDS Master DB
instance
RDS Standby
DB instance
Lambda
Solução
Obrigado!
Ainda não tem o App oficial do
AWS Summit São Paulo?
http://amzn.to/2rOcsVy
Não deixe de avaliar as sessões no app!

Mais conteúdo relacionado

Mais procurados

Deep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDBDeep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDB
Amazon Web Services
 
Real-time Data Processing with Amazon DynamoDB Streams and AWS Lambda
Real-time Data Processing with Amazon DynamoDB Streams and AWS LambdaReal-time Data Processing with Amazon DynamoDB Streams and AWS Lambda
Real-time Data Processing with Amazon DynamoDB Streams and AWS Lambda
Amazon Web Services
 
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Web Services Korea
 
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, AirbnbAirbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Lucidworks
 
Adventures with the ClickHouse ReplacingMergeTree Engine
Adventures with the ClickHouse ReplacingMergeTree EngineAdventures with the ClickHouse ReplacingMergeTree Engine
Adventures with the ClickHouse ReplacingMergeTree Engine
Altinity Ltd
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
Amazon Web Services Korea
 
Amazon Redshift: Performance Tuning and Optimization
Amazon Redshift: Performance Tuning and OptimizationAmazon Redshift: Performance Tuning and Optimization
Amazon Redshift: Performance Tuning and Optimization
Amazon Web Services
 
DynamodbDB Deep Dive
DynamodbDB Deep DiveDynamodbDB Deep Dive
DynamodbDB Deep Dive
Amazon Web Services
 
(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices
(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices
(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices
Amazon Web Services
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
NeoClova
 
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Amazon Web Services
 
AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...
AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...
AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...
Amazon Web Services
 
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayGetting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Amazon Web Services Korea
 
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
Amazon Web Services Korea
 
Redis and it's data types
Redis and it's data typesRedis and it's data types
Redis and it's data types
Aniruddha Chakrabarti
 
개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016
개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016
개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016
Amazon Web Services Korea
 
Design Patterns using Amazon DynamoDB
 Design Patterns using Amazon DynamoDB Design Patterns using Amazon DynamoDB
Design Patterns using Amazon DynamoDB
Amazon Web Services
 
Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012
Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012
Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012
Amazon Web Services
 
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon Web Services Korea
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
Amazon Web Services Korea
 

Mais procurados (20)

Deep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDBDeep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDB
 
Real-time Data Processing with Amazon DynamoDB Streams and AWS Lambda
Real-time Data Processing with Amazon DynamoDB Streams and AWS LambdaReal-time Data Processing with Amazon DynamoDB Streams and AWS Lambda
Real-time Data Processing with Amazon DynamoDB Streams and AWS Lambda
 
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
 
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, AirbnbAirbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
 
Adventures with the ClickHouse ReplacingMergeTree Engine
Adventures with the ClickHouse ReplacingMergeTree EngineAdventures with the ClickHouse ReplacingMergeTree Engine
Adventures with the ClickHouse ReplacingMergeTree Engine
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
 
Amazon Redshift: Performance Tuning and Optimization
Amazon Redshift: Performance Tuning and OptimizationAmazon Redshift: Performance Tuning and Optimization
Amazon Redshift: Performance Tuning and Optimization
 
DynamodbDB Deep Dive
DynamodbDB Deep DiveDynamodbDB Deep Dive
DynamodbDB Deep Dive
 
(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices
(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices
(BDT401) Amazon Redshift Deep Dive: Tuning and Best Practices
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
 
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
 
AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...
AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...
AWS re:Invent 2016: Workshop: AWS S3 Deep-Dive Hands-On Workshop: Deploying a...
 
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayGetting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
 
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...디지털 해적들로부터 영상 콘텐츠 보호하기 –  황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
디지털 해적들로부터 영상 콘텐츠 보호하기 – 황윤상 AWS 솔루션즈 아키텍트, 김준호 잉카엔트웍스 매니저:: AWS Cloud Week ...
 
Redis and it's data types
Redis and it's data typesRedis and it's data types
Redis and it's data types
 
개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016
개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016
개발자가 알아야 할 Amazon DynamoDB 활용법 :: 김일호 :: AWS Summit Seoul 2016
 
Design Patterns using Amazon DynamoDB
 Design Patterns using Amazon DynamoDB Design Patterns using Amazon DynamoDB
Design Patterns using Amazon DynamoDB
 
Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012
Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012
Best Practices: Operational Checklists for the AWS Cloud - AWS NYC Summit 2012
 
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 

Semelhante a Deep dive de Amazon DynamoDB

Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sql
Locaweb
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
jheyeizah
 
Criando Símbolos Otimizados para Projetos no InduSoft Web Studio
Criando Símbolos Otimizados para Projetos no InduSoft Web StudioCriando Símbolos Otimizados para Projetos no InduSoft Web Studio
Criando Símbolos Otimizados para Projetos no InduSoft Web Studio
AVEVA
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
lucashungaro
 
TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...
TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...
TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...
tdc-globalcode
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
Nando Vieira
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
Rildo Pragana
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
Roberto Grande
 
VoltDB talk at QCON-Brasil
VoltDB talk at QCON-BrasilVoltDB talk at QCON-Brasil
VoltDB talk at QCON-Brasil
Edward Ribeiro
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
Leonardo Loures Quirino
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
Elen Arantza
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
Fabrício Catae
 
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
Fabrício Catae
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
Diogo Gomes
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache Spark
Felipe
 
Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...
Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...
Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...
Elaine Naomi
 
Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016
Luiz Henrique Garetti Rosário
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
Joao Gutheil
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
Brunno Gomes
 
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
Eiti Kimura
 

Semelhante a Deep dive de Amazon DynamoDB (20)

Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sql
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Criando Símbolos Otimizados para Projetos no InduSoft Web Studio
Criando Símbolos Otimizados para Projetos no InduSoft Web StudioCriando Símbolos Otimizados para Projetos no InduSoft Web Studio
Criando Símbolos Otimizados para Projetos no InduSoft Web Studio
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
 
TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...
TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...
TDC2016POA | Trilha Bigdata - Armazenando séries temporais em bases de dados ...
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
VoltDB talk at QCON-Brasil
VoltDB talk at QCON-BrasilVoltDB talk at QCON-Brasil
VoltDB talk at QCON-Brasil
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
 
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache Spark
 
Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...
Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...
Uso de Anotações Semânticas para Exploração de Paralelismo em Workflows Inten...
 
Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
 

Mais de Amazon Web Services LATAM

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
Amazon Web Services LATAM
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
Amazon Web Services LATAM
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
Amazon Web Services LATAM
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
Amazon Web Services LATAM
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
Amazon Web Services LATAM
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
Amazon Web Services LATAM
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
Amazon Web Services LATAM
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
Amazon Web Services LATAM
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
Amazon Web Services LATAM
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
Amazon Web Services LATAM
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Amazon Web Services LATAM
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
Amazon Web Services LATAM
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
Amazon Web Services LATAM
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
Amazon Web Services LATAM
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
Amazon Web Services LATAM
 

Mais de Amazon Web Services LATAM (20)

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
 

Deep dive de Amazon DynamoDB

  • 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Daniela Binatti | CTO | Pismo Regis Gimenis | Sr. Consultant | AWS Professional Services Deep Dive em Amazon DynamoDB
  • 2. Agenda  Componentes do DynamoDB  Modelagem de dados  Cenários e recomendações  Estudo de caso:
  • 3. Amazon DynamoDB  Serviço gerenciado de banco de dados NoSQL  Alta escalabilidade  Alta disponibilidade  Desempenho rápido e consistente  Flexível, compatível com estruturas de dados de documentos e chave-valor  API simples e poderosa
  • 5. Tabelas do DynamoDB Tabelas Itens Atributos Chave de Partição Chave de Ordenação Mandatória Padrão de acesso chave-valor Define a distribuição dos dados Opcional Relacionamentos 1:N Habilita consultas ricas Todos os itens ==, <, >, >=, <= “begins with” “between” resultados ordenados contagens primeiros/últimos valores respostas paginadas
  • 7. Tipos de dados String (S) Number (N) Binary (B) String Set (SS) Number Set (NS) Binary Set (BS) Boolean (BOOL) Null (NULL) List (L) Map (M) Utilizados para armazenar documentos JSON
  • 8. 00 55 A954 AA FF Tabelas com chave de partição Chave de partição identifica unicamente um item Chave de partição é utilizada para construir um índice hash não-ordenado 00 FF Id = 1 Nome = Jim Hash (1) = 7B Id = 2 Nome = Andy Depto = Eng Hash (2) = 48 Id = 3 Nome = Kim Depto = Ops Hash (3) = CD Key Space
  • 9. Réplicas de partições Id = 2 Nome = Andy Depto = Eng Id = 3 Nome = Kim Depto = Ops Id = 1 Nome = Jim Id = 2 Nome = Andy Depto = Eng Id = 3 Nome = Kim Depto = Ops Id = 1 Nome = Jim Id = 2 Nome = Andy Depto = Eng Id = 3 Nome = Kim Depto = Ops Id = 1 Nome = Jim Réplica1 Réplica 2 Réplica 3 Partição1 Partição 2 Partição N
  • 10. Tabelas com chaves de partição e ordenação Chave de partição e chave de ordenação identificam unicamente um item Dados armazenados ordenados pela chave de ordenação para mesma chave de partição 00:0 FF:∞ Hash (2) = 48 Cliente#= 2 Pedido# = 10 Item = Caneta Cliente# = 2 Pedido# = 11 Item = Calçado Cliente# = 1 Pedido# = 10 Item = Brinquedo Cliente# = 1 Pedido# = 11 Item = Tênis Hash (1) = 7B Cliente# = 3 Pedido# = 10 Item = Livro Cliente# = 3 Pedido# = 11 Item = Papel Hash (3) = CD 55 A9:∞54:∞ AA Partição 1 Partição 2 Partição 3
  • 12. Índice secundário global (GSI) Chave de partição alternativa GSIs A5 (part.) A4 (ord.) A1 (chave) A3 (projetado) Tabela Incluir atributo A3 A4 (part.) A5 (ord.) A1 (chave) A2 (projetado) A3 (projetado) ALL A2 (part.) A1 (chave) KEYS_ONLY RCUs e WCUs são provisionados separadamente para GSI A1 (partição) A2 A3 A4 A5
  • 13. Atualização de GSI Tabela Primary table Primary table Primary table Primary table Índice Secundário Global Aplicação cliente 3. Atualização assíncrona Se o GSI não tiver capacidade de escrita suficiente, a escrita na tabela pode ser afetada
  • 14. Índice secundário local (LSI) Permite definir uma chave de ordenação alternativa Índice é localizado na mesma partição da tabela A1 (partição) A3 (ord.) A2 (chave) A1 (partição) A2 (ord.) A3 A4 A5 LSIs A1 (partição) A4 (ord.) A2 (chave) A3 (projetado) KEYS_ONLY Incluir atributo A3 A1 (partição) A5 (ord.) A2 (chave) A3 (projetado) A4 (projetado) ALL Para cada valor de chave de partição, o tamanho total não pode exceder 10GB Tabela
  • 16. Escalabilidade  Tabelas não possuem limite de número de itens  Tamanho máximo dos itens é de 400KB  Escalabilidade é alcançada através de uso de partições  Tamanho aproximado de 10GB  Máximo de 3000 unidades de capacidade de leitura  Máximo de 1000 unidades de capacidade de escrita
  • 17. Capacidade Capacidade é provisionada por tabelas e GSIs • Unidade de capacidade de escrita (WCU) medida em 1KB / s • Unidade de capacidade de leitura (RCU) medida em 4KB / s • Medida de RCU considera a leitura consistente • Leituras com consistência eventual custa ½ de leituras consistentes Capacidade de leitura e escrita são definidas isoladamente WCURCU
  • 18. Cálculo do número de partições # 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 = 𝑇𝑎𝑚𝑎𝑛ℎ𝑜 𝑑𝑎 𝑡𝑎𝑏𝑒𝑙𝑎 𝑒𝑚 𝐺𝐵 10 𝐺𝐵(𝑝𝑜𝑟 𝑡𝑎𝑚𝑎𝑛ℎ𝑜) # 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 (𝑝𝑜𝑟 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝑒) = 𝑅𝐶𝑈 3000 𝑅𝐶𝑈 + 𝑊𝐶𝑈 1000 𝑊𝐶𝑈 (𝑝𝑜𝑟 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝑒)(𝑝𝑜𝑟 𝑡𝑎𝑚𝑎𝑛ℎ𝑜)(𝑡𝑜𝑡𝑎𝑙) Este modelo poderá mudar no futuro...
  • 19. Exemplo # 𝑑𝑒 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 = 8 𝐺𝐵 10 𝐺𝐵 = 0,8 = 1 (𝑝𝑜𝑟 𝑡𝑎𝑚𝑎𝑛ℎ𝑜) # 𝑑𝑒 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 (𝑝𝑜𝑟 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝑒) = 5000 𝑅𝐶𝑈 3000 𝑅𝐶𝑈 + 500 𝑊𝐶𝑈 1000 𝑊𝐶𝑈 = 2,17 = 3 Tamanho= 8 GB, RCUs = 5000, WCUs = 500 (𝑡𝑜𝑡𝑎𝑙) RCUs / partição = 5000/3 = 1666,67 WCUs / partição = 500/3 = 166,67 Dados / partição = 10/3 = 3,33 GB RCUs e WCUs são distribuídas uniformemente entre partições
  • 20. Capacidade extra (burst capacity) 0 400 800 1200 1600 UnidadesdeCapacidade(UC) Tempo Provisionado Consumido Unidades não utilizadas Consumo de unidades salvas Burst: 300 segundos (1200 × 300 = 360k UC) Unidades de capacidade não utilizadas nos últimos 300s são acumuladas e podem ser utilizadas em picos de requisições
  • 21. Capacidade extra consumida 0 400 800 1200 1600 UnidadesdeCapacidade(UC) Tempo Provisionado Consumido Requisitado Requisições não atendidas Burst: 300 segundos (1200 × 300 = 360k UC)
  • 22. Evitando Hot Partitions  Chaves: alta cardinalidade  Distribuição no Espaço: acessos devem ser uniformemente distribuídos entre partições  Distribuição no Tempo : requisições distribuídas uniformemente no tempo
  • 26. Relacionamentos 1:1 Exemplo: dado um usuário, busque atributos  Utilize uma tabela ou GSI com chave de partição  Utilize a API GetItem Tabela: Usuários Chave Partição Atributos UserId = bob Email = bob@gmail.com, JoinDate = 2011-11-15 UserId = fred Email = fred@yahoo.com, JoinDate = 2011-12-01
  • 27. Relacionamentos 1:N Exemplo: Dado um equipamento, encontrar todos os eventos entre o período X e Y  Utilize uma tabela com chave de partição e ordenação  Utilize a API Query Tabela: Medidas-Equipamento Chave Part. Chave Ord. Atributos DeviceId = 1 Tempo= 5513A97C Temperatura= 30, pressão= 90 DeviceId = 1 Tempo= 5513A9DB Temperatura= 30, pressão= 90
  • 28. Relacionamentos N:M Exemplo: Dado um usuário, encontrar todos os seus jogos. Dado um jogo, encontrar todos os seus usuários.  Utilize uma tabela e um GSI com chaves de partição e ordenação alternadas  Utilize a API Query Tabela: Usuário-Jogo Chave Part. Chave Ord. UserId = bob JogoID = Game1 UserId = fred JogoID = Game2 UserId = bob JogoID = Game3 GSI: Jogo-Usuário Chave Part. Chave Ord. JogoID = Game1 UserId = bob JogoID = Game2 UserId = fred JogoID = Game3 UserId = bob
  • 30. Log de Eventos Armazenamento de dados temporais
  • 31. Tabelas de séries temporais Tabela_Eventos_2017_Abril Event_id Timestamp Atributo1 …. Atributo N Tabela_Eventos_2017_Março Event_id Timestamp Atributo1 …. Atributo N Tabela_Eventos_2017_Fevereiro Event_id Timestamp Atributo1 …. Atributo N Tabela_Eventos_2017_Janeiro Event_id Timestamp Atributo1 …. Atributo N RCUs = 1000 WCUs = 100 RCUs = 10000 WCUs = 10000 RCUs = 100 WCUs = 1 RCUs = 10 WCUs = 1 Tabela atual Tabelas antigas DadosquentesDadosfrios Não misture dados quentes e frios; arquive dados frios no Amazon S3 (Chave Part) (Chave Ord)
  • 32. DynamoDB Time to Live (TTL) RCUs = 10000 WCUs = 10000 RCUs = 100 WCUs = 1 DadosquentesDadosfrios Utilize a funcionalidade DynamoDB TTL e Streams para arquivar Tabela_Eventos_2017_April Event_id Timestamp myTTL 1489188093 …. Atributo N Arquivamento_Eventos Event_id Timestamp Atributo1 …. Atributo N (Chave Part) (Chave Ord)
  • 33. Isolar dados quentes de dados frios Pré-criar tabelas diárias, semanais ou mensais Provisionar capacidade para tabela atual Escrita na tabela atual Mova os dados frios para uma tabela separada Reduza a capacidade para tabelas de dados frios
  • 35. Partição 1 200 RCUs Partição K 200 RCUs Partição M 200 RCUs Partição 50 200 RCU Partição com gargalo Produto ABC Produto XYZ Usuários Tabela CatalogoProduto 10.000 𝑅𝐶𝑈 50 𝑝𝑎𝑟𝑡𝑖çõ𝑒𝑠 ≈ 𝟐𝟎𝟎 𝑅𝐶𝑈 𝑝𝑜𝑟 𝑝𝑎𝑟𝑡𝑖çã𝑜 SELECT Id, Descrição, ... FROM CatalogoProduto WHERE Id=”Produto ABC"
  • 36. Requisiçòes/segundo Chave Primária Distribuição de Requisições por Chave de Partição # requisições DynamoDB
  • 37. DynamoDB Utilizar cache SELECT Id, Descrição, ... FROM CatalogoProduto WHERE Id=”Produto ABC" Partição 1 200 RCUs Partição K 200 RCUs Partição M 200 RCUs Partição 50 200 RCU Produto ABC Produto XYZ Tabela CatalogoProduto Usuários
  • 38. DynamoDB Accelerator (DAX) DynamoDB DynamoDB Accelerator(DAX) Your Applications Caching made simple New!
  • 39. Requisiçòes/segundo Chave Primária Distribuição de Requisições por Chave de Partição # requisições DynamoDB Cache Hits
  • 41. Dest Data Remet Mensagem David 2016-10-02 Bob … … 48 mais mensagens para David … David 2016-10-03 Alice … Alice 2016-09-28 Bob … Alice 2016-10-01 Carol … Atributos grandes e pequenos David Tabela Mensagens 50 itens × 256 KB cada Corpo da mensagem Anexos SELECT * FROM Mensagens WHERE Dest='David' LIMIT 50 ORDER BY Data DESC Inbox
  • 42. Custo da consulta caixa de entrada Itens retornados Tamanho médio Taxa conversão Leituras de consistência eventual
  • 43. Destin Data Remet Assunto MsgId David 2016-10-02 Bob Hi!… afed David 2016-10-03 Alice RE: The… 3kf8 Alice 2016-09-28 Bob FW: Ok… 9d2b Alice 2016-10-01 Carol Hi!... ct7r Separar atributos grandes GSI : Inbox MsgId Corpo 9d2b … 3kf8 … ct7r … afed … David 1. Query GSI : 2 RCU 2. BatchGetItem : 1600 RCU (50 itens de 256 KB) (50 itens de 128 bytes) Tabela: Msg
  • 44. Distribuir itens grandes Reduzir tamanho de item 1:N Configurar projeções dos GSIs Utilizar GSIs para modelar M:N entre remetente e destinatário
  • 45. Jogos online Consultas com filtros e ordenações
  • 46. JogoID Data Host Oponente Status d9bl3 2016-10-02 David Alice DONE 72f49 2016-09-30 Alice Bob PENDING o2pnb 2016-10-08 Bob Carol IN_PROGRESS b932s 2016-10-03 Carol Bob PENDING ef9ca 2016-10-03 David Bob IN_PROGRESS Tabela : Jogos Tabela Jogos
  • 47. Consulta jogos pendentes de Bob Índices permitem consulta com partição e ordenação E como fazer se tiver 2 filtros e uma ordenação? SELECT * FROM Game WHERE Oponente ='Bob‘ AND Status=‘PENDING' ORDER BY Data DESC (partição) (ordenação) (???)
  • 48. Índice Secundário Oponente Data JogID Status Host Alice 2016-10-02 d9bl3 DONE David Carol 2016-10-08 o2pnb IN_PROGRESS Bob Bob 2016-09-30 72f49 PENDING Alice Bob 2016-10-03 b932s PENDING Carol Bob 2016-10-03 ef9ca IN_PROGRESS David Abordagem 1: Criar índice secundário Bob
  • 49. Índice secundário Abordagem 1: Criar índice secundário Bob Oponente Data JogoID Status Host Alice 2016-10-02 d9bl3 DONE David Carol 2016-10-08 o2pnb IN_PROGRESS Bob Bob 2016-09-30 72f49 PENDING Alice Bob 2016-10-03 b932s PENDING Carol Bob 2016-10-03 ef9ca IN_PROGRESS David SELECT * FROM Jogo WHERE Oponente='Bob' ORDER BY Data DESC FILTER ON Status='PENDING'
  • 50. Abordagem 2: Criar chave composta StatusData DONE_2016-10-02 IN_PROGRESS_2016-10-08 IN_PROGRESS_2016-10-03 PENDING_2016-09-30 PENDING_2016-10-03 Status DONE IN_PROGRESS IN_PROGRESS PENDING PENDING Data 2016-10-02 2016-10-08 2016-10-03 2016-10-03 2016-09-30
  • 51. Índice secundário Oponente StatusData JogoID Host Alice DONE_2016-10-02 d9bl3 David Carol IN_PROGRESS_2016-10-08 o2pnb Bob Bob IN_PROGRESS_2016-10-03 ef9ca David Bob PENDING_2016-09-30 72f49 Alice Bob PENDING_2016-10-03 b932s Carol Abordagem 2: Chave composta
  • 52. Oponente StatusData JogoID Host Alice DONE_2016-10-02 d9bl3 David Carol IN_PROGRESS_2016-10-08 o2pnb Bob Bob IN_PROGRESS_2016-10-03 ef9ca David Bob PENDING_2016-09-30 72f49 Alice Bob PENDING_2016-10-03 b932s Carol Índice Secundário Bob SELECT * FROM Jogo WHERE Oponente ='Bob' AND StatusData BEGINS_WITH 'PENDING' Abordagem 2: Chave composta
  • 53. Consulta de todos os campeões Id (Part.) Usuário Jogo Resul Data Campeao 1 Bob G1 1300 2015-12-23 2 Bob G1 1450 2015-12-23 3 Jay G1 1600 2015-12-24 4 Mary G1 2000 2015-10-24 Y 5 Ryan G2 123 2015-03-10 6 Jones G2 345 2015-03-20 Y Tabela: Resultados-Jogos Campeao (Part.) Id Usuário Result Y 4 Mary 2000 Y 6 Jones 345 GSI: Premios Índice esparso
  • 54. Substituir filtros por índices Concatenar atributos para formar chaves de índices secundários úteis para otimizar consultas Utilizar índices esparsos quando adequado
  • 56. Aplicação de votação Tabela de Agregações Usuários Tabela de Votos Aplicação
  • 57. Partição 1 1000 WCUs Partição K 1000 WCUs Partição M 1000 WCUs Partição N 1000 WCUs Tabela Votos Candidato A Candidato B Gargalo Usuários Provisionado: 20.000 WCUs
  • 59. Write sharding Candidato A_2 Candidato B_1 Candidato B_2 Candidato B_3 Candidato B_5 Candidato B_4 Candidato B_7 Candidato B_6 Candidato A_1 Candidato A_3 Candidato A_4 Candidato A_7 Candidato B_8 UpdateItem: “CandidatoA_” + rand(0, 10) ADD 1 para Votos Candidato A_6 Candidato A_8 Candidato A_5 Usuário Tabela Votos
  • 60. Tabela Votos Shard aggregation Candidato A_2 Candidato B_1 Candidato B_2 Candidato B_3 Candidato B_5 Candidato B_4 Candidato B_7 Candidato B_6 Candidato A_1 Candidato A_3 Candidato A_4 Candidato A_5 Candidato A_6 Candidato A_8 Candidato A_7 Candidato B_8 Periodic Process Candidato A Total: 2.5M 1. Sum 2. Store Usuário
  • 62. Transmissão de atualizações da tabela Assíncrono Exatamente uma vez Ordenado por item Altamente durável Escalável com a tabela Tempo de vida de 24 horas Latência < 1s DynamoDB Streams
  • 63. View Type Valores Old Image Nome = John, Destino = Marte New Image Nome = John, Destino = Plutão New and Old Image Nome = John, Destino = Marte Nome = John, Destino = Plutão Keys Only Nome = John Tipos de Views Atual: Nome = John, Destino = Marte UpdateItem: Nome = John, Destino = Plutão
  • 64. Stream Partição 1 Partição 2 Partição 3 Partição 4 Tabela Shard 1 Shard 2 Shard 3 Shard 4 KCL Worker KCL Worker KCL Worker KCL Worker Amazon Kinesis Client Library Application DynamoDB Aplicação Cliente Updates DynamoDB Streams e Kinesis Client Library
  • 65. DynamoDB Streams e AWS Lambda
  • 66. Nova arquitetura da aplicação de votação Tabela Agregação Amazon Redshift Amazon EMR Your Amazon Kinesis– Enabled App Usuários Tabela VotosVotação Votos DynamoDB Stream
  • 67. Nova arquitetura da aplicação de votação Tabela Agregação Amazon Redshift Amazon EMR Your Amazon Kinesis– Enabled App Usuários Tabela VotosVotação Votos DynamoDB Stream Votação em qualquer escala
  • 68. Nova arquitetura da aplicação de votação Tabela Agregação Amazon Redshift Amazon EMR Your Amazon Kinesis– Enabled App Usuários Tabela VotosVotação Votos DynamoDB Stream Agregação em tempo- real, escalável e tolerante a falhas
  • 69. Nova arquitetura da aplicação de votação Tabela Agregação Amazon Redshift Amazon EMR Your Amazon Kinesis– Enabled App Usuários Tabela VotosVotação Votos DynamoDB Stream Análise de dados, demografia
  • 73. “AWS permitiu que construíssemos uma solução completa de processamento de meios de pagamentos em tempo recorde” A Pismo é a primeira plataforma PaaS de processamento de meios de pagamentos. Reimaginamos tudo que há de antiquado nesse mercado para criar uma plataforma robusta, segura e extremamente flexível. Um dos nossos principais diferenciais é o enriquecimento de dados na captura de transações financeiras, como por exemplo o armazenamento dos itens que compõe a transação “AWS DynamoDB possibilitou a implementação de uma solução de enriquecimento de dados para altos volumes transacionais” - Daniela Binatti, CTO
  • 74. O Desafio Encontrar uma forma de armazenamento não estruturada para todas as transações recebidas • escalável e rápida • totalmente gerenciada • compatível com a arquitetura reativa da Pismo
  • 75. Implementação Auth_ID Account_ID 1 1400 2 2367 3 5468 Items (List) Items Partition Key Sort Key Primary Key AuthItems Auth_ID Account_ID 65.00 200620171 1400 2 2367 130.00 3 5468 123.70 Columns Rows Primary Key Index Amount Date AWS DynamoDBAWS RDS Authorizations 20062017 20062017 Desc Price Desc 1 30.00 ID Item 1 Desc 2 35.00Item 2
  • 78. Ainda não tem o App oficial do AWS Summit São Paulo? http://amzn.to/2rOcsVy Não deixe de avaliar as sessões no app!

Notas do Editor

  1. consistent, single-digit millisecond latency at any scale Fast, Consistent Performance [automatic partitioning, SSD technology] Highly Scalable [store as much data, limits are there for safety] Fully Managed [choose key schema, tablename, provisioned capacity] Event Driven Programming [Streams, Lambda/KCL] Fine-grained Access Control [item-level, IAM credentials] Flexible [doc, kv]
  2. Hash Key only
  3. Hash Key & Sort Key
  4. Online Indexing
  5. Think of this as a parallel table asynchronously populated by DynamoDB Eventually consistent 1 Table update = 0, 1 or 2 GSI updates
  6. There is a limit in place to avoid run-away apps. But you can request a limit increase. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html For every distinct hash key value, the total sizes of all table and index items cannot exceed 10 GB This request would have caused the ReadCapacityUnits limit to be exceeded for the account in us-west-2. Current ReadCapacityUnits reserved by the account: 237. Limit: 2000. Requested: 5000. Refer to the Amazon DynamoDB Developer Guide for current limits and how to request higher limits. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: LimitExceededException; Request ID: 0U3G4FLA19BQMELKS4G7RSTH83VV4KQNSO5AEMVJF66Q9ASUAAJG)
  7. Picture from: http://www.amazon.com/Black-Aluminum-Control-Amplifier-Wheel/dp/B005HU1ZHA Scan and Query Cumulative size of processed items – ceiling (Ʃ(item sizes)/4KB) Batch GetItem ceiling [(Ʃ(item1 size)/4KB) + …ceiling (Ʃ(itemN size)/4KB)] Consumed throughput is measured per operation Provisioned throughput is divided between all partitions
  8. RCUs and WCUs are uniformly spread across partitions on table creation
  9. Uneven access across key space
  10. Key/values access patters (Map, Dictionary…)
  11. Touch on elasticity
  12. Add a single table chart, describe bottlenecks
  13. Warn: You still consume IO even if the item doesn’t exist
  14. Often some items in your table are accessed more frequently than others. For example, this graph illustrates how many requests per second were made for each item in your table. For collections like a product catalog, some items are substantially more popular than others. The same probably goes for tweets sent from a celebrity, and that sort of thing. Displaying those “hot items” on everyone’s twitter feed is problematic since they cause an uneven request distribution. (ask audience) Can anyone think of some things that we can do to “cool off” those hot items?
  15. One thing we can do is cache those reads in the application. Since a tweet doesn’t change once you post it, you can cache it in memory or in something like Amazon ElastiCache. This is a technique used in high throughput applications with a traditional database as well.
  16. 50 messages to read from Large items not necessarily expensive on their own, but the cost adds up Query comes from same partition
  17. Put the metadata into a GSI. 128 bytes versus 256KB
  18. Last section was 5:25
  19. This is your base table
  20. filter will drop items, but you still pay for reads
  21. BEGINS_WITH
  22. Previous section is 5:05
  23. Touch on elasticity
  24. { "Records":[ { "EventName":"INSERT", "EventVersion":"1.0", "EventSource":"aws:dynamodb", "Dynamodb":{ "NewImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SizeBytes":26, "StreamViewType":"NEW_AND_OLD_IMAGES", "SequenceNumber":"111", "Keys":{ "Id":{ "N":"101" } } }, "EventID":"1", "eventSourceARN":"arn:aws:dynamodb:us-east-1:acct-id:table/ExampleTableWithStream/stream/stream-id/", "AwsRegion":"us-east-1" }, { "EventName":"MODIFY", "EventVersion":"1.0", "EventSource":"aws:dynamodb", "Dynamodb":{ "NewImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "SizeBytes":59, "StreamViewType":"NEW_AND_OLD_IMAGES", "SequenceNumber":"222", "OldImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "Keys":{ "Id":{ "N":"101" } } }, "EventID":"2", "eventSourceARN":"arn:aws:dynamodb:us-east-1:acct-id:table/ExampleTableWithStream/stream/stream-id/", "AwsRegion":"us-east-1" }, { "EventName":"REMOVE", "EventVersion":"1.0", "EventSource":"aws:dynamodb", "Dynamodb":{ "SizeBytes":38, "StreamViewType":"NEW_AND_OLD_IMAGES", "SequenceNumber":"333", "OldImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "Keys":{ "Id":{ "N":"101" } } }, "EventID":"3", "eventSourceARN":"arn:aws:dynamodb:eu-west-1:acct-id:table/ExampleTableWithStream/stream/stream-id/", "AwsRegion":"eu-west-1" } ] }
  25. Kinesis Firehose: Elasticsearch, S3, Redshift FIXME
  26. O Titans Group é lider em serviços de telefonia e provedores de internet, com operação em 40 operadores em 17 países… um principais produtos chamado “X” é um aplicativo de sincronização de arquivos para mobile e desktop
  27. Titans Group precisava garantir que a solução de storage do produto atendesse os requisitos mais exigentes do ponto de vista de durabilidade, disponibilidade e confidencialidade das informações dos usuários. Também era preciso garantir a escalabilidade tanto do ponto de vista técnico quanto do ponto de vista de custo.
  28. NoSQL you have to ask – how will the application access the data? And store your data in such a way to retrieve the data with just a Select, and No joins. Designed by keeping in mind Access patterns. Via duplication of data (storage) and using Hierarchical structures, you can now optimize for compute, and therefore it is very fast. == Non-relational (NoSQL) databases typically do not enforce a schema. A “partition key” is generally used to retrieve values, column sets, or semi-structured JSON, XML, or other documents containing related item attributes.