Доступ к ядру базы данных
Другие имена |
|
---|---|
Разработчик(и) | Майкрософт |
Первоначальный выпуск | 1992 год |
Стабильная версия | ТУЗ 16
|
Операционная система | Microsoft Windows |
Тип | Механизм базы данных |
Веб-сайт | офис |
( Access Database Engine также Office Access Connectivity Engine или ACE , а ранее Microsoft Jet Database Engine , Microsoft JET Engine или просто Jet ) — это ядро базы данных несколько продуктов Microsoft , на котором было построено . Первая версия Jet была разработана в 1992 году и состояла из трех модулей , которые можно было использовать для управления базой данных.
JET означает « Совместная технология двигателей» . Microsoft Access и Visual Basic используют или использовали Jet в качестве основного ядра базы данных. Однако для общего использования он был заменен сначала Microsoft Desktop Engine (MSDE), а затем SQL Server Express . Для более крупных потребностей в базах данных базы данных Jet можно обновить (или, на языке Microsoft, «увеличить размер») до флагманского продукта базы данных Microsoft SQL Server.
База данных MS Jet (Red) на пять миллиардов записей с включенным сжатием и шифрованием требует около одного терабайта дискового пространства. [ нужна ссылка ] . Обычно он состоит из сотен файлов *.mdb.
Архитектура
[ редактировать ]Jet, являясь частью системы управления реляционными базами данных (СУРБД), позволяет манипулировать реляционными базами данных . [1] Он предлагает единый интерфейс , который другое программное обеспечение может использовать для доступа к базам данных Microsoft, и обеспечивает поддержку безопасности, ссылочной целостности , обработки транзакций , индексации , блокировки записей и страниц, а также репликации данных. В более поздних версиях механизм был расширен для выполнения запросов SQL , хранения символьных данных в формате Unicode , создания представлений базы данных и обеспечения двунаправленной репликации с Microsoft SQL Server.
В Jet есть три модуля: один из них — Native Jet ISAM Driver , динамическая библиотека (DLL), которая может напрямую манипулировать файлами базы данных Microsoft Access (MDB) с использованием API файловой системы (произвольного доступа). Еще один из модулей содержит драйверы ISAM , библиотеки DLL, которые обеспечивают доступ к различным базам данных ISAM индексированного последовательного доступа , в том числе xBase , Paradox , Btrieve и FoxPro , в зависимости от версии Jet. Последний модуль — это DLL объектов доступа к данным (DAO). [2] 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), программисту необходимо было начать транзакцию вручную, выполнить операции, необходимые для выполнения в транзакции, а затем зафиксировать (сохранить) транзакцию. Пока транзакция не будет зафиксирована, изменения вносятся только в память и фактически не записываются на диск. [1] Транзакции имеют ряд преимуществ перед независимыми обновлениями базы данных. Одним из основных преимуществ является то, что транзакции можно отменить, если во время транзакции возникает проблема. Это называется откатом транзакции или просто откатом, и он восстанавливает состояние записей базы данных точно до того состояния, которое было до начала транзакции. Транзакции также позволяют состоянию базы данных оставаться согласованным, если сбой системы происходит в середине последовательности обновлений, которые должны быть атомарными. Нет никакой вероятности, что в базу данных будут записаны только некоторые обновления; либо все пройдет успешно, либо изменения будут отменены при перезапуске системы базы данных. Благодаря политике 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. [3] Когда был выпущен Jet 2, безопасность также можно было устанавливать программно через DAO .
Запросы
[ редактировать ]Запросы — это механизмы, которые Jet использует для извлечения данных из базы данных. Их можно определить в Microsoft QBE (запрос по примеру), через окно Microsoft Access SQL или через язык объектов доступа к данным (DAO) Access Basic. Затем они преобразуются в оператор SQL SELECT . Затем запрос компилируется — это включает в себя синтаксический анализ запроса (включая проверку синтаксиса и определение столбцов для запроса в таблице базы данных), а затем преобразование во внутренний формат объекта запроса Jet, который затем маркируется и организуется в древовидную структуру. В версии Jet 3.0 они затем оптимизируются с использованием технологии оптимизации запросов Microsoft Rushmore . Затем запрос выполняется, и результаты передаются обратно приложению или пользователю, запросившему данные.
Jet передает данные, полученные для запроса, в dynaset . Это набор данных, которые динамически связаны с базой данных. Вместо хранения результатов запроса во временной таблице, где данные не могут быть обновлены непосредственно пользователем, динасет позволяет пользователю просматривать и обновлять данные, содержащиеся в динасете. Таким образом, если преподаватель университета опросит всех студентов, получивших отличие по своему заданию, и обнаружит ошибку в записи этого студента, пользователю потребуется всего лишь обновить данные в dynaset, который автоматически обновит запись в базе данных студента без необходимости пользователь может отправить конкретный запрос на обновление после сохранения результатов запроса во временной таблице.
История
[ редактировать ]Реактивная версия | Реактивный двигатель | Имя DLL-файла | Поддерживаемые версии базы данных |
---|---|---|---|
1.0 | ? | ? | 1.0 |
1.1 | 1.10.0001 | MSAJT110.DLL |
|
2.0 | 2.00.0000 | MSAJT200.DLL |
|
2.5 | 2.50.1606 | MSAJT200.DLL |
|
3.0 | 3.0.0.2118 | MSJT3032.DLL |
|
3.5 | 3.51.3328.0 | MSJET35.DLL |
|
4.0 СП8 | 4.0.8015.0 | MSJET40.DLL |
|
ТУЗ 12 | 12.0.xxxx.xxxx | ACECORE.DLL |
|
ТУЗ 14 | 14.0.xxxx.xxxx | ACECORE.DLL |
|
ТУЗ 15 | 15.0.хххх.хххх | ACECORE.DLL |
|
ТУЗ 16 | 16.0.xxxx.xxxx | ACECORE.DLL |
|
Источники:
|
Приложение/Версия | Реактивная версия |
---|---|
Microsoft Доступ 1.0 | 1.0 |
Microsoft Доступ 1.1 | 1.1 |
Microsoft Доступ 2.0 | 2.0 |
Пакет обновления Microsoft Access 2.0 | 2.5 |
|
3.0 |
|
3.5 |
Microsoft Доступ 2000 | 4.0 SP1 |
Microsoft Доступ 2002 | [4] |
Microsoft Доступ 2003 | [5] |
Microsoft Доступ 2007 | ТУЗ 12 |
Microsoft Доступ 2010 | ТУЗ 14 |
Microsoft Доступ 2013 | ТУЗ 15 |
Microsoft Доступ 2016 | ТУЗ 16 |
Визуал Бейсик 3.0 | 1.1 |
Уровень совместимости Visual Basic | 2.0 |
Visual Basic 4.0 16-разрядная версия | 2.5 |
Visual Basic 4.0 32-разрядная версия | 3.0 |
Визуал Бейсик 5.0 | 3.5 |
Visual С++ 4.X | 3.0 |
Визуал С++ 5.0 | 3.5 |
|
3.0 |
Интернет-информационный сервер 3.0 | 3.5 |
SQL-сервер 7.0 | 4.0 |
Распространяемые установщики | |
Загрузка Jet 3.51 через Интернет | 3.5+ |
МДАК 2.1 | 4.0 SP1 |
МДАК 2.5 | от 4.0 SP3 до SP6+ |
Джет 4.0 | От 4.0 SP3 до SP8 |
Драйвер системы Office 2007 | ТУЗ 12 |
Ядро базы данных Microsoft Access 2010 | ТУЗ 14 |
Ядро базы данных Microsoft Access 2013 | ТУЗ 15 |
Ядро базы данных Microsoft Access 2016 | ТУЗ 16 |
Операционные системы | |
Windows Me | 4.0 SP3 |
Windows 2000 | 4.0 SP3 |
Windows ХР | 4.0 SP5+ |
Windows Сервер 2003 | 4.0 СП6+ |
Windows Виста | 4.0 СП8+ |
Windows Сервер 2008 | 4.0 СП8+ |
Windows 7 | 4.0 СП8+ |
Источники:
|
Первоначально Jet зародился в 1992 году как базовая технология доступа к данным, возникшая в результате внутреннего проекта разработки продуктов баз данных Microsoft под кодовым названием Cirrus. Cirrus был разработан на основе предварительной версии кода Visual Basic и использовался в качестве ядра базы данных Microsoft Access . Тони Гудхью, работавший в то время в Microsoft, говорит:
«Было бы достаточно точно сказать, что до этого этапа Jet скорее назывался командой, которой было поручено работать над модулями ядра БД Access, а не командой компонентов. Для VB [Visual Basic] 3.0 им в основном приходилось вырвать его из Access и пересадить на VB. Вот почему в VB 3.0 возникли все эти проблемы с Jet/ODBC».
С выпуском Access 2.0 Jet стал более компонентным, поскольку разработчики Access ODBC использовали части кода Jet для создания драйвера ODBC. Была предоставлена модернизация, которая позволила пользователям Visual Basic 3.0 использовать обновленный Jet, выпущенный в Access 2.0. [6]
Jet 2.0 был выпущен в виде нескольких динамически подключаемых библиотек (DLL), которые использовались прикладным программным обеспечением , таким как база данных Microsoft Access. Библиотеки DLL в Windows представляют собой «библиотеки» общего кода, которые могут использоваться более чем одним приложением. За счет хранения кода, используемого более чем одним приложением, в общей библиотеке, которую каждое из этих приложений может использовать независимо, обслуживание кода сокращается, а функциональность приложений сокращается. увеличивается при меньших усилиях по развитию. Jet 2.0 состоял из трех DLL: Jet DLL, DLL Data Access Objects (DAO) и нескольких внешних DLL ISAM. Jet DLL определяла, к какой базе данных она обращается и как выполнить то, что от нее требуется. Если источником данных был файл MDB (формат Microsoft Access), то он напрямую считывал и записывал данные в файл. Если источник данных был внешним, то для выполнения запроса он вызывал бы правильный драйвер ODBC. DAO DLL представляла собой компонент, который программисты могли использовать для взаимодействия с механизмом Jet, и в основном он использовался программистами Visual Basic и Access Basic. ISAM DLL представляли собой набор модулей, которые позволяли Jet получать доступ к трем базам данных на базе ISAM: xBase, Paradox и Btrieve. [2] Jet 2.0 был заменен на Jet 2.1, который использовал ту же структуру базы данных, но другие стратегии блокировки, что делало его несовместимым с Jet 2.0.
Jet 3.0 включал множество улучшений, в том числе новую структуру индекса , которая уменьшила размер хранилища и время, затрачиваемое на создание сильно дублируемых индексов, удаление блокировок чтения на индексных страницах, новый механизм повторного использования страниц, новый метод сжатия сжатие базы данных привело к тому, что индексы сохранялись в формате кластерного индекса, новый механизм выделения страниц для улучшения возможностей упреждающего чтения Jet, улучшенные операции удаления, которые ускорили обработку, многопоточность (три потока использовались для выполнения упреждающего чтения) , запись и обслуживание кэша), неявные транзакции (пользователям не нужно было давать команду движку запускаться вручную и фиксировать транзакции в базе данных), новый механизм сортировки, длинные значения (такие как заметки или двоичные типы данных) хранились в отдельные таблицы и динамическую буферизацию (при этом кэш Jet динамически распределялся при запуске и не имел ограничений и который менялся с политики замены буфера «первым пришел — первым вышел » (FIFO) на политику замены буфера). политика замены буфера наименее недавно использованного (LRU). [7] Jet 3.0 также позволял репликацию базы данных. Jet 3.0 был заменен на Jet 3.5, который использует ту же структуру базы данных, но другие стратегии блокировки, что делает его несовместимым с Jet 3.0.
Jet 4.0 получил множество дополнительных функций и улучшений. [3]
- Поддержка хранения символов Юникода , а также метода сортировки NT , который также был реализован в версии для Windows 95 ;
- Изменения в типах данных, чтобы они больше походили на SQL Server (LongText или Memo; Binary; LongBinary; Date/Time; Real; Float4; IEEESingle; Double; Byte или Tinyint; Integer или синонимы Integer Smallint, Integer2 и Short; LongInteger или Синонимы LongInteger Int, Integer и Counter Currency или Money; Boolean и GUID); новый десятичный тип данных
- Поля Memo теперь можно индексировать.
- Сжимаемые типы данных
- Улучшения SQL для более точного соответствия Jet стандарту ANSI SQL-92.
- Более тонкая безопасность; поддержка просмотров; поддержка процедур
- Вызов и прекращение (фиксация или откат) транзакций
- Улучшенное создание и изменение таблиц.
- ссылочной целостности Поддержка
- Контроль соединения (подключенные пользователи остаются подключенными, но после отключения они не могут повторно подключиться, и новые соединения не могут быть установлены. Это полезно для администраторов базы данных, чтобы получить контроль над базой данных)
- Список пользователей, который позволяет администраторам определить, кто подключен к базе данных.
- Блокировка на уровне записи (предыдущие версии поддерживали только блокировку страниц)
- Двунаправленная репликация с MS SQL Server.
Версии Microsoft Access от Access 2000 до Access 2010 включали «Мастер обновления», который мог « преобразовать » (обновить) базу данных Jet до «эквивалентной базы данных на SQL Server с той же структурой таблицы, данными и многими другими атрибутами исходной базы данных». ". Отчеты, запросы, макросы и безопасность не обрабатывались этим инструментом, а это означает, что могли потребоваться некоторые изменения вручную, если приложение сильно зависело от этих функций Jet. [8]
Автономная версия ядра базы данных Jet 4 была компонентом компонентов доступа к данным Microsoft (MDAC) и была включена в каждую версию Windows, начиная с Windows 2000. [9] Ядро базы данных Jet было только 32-разрядным и не работало в 64-разрядных версиях Windows. Это означало, что собственные 64-битные приложения (такие как 64-битные версии SQL Server) не могли получить доступ к данным, хранящимся в файлах MDB, через ODBC, OLE DB или любыми другими способами, кроме как через промежуточное 32-битное программное обеспечение (работающее в WoW64). ), который выступал в качестве прокси для 64-битного клиента. [10]
Начиная с версии 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. [11] [12] [13] Его можно получить отдельно. [14]
В движке Microsoft Access 2010 прекращена поддержка файлов Access 1.0, Access 2.0, Lotus 1-2-3 и Paradox. [15] Была представлена 64-разрядная версия Access 2010 и ее драйвер/поставщик ACE, которые, по сути, представляют собой 64-разрядную версию Jet. Драйвер не является частью операционной системы Windows, но доступен как распространяемый файл. [16] [17]
В движке Microsoft Access 2013 прекращена поддержка файлов Access 95, Access 97 и xBase, а также прекращена поддержка репликации. [18]
В версии 1608 Microsoft Access 2016 восстановлена поддержка файлов xBase. [19] а в версии 1703 появился тип данных «большое число». [20]
С точки зрения технологии доступа к данным, Microsoft считает Jet устаревшей технологией. [21] но Microsoft продолжает поддерживать ACE как часть Microsoft Access.
Совместимость
[ редактировать ]Microsoft предоставляет драйверы JET только для Microsoft Windows, а стороннее программное обеспечение поддерживает базы данных JET почти исключительно в Windows. Однако существуют проекты с открытым исходным кодом , которые позволяют работать с базами данных JET на других платформах, включая Linux . В частности, MDB Tools и его значительно расширенный порт Java под названием Jackcess , а также UCanAccess .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Что такое СУБД (система управления реляционными базами данных)? | Определение от TechTarget» . Управление данными . Проверено 20 июня 2024 г.
- ^ «Подключение DAO, ODBC | PDF | Microsoft Access | Базы данных» . Скрибд . Проверено 20 июня 2024 г.
- ^ Перейти обратно: а б Статья КБ МС 275561 (29 января 2007 г.). «Описание новых функций, включенных в Microsoft Jet 4.0» . Майкрософт . Проверено 19 июня 2008 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Программа установки Access 2002 обновляла системные файлы только в определенных версиях Windows и до определенного уровня.
- ^ Access 2003 использовал компонент операционной системы Jet engine для хранения данных и обработки запросов.
- ^ Гудхью, Тони (ноябрь 1996 г.). «Реактивный двигатель: История» . Архивировано из оригинала 8 августа 2017 года . Проверено 28 марта 2020 г.
- ^ Статья КБ МС 137039 (3 декабря 2003 г.). «Новые возможности Microsoft Jet версии 3.0» . Майкрософт . Проверено 19 июня 2008 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Microsoft , «Параметры Microsoft Access 2000 Data Engine», технический документ.
- ^ Статья КБ МС 239114 (29 мая 2008 г.). «Как получить последний пакет обновления для ядра базы данных Microsoft Jet 4.0» . Майкрософт . Проверено 2 января 2010 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Горм Браарвиг. «Доступ к базе данных из SQL 2005/64» . Проверено 18 июня 2007 г.
- ^ Якшич, Александр (август 2008 г.). «Разработка решений Access 2007 с использованием собственного языка C или C++» . Корпорация Майкрософт . Проверено 26 августа 2008 г.
- ^ Энди Барон, Оптимизация приложений Microsoft Office Access, связанных с SQL Server , ноябрь 2006 г.
- ^ Microsoft, Новые возможности формата файлов Access 2007. Архивировано 27 декабря 2009 г. на Wayback Machine .
- ^ Драйвер системы Office 2007: компоненты подключения к данным
- ^ Microsoft, Прекращенные функции и измененные функции в Access 2010 .
- ^ Адам В. Сакстон, Службы эскалации Microsoft SQL Server (21 января 2010 г.). «Как получить версию Jet x64?» . Проверено 29 октября 2021 г.
- ^ «Распространяемый компонент Microsoft Access Database Engine 2010» . Архивировано из оригинала 7 сентября 2010 года.
- ^ Microsoft, Прекращенные функции и измененные функции в Access 2013 .
- ^ Microsoft, Назад по многочисленным просьбам - поддержка файлов dBASE в Access.
- ^ Майкрософт, Что нового в Access 2016
- ^ Широлкар, Праш; Генри, Алисса; Пепитон, Стивен; Банч, Эйси Дж. (январь 2008 г.). «Дорожная карта технологий доступа к данным» . Корпорация Майкрософт . Проверено 19 июня 2008 г.
Дальнейшее чтение
[ редактировать ]- Руководство программиста ядра СУБД Microsoft Jet , Microsoft, 1995 г.
- Библиотека Конгресса, семейство форматов файлов Microsoft Access MDB
- Библиотека Конгресса, семейство форматов файлов Microsoft Access ACCDB