one alternative could be fastlane reader pattern. this is mainly used for tabular RO data access. apparently you already have some solutions. fastlane reader has been well tested with complex data relationships (1:n, n:n). this can be used for caching, but your cache can be updated as you run queries, so physical disk access is inevitable.
if you need data manupulation (other can readonly access) nothing stops you from enhancing fastlane reader.merging this with TO, TOA pattern and value list handler can be a optimum in house solution.