It completely depends on the needs of the application. Often, direct access to text files / binary files can be extremely fast, efficient, and also provides you with all the options for accessing files in your OS file system.
In addition, your programming language most likely already has a built-in module (or it is easy to create) for a specific analysis.
If you need a lot of extras (INSERTS?) And serial / little access, little / no concurrency, files are the way to go.
On the other hand, when your requirements for concurrency, inconsistent read / write, atomicity, atomic permissions, your data are relational in nature, etc., you will be better off with a relational or source database.
With SQLite3, you can achieve a lot that is extremely lightweight (up to 300 KB), ACID compatible, written in C / C ++ and ubiquitous (if it is not already included in your example programming language -for Python-, of course, there is one available). This can be useful even for database files up to 140 terabytes or 128 terabytes in size (a link to the database size ), or maybe more.
If your requirements are much greater, even discussion will not be, go to a full-fledged RDBMS.
As you say in a comment that a “system” is just a bunch of scripts, you should take a look at pgbash .