This is my personal tool for benchmarking various database engines. It assesses the average time those engines take to complete the simplest tasks: creating one record, reading one record, updating one record and deleting one record.
These are the results that I got for 10k executions on my hardware:
| MongoDB | MySQL | NanoDB | PostgreSQL | |
|---|---|---|---|---|
| Create | 0.17ms | 10.62ms | 1.58ms | 2.77ms |
| Read | 0.21ms | 0.08ms | 1.53ms | 0.05ms |
| Update | 0.21ms | 10.60ms | 1.57ms | 2.82ms |
| Delete | 0.20ms | 11.15ms | 1.54ms | 2.86ms |
System specifications:
| Variable | Specification |
|---|---|
| CPU | i5-10300H |
| RAM | 15.5GB |
| HDD | WD10SPZX-24Z |
| Kernel | 5.13.19-gentoo |
| FS | ext4 |
- Run
pip install -r requirements.txt --userto install the required libraries; - Start the database engines;
- Install additional engine-specific libraries and complete additional steps described in the table below;
- Copy the
.env.templatefile into.envand edit the defined variables to match your configuration; - Run
./app.pyto start the benchmarking process.
| Database engine | Required libraries | Additional steps |
|---|---|---|
| MongoDB | pymongo | -- |
| MySQL | mysql-connector-python | Create a database and user for the app to utilise |
| NanoDB | -- | -- |
| PostgreSQL | psycopg2 | Create a database and user for the app to utilise |