I think a lot of people are mistaking IPFS for a database. it’s not a database, and should not be expected to perform like one. For example it can’t do search. The way to think of IPFS is much more akin to BitTorrent than to MongoDB. So my way of handling this is that I therefore load all data my app Pins or needs into my MongoDB (in addition to IPFS) instance where it’s therefore searchable with lightning fast performance. So my “app” itself will never need to “access it thru IPFS” theoretically ever again!
People might say this is bad because it is too redundant. However I consider the redundancy a feature not a bug. Truthfully I consider the MongoDB the authoritative source of the data, although another way to look at MongoDB in this scenario is as a “big searchable cache” for IPFS. But I consider it primary source since I can move my MongoDB database to another instance and re-execute all the “Pins”, and build up a new redundant source for the IPFS pins.
Another way to think of this approach is to simply call IPFS itself a ‘sharing technology’ that enables decentralization and backups of information. No company in the world is going to switch over their official database info to IPFS (instead of a real databases) anyway, simply because they’d loose search and performance and 90% of what databases do.