Ядро СУБД Microsoft Jet

редактировать
Ядро СУБД, созданное Microsoft

Ядро СУБД Microsoft Jet
Другие именаMicrosoft JET Двигатель
Разработчик (и) Microsoft
Первоначальный выпуск1992; 28 лет назад (1992)
Стабильный выпуск ACE 16
Операционная система Microsoft Windows
Тип Ядро СУБД
Веб-сайтофис.microsoft.com / en-us / access / Измените это в Викиданных

Microsoft Jet Database Engine (также Microsoft JET Engine или просто Jet) - это ядро ​​базы данных, на котором создано несколько продуктов Microsoft. Первая версия Jet была разработана в 1992 году и состояла из трех модулей , которые можно было использовать для управления базой данных.

JET означает Joint Engine Technology. Microsoft Access и Visual Basic используют или использовали Jet в качестве основного ядра базы данных. Однако для общего использования он был заменен сначала Microsoft Desktop Engine (MSDE), а затем SQL Server Express. Для более крупных потребностей базы данных базы данных Jet могут быть обновлены (или, говоря языком Microsoft, «увеличены») до флагманского продукта баз данных Microsoft SQL Server.

База данных MS Jet (Red) с пятью миллиардами записей с включенными сжатием и шифрованием требует около одного терабайта дискового пространства. Обычно он состоит из сотен файлов *.mdb.

Содержание
  • 1 Архитектура
    • 1.1 Блокировка
    • 1.2 Обработка транзакций
    • 1.3 Целостность данных
    • 1.4 Безопасность
    • 1.5 Запросы
  • 2 История
  • 3 Совместимость
  • 4 Ссылки
  • 5 Дополнительная литература
Архитектура

Jet, являясь частью системы управления реляционными базами данных (СУБД), позволяет манипулировать реляционными базами данных. Он предлагает единый интерфейс, который другое программное обеспечение может использовать для доступа к базам данных Microsoft, и обеспечивает поддержку безопасности, ссылочной целостности, обработки транзакций, индексации, запись и блокировка страницы, а также репликация данных. В более поздних версиях механизм был расширен для выполнения запросов SQL, хранения символьных данных в формате Unicode, создания представлений базы данных и обеспечения двунаправленной репликации с Microsoft SQL Server.

Jet DLL

В Jet есть три модуля: один - это собственный драйвер Jet ISAM, библиотека динамической компоновки (DLL), которая может напрямую управлять файлами базы данных Microsoft Access (MDB) с помощью ( произвольный доступ) API файловой системы. Другой из модулей содержит драйверы ISAM, библиотеки DLL, которые обеспечивают доступ к различным базам данных Indexed Sequential Access Method ISAM, среди них xBase, Paradox, Btrieve и FoxPro, в зависимости от версии Jet. Последний модуль - это DLL объектов доступа к данным (DAO). DAO предоставляет API, который позволяет программистам получать доступ к базам данных JET с использованием любого языка программирования.

Блокировка

Jet позволяет нескольким пользователям получать доступ к базе данных одновременно. Чтобы предотвратить повреждение или аннулирование этих данных при попытке нескольких пользователей редактировать одну и ту же запись или страницу базы данных, Jet использует политику блокировки. Любой отдельный пользователь может изменять только те записи базы данных (то есть элементы в базе данных), к которым пользователь применил блокировку , которая дает монопольный доступ к записи до тех пор, пока блокировка не будет снята. выпущенный. В версиях Jet до версии 4 используется модель блокировки страницы, а в Jet 4 - модель блокировки записи. Базы данных Microsoft организованы в «страницы» данных, которые представляют собой структуры данных фиксированной длины (2 кБ до Jet 4, 4 кБ в Jet 4). Данные хранятся в «записях» переменной длины, которые могут занимать меньше или больше одной страницы. Модель блокировки страницы работает путем блокировки страниц, а не отдельных записей, что, хотя и менее ресурсоемко, также означает, что когда пользователь блокирует одну запись, все другие записи на той же странице блокируются с обеспечением. В результате ни один другой пользователь не может получить доступ к заблокированным с залогом записям, даже если ни один пользователь не имеет к ним доступа, и нет необходимости в их блокировке. В Jet 4 модель блокировки записи устраняет боковые блокировки, так что каждая неиспользуемая запись доступна.

