Amazon DynamoDB (Beta)

O DynamoDB é um serviço de banco de dados NoSQL rápido e totalmente gerenciado que permite armazenar e recuperar qualquer quantidade de dados e atender a qualquer nível de tráfego de solicitações com facilidade e economia. Todos os itens de dados são armazenados em Solid State Drives (SSDs, unidades de estado sólido) e replicados em 3 zonas de disponibilidade para oferecer alta disponibilidade e durabilidade.

Com o DynamoDB, você pode se livrar da sobrecarga administrativa de operar e dimensionar um cluster de banco de dados distribuídos altamente disponível pagando um preço baixo apenas pela capacidade utilizada.



Comece a usar gratuitamente

Execute até 40 milhões de operações por mês gratuitamente. Ver os detalhes »




Clientes em destaque

Washington Post

Celular

Fornece as notícias mais recentes a mais de 34 milhões de leitores em qualquer dispositivo

Adroll

Veiculação de anúncios

A Adroll oferece mais de 7 bilhões de impressões de anúncio por dia em todo o mundo

HasOffers

Veiculação de anúncios

Controla bilhões de eventos de marketing de desempenho de desktops e dispositivos móveis

Scopely

Jogos

Serve milhões de usuários com apenas alguns engenheiros no backend

WeatherBug

Celular

A Earth Networks lançou o recurso WeatherBug, de grande escala, em apenas algumas semanas


Esta página contém as seguintes categorias de informações. Clique para ir para baixo:

Funcionalidade do Amazon DynamoDB

Para usar o Amazon DynamoDB, basta:

  • Use as APIs do AWS Management Console ou do Amazon DynamoDB para criar uma tabela e especificar uma capacidade de requisição necessária.
  • Use as APIs do Amazon DynamoDB para gravar e recuperar dados.
  • Controle o status e o desempenho de suas tabelas do Amazon DynamoDB usando o Amazon CloudWatch, no AWS Management Console.
  • Pague somente por aquilo que usar. Sua fatura mensal é baseada na capacidade de solicitações fornecidas de sua tabela e na quantidade de dados armazenados.

Destaques do serviço

Escalável – O Amazon DynamoDB é projetado para escalabilidade de armazenamento e taxa de transferência contínuos.

  • Taxa de transferência provisionada – Ao criar uma tabela, é só especificar a quantidade de capacidade de solicitação que você precisa. O DynamoDB distribui recursos especiais para sua tabela atender aos seus requisitos de desempenho, e particiona automaticamente os dados através de um número suficiente de servidores para corresponder sua solicitação de capacidade. Caso seus requisitos de taxa de transferência mudem, é só atualizar a capacidade de solicitação de sua tabela usando o Amazon DynamoDB o AWS Management Console ou as APIs do Amazon DynamoDB. Você ainda poderá alcançar seus níveis de taxa de transferência anteriores enquanto a escalabilidade está em curso.
  • Escalabilidade de armazenamento automatizada – Não há limites para a quantidade de dados que você pode armazenar em uma tabela do DynamoDB, e o serviço distribui automaticamente mais armazenamento, na medida que você armazena mais dados usando APIs de gravação do DynamoDB.
  • Arquitetura sem compartilhamento e de distribuição total – O Amazon DynamoDB tem uma escalabilidade horizontal e pode escalar ininterruptamente uma única tabela através de centenas de servidores.

Desempenho rápido e previsível – A latência média para o serviço do Amazon DynamoDB é de geralmente um dígito de milissegundos. O serviço é executado em discos de estado rígido e é criado para manter latências rápidas e consistentes em qualquer escala.

Administração fácil – O Amazon DynamoDB é um serviço de gestão completa – você cria uma tabela de banco de dados e deixa que o serviço cuide do resto. Você não precisa se preocupar com o provisionamento de software ou hardware, instalação e configuração, patches de software ao operar um cluster de banco de dados distribuído seguro, que particiona dados através de várias instâncias à medida que você escala.

Tolerância de falha integrada – O Amazon DynamoDB tem tolerância de falha integrada, replicando de forma automática e simultânea seus dados através de três zonas de disponibilidade em uma região, para alta disponibilidade além de ajudar a proteger seus dados em relação a máquinas individuais ou mesmo falhas de recursos.

Flexível – O Amazon DynamoDB não possui um esquema fixo. Em vez disso, cada item de dados pode ter um número diferente de atributos. Vários tipos de dados (sequências de caracteres, números, dados binários e conjuntos) proporcionam riqueza ao modelo de dados.

