I also agree this form of external data access should be a top development priority. I have recently developed a solution within Revit, not requiring any apps :), that allows for single or multiple internal relational databases to exist within Revit to control and populate project and family data.
To share the idea, I developed a method using custom-built multi-dimensional universal data nodes nested into families or hosted into projects. The data nodes hold micro or macro relational database lookup tables that are typically 250-400kb in size. In a project, they only add a few hundred kb to the overall file size.
Each data node has two lookup(LU) tables. The first LU table manages the catalog of each unique product and service data. The second LU table is the join table that connects the family types to the product/service catalog allowing for a single family type to be connected to multiple products and services (aka BOM Lists). The family parameters (type and or instance) act as queries to return CSV catalog data to the data node and therefore update the project schedules.
The user can manually add or edit the lookup table csv data rows and therefore update the entire project with current information. All data can be managed from a single location and by non-Revit users. As a bonus, using Excel external datasource connections (MS Access, SQL, etc) you can have dynamic updating of any Revit csv lookup table. The method allows you to create a single relational-database data node for small projects or many data nodes that are category specific when massive data is to be managed.
There is a common belief that LU Tables can only be used for MEP elements and return numerical values. I use LU tables for nearly every category within Revit to return multi-dimensional numerical and text data. You can return as many columns of text data as you want within a single LU table. You can also add formulas to LU Table searches to further expand possibilities. Data nodes are also nested so you can drive data queries within multi-nested families. You also only need just a few universal shared parameters to manage dynamic data for an entire project across all families.
What you are seeking is possible today and I hope this insight is found valuable.