Search code examples
amazon-web-servicesamazon-dynamodbopensearchamazon-quicksight

What is the better solution to display analytics on front end from AWS Opensearch vs Quicksight vs just DynamoDB data?


My project is a platform that offers loyalty programs to business owners. A business can scan customers QR codes and give/retrieve points + many more actions.

When they scan and submit that new scan with the given points to an API, a lambda is triggered that stores multiple objects (in DynamoDB) like:

  • a SCAN object

  • on the employee that scanned, increments the "scans" attribute for the object that has the curent date Example of this type of object:
    PK SK QUANTITY
    BUSINESS#<business_id> <who_scanned_id>#DATE#xx/xx/xxxx 123

  • on the customer that has gained a new number of points, increments the proper attirbute (on that specific date)

What should be the proper approach between these options? Or what else should be a better one?

  1. Every time a business owner wants to view some analytics in dashboard, make some requests to AWS Opensearch
  2. Every time a business owner wants to view some analytics in dashboard, display some embeded diagrams from AWS Quicksight
  3. Every time a business owner wants to view some analytics in dashboard, make many requests to DynamoDB (using API Gateway and Lambda) based on dates and organize the retrieved data

Solution

  • There are too many variables at play to make a recommendation. If it's very frequent use OpenSearch. Less frequent use Quicksight, where you can refresh the data daily for example. And if it's key value look ups, use DynamoDB.