Escolher entre relacional (SQL) e NoSQL - Amazon DynamoDB

Escolher entre relacional (SQL) e NoSQL

Atualmente, os aplicativos têm exigências maiores do que nunca. Por exemplo, um jogo online pode começar com apenas alguns usuários e uma pequena quantidade de dados. No entanto, se o jogo obtiver sucesso, ele poderá facilmente superar os recursos do sistema de gerenciamento de banco de dados subjacente. É comum que aplicativos baseados na web tenham centenas, milhares ou milhões de usuários simultâneos, com terabytes ou mais de novos dados gerados por dia. Os bancos de dados para tais aplicativos devem lidar com dezenas (ou centenas) de milhares de leituras e gravações por segundo.

O Amazon DynamoDB é perfeitamente adequado para esses tipo de workloads. Como um desenvolvedor, você pode começar pequeno e aumentar gradualmente sua utilização conforme a aplicação se tornar mais popular. O DynamoDB escala perfeitamente para lidar com quantidades muito grandes de dados e um número muito grande de usuários.

Para obter mais informações sobre a modelagem tradicional de banco de dados relacional e como adaptá-la para o DynamoDB, consulte Práticas recomendadas para modelagem de dados relacionais no DynamoDB.

A tabela a seguir mostra algumas diferenças gerais entre um sistema de gerenciamento de banco de dados relacional (RDBMS) e o DynamoDB.

Característica Sistema de gerenciamento de banco de dados relacional (RDBMS) Amazon DynamoDB
Workloads ideais Consultas ad hoc; data warehouse; OLAP (processamento analítico online). Aplicativos em escala da web, incluindo redes sociais, jogos, compartilhamento de mídia e Internet das Coisas (IoT).
Modelo de dados O modelo relacional exige um esquema bem definido, onde os dados são normalizados em tabelas, linhas e colunas. Além disso, todos os relacionamentos são definidos entre tabelas, colunas, índices e outros elementos de banco de dados. O DynamoDB é sem esquema. Cada tabela deve ter uma chave primária para identificar exclusivamente cada item de dados, mas não há restrições semelhantes em outros atributos não chave. O DynamoDB pode gerenciar dados estruturados ou semiestruturados, incluindo documentos JSON.
Acesso aos dados SQL é o padrão para armazenar e recuperar dados. Os bancos de dados relacionais oferecem um conjunto completo de ferramentas para simplificar o desenvolvimento de aplicativos para banco de dados, mas todas essas ferramentas usam o SQL. Você pode usar o AWS Management Console, a AWS CLI ou o NoSQL WorkBench para trabalhar com o DynamoDB e executar tarefas ad hoc. A linguagem PartiQL, uma linguagem de consultas compatível com SQL, permite selecionar, inserir, atualizar e excluir dados no DynamoDB. As aplicações podem utilizar os kits de desenvolvimento de software (SDKs) da AWS para trabalhar com o DynamoDB usando interfaces baseadas em objeto, centradas em documentos ou de baixo nível.
Desempenho Os bancos de dados relacionais são otimizados para armazenamento, portanto, a performance geralmente depende do subsistema de disco. Os desenvolvedores e os administradores de banco de dados devem otimizar as consultas, os índices e as estruturas de tabela para obter a máxima performance. O DynamoDB é otimizado para computação, portanto, a performance é principalmente uma função do hardware subjacente e da latência de rede. Como um serviço gerenciado, o DynamoDB protege você e suas aplicações contra esses detalhes de implementação para que você possa se concentrar em projetar e construir aplicações robustas e de alta performance.
Escalabilidade É mais fácil aumentar a escala com hardware mais rápido. Também é possível que as tabelas de banco de dados se expandam em vários hosts em um sistema distribuído, mas isso exige investimentos adicionais. Os bancos de dados relacionais têm tamanhos máximos para o número e o tamanho dos arquivos, o que impõe limites superiores na escalabilidade. O DynamoDB é projetado para aumentar a escala horizontalmente usando clusters distribuídos de hardware. Esse design permite aumentar o throughput sem aumentar a latência. Os clientes especificam seus requisitos de throughput e o DynamoDB aloca recursos suficientes para atender a esses requisitos. Não há limites superiores no número de itens por tabela, nem no tamanho total da tabela.