DynamoDB and Plant Tracer

The Plant Tracer webapp uses AWS DynamoDB to store:

  • The user list

  • The course list

  • The movie list

  • The per-frame annotations.

Originally this was stored in a MySQL database. We migrated to DynamoDB for cost—most uses of Plant Tracer can fit within the DynamoDB free tier, while the cost for running inside MySQL is upwards of $50/month on AWS. (Plant Tracer was originally developed using Dreamhost’s free MySQL service, but that requires that you have a Dreamhost account.)

Each DynamoDB database is identified by an Account and a database name. These are specified in environment variables when the Flask application is run. For local development you can use the (AWS DynamoDB local (downloadable version))[https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html]. We recommend using the version that is downloaded as a JAR file.

Amazon Linux 2023 Development Environment (EC2)

Thankfully, when you are running on AWS, you can use DynamoDB and S3. However:

  • You need to create a DynamoDB database for use with Plant Tracer.

  • You need to create an S3 bucket for use with Plant Tracer.

Schema and Naming Changes

Some naming changes were done for clarity and others due to name conflicts with DynamoDB’s query language.

user table: name ;-> user_name