Есть два механизма, которые Microsoft использует для блокировки : пессимистическая блокировка и оптимистическая блокировка. При пессимистической блокировке запись или страница блокируются сразу после запроса блокировки, а при оптимистической блокировке блокировка откладывается до тех пор, пока отредактированная запись не будет сохранена. При оптимистической блокировке вероятность возникновения конфликтов ниже, поскольку запись блокируется только на короткий период времени. Однако при оптимистической блокировке нельзя быть уверенным, что обновление будет успешным, потому что другой пользователь может сначала заблокировать запись. При пессимистической блокировке обновление гарантированно будет успешным после получения блокировки. Другие пользователи должны дождаться снятия блокировки, чтобы внести свои изменения. Конфликты блокировок, которые либо требуют от пользователя ожидания, либо приводят к сбою запроса (обычно после тайм-аута), чаще встречаются при пессимистической блокировке.

Обработка транзакций

Jet поддерживает обработку транзакций для систем баз данных, которые имеют эту возможность. (Системы ODBC имеют одноуровневую обработку транзакций, в то время как несколько систем ISAM, например Paradox, не поддерживают обработку транзакций.) Транзакция - это серия операций, выполняемых в базе данных, которые должны выполняться вместе - это известно как атомарность и одна из концепций ACID (атомарность, согласованность, изоляция и долговечность), которые считаются ключевыми функциями обработки транзакций в системе управления базами данных. Чтобы обработка транзакций работала (до Jet 3.0), программисту нужно было начать транзакцию вручную, выполнить операции, необходимые для выполнения в транзакции, а затем зафиксировать (сохранить) транзакцию. Пока транзакция не зафиксирована, изменения вносятся только в память и не записываются на диск. Транзакции имеют ряд преимуществ перед независимыми обновлениями базы данных. Одним из основных преимуществ является то, что от транзакции можно отказаться, если во время транзакции возникнет проблема. Это называется откатом транзакции или просто откатом, и он восстанавливает состояние записей базы данных точно до состояния до начала транзакции. Транзакции также позволяют состоянию базы данных оставаться согласованным, если системный сбой происходит в середине последовательности обновлений, которые должны быть атомарными. Нет никаких шансов, что только некоторые обновления будут записаны в базу данных; либо все будет выполнено успешно, либо изменения будут отменены при перезапуске системы базы данных. С помощью политики ODBC в памяти транзакции также позволяют выполнять множество обновлений записи полностью в памяти, с только одной дорогой записью на диск в конце.

Неявные транзакции поддерживались в Jet 3.0. Это транзакции, которые запускаются автоматически после того, как последняя транзакция была зафиксирована в базе данных. Неявные транзакции в Jet возникали при выполнении инструкции SQL DML. Однако было обнаружено, что это отрицательно сказывается на производительности в 32-битной Windows (Windows 95, Windows 98), поэтому в Jet 3.5 Microsoft удалила неявные транзакции при выполнении операторов SQL DML.

Целостность данных

Jet обеспечивает целостность объекта и ссылочную целостность. Jet по умолчанию предотвращает любое изменение записи, которое нарушает ссылочную целостность, но базы данных Jet вместо этого могут использовать ограничения распространения (каскадные обновления и каскадные удаления) для поддержания ссылочной целостности.

Jet также поддерживает «бизнес-правила» (также известные как «ограничения») или правила, которые применяются к любому столбцу, чтобы указать, какие данные могут быть помещены в таблицу или столбец. Например, может быть применено правило, которое не позволяет вводить дату в столбец date_logged, более ранний, чем текущая дата и время, или может применяться правило, которое заставляет людей вводить положительное значение в числовое поле..

Безопасность

Доступ к базам данных Jet осуществляется на уровне пользователя. Информация о пользователях хранится в отдельной системной базе данных, и доступ контролируется для каждого объекта в системе (например, по таблице или по запросу). В Jet 4 Microsoft реализовала функциональность, которая позволяет администраторам баз данных устанавливать безопасность с помощью команд SQL CREATE, ADD, ALTER, DROP USER и DROP GROUP. Эти команды являются подмножеством стандарта ANSI SQL 92, и они также применяются к командам GRANT / REVOKE. Когда был выпущен Jet 2, безопасность также могла быть установлена ​​программно с помощью DAO.