Contadores atômicos e consistência forte – Diferentemente de muitos banco de dados não relacionais, o Amazon DynamoDB torna o desenvolvimento mais fácil ao permitir que você use consistência forte em leituras para garantir que você esteja sempre lendo os últimos valores. O Amazon DynamoDB suporta muitos tipos de dados nativos (números, sequências de caracteres, dados binários e atributos multivalores). O serviço também suporta originalmente contadores atômicos, permitindo-lhe aumentar ou diminuir atributos numéricos com uma simples chamada de API.

Custo-benefício – O Amazon DynamoDB é projetado para ter uma ótima relação custo-benefício para cargas de trabalho em qualquer dimensão. Você pode iniciar com um nível gratuito que lhe permite mais de 40 milhões de operações de banco de dados por mês, a um baixo custo por hora pagos apenas pelos recursos que você utilizar além do limite. De fácil administração e preços acessíveis, o DynamoDB consegue oferecer um custo total de propriedade (TCO) significativamente baixo para sua carga de trabalho, quando comparado à operação de um banco de dados relacional ou não relacional por sua própria conta.

Segurança – O Amazon DynamoDB usa métodos de criptografia comprovados para autenticar usuários e prevenir o acesso não autorizado de dados. Também está integrado ao AWS Identity and Access Management (IAM) possibilitando um controle de acesso minucioso para os usuários em sua organização.

Monitoramento integrado – O Amazon DynamoDB exibe métricas-chave operacionais para sua tabela no AWS Management Console. O serviço também está integrado ao Amazon CloudWatch, de modo que você pode consultar sua taxa de transferência de solicitação e de latência para cada tabela do Amazon DynamoDB, assim como rastrear facilmente seu consumo de recursos.

Integração com o Elastic MapReduce – O Amazon DynamoDB está integrado também ao Amazon Elastic MapReduce (Amazon EMR). O Amazon EMR permite aos empresários desenvolverem análises complexas de seus grandes conjuntos de dados utilizando um framework Hadoop hospedado na AWS, que só é pago quando usado. Ao iniciar o Amazon DynamoDB, é fácil para os clientes usarem o Amazon EMR para analisar conjuntos de dados armazenados no Amazon Simple Storage Service (Amazon S3), enquanto o conjunto de dados original é mantido intacto no DynamoDB. Os empresários também podem usar o Amazon DynamoDB para acessar os dados em vários armazenamentos (i.e. Amazon DynamoDB, Amazon RDS, e Amazon S3), realizar análises complexas através desse conjunto de dados combinados e armazenar os resultados desse trabalho no Amazon S3.


Recursos

O DynamoDB oferece escalabilidade transparente de taxa de transferência e armazenamento e um console de gerenciamento fácil de usar, permitindo aumentar ou diminuir a escala facilmente, de acordo com a necessidade. Muitos dos nossos clientes criaram implementações de DynamoDB com um clique de botão em apenas alguns minutos para atender a trilhões de solicitações de bancos de dados por ano.

As tabelas do DynamoDB não têm esquemas fixos e cada item pode ter um número diferente de atributos. Os diversos tipos de dados aumentam os recursos do modelo de dados. Índices secundários locais adicionam flexibilidade às consultas executadas sem afetar o desempenho.

Desempenho, confiabilidade e segurança são incorporados, com armazenamento em SSDs e replicação em três vias. O Amazon DynamoDB usa métodos de criptografia comprovados para autenticar usuários com segurança e evitar o acesso não autorizado aos dados.

Saiba mais sobre os recursos e benefícios do DynamoDB »


Definição de preço

O DynamoDB não tem custos iniciais e você pode pagar conforme usar. A definição de preço é simples – você paga uma tarifa fixa por hora com base na capacidade que reservou. Ao criar ou atualizar sua tabela do Amazon DynamoDB, você especifica quanto de capacidade deseja reservar para leituras e gravações. O DynamoDB distribui automaticamente os dados e o tráfego da tabela em um número suficiente de servidores para atender às suas necessidades de taxa de transferência sem deixar de manter um desempenho consistente e rápido.

Você pode começar a usar o DynamoDB gratuitamente com a nosso nível gratuito mensal. Os clientes do DynamoDB recebem 100 MB de armazenamento gratuito, além de até 5 gravações/segundo e 10 leituras/segundo de capacidade de taxa de transferência contínua. Você pode usar esse armazenamento e essa taxa de transferência gratuitos para executar até 40 milhões de operações gratuitas todos os meses com leituras eventualmente coerentes ou 25 milhões de operações todos os meses com leituras estritamente coerentes.

Visualizar a definição de preço detalhada do Amazon DynamoDB »


Conceitos básicos do Amazon DynamoDB

