Consider whether it's possible to implement a pointer system.
For example, given the input data:
{
"a": "large_blob",
"b": "small datum",
}
The library could be designed to break it up into pointers to the large data, i.e. would store two records:
The state where a key is replaced with a pointer.
{
"a": { "stream_pointer": "hashOfBlob" },
"b": "small datum"
}
And a pointer record:
{
"_pk": "hashOfBlob",
"data": "large_blob"
}
When the data is requested, the pointers would be followed to collect the data from the table.