Запросы

Запросы - это механизмы, которые Jet использует для извлечения данных из базы данных. Их можно определить в Microsoft QBE (запрос по примеру), через окно SQL Microsoft Access или язык объектов доступа к данным (DAO) Access Basic. Затем они преобразуются в оператор SQL SELECT. Затем запрос компилируется - это включает в себя синтаксический анализ запроса (включает проверку синтаксиса и определение столбцов для запроса в таблице базы данных), затем преобразуется во внутренний формат объекта запроса Jet, который затем токенизируется. и организованы в древовидную структуру. Затем в Jet 3.0 они оптимизируются с помощью технологии оптимизации запросов. Затем запрос выполняется, и результаты передаются обратно приложению или пользователю, запросившему данные.

Jet передает данные, полученные для запроса, в динамическом наборе. Это набор данных, которые динамически связаны с базой данных. Вместо того, чтобы хранить результат запроса во временной таблице, где данные не могут быть обновлены пользователем напрямую, динамический набор позволяет пользователю просматривать и обновлять данные, содержащиеся в динамическом наборе. Таким образом, если преподаватель университета опрашивает всех студентов, получивших различие в своем задании, и обнаруживает ошибку в записи этого студента, ему нужно будет только обновить данные в динамическом наборе, который автоматически обновит запись базы данных студента без необходимости в них. для отправки определенного запроса на обновление после сохранения результатов запроса во временной таблице.

История
Версия JetJet EngineИмя файла DLLПоддерживаемые версии базы данных
1.0????1.0
1.11.10.0001MSAJT110.DLL1.0 / 1.1
2.02.00. 0000MSAJT200.DLL1.0 / 1.1 / 2.0
2.52.50.1606MSAJT200.DLL1.0 / 1.1 / 2.0
3.03.0.0.2118MSJT3032.DLL1.0 / 1.1 / 2.0 / 3.0
3.53.51.3328.0MSJET35.DLL1.0 / 1.1 / 2.0 / 3.X
4.0 SP84.0.8015.0MSJET40.DLL1.0 / 1.1 / 2.0 / 3.X / 4.0
ACE 1212.0.xxxx.xxxxACECORE.DLL1.0 / 1.1 / 2.0 / 3.X / 4.0 / ACE
ACE 1414.0.xxxx.xxxxACECORE.DLL3.X / 4.0 / ACE
ACE 1515.0.xxxx.xxxxACECORE.DLL4.0 / ACE
ACE 1616.0.xxxx.xxxxACECORE.DLL4.0 / ACE
Источники:
Application/VersionJet версии
Microsoft Access 1.01.0
Microsoft Access 1.11.1
Microsoft Access 2.02.0
Пакет обновления Microsoft Access 2.02.5
Microsoft Access 95 / Excel 953.0
Microsoft Access 97 / Excel 97 / PowerPoint 97 / Word 973.5
Microsoft Access 20004.0 SP1
Microsoft Access 2002
Microsoft Access 2003
Microsoft Access 2007ACE 12
Microsoft Access 2010ACE 14
Microsoft Access 2013ACE 15
Microsoft Access 2016ACE 16
Visual Basic 3.01.1
Уровень совместимости Visual Basic2.0
Visual Basic 4.0 16-разрядный2.5
32-разрядный Visual Basic 4.03.0
Visual Basic 5.03.5
Visual C ++ 4.X3.0
Visual C ++ 5.03.5
Microsoft Project 4.1 / Project 953.0
Интернет Информационный сервер 3.03.5
SQL Server 7.04.0
Распространяемые программы установки
Jet 3.51, веб-загрузка3.5+
MDAC 2.14.0 SP1
MDAC 2.54.0 SP3 до SP6 +
Jet 4.04.0 SP3 до SP8
2007 Office Системный драйвер ACE 12
Microsoft Access Database Engine 2010 ACE 14
Microsoft Access Database Engine 2016 ACE 16
Операционные системы
Windows Me 4.0 SP3
Windows 2000 4.0 SP3
Windows XP 4.0 SP5 +
Windows Server 2003 4.0 SP6 +
Windows Vista 4.0 SP8 +
Windows Server 2008 4.0 SP8 +
Windows 7 4.0 SP8 +
Источники:

Jet изначально был запущен в 1992 году как базовая технология доступа к данным. из проекта разработки продукта внутренней базы данных Microsoft под кодовым названием Cirrus. Cirrus был разработан на основе предварительной версии кода Visual Basic и использовался в качестве ядра базы данных Microsoft Access. Тони Гудхью, который в то время работал в Microsoft, говорит

: «Было бы разумно сказать, что до этого этапа Jet было скорее названием команды, которой было поручено работать над модулями ядра БД Access, а не команда разработчиков. Что касается VB [Visual Basic] 3.0, им в основном пришлось вырвать его из Access и перенести на VB. Вот почему у них были все эти проблемы Jet / ODBC в VB 3.0 ».

Jet стал более компонентным, когда был выпущен Access 2.0, потому что разработчики Access ODBC использовали части кода Jet для создания драйвера ODBC. Была предоставлена ​​модернизация, которая позволила пользователям Visual Basic 3.0 использовать обновленный Jet, выпущенный в Access 2.0.

Jet 2.0 был выпущен в виде нескольких динамически подключаемых библиотек (DLL), которые использовались прикладное программное обеспечение, такое как база данных Microsoft Access. Библиотеки DLL в Windows представляют собой «библиотеки» общего кода, которые могут использоваться более чем одним приложением - сохраняя код, который используется более чем одним приложением, в общей библиотеке, которую каждое из этих приложений может использовать независимо. уменьшается, а функциональность приложений увеличивается с меньшими усилиями по разработке. Jet 2.0 состоял из трех DLL: Jet DLL, Data Access Objects (DAO) DLL и несколько внешних ISAM DLL. Jet DLL определяла, к какой базе данных она обращалась и как выполнять то, что от нее требовалось. Если бы источником данных был файл MDB (формат Microsoft Access), он бы напрямую считывал и записывал данные в файл. Если источник данных был внешним, то он вызвал бы правильный драйвер ODBC для выполнения своего запроса. DAO DLL была компонентом, который программисты могли использовать для взаимодействия с движком Jet, и в основном использовалась программистами Visual Basic и Access Basic. Библиотеки DLL ISAM представляли собой набор модулей, которые позволяли Jet получить доступ к трем базам данных на основе ISAM: xBase, Paradox и Btrieve. Jet 2.0 был заменен на Jet 2.1, в котором использовалась та же структура базы данных, но другие стратегии блокировки, что делало его несовместимым с Jet 2.0.

Jet 3.0 включает множество улучшений, включая новую структуру index, которая уменьшила размер хранилища и время, затрачиваемое на создание индексов, которые сильно дублировались, снятие блокировок чтения на страницах индекса, новый механизм повторного использования страниц, новый метод сжатия, для которого сжатие базы данных привело к хранению индексов в формате кластеризованного индекса, новый механизм распределения страниц для улучшения возможностей упреждающего чтения Jet, улучшенное удаление операции, ускоряющие обработку, многопоточность (три потока использовались для выполнения упреждающего чтения, отложенной записи и обслуживания кеша), неявные транзакции (пользователям не нужно было указывать движку запускаться вручную и фиксировать транзакции в базе данных), новый механизм сортировки, длинные значения (такие как записки или типы двоичных данных) хранились в отдельных таблицах, а также динамическая буферизация (при этом кеш Jet динамически выделялся при запуске и не имел ограничений, и который сначала изменился с в, первый о ut (FIFO) политика замены буфера на политику замены буфера (LRU), использовавшуюся недавно). Jet 3.0 также допускал репликацию базы данных. Jet 3.0 был заменен на Jet 3.5, в котором используется та же структура базы данных, но другие стратегии блокировки, что делает его несовместимым с Jet 3.0.

