Mudando de RDBMS para DynamoDB em 20 etapas
Tags: ptbr, aws, serverless, webdev
Published: 2019-06-13 02:20:34

Eu [postei um tópico no Twitter](https://twitter.com/jeremy_daly/status/1137002244157710336) com algumas reflexões sobre como mudar de RDBMS para o DynamoDB. Algumas pessoas me pediram para transformá-lo em um artigo de blog para facilitar o acompanhamento. Então aqui está... com alguns passos de bônus no final. Bom proveito! 😁

https://twitter.com/jeremy_daly/status/1137002244157710336

Eu **tenho passado muito tempo** ultimamente com o DynamoDB em meus aplicativos serverless, então pensei em compartilhar meu guia infalível para migrar de RDBMS para DynamoDB. Então aqui está:

**Etapa 01**

Aceite o fato de que a Amazon.com **pode acomodar 90% do fluxo de trabalho** do site/sistema de varejo em DynamoDB, então você provavelmente também pode. 🤔

**Etapa 02**

Crie um Modelo de Relacionamento de Entidade, assim como você faria se estivesse projetando um banco de dados relacional tradicional. 👩‍💻

**Etapa 03**

Crie uma lista de **todos** os seus padrões de acesso. Se "pesquisar" for um padrão de acesso, não se preocupe, nós lidaremos com isso na etapa 17. 😉

**Etapa 04**

Reduza os padrões de acesso para o mínimo *exigido* pelos usuários do aplicativo. Análise de dados e as tarefas administrativas, como *analytics*, agregações, acionadores de tarefas, etc., são importantes, mas provavelmente não são necessárias para o usuário final interagir com seu aplicativo em tempo real. 🚫📊

**Etapa 05**

Determine se os padrões de acesso do usuário exigem consultas ***ad hoc*** que precisem reformular os dados. Provavelmente a resposta é não. No entanto, se você estiver criando um aplicativo OLAP, o NoSQL não é uma boa escolha. Dê um tapinha nas suas costas por tentar e use outra tecnologia. 🤷‍♂️

**Etapa 06**

Coloque a cabeça no micro-ondas por 3 segundos, ou o tempo que for necessário, para esquecer o que **normalização dos dados** e a [terceira forma normal](https://en.wikipedia.org/wiki/Third_normal_form) são. 🤤

**Etapa 07**

Assista a apresentação **Advanced Design Patterns for Amazon DynamoDB (DAT403-R)** de [Rick Houlihan](https://twitter.com/houlihan_rick) para o Amazon DynamoDB na AWS re:Invent 2017. 😯

https://www.youtube.com/watch?v=jzeKPKpucS0

**Etapa 08**

Assista a apresentação **Amazon DynamoDB Deep Dive: Advanced Design Patterns for DynamoDB (DAT401)** de [Rick Houlihan](https://twitter.com/houlihan_rick)para o Amazon DynamoDB na AWS re:Invent 2018. 😮

https://www.youtube.com/watch?v=HaEPXoXVf2k

**Etapa 09**

Limpe todas as minúsculas partes do seu cérebro espalhadas pela sala, depois reagrupe-as e assista tudo novamente, desta vez a meia velocidade. Tome notas. 🤯

**Etapa 10**

Leia o guia [**‌Best Practices for DynamoDB**](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html) no site da AWS. E em seguida, leia-o de novo. 🤓

**Etapa 11**

Planeje ***uma*** tabela DynamoDB que usa índices sobrecarregados para armazenar todas as suas entidades usando ***Composite Sort Keys*** (quando necessário), adicionando ***LSIs*** e ***GSIs*** adicionais (novamente, quando necessário) para acomodar os padrões de acesso acima mencionados. 😳(isso fará mais sentido quando você passar pelas etapas anteriores).

**Etapa 12**

Escreva algumas consultas de exemplo e teste seus padrões de acesso em relação ao design de sua tabela. Perceba que você errou completamente na primeira vez, respire, tome uma cerveja (ou duas) e volte para a **Etapa 07**. 😞🍺

**Etapa 13**

Teste seus padrões de acesso em relação ao seu **novo** design de tabela. Itere. Teste novamente. Itere e teste novamente. 🤨

**Etapa 14**

Repita a **Etapa 13** até que você esteja 95% confiante de que você tem o design da sua tabela corretamente. 😀

**Etapa 15**

Você fez isso (bem, a primeira parte de qualquer maneira)! 🎉 Celebre sua conquista (talvez tenha outra cerveja) e conecte os padrões de acesso do DynamoDB ao AppSync ou crie uma API com o API Gateway. Lembre-se de usar a [**Transactions API**](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transactions.html) quando necessário. 😎

**Etapa 16**

Teste, teste e teste novamente. E quando terminar de testar, teste novamente. E certifique-se de escrever alguns testes para que você possa testá-lo automaticamente, de novo e de novo. ✅

**Etapa 17**

Ative o **DynamoDB Streams** e use-os para gerar/atualizar agregações e replicar dados para relatórios, indexação de pesquisa e/ou outros requisitos do aplicativo. (As funções do Lambda são ótimas para **stored procedures**, por exemplo) 🚀

**Etapa 18**

Teste seus **DynamoDB Streams** **NA NUVEM** para garantir que os dados estejam fluindo corretamente e que os recursos alvos estão sendo preenchidos/atualizados corretamente. Escreva alguns testes para automatizar isso. ☁️

**Etapa 19**

Cruze os dedos, publique na produção. 🤞

**Etapa 20**

Lucre! 💰

---

Isso foi obviamente um pouco simplificado, mas espero que você comece sua jornada para descobrir o poder do DynamoDB. Se não conseguir no começo, basta seguir em frente. Ele acabará "clicando" (a menos que você tenha deixado a cabeça no microondas por muito tempo). Boa sorte! 👍

# Etapa Bonus

Houve uma tonelada de ótimos comentários no Twitter com sugestões para material de aprendizado adicional do DynamoDB. Se você quiser ir ainda mais fundo no DynamoDB, aqui estão alguns recursos adicionais que farão seu cérebro queimar ainda mais. 🔥

- [Build On DynamoDB | S1 E2 – Intro to NoSQL Data Modeling with Amazon DynamoDB](https://www.youtube.com/watch?v=Rmf8mrJ3X2s)

https://www.youtube.com/watch?v=Rmf8mrJ3X2s

- [Build with DynamoDB | S1 E3 – NoSQL Data Modeling with Amazon DynamoDB](https://www.youtube.com/watch?v=KlhS7hSnFYs)

https://www.youtube.com/watch?v=KlhS7hSnFYs

- [Simplifique a extração e análise de dados do Amazon DynamoDB usando o AWS Glue e o Amazon Athena](https://aws.amazon.com/blogs/database/simplify-amazon-dynamodb-data-extraction-and-analysis-by-using-aws-glue-and-amazon-athena/)
- [Como executar análises avançadas e criar visualizações dos dados do Amazon DynamoDB usando a Amazon Athena](https://aws.amazon.com/blogs/database/how-to-perform-advanced-analytics-and-build-visualizations-of-your-amazon-dynamodb-data-by-using-amazon-athena/)
- [DynamoDB, explained](https://www.dynamodbguide.com) por [Alex DeBrie](https://twitter.com/alexbdebrie)
- [Do banco de dados relacional à tabela única no DynamoDB: uma exploração passo a passo](https://www.trek10.com/blog/dynamodb-single-table-relational-modeling/) por [Forrest Brazeal](https://twitter.com/forrestbrazeal)

Você conhece mais recursos incríveis do DynamoDB? Por favor, sinta-se livre para [me enviar no Twitter](https://twitter.com/jeremy_daly)!

# Créditos ⭐️
- [How to switch from RDBMS to DynamoDB in 20 easy steps](https://www.jeremydaly.com/how-to-switch-from-rdbms-to-dynamodb-in-20-easy-steps), escrito originalmente por [Jeremy Daly](https://twitter.com/jeremy_daly)