Earlier quoted context omitted.
We've been using sqlite as our only datastore for the last 5+ years. There are a lot of fun little tricks you learn along the way. The most important one is to ignore all the naysayers who claim it won't scale. I can easily saturate any IO subsystem by way of SQLite. At first you may think it's impossible, but then you start to go outside the lines a bit. You start by turning on WAL. That helps a lot... But then you…
How do you aggregate the data and query among all those databases? Doesn't it incur huge costs? Does sqlite support this natively or are you basically treating it as text files of data per user and don't need complex queries in the first place?
ATTACH DATABASE user2.db AS user2;
Now you can use user2.tablename in any query just as if was part of user1.db