Если вы вынуждены использовать реляционную базу данных, я бы посоветовал попытаться найти структуру в ваших данных, чтобы воспользоваться этим фактом, поскольку вы отказываетесь от преимущества скорости, которую вы получили, благодаря неструктурированным данным и хранилищу значений ключей. Чем больше структуры вы найдете, тем больше преимуществ вы получите от своего затруднительного положения. Даже если вы найдете структуру только в ключах.
Также подумайте, нужен ли вам только последовательный или произвольный доступ к вашим данным, и в каком соотношении и структурируйте вашу базу данных в соответствии с этим требованием. Собираетесь ли вы делать запросы к вашим значениям по типу, например? Каждый из этих вопросов может повлиять на структуру вашей базы данных.
Одно конкретное соображение о каплях в postgresql, они внутренне представлены как pg_largetable (loid: oid, pageno: int4, data: bytea). Размер кусков определяется с помощью LOBBLKSIZE, но обычно составляет 2 КБ. Таким образом, если вы можете использовать байтовые массивы в своей таблице вместо BLOB-объектов и ограничивать размер пары «значение / ключ» для блоков, вы можете избежать этого косвенного обращения через вторую таблицу. Вы также можете увеличить размер блока, если у вас есть доступ к конфигурации базы данных.
Я бы предложил поискать структуру данных и шаблоны доступа к данным, а затем снова задать свой вопрос с более подробной информацией.