В основном пользователи считают, что ?бизнес-логика относится к слою приложений, а не к слою базы данных?. Я склонен согласиться с таким мнением, хотя научился никогда не говорить ?никогда? (что, как ни странно, только что сделал).
Размышляя о недопустимости смешивания слоев базы данных и приложений в более широком контексте темы "когда использовать SQLCLR?", я пришел к двум провокационным вопросам. Во-первых, когда база данных - уже не база данных? Во-вторых, где начинается база данных SQL Server и кончается сервер приложений SQL Server?
В недавней интересной дискуссии на тему списков электронной почты Solid Quality Learning упоминалось, что один из наших клиентов позиционирует SQL Server скорее как "сервер приложений", чем как сервер базы данных, по политическим причинам. Клиент объяснил, что борется со "злыми силами подавления", которые стремятся не допустить SQL Server 2005 в корпоративную структуру, поскольку SQL Server 2005 не является "официальным" стандартом базы данных в его организации. Многих читателей может удивить, что в некоторых ИТ-центрах категорически запрещается использование "неутвержденной" платформы сервера базы данных SQL Server 2005 в рабочей среде, но разрешается позиционировать SQL Server 2005 как "сервер приложений", выполняющий функции хоста для служб SQL Server, таких как Reporting Services, Analysis Services и SQL Server Integration Services (SSIS). Где же пролегает граница между сервером базы данных и сервером приложений? Бесспорно, при приобретении SQL Server значительную часть содержимого "коробки" составляет сервер базы данных, и так будет всегда. Однако все больше компонентов пакета фактически не являются центральными компонентами сервера базы данных, не так ли? Не поймите меня неправильно - такие элементы, как Reporting Services, Analysis Services и SSIS представляют ценность в составе любого пакета. Но они, безусловно, размывают границу между сервером базы данных и сервером приложений.
Я думаю, те, кто считает, что не следует помещать код приложения в базу данных, признают, что нет необходимости в физическом расделении всех слоев в приложении. Так действительно ли использование SQLCLR означает помещение кода приложения в базу данных, или это - лишь размещение ?куска? слоя приложения в той же физической ?коробке?, что и слой данных? Имеет ли значение, что оба ?куска? могут функционировать внутри одного и того же физического процесса? Возможно. Я не уверен. Все это - интересные вопросы для обсуждения с коллегами. Не сомневаюсь, что по мере развития SQL Server границы, где начинается и кончается база данных, будут все больше размываться.
Несколько лет назад, когда создание файловой системы для Windows, напоминающей базу данных, казалось вполне реальным, я шутил, что следующая версия Windows должна называться "AS-400", вспоминая времена, когда действительно было трудно различить, где начинается и кончается база данных и приложение. Возможно, я ошибался, и название ?AS-400? больше подходит для SQL Server, а не для Windows. Сегодня пока можно определить, где начинается и кончается база данных в SQL Server, а что будет, когда выйдет Katmai?
Чего ждать от следующей версии? Не получим ли мы в перспективе просто ?службу Database Engine Services для SQL Server" наравне с другими службами, составляющими сервер приложений, повсеместно называемый SQL Server?
Брайан Моран, brian@solidqualitylearning.com