В моей кодовой базе я недавно наткнулся на проектное решение, принятое командой, в которой пары ключ-значение хранятся в отформатированном виде в столбце базы данных (Relational-mysql). Существует универсальный набор метаданных, и подмножество этих метаданных может присутствовать для конкретной записи. Для данной записи ее подмножество метаданных и ее значения хранятся в столбце в следующем формате:
Key1:Value1\n\nKey2:Value2\n\nKey3:Value3\n\n.....
Чтобы получить метаданные для данного идентификатора записи, нужно просто выполнить простой выбор и затем проанализировать результат, чтобы заполнить словарь в памяти.
Обоснование этого было приведено ниже:
- Лучшая производительность, чем поддержка денромализованной таблицы, состоящей из столбцов recordId / Key / Value.
- Масштабируемость
- Быть консервативным в отношении пространства на сервере базы данных.
Я вижу логику хранения этих сопоставлений в столбце базы данных, но что-то подсказывает мне, что это может вызвать проблемы в долгосрочной перспективе и не может быть панацеей от наших проблем "масштабируемости".
Может ли кто-нибудь высказать свое мнение о том, что может быть не так с этим подходом, и каковы некоторые из лучших методов хранения и поиска информации, подобной этой, в системах с большой нагрузкой.
Спасибо