1.2 KiB
ADR 003: database type & selection
There are multiple different database systems that exist with Python integration in them. Both NoSQL and SQL. This will be an effort to select the correct one for the application.
Decision
After review of the options, the database that was selected was PostgreSQL. It is a relational SQL database, which is very mature and is a very good system to use for things.
Rationale
There are questionable and uncertain problems with using a NoSQL system, and it really doesn't lend itself to being used in this particular application, so it was determined to not use NoSQL as it doesn't give any benefits and has a possiblity to make things harder/more complicated. PostgreSQL was selected as it has some very good asynchronous drivers for Python and will make using it simpler. Plus the developer is far more familiar with it than other systems.
Because we are using an asynchronous system, the asyncpg library will be used. This is because it is the fastest of the async PostgreSQL drivers.
Status
Accepted
Consequences
At this time, it isn't certain what negative consequences will arise. Code will be implemented in as database-agnostic a way as possible in order to facilitate a switch of backend if needed.