JET Red
JET Red (совместно с Microsoft Jet Database Engine) — это реляционная система управления базами данных (СУБД), разработанная корпорацией Microsoft. Первоначально она была создана для использования в Microsoft Access, но впоследствии стала ключевым компонентом ряда других продуктов Microsoft, включая Visual Basic, Microsoft Excel и Microsoft Project. JET Red представляет собой программный движок, который обеспечивает хранение, извлечение и управление данными, организованными в реляционные таблицы, и поддерживает язык структурированных запросов (SQL). Название «JET» является аббревиатурой от «Joint Engine Technology».
История
Разработка и ранние версии (1992—1997)
Разработка JET Red началась в конце 1980-х годов как часть проекта по созданию настольной СУБД для операционной системы Windows. Первая версия движка, JET 1.0, была выпущена в 1992 году вместе с Microsoft Access 1.0. Она базировалась на формате файлов баз данных .mdb (Microsoft Database). В ранних версиях JET Red поддерживал только 16-битные приложения, работающие под Windows 3.x.
В 1994 году с выходом Microsoft Access 2.0 появилась версия JET 2.0, которая включала поддержку 32-битных приложений и улучшенную производительность. Версия JET 2.5, выпущенная в 1995 году, была интегрирована в Microsoft Windows 95 и Microsoft Office 95. Она стала первой версией, которая широко использовалась за пределами Access, в частности, в Visual Basic 4.0 и Microsoft Excel.
Расцвет и интеграция (1997—2003)
Версия JET 3.0 (1997 год) стала важным этапом в развитии движка. Она была выпущена вместе с Microsoft Access 97 и включала поддержку репликации баз данных, улучшенную обработку транзакций и новый формат файлов .mdb. JET 3.0 также поддерживал многопользовательский доступ и блокировку на уровне записей, что сделало его пригодным для использования в небольших рабочих группах.
Версия JET 4.0 (2000 год) была последней и наиболее функциональной. Она вышла с Microsoft Access 2000 и поддерживалась вплоть до Windows 7. JET 4.0 включал поддержку Unicode, что позволило хранить данные на разных языках, улучшенную поддержку SQL (включая подзапросы и хранимые процедуры), а также возможность создания представлений (views) и триггеров. Движок также получил поддержку формата файлов .accdb (Access Database) в версии Microsoft Access 2007, однако сам JET Red в этом формате уже не использовался — его заменил новый движок ACE (Access Connectivity Engine).
Замена и наследие (2003—настоящее время)
Начиная с Microsoft Office 2007, JET Red был заменён на ACE (Access Connectivity Engine), который является его преемником. ACE поддерживает как старый формат .mdb, так и новый .accdb. Однако JET Red остаётся встроенным в операционные системы Windows в качестве компонента для чтения старых баз данных. В Windows 10 и Windows 11 он всё ещё доступен, но его использование ограничено 32-битными приложениями и устаревшими функциями. Несмотря на замену, JET Red оказал значительное влияние на развитие настольных СУБД и до сих пор используется в некоторых корпоративных и домашних приложениях.
Архитектура и устройство
Формат файлов
JET Red хранит данные в файлах с расширением .mdb (Microsoft Database). Файл .mdb представляет собой контейнер, который содержит все объекты базы данных: таблицы, запросы, формы, отчёты, макросы и модули (на VBA). Структура файла является двоичной и не предназначена для прямого редактирования. Максимальный размер файла .mdb в JET 4.0 составляет около 2 гигабайт (2 ГБ), хотя на практике из-за ограничений файловой системы и производительности рекомендуется использовать базы данных меньшего размера.
Компоненты движка
JET Red состоит из нескольких ключевых компонентов:
- Менеджер страниц: Отвечает за управление физическим хранением данных на диске. Данные организованы в страницы фиксированного размера (обычно 4 КБ). Менеджер страниц обеспечивает чтение, запись и кэширование страниц.
- Менеджер транзакций: Обеспечивает атомарность, согласованность, изолированность и долговечность (ACID) транзакций. JET Red поддерживает транзакции на уровне базы данных, что позволяет выполнять несколько операций как единое целое.
- Оптимизатор запросов: Анализирует SQL-запросы и выбирает наиболее эффективный план выполнения. Оптимизатор учитывает индексы, статистику распределения данных и другие факторы.
- Менеджер индексов: Управляет созданием, обновлением и использованием индексов. Индексы ускоряют поиск и сортировку данных, но замедляют операции вставки и обновления.
- Менеджер блокировок: Обеспечивает многопользовательский доступ к данным, предотвращая конфликты. JET Red поддерживает блокировку на уровне страниц и, начиная с версии 3.0, на уровне записей.
Поддержка SQL
JET Red поддерживает подмножество стандарта SQL-92, хотя и не полностью. Он включает основные операторы DDL (Data Definition Language) — CREATE TABLE, ALTER TABLE, DROP TABLE — и DML (Data Manipulation Language) — SELECT, INSERT, UPDATE, DELETE. Поддерживаются также подзапросы, агрегатные функции (SUM, COUNT, AVG, MAX, MIN), объединения (JOIN) и операции с датами и строками. Однако JET Red не поддерживает хранимые процедуры и триггеры в полном объёме (они реализованы через макросы и VBA), а также не имеет поддержки полноценных представлений (views) до версии 4.0.
Классификация
JET Red можно классифицировать по нескольким признакам:
- По модели данных: Реляционная СУБД (РСУБД).
- По архитектуре: Настольная СУБД (desktop DBMS). Она не предназначена для работы в качестве сервера баз данных и обычно используется в однопользовательском или маломногопользовательском режиме.
- По способу доступа: Файл-серверная СУБД. Данные хранятся в файле, к которому обращаются клиентские приложения. Это отличает её от клиент-серверных СУБД (например, Microsoft SQL Server), где данные обрабатываются на сервере.
- По лицензии: Проприетарное программное обеспечение, входящее в состав Microsoft Office и некоторых других продуктов.
Применение
Microsoft Access
Основное и наиболее известное применение JET Red — это Microsoft Access. Access предоставляет графический интерфейс для создания и управления базами данных, а JET Red служит движком для хранения и обработки данных. Access позволяет создавать формы, отчёты, запросы и макросы, используя JET Red в качестве бэкенда.
Visual Basic и VBA
JET Red был интегрирован в среду разработки Visual Basic (VB) и язык VBA (Visual Basic for Applications). Разработчики могли использовать объекты DAO (Data Access Objects) для программного доступа к базам данных JET. DAO предоставлял высокоуровневый интерфейс для работы с таблицами, запросами и индексами. Позже, с появлением ADO (ActiveX Data Objects), JET Red также поддерживался через этот интерфейс, хотя и с некоторыми ограничениями.
Другие приложения
JET Red использовался в ряде других продуктов Microsoft:
- Microsoft Excel: Для импорта и экспорта данных из баз
.mdbи создания сводных таблиц. - Microsoft Project: Для хранения данных о проектах и задачах.
- Microsoft Visual Studio: В ранних версиях для хранения метаданных и конфигураций.
- Windows: В качестве компонента для чтения баз данных в некоторых системных утилитах.
Критика
JET Red подвергался критике по нескольким причинам:
- Ограничения по размеру и производительности: Максимальный размер базы данных в 2 ГБ и низкая производительность при большом количестве одновременных пользователей делали его непригодным для крупных корпоративных систем.
- Отсутствие клиент-серверной архитектуры: Файл-серверная модель приводила к проблемам с блокировками, сетевым трафиком и целостностью данных при одновременной работе нескольких пользователей.
- Уязвимости безопасности: Файлы
.mdbне имели встроенной защиты на уровне сервера, что делало их уязвимыми для несанкционированного доступа, если файл был доступен по сети. - Неполная поддержка SQL: Отсутствие поддержки некоторых продвинутых функций SQL (например, хранимых процедур и триггеров в полном объёме) ограничивало возможности разработчиков.
- Проблемы с совместимостью: Разные версии JET Red были не полностью совместимы друг с другом, что могло вызывать проблемы при переносе баз данных между версиями Access или операционными системами.
Несмотря на эти недостатки, JET Red оставался популярным выбором для небольших проектов, где не требовалась высокая производительность и масштабируемость, а также для обучения и прототипирования.
Источники
- Microsoft Knowledge Base: «Overview of the Microsoft Jet Database Engine» (статья Q149090).
- Microsoft Developer Network (MSDN): «Microsoft Jet Database Engine Programmer's Guide» (1998).
- Книга: «Microsoft Access 2000: The Complete Reference» by Virginia Andersen.
- Книга: «Programming Microsoft Jet Database Engine» by John L. Viescas.
- Документация Microsoft: «Access Connectivity Engine (ACE) Overview».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →