Virkelig DynamoDB og MySQL er æbler og appelsiner. DynamoDB er et NoSQL-lagerlag, mens MySQL bruges til relationel lagring. Du bør vælge, hvad du vil bruge baseret på de faktiske behov for din applikation. Faktisk kan nogle applikationer være godt tjent med at bruge begge dele.
Hvis du for eksempel gemmer data, der ikke egner sig godt til et relationelt skema (træstrukturer, skemaløse JSON-repræsentationer osv.), som kan slås op mod en enkelt nøgle eller en nøgle/område-kombination, så DynamoDB ( eller en anden NoSQL-butik) ville sandsynligvis være dit bedste bud.
Hvis du har et veldefineret skema for dine data, der kan passe godt ind i en relationsstruktur, og du har brug for fleksibiliteten til at forespørge dataene på en række forskellige måder (naturligvis tilføje indekser efter behov), så kan RDS være en bedre løsning .
Den største fordel ved at bruge DynamoDB som et NoSQL-lager er, at du får garanteret læse-/skrivegennemstrømning på det niveau, du har brug for, uden at skulle bekymre dig om at administrere et klynget datalager. Så hvis din applikation kræver 1000 læsninger/skrivninger i sekundet, kan du bare klargøre din DynamoDB-tabel til det niveau af gennemløb og ikke rigtigt at skulle bekymre dig om den underliggende infrastruktur.
RDS har meget af den samme fordel ved ikke at skulle bekymre dig om selve infrastrukturen, men hvis du ender med at skulle lave et betydeligt antal skrivninger til det punkt, hvor den største forekomststørrelse ikke længere vil følge med, står du lidt uden valgmuligheder (du kan skalere vandret til læsninger ved hjælp af læsereplikaer).
Opdateret note:DynamoDb understøtter nu global sekundær indeksering, så du har nu mulighed for at udføre optimerede opslag på andre datafelter end hashen eller kombinationen af hash- og områdenøgler.