Jet 4.0 получил множество дополнительных функций и улучшений.

  • Поддержка хранения символов Unicode, а также метод сортировки NT, который также был реализован в Windows 95 версия;
  • Изменения типов данных, чтобы они больше походили на SQL Server (LongText или Memo; Binary; LongBinary; Date / Time; Real; Float4; IEEESingle; Double; Byte или Tinyint; Целочисленный или Целочисленный синонимы Smallint, Integer2 и Short; LongInteger или LongInteger синонимы Int, Целое число и Счетчик; Валюта или Деньги; Логическое значение и GUID); новый десятичный тип данных
  • Memo поля теперь можно индексировать
  • сжимаемые типы данных
  • SQL улучшения, чтобы Jet более точно соответствовал ANSI SQL-92
  • Более детальная безопасность; поддержка просмотров; поддержка процедур
  • Вызов и завершение (фиксация или откат) транзакций
  • Расширенное создание и изменение таблицы
  • Ссылочная целостность поддержка
  • Управление подключением (подключенные пользователи остаются подключенными, но после отключения они не могут повторно подключиться, и новые подключения не могут быть установлены. Это полезно для администраторов базы данных, чтобы получить контроль над базой данных)
  • Список пользователей, который позволяет администраторам определять, кто подключен к база данных
  • Блокировка на уровне записи (предыдущие версии поддерживали только блокировку страниц)
  • Двунаправленная репликация с MS SQL Server.

Версии Microsoft Access от Access 2000 до Access 2010 включали " Мастер преобразования ", который может" увеличить "(обновить) базу данных Jet до" эквивалентной базы данных на SQL Server с той же структурой таблицы, данными и многими другими атрибутами исходной базы данных ". Отчеты, запросы, макросы и безопасность не обрабатывались этим инструментом, а это означало, что некоторые изменения вручную могли потребоваться, если приложение сильно зависело от этих функций Jet.

Автономная версия ядра базы данных Jet 4 была компонент компонентов доступа к данным Microsoft (MDAC) и был включен в каждую версию Windows, начиная с Windows 2000. Ядро базы данных Jet было только 32-битным и не работало изначально в 64-битных версиях Windows. Это означало, что собственные 64-разрядные приложения (например, 64-разрядные версии SQL Server) не могли получить доступ к данным, хранящимся в файлах MDB, через ODBC, OLE DB или любые другие средства, кроме промежуточных 32- битовое программное обеспечение (работающее в WoW64 ), которое действовало как прокси для 64-битного клиента.

Начиная с версии 2007, Access включает в себя версию Jet для Office, первоначально называвшуюся Office Access Connectivity Engine (ACE), но который теперь называется Access Database Engine (однако консультанты MS-Access и разработчики VBA, специализирующиеся на MS-Access, скорее всего, будут называть его «ядром базы данных ACE»). Этот механизм был обратно совместим с предыдущими версиями ядра Jet, поэтому он мог читать и записывать файлы (.mdb) из более ранних версий Access. Он представил новый формат файла по умолчанию (.accdb), который привнес несколько улучшений в Access, включая сложные типы данных, такие как многозначные поля, тип данных вложения и отслеживание истории в мемо-полях. Также были внесены изменения в систему безопасности и шифрование, а также обеспечена интеграция с Microsoft Windows SharePoint Services 3.0 и Microsoft Office Outlook 2007.

Механизм в Microsoft Access 2010 прекратил поддержку для Файлы Access 1.0, Access 2.0, Lotus 1-2-3 и Paradox. Была представлена ​​64-разрядная версия Access 2010 и его драйвер / поставщик ACE, который, по сути, представляет собой 64-разрядную версию Jet. Драйвер не является частью операционной системы Windows, но доступен как распространяемый компонент.

Механизм в Microsoft Access 2013 прекратил поддержку файлов Access 95, Access 97 и xBase, а также прекратил поддержку репликации.

Версия 1608 Microsoft Access 2016 восстановила поддержку файлов xBase, а версия 1703 представила тип данных большого числа.

С точки зрения технологии доступа к данным, Jet считается устаревшей технологией Microsoft, но Microsoft продолжает поддерживать ACE как часть Microsoft Access.

Совместимость

Microsoft предоставляет драйверы JET только для Microsoft Windows. Таким образом, стороннее программное обеспечение для баз данных JET почти исключительно в Windows. Существует проект с открытым исходным кодом, который пытается включить работу с базами данных JET на других платформах, MDB Tools и его значительно расширенный порт Java под названием Jackcess.

Ссылки
Дополнительная литература
В Викиучебнике есть книга по теме: База данных JET
Последняя правка сделана 2021-05-30 10:12:21
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте