Jet Database Engine
Jet Database Engine — это реляционная система управления базами данных (СУБД), разработанная корпорацией Microsoft в 1992 году. Она представляет собой программный компонент, обеспечивающий создание, хранение, чтение и модификацию данных в формате файлов баз данных (обычно с расширением .mdb, .accdb). Jet Engine является встроенным движком, который не требует отдельного серверного процесса и работает как часть приложения, что делает его характерным представителем файл-серверных СУБД.
История
Создание и ранние версии
Разработка Jet Database Engine началась в конце 1980-х годов как часть проекта Microsoft Access. Первая версия движка (Jet 1.0) была выпущена в 1992 году вместе с Microsoft Access 1.0. Название «Jet» происходит от названия внутреннего проекта компании — «Joint Engine Technology». Изначально движок был ориентирован на работу с небольшими и средними базами данных, используемыми в настольных приложениях.
Версия 2.0 и Access 2.0
В 1993 году вышла версия Jet 2.0, поставлявшаяся с Microsoft Access 2.0. Она включала улучшенную поддержку триггеров, хранимых процедур и репликации. Эта версия стала первой, которая получила широкое распространение за пределами Microsoft Access — её начали использовать другие приложения, такие как Microsoft Visual Basic.
Версия 3.0 и 3.5
В 1994 году была выпущена версия Jet 3.0, которая поддерживала 32-битные операционные системы (Windows NT и Windows 95). Она отличалась улучшенной производительностью и поддержкой транзакций. Версия Jet 3.5 (1995 год) стала стандартом для Microsoft Access 95 и Visual Basic 4.0. В ней была реализована поддержка длинных имён полей (до 64 символов) и улучшена работа с индексами.
Версия 4.0
В 1998 году вышла версия Jet 4.0, которая поставлялась с Microsoft Access 2000. Она включала поддержку Unicode, что позволило работать с данными на разных языках, а также улучшенную поддержку SQL-92. Jet 4.0 оставался основной версией до выхода Microsoft Office 2007 и поддерживался вплоть до Windows 10. В 2007 году Microsoft объявила о прекращении разработки Jet Engine в пользу новой технологии — Microsoft Access Database Engine (ACE).
Прекращение поддержки
В 2013 году Microsoft объявила, что Jet Database Engine больше не будет развиваться, и рекомендовала переходить на Microsoft Access Database Engine (ACE) или SQL Server. Однако Jet 4.0 по-прежнему доступен в составе операционных систем Windows (до Windows 10 включительно) для обратной совместимости.
Архитектура
Компоненты
Jet Database Engine состоит из нескольких ключевых компонентов:
- Диспетчер страниц (Page Manager) — отвечает за чтение и запись данных на диск, управляет буферным кешем.
- Менеджер блокировок (Lock Manager) — обеспечивает многопользовательский доступ, используя блокировки на уровне страниц (в версиях до 4.0) или на уровне записей (в версии 4.0).
- Оптимизатор запросов (Query Optimizer) — анализирует SQL-запросы и выбирает наиболее эффективный план выполнения.
- Менеджер транзакций (Transaction Manager) — поддерживает атомарность, согласованность, изолированность и долговечность (ACID) транзакций.
Файловая структура
Данные хранятся в файлах формата .mdb (для версий до 2007 года) и .accdb (для Microsoft Access 2007 и новее). Файл базы данных состоит из страниц фиксированного размера (обычно 2 КБ для Jet 3.x и 4 КБ для Jet 4.0). Каждая страница содержит либо данные таблиц, либо индексы, либо системную информацию (например, каталог объектов).
Поддержка SQL
Jet Engine поддерживает подмножество стандарта SQL-92. Основные возможности включают:
- Создание, изменение и удаление таблиц (CREATE TABLE, ALTER TABLE, DROP TABLE).
- Запросы SELECT с JOIN, GROUP BY, ORDER BY.
- Вставка, обновление и удаление записей (INSERT, UPDATE, DELETE).
- Поддержка подзапросов и агрегатных функций (SUM, COUNT, AVG, MIN, MAX).
Однако Jet Engine не поддерживает полноценные хранимые процедуры, триггеры и представления (в версиях до 4.0). В версии 4.0 появилась поддержка хранимых процедур на VBA, но они выполняются на стороне клиента, а не внутри движка.
Классификация
По типу использования
- Однопользовательский режим — база данных используется одним приложением на одном компьютере.
- Многопользовательский режим — несколько пользователей одновременно работают с одной базой данных через локальную сеть. В этом режиме Jet Engine использует блокировки для предотвращения конфликтов.
По версиям
- Jet 1.0–1.1 (1992) — первые версии, 16-битные, для Windows 3.x.
- Jet 2.0–2.5 (1993–1994) — 16-битные, улучшенная поддержка репликации.
- Jet 3.0–3.5 (1994–1995) — 32-битные, поддержка транзакций.
- Jet 4.0 (1998) — 32-битная, поддержка Unicode и SQL-92.
Применение
Microsoft Access
Основное применение Jet Engine — это работа с базами данных Microsoft Access. Он является встроенным движком для всех версий Access до 2007 года. В Access 2007 и новее используется ACE (Access Database Engine), который является преемником Jet.
Visual Basic и VBA
Jet Engine активно использовался в приложениях, написанных на Visual Basic (до версии 6.0) и VBA (Visual Basic for Applications). Разработчики могли создавать базы данных, выполнять запросы и управлять данными через объектную модель DAO (Data Access Objects).
Другие приложения
Jet Engine также использовался в некоторых сторонних приложениях, например, в Microsoft Project (для хранения проектных данных) и Microsoft MapPoint (для картографических данных). Однако с выходом новых версий этих продуктов они перешли на другие технологии хранения.
Преимущества и недостатки
Преимущества
- Простота развертывания — не требуется установка отдельного сервера, база данных хранится в одном файле.
- Низкая стоимость — движок входит в состав Microsoft Office и Windows, что делает его доступным для небольших организаций.
- Интеграция с Microsoft Office — данные можно легко экспортировать в Excel, Word и другие приложения.
- Поддержка многопользовательского доступа — до 255 одновременных пользователей (при правильной настройке сети).
Недостатки
- Ограниченная производительность — при большом объёме данных (более 2 ГБ) или большом количестве одновременных пользователей производительность резко падает.
- Отсутствие поддержки серверных функций — нет полноценных триггеров, хранимых процедур и представлений.
- Уязвимость к повреждениям — файлы .mdb могут быть повреждены при сбое питания или неправильном завершении работы приложения.
- Отсутствие поддержки транзакций на уровне сервера — все транзакции выполняются на стороне клиента, что может приводить к конфликтам при одновременном доступе.
Интересные факты
- Jet Database Engine использовался в Windows 95 для хранения системных настроек (реестр Windows хранился в формате .mdb до выхода Windows 98).
- Максимальный размер файла базы данных для Jet 4.0 составляет 2 ГБ (для версий до 4.0 — 1 ГБ).
- Jet Engine поддерживает репликацию данных между несколькими копиями базы данных, что позволяет синхронизировать данные на разных компьютерах.
- В 2007 году Microsoft выпустила бесплатный пакет драйверов для работы с файлами .mdb и .accdb из приложений, написанных на .NET (Microsoft Access Database Engine Redistributable).
Критика
Jet Database Engine критиковался за низкую производительность при работе с большими объёмами данных и за отсутствие поддержки стандартных серверных функций. Многие разработчики отмечали, что движок не подходит для корпоративных приложений, где требуется высокая надёжность и масштабируемость. Кроме того, файлы .mdb часто повреждались при неправильном завершении работы, что приводило к потере данных.
Источники
- Microsoft Developer Network (MSDN) — документация по Jet Database Engine.
- «Microsoft Jet Database Engine Programmer's Guide» — Microsoft Press, 1996.
- «Inside Microsoft Access» — John L. Viescas, 1999.
- «Access 2000: The Complete Reference» — Virginia Andersen, 1999.
- Статья «Jet Database Engine» в английской Википедии (версия от 2023 года).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →