Zrobiłem wiele z relacyjnymi bazami danych, a trochę z bazami danych NoSQL (aby wiedzieć, skąd pochodzę). Bazy danych IMHO, NoSQL najlepiej nadają się do scenariuszy, w których jeden lub więcej jest prawdziwych:
- Dane są zasadniczo płaskie (niewiele relacji, prawie jak stary plik płaski)
- Istnieje określony rekord typu „rodzic” z rekordami „podrzędnymi”, które są wystarczająco małe/wystarczająco często dostępne przez rodzica, aby uzasadnić osadzenie ich bezpośrednio w rekordzie.
- Potrzebna jest swoboda dodawania/wypełniania pól w ramach powodu. Lubię myśleć o tym jak o dziedziczeniu, gdzie każdy element w tabeli ma pewne wspólne cechy (identyfikator, imię), ale różne rekordy mogą mieć inne cechy. Na przykład internetowy katalog produktów może zawierać książki, rowery i utwory MP3. Rekord dla pozycji „książki” miałby takie rzeczy jak ISBN, liczbę stron, autora itp. „Rower” może mieć rozmiar i kolor koła, a „MP3” miałby długość, wykonawcę, gatunek itp. Nigdy nie dostaniesz wszystkich tych rzeczy w tabeli "item" w ARDS bez poważnego przeciążenia lub pozostawienia pustych pól. Baza danych ANoSQL pozwoliłaby na przechowywanie wszystkich tych informacji w tabeli i tylko dla elementów, które tego potrzebują.
Z pewnością możesz zbudować schemat, który dołączysz do swojego pytania, korzystając z możliwości indeksowania Dynamo, ale będziesz próbował sprawić, aby baza danych NoSQL działała jak RDS.
To powiedziawszy:sam wypróbowałbym to najpierw z Dynamo jako doświadczenie edukacyjne. :)