Microsoft SQL Server 7.0
Microsoft SQL Server 7.0 — это реляционная система управления базами данных (СУБД), разработанная корпорацией Microsoft, выпущенная в 1998 году. Она стала важной вехой в истории семейства SQL Server, ознаменовав переход от платформы OS/2 к исключительно Windows NT и заложив архитектурные основы для последующих версий. SQL Server 7.0 позиционировался как масштабируемое решение для среднего бизнеса и корпоративных подразделений, способное конкурировать с такими продуктами, как Oracle Database и IBM DB2.
История
Предшествующие версии
Первая версия SQL Server (1.0) была выпущена в 1989 году совместно с Sybase и работала на OS/2. Последующие версии 4.2, 6.0 и 6.5 также базировались на коде Sybase, но постепенно адаптировались под Windows. К концу 1990-х годов Microsoft решила полностью переписать ядро СУБД, отказавшись от лицензирования кода Sybase, чтобы получить полный контроль над продуктом и оптимизировать его для Windows NT.
Разработка и выпуск
Разработка SQL Server 7.0 началась в 1995 году под кодовым названием «Sphinx». Основной целью было создание полностью самостоятельной СУБД, не зависящей от Sybase. Впервые в истории продукта команда разработчиков Microsoft полностью переписала ядро, оптимизировав его для многопоточности и многопроцессорных систем. Релиз состоялся 27 ноября 1998 года. Версия 7.0 стала первой, которая не имела аналогов от Sybase.
Поддержка и наследие
Основная поддержка SQL Server 7.0 завершилась 31 декабря 2005 года, а расширенная — 31 декабря 2010 года. Несмотря на это, многие организации продолжали использовать её вплоть до середины 2000-х годов. Версия 7.0 заложила архитектурные принципы, которые развивались в SQL Server 2000, 2005 и последующих версиях.
Архитектура и ключевые особенности
Движок базы данных
SQL Server 7.0 представил полностью переработанный движок, который работал исключительно как служба Windows NT. Основные изменения включали:
- Управление памятью: динамическое распределение буферного пула, автоматически подстраивающееся под нагрузку.
- Планировщик запросов: новый оптимизатор, способный строить более эффективные планы выполнения, включая использование параллелизма.
- Транзакции: поддержка изоляции на уровне снимков (snapshot isolation) через версионирование строк, что было новшеством для того времени.
Хранилище данных
- Страницы и экстенты: размер страницы составлял 8 КБ (в отличие от 2 КБ в SQL Server 6.5), экстент — 64 КБ (8 страниц). Это позволило уменьшить количество операций ввода-вывода.
- Файлы и файловые группы: база данных могла состоять из нескольких файлов, объединённых в файловые группы, что давало администраторам гибкость в управлении размещением данных на дисках.
- Логи транзакций: журнал транзакций стал физически отделён от файлов данных, что повысило надёжность и упростило восстановление.
Масштабирование и производительность
- Многопроцессорная поддержка: SQL Server 7.0 поддерживал до 32 процессоров в симметричной многопроцессорной конфигурации (SMP) на Windows NT.
- Параллельные запросы: оптимизатор мог разбивать сложные запросы на несколько потоков, выполняющихся одновременно на разных процессорах.
- Индексы: введены кластеризованные и некластеризованные индексы с возможностью создания составных индексов и индексов на вычисляемых столбцах.
Инструменты администрирования
Enterprise Manager
В SQL Server 7.0 был представлен графический интерфейс Enterprise Manager (MMC-оснастка), который позволял администраторам управлять несколькими серверами, создавать базы данных, настраивать безопасность, выполнять резервное копирование и мониторинг. Это был значительный шаг вперёд по сравнению с командной строкой и утилитами SQL Server 6.5.
Query Analyzer
Query Analyzer — инструмент для написания и отладки запросов T-SQL. Он включал:
- Подсветку синтаксиса.
- Графический план выполнения запроса.
- Возможность анализа индексов и статистики.
SQL Server Agent
Служба SQL Server Agent позволяла автоматизировать задачи: создание расписаний для резервного копирования, выполнение скриптов, отправку уведомлений операторам. Это стало основой для последующего развития агента в SQL Server 2000 и 2005.
Язык запросов T-SQL
Расширения Transact-SQL
SQL Server 7.0 поддерживал стандарт ANSI SQL-92 с рядом расширений, характерных для T-SQL. Ключевые нововведения:
- Поддержка курсоров: статические, динамические, последовательные и управляемые набором ключей курсоры.
- Условные конструкции:
CASE,COALESCE,NULLIF. - Работа с датами: функции
DATEADD,DATEDIFF,DATEPART. - Агрегатные функции:
SUM,AVG,COUNT,MIN,MAX, а такжеGROUP BYсHAVING. - Подзапросы: коррелированные и некоррелированные подзапросы, использование
EXISTS,IN,ANY,ALL.
Хранимые процедуры и триггеры
- Хранимые процедуры: поддерживались как системные (например,
sp_help,sp_who), так и пользовательские. Они могли принимать параметры и возвращать результирующие наборы. - Триггеры: триггеры DML (INSERT, UPDATE, DELETE) могли быть AFTER или INSTEAD OF. Триггеры выполнялись в контексте транзакции, что позволяло реализовывать сложные бизнес-правила.
Репликация и интеграция
Репликация
SQL Server 7.0 поддерживал три типа репликации:
- Снимок (snapshot): полная копия данных на подписчиков по расписанию.
- Транзакционная (transactional): непрерывная синхронизация изменений с публикации на подписчики.
- Слияние (merge): двусторонняя синхронизация с разрешением конфликтов, подходящая для распределённых систем.
Связанные серверы
Версия 7.0 ввела возможность создания связанных серверов (linked servers), что позволяло выполнять запросы к другим СУБД (Oracle, DB2, Access) через OLE DB. Это упрощало интеграцию данных в гетерогенных средах.
Безопасность
Модель аутентификации
SQL Server 7.0 поддерживал два режима аутентификации:
- Windows Authentication: использование учётных записей Windows NT.
- Mixed Mode: комбинация Windows Authentication и SQL Server Authentication (логин/пароль, хранящиеся в SQL Server).
Роли и разрешения
- Фиксированные серверные роли: sysadmin, serveradmin, securityadmin и другие.
- Фиксированные роли базы данных: db_owner, db_datareader, db_datawriter и т.д.
- Пользовательские роли: возможность создавать собственные роли для детального управления доступом.
- Разрешения на уровне объектов: GRANT, DENY, REVOKE для таблиц, представлений, хранимых процедур.
Редакции и лицензирование
SQL Server 7.0 выпускался в нескольких редакциях, ориентированных на разные сегменты рынка:
| Редакция | Назначение | Ограничения |
|---|---|---|
| Enterprise Edition | Крупные корпоративные системы | Поддержка до 32 процессоров, неограниченный размер базы данных |
| Standard Edition | Средний бизнес | До 4 процессоров, размер базы данных до 4 ТБ |
| Desktop Edition (MSDE) | Небольшие приложения и встраиваемые системы | Ограничение на размер базы данных до 2 ГБ, отсутствие графических инструментов |
| Developer Edition | Разработка и тестирование | Функционально идентична Enterprise, запрещена для продакшн-использования |
Влияние и критика
Положительные аспекты
- Улучшенная производительность: по сравнению с SQL Server 6.5, версия 7.0 демонстрировала значительный прирост скорости выполнения запросов и обработки транзакций.
- Упрощение администрирования: графические инструменты Enterprise Manager и Query Analyzer снизили порог входа для администраторов.
- Масштабируемость: поддержка до 32 процессоров и возможность использования до 2 ТБ оперативной памяти (в Enterprise Edition) позволили обрабатывать большие объёмы данных.
Недостатки
- Ограничения по размеру базы данных: в Standard Edition максимальный размер базы данных составлял 4 ТБ, что для некоторых крупных проектов было недостаточно.
- Отсутствие поддержки XML: в отличие от более поздних версий, SQL Server 7.0 не имел встроенной поддержки XML-запросов.
- Проблемы с совместимостью: некоторые приложения, написанные для SQL Server 6.5, требовали доработки из-за изменений в синтаксисе T-SQL и архитектуре.
Интересные факты
- SQL Server 7.0 стал первой версией, которая использовала динамическое управление памятью — буферный пул автоматически увеличивался или уменьшался в зависимости от нагрузки, что было революционным для того времени.
- Версия 7.0 была последней, которая поддерживала Windows 95 и Windows 98 в качестве клиентских операционных систем (для Desktop Edition).
- Кодовое название «Sphinx» было выбрано в честь египетского сфинкса, символизирующего загадку, которую разработчикам предстояло решить — создание полностью самостоятельной СУБД.
Источники
- Microsoft Corporation. «SQL Server 7.0 Books Online». 1998.
- Delaney, K. «Inside Microsoft SQL Server 7.0». Microsoft Press, 1999.
- Henderson, K. «The Guru's Guide to Transact-SQL». Addison-Wesley, 2000.
- Документация Microsoft TechNet: «SQL Server 7.0 System Administration».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →