В настоящее время я работаю над переработкой системы данных нашего приложения. По сути, он разработан таким образом, чтобы люди могли добавлять все пользовательские поля, которые им нужны, с помощью всего лишь нескольких постоянных / всегда существующих полей.
Наш нынешний дизайн создает множество проблем с техническим обслуживанием. Что мы делаем, это динамически (во время выполнения) добавляем столбец в базу данных для каждого поля. Для ведения всех этих динамических столбцов нам нужно иметь мета-таблицу и другие данные.
Сейчас мы смотрим на EAV, но, похоже, не намного лучше. По сути, у нас есть много различных типов полей, так что будет таблица StringValues, IntegerValues и т. Д., Которая делает вещи намного хуже.
Мне интересно, может ли использование BLOB-объектов JSON или XML в базе данных быть лучшим решением, особенно потому, что в большинстве случаев, когда мы извлекаем что-либо из этих таблиц, нам нужна вся строка. Проблема заключается в том, что нам нужно иметь возможность создавать отчеты и для этих данных. Ни одно решение не позволяет легко настраивать пользовательские запросы. И поиск по такой базе данных больших двоичных объектов, безусловно, будет кошмаром производительности при запуске отчетов.
Каждая «строка» должна иметь от 15 до 100 (возможно, больше) атрибутов / столбцов, связанных с ней.
Мы используем SQL Server 2008, и наше приложение, взаимодействующее с базой данных, является веб-приложением C # (например, ASP.Net).
что вы думаете? Использовать EAV или BLOB-объекты или что-то еще полностью? (Кроме того, да, я знаю, что база данных без схемы, такая как MongoDB, была бы здесь великолепна, но я не могу убедить моего босса использовать ее)