Yours is not a novice question. SQLite is my C programming secret weapon. But [when to use](https://sqlite.org/whentouse.html) is key. Yes, it is easy to add tables, but there is a cost. A [schema](https://sqlite.org/schematab.html) is not compiled. For an extreme example, I have a schema for [TR-181](https://cwmp-data-models.broadband-forum.org/tr-181-2-11-0.html) (machine generated from the XML schema): ``` sqlite3 tr-181.db sqlite> select type,count(*) from sqlite_schema group by type; type|count(*) index|2644 table|1637 trigger|10993 ``` It is 41,230,336 byes on disk with no data loaded. It takes a moment to open it. But the advantage of completely contained representation of a single device is worth every cost. Points 1, 2, and 3 fit perfectly with SQLite. Point 4 leads to separating things in separate databases and use of [attach](https://sqlite.org/lang_attach.html). This, too, fits perfectly with SQLite. I think you will find SQLite a good fit.