Открыть сервис

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.01992Access 1.016-битная, поддержка .mdb
1.11993Access 1.1Улучшенная производительность
2.01994Access 2.016-битная, многопользовательский доступ
3.01995Access 9532-битная, транзакции, до 1 ГБ
3.51997Access 97Репликация, сжатие, безопасность
4.02000Access 2000Unicode, до 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 →