У меня есть ситуация, когда мне нужно хранить некоторые данные, которые просто не ... действительно помещаются в таблицу базы данных. Это слишком абстрактно, и у меня недостаточно знаний, чтобы разбить его на части таким образом, чтобы его можно было разбить на таблицы и столбцы. Рассматриваемый объект - System.Linq.Expressions.Expression<T>
.
Я обнаружил способ сериализации таких в xml с использованием MetaLinq
. и он работает довольно хорошо, хотя генерируемый xml чрезмерно тучен, я несколько ожидал этого от чего-то такого сложного, как Expression. Скромное выражение получается около 19 кб.
Поэтому я подумал о том, чтобы использовать сжатие gzip для файла. Это работает хорошо, это экономит около 2 КБ.
Итак, мой реальный вопрос таков: это плохая практика или «опасная» практика - использовать столбец таблицы для ссылки на имя файла для десериализации объекта? Как у меня была бы таблица для выражений, и у нее было бы имя файла, когда это выражение вызывалось, оно выполняло декомпрессию gzip, десериализовало ее и возвращало объект.
Это кажется идеальным решением, но требует большого количества файловых операций ввода-вывода и большого количества различных сжатий / архивов / сериализаций. Мне интересно, смогу ли я узнать мнение более опытных администраторов баз данных? Я использую Fluent nHibernate
как свой ORM маппер.
MetaLinq в кодовом комплексе