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.
Execute até 40 milhões de operações por mês gratuitamente. Ver os detalhes »
Para usar o Amazon DynamoDB, basta:
Escalável – O Amazon DynamoDB é projetado para escalabilidade de armazenamento e taxa de transferência contínuos.
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.
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.
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 »
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.
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.
O Amazon DynamoDB organiza os dados em tabelas que contêm itens, sendo que cada item possui um ou mais 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
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 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 | |
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.
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.
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:
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.
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.
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?"
O uso deste serviço está sujeito ao Acordo do cliente da Amazon Web Services.
"