DB Choices
Status: Active
Last Modified: 2023-07-05
Related Issue: #27
Deciders: Lucas Brown, Aaron Couch, Gina Carson, Andy Cochran
Context and Problem Statement
This ADR is to formalize a series of architectural decisions about how data is stored, including the type of database we will use and the platform we'll use host it. This ADR will contain the evaluation and selection of the type of the database, the database management system (DBMS), and database hosting service.
Decision Drivers
Type of Database:
Nature of the NOFO and grant data that we're storing
Volume of data and performance considerations
DBMS Selection:
Hosting options
Expected access patterns (i.e. heavy read or write transactions)
Ease of creating mock data
Trusted libraries that support interfacing with this database in the language we've chosen for our API
An open source version of this DBMS is available for self hosting or running locally
Database Hosting Service:
FedRAMP compliant deployment option
Ease of use and support
Cost considerations related to hosting the database, in terms of direct operating costs as well as team resources
Advanced service offerings such as read replicas and automatic backups
Decision Outcome
Type of Database
The target type of database selected for Grants.gov is a relational database management system. This was evaluated and selected based on several factors including the relational nature of the NOFO and grant data that we're storing as well as the ACID compliance and flexibility that a relational database can offer.
Database Management System
The RDBMS selected for Grants.gov is PostgreSQL. This is due to a variety of factors, including:
Resource familiarity with PostgreSQL as a database system
Improved performance for high-frequency write operations and complex queries as opposed to MySQL
PostgreSQL support of most advanced database features such as materialized views
PostgreSQL trusted Python libraries (API language of choice)
PostgreSQL is open source, in alignment with the Grants.gov strategy
Database Hosting Service
The database hosting service selected is Amazon RDS. This is due to several factors:
FedRAMP compliant deployment
Reduction of many tasks and IT labor savings when compared to EC2 or on-premise including backups, server patching, automatic backups, scaling, etc.
Links
Last updated