2009-03-05 3 views
2

Есть ли у кого-нибудь рекомендации по работе с определенными пользователем структурами данных? т. е. ваши пользователи должны иметь возможность определять дополнительные поля, а иногда и таблицы, для связи с «фиксированными» объектами в вашей системе. Мне всегда кажется, что вам не повезло, чтобы в конечном итоге работать над проектами, где это важный компонент. Обычно решение заканчивается динамически генерируемыми таблицами SQL, причем некоторые ужасающие поколения SQL привязаны по краям ORM для загрузки и сохранения динамических данных.Работа с определяемыми пользователем структурами данных

Здесь должен быть лучший способ справиться с этим, если раньше вы занимались подобным делом, как вам удалось заставить динамическую часть вашей модели хорошо играть с ORM? Достаточно ли стандартно генерировать таблицы «на лету» для хранения данных или предпочтительнее использовать что-то вроде большой таблицы имен/значений?

С точки зрения производительности, тип проектов, о которых я думаю, не является чрезвычайно сложным с точки зрения скорости вставки/обновления, но должен быть отзывчивым при запросе и отчетности по большим объемам данных (особенно фильтрации и агрегации против динамические поля).

+0

Какой язык/платформа? В Python (с SQLAlchemy) это довольно просто. –

+0

Мой плохой, забыл упомянуть язык ... .NET, но предположим, что он применим в равной степени к любой статически типизированной платформе. –

ответ

1

Не уверен, что такое ORM, но я думаю, что понимаю, что вы просите.

Для расширенных данных клиента в таких системах, как это приложение, я создал данные в поле Xml в базе данных и хранилище объектов на стороне клиента как XmlDocuments. Поля Xml на SQL-сервере легко запрашиваются, а классы объектов обертывают пользовательские данные Xml.

+0

Звучит как очень хороший подход, гораздо более контролируемый, чем пары имя/значение, но без ужаса динамического создания таблиц! Посмотрите на это, задайтесь вопросом, как он будет интегрироваться с LINQ to SQL (или NHibernate). Благодаря! –