Na Amazon, costumamos começar com o DynamoDB como a opção padrão para todas as cargas de trabalho que não exigem a flexibilidade de bancos de dados relacionais como Oracle ou MySQL. Os clientes nos dizem que adotam a mesma prática, particularmente nas áreas de publicidade digital, jogos sociais e aplicativos de dispositivos conectados, onde a alta disponibilidade, a escalabilidade transparente, o desempenho previsível e a baixa latência são essenciais.

O desenvolvimento de aplicativos usando o Amazon DynamoDB permite que você comece aos poucos e simplesmente aumente a capacidade solicitada de uma tabela à medida que seus requisitos aumentam, sem incorrer em tempo de inatividade ou ter que escrever ou alterar uma única linha de código. O Amazon DynamoDB fornece uma experiência totalmente gerenciada para qualquer escala.

Você pode começar a utilizar o DynamoDB em poucos minutos usando o nosso Getting Started Guide. O DynamoDB se integra diretamente com o Amazon S3 e o Amazon Redshift. Usando o AWS Data Pipeline, é possível retirar dados do Amazon Elastic MapReduce, do Amazon RDS e dos seus bancos de dados do Amazon EC2, permitindo combinar e analisar dados de várias fontes com algumas etapas básicas.


Quando devo usar o DynamoDB?

Quando eu devo usar o Amazon DynamoDB e quando devo usar um mecanismo de banco de dados relacional?

Os aplicativos baseados na web atuais geram e consomem quantidades massivas de dados. Por exemplo, um jogo on-line pode começar com apenas alguns milhares de usuários e uma carga de trabalho de banco de dados leve, consistindo em 10 gravações por segundo e 50 leituras por segundo. No entanto, se o jogo obtiver sucesso, é possível crescer rapidamente para um milhão de usuários e gerar dezenas (ou até centenas) de milhares de gravações e leituras por segundo. É possível também criar terabytes de dados por dia. Desenvolver seus aplicativos junto com o Amazon DynamoDB permite que você comece com pouco e simplesmente aumente a capacidade de requisição de uma tabela, à medida que suas solicitações aumentam, sem incorrer em tempo ocioso ou ter que gravar ou alterar uma linha de código sequer. O Amazon DynamoDB fornece uma experiência de gestão completa em qualquer dimensão.

Enquanto o Amazon DynamoDB supera os principais problemas de escalabilidade, gestão, desempenho e confiabilidade de banco de dados, ele não é um banco de dados relacional e não suporta consultas relacionais complexas (p.ex. associações) ou transações complexas. Se sua carga de trabalho precisa dessa funcionalidade, ou se estiver procurando compatibilidade com um mecanismo relacional existente, experimente o Amazon Relational Database Service (RDS). Você pode também executar o seu próprio banco de dados relacional no Amazon EC2. Enquanto mecanismos de banco de dados relacionais fornecem significativas funcionalidades e recursos, cargas de trabalho com requisitos de escalabilidade podem lhe solicitar para gerir o particionamento e reparticionamento de seus dados em instâncias múltiplas. Isto pode ser uma tarefa complexa. Do mesmo modo, se você já sabe os requisitos de escalabilidade significativos para seu novo aplicativo, não precisando de recursos relacionais, o Amazon DynamoDB pode ser a sua melhor escolha.

Visite a página Executando bancos de dados da AWS para obter informações sobre as várias alternativas de banco de dados para seus aplicativos.


Descrição detalhada

Modelo de dados – Atributos, itens e tabelas

O Amazon DynamoDB organiza os dados em tabelas que contêm itens, sendo que cada item possui um ou mais atributos.

Atributos.

Um atributo é um par de nome-valor. O nome precisa ser uma sequência de caracteres, mas o valor pode ser uma sequência de caracteres, um número, um binário, um conjunto de sequência de caracteres, um conjunto de números ou um conjunto binário. Veja a seguir exemplos de atributos:

        "ImageID" = 1
        "Title" = "flower"
        "Tags" = "flower", "jasmine", "white"
        "Ratings" = 3, 4, 2
    

Item

Uma coleção de atributos forma um item, e o item é identificado por uma chave primária. Atributos de item são uma coleção de pares de nome-valor, em qualquer ordem. Os atributos de item podem ser dispersos, não relacionados aos atributos de outro item na mesma tabela, e são opcionais (com exceção do atributo de chave primária). Diferentemente de banco de dados tradicionais, a tabela não possui outro esquema além da dependência da chave primária. Os itens são armazenados em uma tabela. Para colocar itens em uma tabela, você deve designar pelo menos um dos atributos como a chave primária. A chave primária identifica exclusivamente um item para uma tabela do DynamoDB. No diagrama seguinte, a ImageID é o atributo determinado como a chave primária:

