У меня есть определенный тип объекта, который хранится в базе данных. Этот тип теперь получает дополнительную информацию, связанную с ним, которая будет отличаться по структуре среди экземпляров. Хотя для групп экземпляров информация будет идентично структурирована, структура будет известна только во время выполнения и будет меняться со временем.
Я решил просто добавить в таблицу поле blob и сохранить пары ключ / значение в каком-либо сериализованном формате. По вашему опыту, какой формат наиболее рекомендуется?
В контексте моего приложения это место для хранения является вторичным. Есть одна конкретная операция, которую я хочу выполнить быстро: поиск правильного экземпляра для заданного набора пар ключ / значение (так что это своего рода составной ключ переменного поля). Я предполагаю, что это означает, есть ли формат, который особенно хорошо подходит для типичной индексации базы данных?
Кроме того, мне может быть интересно найти набор экземпляров, которые используют один и тот же набор ключей (adhoc «класс», если хотите).
Я пишу это на Java и храню в различных типах баз данных SQL. У меня на радаре есть JSON, GPB и нативная сериализация Java, предпочтение отдается языковым форматам. Я могу думать о двух основных стратегиях:
- сохранить набор значений в таблице и добавить внешний ключ в отдельную таблицу, содержащую набор ключей
- сохранить пары ключ / значение в таблице