Каков наилучший способ хранения большого глобального объекта в ASP.Net - PullRequest
0 голосов
/ 20 июня 2011

Мой проект требует, чтобы я создал объект базы данных (пользовательский класс), содержащий список таблиц, каждая таблица содержит список столбцов. Объект столбцы и таблицы имеют определенные свойства, недоступные в базе данных. Например, метка, максимальное значение, минимальное значение и т. Д.

Все эти пользовательские свойства хранятся в таблицах базы данных, которые пользователь может изменять. Эти свойства будут использоваться в различных веб-формах.

Мой вопрос: разумно ли продолжать подключаться к базе данных, чтобы выяснить эти расширенные свойства для каждой формы, ИЛИ создать объект (как описано выше) и сохранить все таблицы, столбцы в виде списков и сохранить этот БОЛЬШОЙ объект как переменная приложения.

Я также думал поместить объект в кэш и завершить его действие всякий раз, когда пользователи вносят изменения в расширенные свойства.

Может кто-нибудь сказать мне, подходит ли лучший из вышеперечисленных 3 подходов или какой-либо другой метод, обеспечивающий наилучшую производительность.

Спасибо

Редактировать : Это должно быть универсальное решение, которое должно работать с ЛЮБОЙ базой данных. Поэтому потенциально может быть большое количество таблиц (50-120), каждая из которых имеет 10-30 столбцов

Edit2 : Я также думал о динамическом создании классов (как это делает фреймворк Entity) и их загрузке с использованием отражений.

1 Ответ

0 голосов
/ 20 июня 2011

Поскольку вы кэшируете только метаданные, а не данные, объем для хранения относительно невелик.

У меня есть два варианта, как я вижу:

  • Сохранить вобъект Application, который доступен для всех сеансов и срок его действия не истечет (но будет действовать до сброса пула приложений)
  • Сохранить в записи Cache, которая позволит вам установить будущий срок действия илизависимость базы данных, чтобы вы могли обновить данные.

Поскольку вы говорите, что пользователь может изменять данные, Cache с зависимостью от базы данных выглядит как правильный выбор, хотя это поддерживается только напрямую сSqlCacheDependency (то есть относится только к SQL Server).

Более общий подход - это кэш, срок действия которого истекает и вызывает опрос БД по истечении срока действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...