O Amazon SimpleDB fornece uma interface simples de serviços web para criar e armazenar dados múltiplos, consultar seus dados facilmente e retornar os resultados. Seus dados são posicionados automaticamente, tornando mais fácil localizar rapidamente as informações de que você precisa. Não há nenhuma necessidade de pré-definir um esquema ou alterar um esquema se novos dados serão adicionados mais tarde. E redimensionar é tão simples quanto criar novos domínios, em vez de construir novos servidores.
É facil utilizar o Amazon SimpleDB:
- Construa o seu conjunto de dados
- Escolha uma região para o seu domínio(s) para otimizar a latência, minimizar os custos, ou atender às exigências regulamentares. O Amazon SimpleDB está atualmente disponível nas regiões Leste dos EUA (Norte da Virgínia), Oeste dos EUA (Oregon), Oeste dos EUA (Norte da Califórnia), UE (Irlanda), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Tóquio), Ásia-Pacífico (Sydney) e América do Sul (São Paulo).
- Use o CreateDomain, DeleteDomain, ListDomains, DomainMetadata para criar e gerenciar domínios de consulta
- Use Put, Batch Put e Delete para criar e gerenciar os dados dentro de cada domínio de consulta
- Recupere seus dados
- Use GetAttributes para recuperar um item específico
- Use Select para consultar seu conjunto de dados para itens que atendam aos critérios específicos.
- Pague somente pelos recursos que você utilizar.
O modelo de dados usado pelo Amazon SimpleDB facilita o armazenamento, o gerenciamento e a consulta dos dados estruturados. Os desenvolvedores organizam seu conjunto de dados nos domínios e podem executar consultas em todos os dados armazenados em um determinado domínio. Os Domínios são coleções de itens que são descritos por pares atributo-valor.
Pense nesses termos como análogos a conceitos em uma tabela de planilha tradicional. Por exemplo, obtenha os detalhes de um banco de dados de gerenciamento de clientes na tabela abaixo e considere como seriam representados no Amazon SimpleDB. Toda a tabela seria o domínio chamado "clientes". Os clientes individuais seriam as linhas na tabela ou os itens no domínio. As informações de contato seriam descritas pelos cabeçalhos das colunas (atributos). Os valores estão nas células individuais. Agora imagine os registros abaixo como novos clientes que você gostaria de adicionar ao domínio.
CustomerID | Nome | Sobrenome | Endereço | Cidade | Estado | CEP | Telefone |
---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 |
No Amazon SimpleDB, para adicionar os registros acima, você COLOCARIA os CustomerIDs no seu domínio juntamente com os pares de valores de atributos para cada um dos clientes. Sem a sintaxe específica, pareceria algo como:
PUT (item, 123), (Nome, Bob), (Sobrenome, Smith), (Endereço, 123 Main St.), (Cidade, Springfield), (Estado, MO), (CEP, 65801), (Telefone, 222-333-4444) PUT (item, 456), (Nome, James), (Sobrenome, Johnson), (Endereço, 456 Front St.), (Cidade, Seattle), (Estado, WA), (CEP, 98104), (Telefone, 333-444-5555)
O Amazon SimpleDB difere das tabelas dos bancos de dados tradicionais de formas importantes. Você tem a flexibilidade de retornar facilmente mais tarde e adicionar novos atributos que se aplicam somente a determinados registros. Por exemplo, imagine que você começa a capturar os endereços de e-mail dos clientes para habilitar alertas em tempo real sobre o status do pedido. Em vez de recriar a tabela "cliente", reescrever as consultas, recriar índices etc., você simplesmente adicionaria os novos registros e quaisquer atributos adicionais ao domínio "clientes" existente. O domínio resultante poderá se parecer com isto:
CustomerID | Nome | Sobrenome | Endereço | Cidade | Estado | CEP | Telefone | |
---|---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 | |
789 | Deborah | Thomas | 789 Garfield | Nova York | NY | 10001 | 444-555-6666 | [email protected] |
O Amazon SimpleDB fornece um pequeno número de chamadas de API simples que implementam a gravação, indexação e enfileiramento de dados. A interface e o conjunto de recursos são intencionalmente direcionados para a funcionalidade central, fornecendo uma API básica com base na qual os desenvolvedores criarão e facilitando o aprendizado do serviço e seu uso simples.
- CreateDomain – Crie um domínio que contenha o conjunto de dados.
- DeleteDomain – Exclua um domínio.
- ListDomains – Liste todos os domínios.
- DomainMetadata – Recupere informações sobre o período de criação referente ao domínio, informações de armazenamento como contagens de nomes de itens e atributos, assim como o tamanho total em bytes.
- PutAttributes – Adicione ou atualize um item e seus atributos ou adicione pares de valores de atributos aos itens que já existem. Os itens são automaticamente indexados à medida que são recebidos.
- BatchPutAttributes – Para obter um rendimento geral maior de gravações em massa, desempenhe até 25 operações PutAttribute em uma única chamada.
- DeleteAttributes – Exclua um item, um atributo ou um valor de atributo.
- BatchDeleteAttributes – Para obter um rendimento geral maior de exclusões em massa, desempenhe até 25 operações DeleteAttributes em uma única chamada.
- GetAttributes – Recupere um item e todos ou um subconjunto de seus atributos e valores.
- Select – Consulte o conjunto de dados na sintaxe familiar “select target from domain_name where query_expression”. Os testes de valor compatíveis são: =, !=, =, like, not like, between, is null, is not null, and every (). Exemplo: select * from mydomain where every(keyword) = ‘Book’. Classifique os resultados usando o operador SORT e conte os itens que atendem à(s) condição(ões) especificada(s) pelo(s) predicado(s) em uma consulta usando o operador Count.
Nota: o Amazon SimpleDB foi integrado ao AWS Identity and Access Management para habilitar o controle aprimorado dos recursos do Amazon SimpleDB. Por meio da integração do AWS Identity and Access Management, uma Conta da AWS vinculada para uso do SimpleDB pode criar vários Usuários. Por sua vez, esses Usuários poderão receber permissões de nível da API SimpleDB para acessar os domínios SimpleDB de propriedade da conta AWS. Consulte a página de detalhes da AWS Identity and Access Management para obter mais detalhes.
O Amazon SimpleDB armazena várias cópias distribuídas geograficamente de cada domínio para permitir a alta disponibilidade e a durabilidade dos dados. Uma gravação bem-sucedida (usando PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain ou DeleteDomain) significa que todas as cópias do domínio persistirão de forma durável. O Amazon SimpleDB oferece suporte a duas opções de consistência de leitura: leituras eventualmente consistentes e leituras consistentes.
- Leituras eventualmente consistentes (Padrão) – a opção de consistência eventual maximiza o desempenho da leitura (em termos de baixa latência e alto rendimento). No entanto, uma leitura eventualmente consistente (usando Select ou GetAttributes) talvez não reflita os resultados de uma gravação concluída recentemente (usando PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes). A consistência em todas as cópias de dados normalmente é atingida em um segundo; a repetição de uma leitura após um período curto deve retornar os dados atualizados.
- Leituras consistentes – além da consistência eventual, o Amazon SimpleDB também proporciona a flexibilidade e o controle de solicitar uma leitura consistente se isso for exigido pelo aplicativo ou por um elemento do aplicativo. Uma leitura consistente (usando Select ou GetAttributes com ConsistentRead=true) retorna um resultado que reflete todas as gravações que receberam uma resposta bem-sucedida antes da leitura.
Como padrão, GetAttributes e Select desempenham uma leitura eventualmente consistente. Como uma leitura consistente pode incorrer potencialmente em maior latência e menor rendimento de leitura, é melhor usá-la somente quando um cenário de aplicativo exigir que uma operação de leitura tenha necessariamente de ler todas as gravações que receberam uma resposta bem-sucedida antes daquela leitura. Para todos os outros cenários, a leitura padrão eventualmente coerente produzirá o melhor desempenho. Observe também que o Amazon SimpleDB permitirá que você especifique definições de consistência para cada solicitação de leitura individual, de forma que o mesmo aplicativo poderia ter partes discrepantes seguindo definições de consistência diferentes.
O Amazon SimpleDB não é um banco relacional e sacrifica transações e relações (ou seja, junções) complexas para fornecer características de funcionalidade e desempenho exclusivas. No entanto, o Amazon SimpleDB oferece semântica transacional como:
- Inserções/Exclusões condicionais – permite a inserção, substituição ou exclusão de valores para um ou mais atributos de um item se o valor existente de um atributo corresponder ao valor especificado. Se o valor não corresponder ou não estiver presente, a atualização será rejeitada. Operações Puts/Deletes condicionais são úteis para evitar a perda de atualizações quando fontes diferentes gravam dados simultaneamente no mesmo item.
As operações de puts e deletes condicionais são expostas por meio de APIs PutAttributes e DeleteAttributes, especificando uma condição opcional com um valor esperado. Por exemplo, se o aplicativo estava reservando assentos ou ingressos de venda para um evento, você poderá permitir uma compra (ou seja, atualização de gravação) somente se o assento especificado ainda estivesse disponível (a condição opcional). Essas semânticas também podem ser usadas para implementar funcionalidades como contadores, inserindo um item somente se ele não existir, além do controle simultâneo otimista. Um aplicativo pode implementar um OCC por meio da manutenção de um atributo de número de versão (ou uma indicação de data e hora) como parte de um item e realizando uma operação put/delete condicional com base no valor deste número de versão.
Para saber mais sobre a semântica transacional ou a consistência com o Amazon SimpleDB, consulte o Guia do desenvolvedor do Amazon SimpleDB ou o Whitepaper sobre aprimoramentos da consistência.
O Amazon RDS permite que você execute um completo banco de dados relacional ao mesmo tempo em que reduz o trabalho da administração do banco de dados. O AmazonDynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que oferece desempenho extremamente rápido e previsível com escalabilidade perfeita. O Amazon SimpleDB oferece serviços não relacionais projetados para conjuntos de dados menores. Usar um dos vários AMIs no Amazon EC2 e Amazon EBS oferece controle completo sobre seu banco de dados sem o peso de providenciar e instalar hardware.
Há diferenças importantes entre essas alternativas que poderão tornar uma delas mais apropriada para o seu caso de uso.
Visite a página Execução dos bancos de dados na AWS para obter informações mais detalhadas sobre as várias alternativas de banco de dados para seus aplicativos.
Diferente do Amazon S3, o Amazon SimpleDB não está armazenando dados brutos. Em vez disso, ele obtém os dados como entrada e expande-os para criar vários índices, permitindo, portanto, que você consulte rapidamente aqueles dados. Além disso, o Amazon S3 e o Amazon SimpleDB usam diferentes tipos de armazenamento físico. O Amazon S3 usa unidades de armazenamento densas que são otimizadas para armazenar objetos maiores de forma econômica. O Amazon SimpleDB armazena bits de dados menores e usa unidades menos densas que são otimizadas para a velocidade de acesso dos dados.
A fim de otimizar seus custos com os serviços AWS, objetos ou arquivos grandes devem ser armazenados no Amazon S3, enquanto pequenos elementos de dados ou arquivo ponteiros (possivelmente para objetos do Amazon S3) devem ser salvos no Amazon SimpleDB. Devido à integração próxima entre os serviços e a transferência de dados livre dentro do ambiente da AWS, os desenvolvedores podem facilmente usufruir das capacidades de velocidade e de consulta do Amazon SimpleDB, assim como do baixo custo do armazenamento de dados no Amazon S3 ao integrar ambos os serviços em seus aplicativos.
O Amazon SimpleDB, atualmente, permite que domínios individuais suportem até 10 GB cada um. Se o seu conjunto de dados tiver mais de 10 GB, tire proveito da arquitetura de dimensionamento do Amazon SimpleDB e distribua seus dados em vários Domínios. O Amazon SimpleDB foi projetado com foco no paralelismo, assim a distribuição de seus dados em vários Domínios também aumentará o seu potencial de taxa de transferência de leitura e de gravação. Inicialmente você tem a disponibilidade de no máximo 250 Domínios; preencha este formulário caso necessite de mais Domínios.
Para obter mais informações sobre quantos desenvolvedores beneficiam-se do uso do Amazon SimpleDB em conjunto com o Amazon S3, clique aqui.
Com o Amazon SimpleDB, a melhor forma de prever o tamanho do armazenamento de dados estruturados é conforme a seguir:
Tamanho de bytes brutos (GB) de todos os IDs de item + 45 bytes por item + Tamanho de bytes brutos (GB) de todos os nomes de atributos + 45 bytes por nome de atributo + Tamanho de bytes brutos (GB) de todos os pares de valor e atributo + 45 bytes por par de valor e atributo
Para calcular o custo de armazenamento mensal estimado para a região leste dos EUA (norte da Virgínia) ou oeste dos EUA (Oregon), multiplique o tamanho resultante em GB por 0,25 USD. Para a região da UE (Irlanda), da Ásia-Pacífico (Cingapura), da Ásia-Pacífico (Sydney) ou a região do oeste dos EUA (norte da Califórnia), multiplique o tamanho resultante em GB por 0,275 USD. Para a região Ásia-Pacífico (Tóquio), pegue o tamanho resultante em GB e multiplique por 0,276 USD. Para a região da América do Sul (São Paulo), multiplique o tamanho resultante em GB por 0,34 USD.
O Amazon SimpleDB calcula a utilização de máquina de cada solicitação e cobra com base na capacidade de máquina utilizada para concluir a solicitação específica (QUERY, GET, PUT, etc.), normalizada pela capacidade horária de um processador de 1.7 GHz de cerca de 2007. A utilização de máquina é direcionada pela quantidade de dados (nº de atributos, tamanho dos atributos) processados por cada solicitação. Uma operação GET que recebe 256 atributos usará mais recursos do que uma operação GET que recupere somente 1 atributo. Uma operação SELECT com vários predicados que analisa 100.000 atributos custará mais do que uma consulta com um único predicado que examine 250.
Na mensagem de resposta a cada solicitação, o Amazon SimpleDB retorna um campo denominado Utilização de caixas. Utilização de caixas é a medida de recursos de máquina consumidos por cada solicitação. Ela não inclui largura de banda ou armazenamento. A Utilização de caixas é registrado como a parte de uma hora de máquina usada para concluir uma determinada solicitação. Para a região do leste dos EUA (norte da Virgínia), o custo de uma solicitação individual é a Utilização de caixas (expresso em horas) * 0,14 USD por hora de máquina do Amazon SimpleDB. O custo de todas as suas solicitações é a soma da Utilização de caixas (expresso em horas) * 0,14 USD.
Por exemplo, se ao longo de um mês, a soma da Utilização de caixas para suas solicitações utiliza o equivalente a um processador Xeon de 1,7 GHz para 9 horas, a tarifa será:
9 horas x 0,14 USD por Hora da máquina do Amazon SimpleDB = 1,26 USD.
Se seus domínios de consulta estiverem localizados nas regiões da UE (Irlanda), Ásia-Pacífico (Tóquio), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Sydney) ou no oeste dos EUA (norte da Califórnia), as horas de máquina do Amazon SimpleDB custam 0,154 USD por hora de máquina. Se seus Domínios de consulta estão localizados na região da Ásia-Pacífico (Tóquio), as horas de máquina do Amazon SimpleDB custam 0,19 USD por hora de máquina. Todos os cálculos de custos devem ser ajustados para refletir a definição de preço na região relevante.
O uso deste serviço está sujeito ao Contrato do Cliente da Amazon Web Services.