Observe que a tabela tem um nome, "myTable", mas o item não possui um nome. A chave primária define o item; o item com a chave primária "ImageID"=1.

Tabelas

Tabelas contêm itens e organizam informações em áreas separadas. Todos os itens na tabela têm o mesmo esquema de chave primária. Você determina o nome do atributo (ou nomes) para ser usado na chave primária quando você criar uma tabela, e a tabela exige que cada um de seus itens tenha um valor de chave primária único. O primeiro passo ao gravar dados no DynamoDB é criar uma tabela e determinar um nome para a tabela com uma chave primária. O passo seguinte consiste numa tabela maior que também usa a ImageID como a chave primária para identificar itens.

Tabela: Minhas imagens
Chave primária Outros atributos
ImageID = 1 ImageLocation = https://s3.amazonaws.com/bucket/img_1.jpg Data = 1260653179 Title = flower Tags = Flower, Jasmine Largura = 1024 Profundidade = 768
ImageID = 2 ImageLocation = https://s3.amazonaws.com/bucket/img_2.jpg Data = 1252617979 Rated = 3, 4, 2 Tags = Trabalho, Seattle, Escritório Largura = 1024 Profundidade = 768
ImageID = 3 ImageLocation = https://s3.amazonaws.com/bucket/img_3.jpg Data = 1285277179 Preço = 10,25 Tags = Seattle, Mercearia, Loja Autor = você Câmera = telefone
ImageID = 4 ImageLocation = https://s3.amazonaws.com/bucket/img_4.jpg Data = 1282598779 Título = Havaí Autor = Joe Cores = laranja, azul, amarelo Tags = praia, manta, bola

Visão geral do modelo de acesso e API

Chave primária

O DynamoDB exige que cada tabela tenha uma chave primária definida, que é usada para acessar dados. A chave primária identifica cada item exclusivamente (como ID = 1, ID = 2, ID = 3, etc.). A chave primária é a única parte da tabela que é indexada, e também é usada para realizar um particionamento hash de seus dados entre vários servidores. É possível especificar a chave primária quando você cria uma tabela.

Em outras palavras, cada item é uma coleção de pares nome/valor. Quando cria uma tabela de itens, você determina um par nome/valor como a chave primária. Todos os itens em uma tabela devem possuir um valor para o atributo de chave primária, e o Amazon DynamoDB garante que o valor para aquele nome é único. Um índice é criado com base na chave primária.

Chave primária composta para consultas por intervalo

A chave primária composta permite que você especifique dois atributos em uma tabela que forma coletivamente um índice primário único. Todos os itens na tabela devem possuir os dois atributos. Um serve como um "atributo de particionamento hash" e o outro como um "atributo de intervalo". Por exemplo, você pode ter uma tabela "Atualizações de status" com a chave primária composta formada por "UserID" (atributo de hash, usado para partição da carga de trabalho entre vários servidores) e uma "Time" (atributo de intervalo). Você poderia então executar uma consulta para buscar: 1) um item particular unicamente identificado pela combinação dos valores de UserID e Time; 2) todos os itens para um "bucket" de hash – nesse caso UserID; ou 3) todos os itens para uma UserID particular com um intervalo de hora específico. Consultas por intervalo para "Time" somente são suportadas quando o bucket de hash de UserID é especificado.

