Puedo pensar en tres soluciones: EAV, XML y columnas dispersas. Este último es específico del proveedor y puede no serle útil.
Cualquiera que sea el método que elija, puede considerar almacenar los datos de la solicitud original en un formato sin formato, en una tabla o archivo sin formato. Le facilitará probar nuevas formas de almacenar los datos, le permitirá volver a cargar los datos si descubre un error con la forma en que analiza sus solicitudes, y ofrecerá oportunidades para analizar las solicitudes API utilizando el procesamiento por lotes o "big data" herramientas si encuentra que su almacén de datos no puede manejar eficientemente los datos.
Consideraciones de EAV
EAV / KVS, como lo describió anteriormente, es probable que sea la implementación más sencilla.
Desafortunadamente, también será muy costoso: para obtener cualquier tipo de consultas eficientes sobre las claves de uso común, necesitará tener índices en la columna de claves, que podrían fragmentarse mucho. Consultar claves particulares sería extremadamente costoso.
Es posible que pueda reducir el costo de la indexación o los escaneos de índices al admitir su tienda EAV con vistas materializadas (muchos proveedores lo respaldan) para consultar claves o valores que le interesan.
XML
La mayoría de los sistemas de bases de datos empresariales ofrecen un manejo XML muy maduro, que incluye validación, indexación y consultas sofisticadas.
Cargar la solicitud API en la base de datos como XML proporcionaría una tupla por solicitud, lo que lógicamente podría ser un poco más aceptable para usted que tener un número desconocido de filas en una tabla EAV.
Si esto es eficiente dependería mucho de su proveedor RDBMS y su implementación.
¡El mayor inconveniente es que esta es probablemente la única forma de administrar datos que es más complicada que la manipulación de cadenas de la solicitud original!
Columnas dispersas / mesas tradicionales
Es posible que pueda cargar sus datos en una estructura de tabla tradicional, con una columna por clave.
La función Columnas dispersas de SQL Server es una gran alternativa a una tienda EAV. Una tabla con columnas dispersas se comporta de manera muy similar a una tabla normal, excepto que puede tener hasta 30,000 columnas, y los valores NULL en columnas dispersas no consumen espacio en la tabla.
Combinarlos con índices filtrados (otra característica específica de SQL Server) puede proporcionar una alternativa extremadamente eficiente a un almacén EAV si consulta con frecuencia un par de columnas y / o valores específicos.
El uso de una tabla tradicional con otros proveedores puede ser viable: IBM admite más de 700 columnas por tabla y Oracle alrededor de 1000, y características como la compresión o el tratamiento de Oracle de los valores nulos finales pueden significar que puede almacenar sus datos API de manera bastante eficiente.
La desventaja obvia de este enfoque es que a medida que agrega nuevas claves a su API, necesitará ajustar su esquema en consecuencia.