Microsoft Jet Database Engine
Microsoft Jet Database Engine — это реляционная система управления базами данных (СУБД), разработанная корпорацией Microsoft, которая обеспечивает хранение, извлечение и обработку данных в файлах формата Microsoft Access (.mdb, .accdb). Jet является аббревиатурой от Joint Engine Technology (совместная технология ядра). Движок входит в состав ряда продуктов Microsoft, включая Microsoft Access, Visual Basic, Visual Basic for Applications (VBA) и Microsoft Excel, и предоставляет программный интерфейс для доступа к данным через объектную модель Data Access Objects (DAO) и, в более поздних версиях, через ActiveX Data Objects (ADO).
История
Разработка и первые версии (1992—1995)
Первая версия Microsoft Jet Database Engine (версия 1.0) была выпущена в 1992 году вместе с Microsoft Access 1.0. Движок был создан для замены более ранних решений, таких как Access Basic и Microsoft SQL Server для настольных приложений. Jet 1.0 поддерживал файлы .mdb и использовал 16-битную архитектуру, работая под управлением Windows 3.x. В 1993 году вышла версия 2.0, которая улучшила производительность и добавила поддержку многопользовательского доступа.
Версия 3.0 и 3.5 (1995—1997)
В 1995 году с выпуском Microsoft Access 95 появилась версия Jet 3.0, которая стала 32-битной, что позволило использовать её на Windows 95 и Windows NT. Эта версия включала поддержку транзакций, улучшенную оптимизацию запросов и возможность работы с большими объёмами данных (до 1 ГБ). Версия 3.5 (Access 97) добавила поддержку сжатия данных, репликации и улучшенную безопасность на уровне пользователей.
Версия 4.0 (2000—2007)
Jet 4.0 была выпущена в 2000 году с Microsoft Access 2000. Она стала последней основной версией движка. Jet 4.0 поддерживал Unicode, что позволило работать с символами различных языков, а также увеличил максимальный размер базы данных до 2 ГБ. В этой версии была введена поддержка триггеров и хранимых процедур через SQL-расширения, хотя они не были полноценными, как в серверных СУБД. Jet 4.0 использовался вплоть до выхода Microsoft Office 2007.
Замена на Access Database Engine (2007 — настоящее время)
С выходом Microsoft Office 2007 корпорация Microsoft представила новый формат файлов .accdb и новый движок — Microsoft Access Database Engine (ACE). ACE является преемником Jet, но не является его прямой эволюцией: он имеет другую архитектуру, хотя и сохраняет обратную совместимость с файлами .mdb через режим совместимости. Jet 4.0 оставался доступным для старых приложений, но его развитие было прекращено. Начиная с Windows 10, Jet 4.0 поставляется в составе операционной системы, но его использование не рекомендуется для новых проектов.
Архитектура и устройство
Компоненты
Microsoft Jet Database Engine состоит из нескольких ключевых компонентов:
- Ядро базы данных (Jet Engine Core) — отвечает за управление файлами .mdb, выполнение SQL-запросов, управление транзакциями и блокировками.
- Диспетчер запросов (Query Processor) — оптимизирует и выполняет SQL-запросы, включая операции JOIN, GROUP BY и агрегатные функции.
- Менеджер страниц (Page Manager) — управляет чтением и записью данных на диск, используя страницы фиксированного размера (обычно 2 КБ для Jet 4.0).
- Менеджер блокировок (Lock Manager) — обеспечивает многопользовательский доступ, используя блокировки на уровне страниц или записей.
- Менеджер индексов (Index Manager) — поддерживает первичные и вторичные индексы, включая уникальные и составные.
Формат хранения данных
Данные в Jet хранятся в файлах .mdb (или .accdb для ACE). Файл состоит из страниц, которые могут быть:
- Страницы данных — содержат записи таблиц.
- Страницы индексов — содержат B-деревья для ускорения поиска.
- Страницы системных таблиц — хранят метаданные, такие как имена таблиц, столбцов, типы данных и связи.
- Страницы свободного пространства — отслеживают неиспользуемые области файла.
Jet использует собственную реализацию SQL, которая является подмножеством стандарта ANSI SQL-89 с некоторыми расширениями (например, поддержка функций VBA). Движок не поддерживает полноценные хранимые процедуры или триггеры, хотя в Jet 4.0 были добавлены упрощённые аналоги.
Интерфейсы доступа
Jet предоставляет доступ к данным через несколько API:
- Data Access Objects (DAO) — объектная модель, встроенная в Visual Basic и VBA, позволяющая манипулировать таблицами, запросами и записями.
- ActiveX Data Objects (ADO) — более современный интерфейс, появившийся в Jet 3.5, который использует OLE DB для доступа к данным.
- ODBC (Open Database Connectivity) — драйвер ODBC для Jet позволяет подключаться к базам данных из других приложений, таких как Microsoft Excel или сторонние программы.
Классификация и версии
Основные версии Jet
| Версия | Год выпуска | Продукт | Особенности |
|---|---|---|---|
| 1.0 | 1992 | Access 1.0 | 16-битная, поддержка .mdb |
| 1.1 | 1993 | Access 1.1 | Улучшенная производительность |
| 2.0 | 1994 | Access 2.0 | 16-битная, многопользовательский доступ |
| 3.0 | 1995 | Access 95 | 32-битная, транзакции, до 1 ГБ |
| 3.5 | 1997 | Access 97 | Репликация, сжатие, безопасность |
| 4.0 | 2000 | Access 2000 | Unicode, до 2 ГБ, триггеры (упрощённые) |
Типы баз данных
Jet поддерживает два основных типа баз данных:
- Файловые базы данных (.mdb) — данные хранятся в одном файле, который может быть разделён на несколько пользователей через сеть.
- Клиент-серверные базы данных — Jet может подключаться к внешним источникам данных (например, Microsoft SQL Server) через ODBC или OLE DB, используя свои таблицы как локальные.
Применение
Microsoft Access
Основная область применения Jet — Microsoft Access, где он используется как движок для хранения данных в формах, отчётах и запросах. Access позволяет создавать настольные приложения для управления данными, такие как каталоги, учётные системы и простые CRM. Jet обеспечивает выполнение SQL-запросов, создание связей между таблицами и поддержку макросов.
Visual Basic и VBA
Jet встроен в Visual Basic (до версии 6.0) и Visual Basic for Applications, что позволяет разработчикам создавать приложения с локальными базами данных без установки отдельной СУБД. Например, в Microsoft Excel можно использовать DAO для импорта данных из .mdb-файлов.
Многопользовательские приложения
Jet поддерживает многопользовательский доступ через файловую блокировку. Несколько пользователей могут одновременно читать и записывать данные в один файл .mdb, но при интенсивной записи возможны конфликты и снижение производительности. Это ограничение делает Jet непригодным для высоконагруженных серверных приложений.
Другие продукты
Jet также используется в:
- Microsoft Project (для хранения проектных данных).
- Microsoft Visio (для диаграмм и схем).
- Сторонних приложениях, которые используют DAO или ODBC для доступа к данным.
Ограничения и критика
Производительность
Jet не предназначен для работы с большими объёмами данных (более 2 ГБ) или высокими нагрузками. При одновременной работе более 10–15 пользователей производительность резко падает из-за блокировок на уровне страниц. В отличие от серверных СУБД (например, Microsoft SQL Server), Jet не поддерживает параллельные запросы и кэширование на уровне сервера.
Безопасность
Jet имеет ограниченные средства безопасности. Парольная защита на уровне базы данных (Jet User-Level Security) была реализована в версии 3.5, но она легко обходилась с помощью сторонних утилит. Начиная с Jet 4.0, безопасность была улучшена, но всё равно уступает серверным решениям.
Совместимость
С выходом ACE (Access 2007) Jet 4.0 стал устаревшим. Новые файлы .accdb не могут быть открыты в Jet без конвертации. Microsoft рекомендует использовать ACE для всех новых проектов, а Jet — только для поддержки старых приложений.
Отсутствие поддержки
Microsoft прекратила поддержку Jet 4.0 в 2007 году. Хотя он по-прежнему доступен в Windows, обновления безопасности не выпускаются. В Windows 10 и 11 Jet 4.0 поставляется как компонент операционной системы, но его использование не рекомендуется для критически важных приложений.
Интересные факты
- Название Jet изначально расшифровывалось как «Joint Engine Technology», но позже Microsoft перестала использовать эту аббревиатуру, и она стала просто именем.
- Jet 4.0 поддерживает до 255 одновременных соединений, но на практике стабильная работа возможна только при 10–20 пользователях.
- В 2000-х годах Jet использовался в некоторых веб-приложениях на ASP (Active Server Pages) для хранения данных, но из-за низкой производительности и проблем с безопасностью от этой практики отказались.
- Существуют сторонние утилиты для восстановления повреждённых .mdb-файлов, так как Jet не имеет встроенных средств для автоматического восстановления.
Источники
- Microsoft Corporation. «Microsoft Jet Database Engine Programmer's Guide». MSDN Library, 1998.
- Microsoft Corporation. «Access 2000 Developer's Reference». Microsoft Press, 2000.
- «Microsoft Jet Database Engine». Wikipedia, The Free Encyclopedia. Дата обращения: 2023.
- «Jet Database Engine». TechNet Archive, Microsoft, 2005.
- «Data Access Objects (DAO)». Microsoft Docs, 2021.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →