Accepting that having persistence is a good thing, and that the amount of data needed for that persistence can vary from almost nothing (a single character or word), to large quantities of data, with extreme complexities, there certainly is a need to be able to make changes as the system grows.
Depending on that amount of, and complexity of the persistence data, one or more files using XML, JSON, or similar things often work, until the volume of data become 'too large'.
While deciding between "a mega file having the whole configuration or several files", also consider the type of data: Is it primarily highly structured data, or not structured.
If highly structured, then a solution such as SQLite is a good option. On data is in the DB, and indexed etc., most issues you mention will be easy to resolve.
I have a similar issue: rather than trying to provide persistence for a single app, my issue is a large quantity of data that has been added to, and read by, several different apps. In spite of trying various ways to combine all of these, such that all entries that pertain to a specific object are combined, then eliminating the duplicates, have failed. Usually because the apps were designed to work with much smaller blobs of data.
SQLite does not work for this, because the data is not well structured: I keep finding new items that should have been in the data dictionary.
I recently was introduced to MongoDB, a NoSQL type of database. For my needs, since all my files are such that I can extract the desired data and create JSON documents, I am hoping that MongoDB (or a similar type of DB) will be able to do the combining, sorting, and De-duplication I need.
If you can create JSON documents (or some equivalent) with the data you currently have and massage that with MongoDB or other NoSQL program, you should be able to find the answers, as Robert Harvey said above.
If you end up with well organized data, SQLite could be a great solution, or you may find that a simple XML file may work.