APIs do DynamoDB

  • CreateTable – Cria uma tabela e especifica o índice primário usado para o acesso dos dados.
  • UpdateTable – Atualiza os valores de taxa de transferência para a tabela em questão.
  • DeleteTable – Exclui a tabela.
  • DescribeTable – Retorna as informações de tamanho, status e índice da tabela.
  • PutItem – Cria um novo item, ou substitui um item antigo por um novo (incluindo todos os atributos). Se algum item existe em uma tabela específica com a mesma chave primária, o novo item substitui completamente o item já existente. Você também pode usar operadores condicionais para substituir um item somente se seus valores de atributo corresponderem às condições, ou inserir um novo item apenas se ele ainda não existir.
  • BatchWriteItem – Insere, substitui e exclui vários itens em várias tabelas em uma única solicitação, mas não como uma transferência única. Suporta lotes de até 25 itens para Colocar e Excluir, com um tamanho total máximo de solicitação de 1 MB.
  • UpdateItem – Edita os atributos de um item existente. É possível usar operadores condicionais para executar uma atualização somente se os valores de atributo do item corresponderem a condições específicas.
  • DeleteItem – Exclui um item único em uma tabela por meio de uma chave primária. É possível usar operadores condicionais para excluir um item somente se os valores de atributo do item corresponderem a condições específicas.
  • GetItem – A operação GetItem retorna um conjunto de atributos para um item correspondente à chave primária. A operação GetItem fornece uma leitura eventualmente consistente por padrão. Caso seu aplicativo não aceite leituras eventualmente consistentes, use ConsistentRead.
  • BatchGetItem – A operação BatchGetItem retorna os atributos para vários itens de várias tabelas, usando suas chaves primárias. Uma resposta única tem o limite de tamanho de 1 MB e retorna a quantidade máxima de 100 itens. Compatível com consistência eventual e sólida.
  • Query – Obtém um ou mais itens com base em sua chave primária. Compatível com consistência eventual e sólida. Esta API é usada em tabelas que possuem uma chave de faixa de hash composta
  • Scan – Obtém um ou mais itens e atributos por meio de uma varredura completa pela tabela. Os itens retornados podem ser limitados por filtros especificados para um ou mais atributos. Esta API pode então ser usada para permitir uma consulta ad hoc de uma tabela em relação a atributos que não sejam a chave primária da tabela. Entretanto, uma vez que consiste em uma varredura sem índice, não deve ser usada para nenhum caso de uso de consulta do aplicativo que requeira um desempenho previsível. O conjunto de resultados de uma API Scan será eventualmente consistente. Você pode pensar que a API Scan é como se fosse um repetidor (iterator). Uma vez que o tamanho agregado de itens varridos para uma determinada solicitação de API Scan exceda 1 MB de limite, tal solicitação será concluída e os resultados produzidos serão retornados junto com a LastEvaluatedKey (para continuar a varredura em uma operação posterior).

Integração com o Amazon Elastic MapReduce

O Amazon DynamoDB também está integrado ao Amazon Elastic MapReduce (Amazon EMR). O Amazon EMR permite aos empresários desempenharem análises complexas de seus grandes conjuntos de dados utilizando um framework Hadoop hospedado na AWS, que é pago somente quando é usado. A seguir, veja algumas maneiras possíveis do EMR ser utilizado com o DynamoDB:

  1. Os clientes podem analisar os dados armazenados no DynamoDB usando o EMR e armazenar os resultados da análise no S3, enquanto deixa os dados originais no DynamoDB.

    Por exemplo, se você estiver usando o Amazon DynamoDB para armazenar pedidos de clientes, é possível criar uma nova tabela de pedidos por mês e utilizar a função de consulta em múltiplas tabelas do EMR. Assim, você poderia unir diferentes tabelas no DynamoDB para responder perguntas como "quais pedidos foram feitos por um cliente específico nos últimos três meses?" Você pode então usar o EMR para armazenar os resultados dessas perguntas no S3 para, mais tarde, recuperá-los enquanto deixa os dados intactos nas tabelas de pedidos do cliente, mensalmente, no DynamoDB.

  2. Os clientes podem fazer o backup dos dados do DynamoEB para o S3 utilizando o EMR.

    Conforme o exemplo anterior sobre pedidos de clientes, uma vez que você não esteja mais gravando ativamente em uma tabela de pedidos mensalmente, é possível fazer o backup dessa tabela no S3 e excluí-la do DynamoDB para se beneficiar dos bons preços de armazenamento do S3. Os dados armazenados no S3 ainda estarão disponíveis para análises como descrito a seguir.

  3. Os clientes também podem usar o Amazon EMR para acessar os dados em múltiplos armazenamentos (i.e. Amazon DynamoDB, Amazon RDS, e Amazon S3), realizar análises complexas através desse conjunto de dados combinados e armazenar os resultados desse trabalho no Amazon S3.

    Por exemplo, se você estiver usando o Amazon DynamoDB para armazenar pedidos de clientes, é possível criar uma nova tabela de pedidos por mês e, no final de cada mês, arquivar os pedidos com mais de 6 meses no Amazon S3, por meio do Amazon EMR. Isso permite que você arquive no Amazon S3 seus pedidos acessados raramente para reduzir gastos e manter no DynamoDB somente os pedidos que são acessados com frequência. Você pode usar o EMR para desempenhar análises que abranjam os pedidos atuais armazenados no DynamoDB e suas tabelas de pedidos arquivadas no Amazon S3, para responder consultas como "Quantos pedidos do produto X o cliente Y fez nos últimos 48 meses?"

Conceitos básicos

Para começar a usar o Amazon DynamoDB, você pode trabalhar a partir do nosso Guia de introdução.


Uso pretendido e restrições

O uso deste serviço está sujeito ao Acordo do cliente da Amazon Web Services.

"
©2013, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.