Reputation: 891
I am using DynamoDB as the database of choice in a very large and complex system.
This was done around 2017/18 and the application has been working and evolving ever since. The decision of using DynamoDB was based on the access patterns and scalability properties. Recently we are doing a face-lift of our UI and it drastically changes some of the access patterns we designed our database and model for.
We don't want to migrate out of DynamoDB so I am thinking of creating an auxiliary store in (SQL or similar) that replicates our DynamoDB table but let's us do all the needed queries of the data.
What would you do in this case?
Is it recommended to duplicate the data (subset of attributes) in order to satisfy our UI requirements?
How other people have solved this?
The table that is changing holds many entities. The change is for one of this entities. It used to get accessed sorting by timestamp, and paging was done using pointers (infinite scroll in the UI).
The new design is great. Gives the user more power to massage the data, but changes drastically the access patterns we designed the model and table for.
We are not looking to change our database. This entity has 10+ attributes but one of them is a tree like structure, and JSON is perfect and DynamoDB as well. We also use heavily Streams and TTL for post processing and other stuff. Our whole application relies on this DynamoDB table to be the source of truth for this entity.
Some possible solutions, that I can think of, but I am not convinced.
Upvotes: 0
Views: 250
Reputation: 7132
A fourth option is Rockset. It can scan what’s in DynanoDB and stay up to date with Streams, then provides a variety of ad hoc query capabilities against the data including text search features and analytics.
It’s serverless and does all the sync work for you, two big benefits. I’d try that first.
Upvotes: 1