Я начал работать над проектом в сфере финансовых услуг, основанным (главным образом) на SQL Server (2000), ColdFusion (8) и некоторых приложениях Access / .NET.Этот проект начинался как несколько простых форм доступа / VBA и медленно преобразовывался в веб-интерфейсы.
Я мог бы сказать, что проектирование базы данных и кодирование приложений выполнялись людьми, которые учились на работе и не имеливозможность узнать о хороших принципах дизайна с самого начала.Многие из бизнес-правил установлены в множестве каскадных функций и хранимых процедур, а также в шаблонах веб-сервера.В сложных 500-строчных UDF-функциях SQL, использующих некомментированные константы, существует огромное количество особых случаев.Очень трудно отследить все взаимодействия между 10-20 UDF, которые могут быть вовлечены в запрос.Кажется, что некоторые запросы выполняются слишком долго (до 15 минут).
Несмотря на то, что таблицы достаточно хорошо проиндексированы, в них отсутствуют отношения FK и почти отсутствует ссылочная целостность.БД обновляется нечасто ежедневными пакетами небольшого объема (1000 записей в нескольких таблицах). Она в основном используется в качестве хранилища данных - я полагаю, хранилище данных.Мы получаем очень редкие тупики или задержки.
Итак, мой вопрос: если я хочу повторно реализовать весь проект, включая базу данных и внешний интерфейс, имеет ли смысл взглянуть на нереляционные реализации?Основная БД составляет всего около 1 ГБ (.mdf), поэтому она легко помещается в памяти.Я хотел бы перейти от структуры запросов SQL к некоторой декларативной модели, которая могла бы быть эффективно скомпилирована и выполнена.При необходимости я мог бы использовать БД SQL просто как хранилище данных.